diff --git a/package-lock.json b/package-lock.json
index 2542e79325..d73e532b6a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -265,6 +265,18 @@
"openapi-types": ">=7"
}
},
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz",
+ "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "lru-cache": "^10.4.3"
+ }
+ },
"node_modules/@aws-crypto/crc32": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
@@ -452,396 +464,288 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.717.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.717.0.tgz",
- "integrity": "sha512-jzaH8IskAXVnqlZ3/H/ROwrB2HCnq/atlN7Hi7FIfjWvMPf5nfcJKfzJ1MXFX0EQR5qO6X4TbK7rgi7Bjw9NjQ==",
+ "version": "3.735.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.735.0.tgz",
+ "integrity": "sha512-6NcxX06c4tnnu6FTFiyS8shoYLy+8TvIDkYjJ5r9tvbaysOptUKQdolOuh7+Lz95QyaqiznpCsNTxsfywLXcqw==",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.716.0",
- "@aws-sdk/client-sts": "3.716.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/credential-provider-node": "3.716.0",
- "@aws-sdk/middleware-bucket-endpoint": "3.714.0",
- "@aws-sdk/middleware-expect-continue": "3.714.0",
- "@aws-sdk/middleware-flexible-checksums": "3.717.0",
- "@aws-sdk/middleware-host-header": "3.714.0",
- "@aws-sdk/middleware-location-constraint": "3.714.0",
- "@aws-sdk/middleware-logger": "3.714.0",
- "@aws-sdk/middleware-recursion-detection": "3.714.0",
- "@aws-sdk/middleware-sdk-s3": "3.716.0",
- "@aws-sdk/middleware-ssec": "3.714.0",
- "@aws-sdk/middleware-user-agent": "3.716.0",
- "@aws-sdk/region-config-resolver": "3.714.0",
- "@aws-sdk/signature-v4-multi-region": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-endpoints": "3.714.0",
- "@aws-sdk/util-user-agent-browser": "3.714.0",
- "@aws-sdk/util-user-agent-node": "3.716.0",
- "@aws-sdk/xml-builder": "3.709.0",
- "@smithy/config-resolver": "^3.0.13",
- "@smithy/core": "^2.5.5",
- "@smithy/eventstream-serde-browser": "^3.0.14",
- "@smithy/eventstream-serde-config-resolver": "^3.0.11",
- "@smithy/eventstream-serde-node": "^3.0.13",
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/hash-blob-browser": "^3.1.10",
- "@smithy/hash-node": "^3.0.11",
- "@smithy/hash-stream-node": "^3.1.10",
- "@smithy/invalid-dependency": "^3.0.11",
- "@smithy/md5-js": "^3.0.11",
- "@smithy/middleware-content-length": "^3.0.13",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/middleware-retry": "^3.0.31",
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/middleware-stack": "^3.0.11",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.31",
- "@smithy/util-defaults-mode-node": "^3.0.31",
- "@smithy/util-endpoints": "^2.1.7",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-retry": "^3.0.11",
- "@smithy/util-stream": "^3.3.2",
- "@smithy/util-utf8": "^3.0.0",
- "@smithy/util-waiter": "^3.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/credential-provider-node": "3.734.0",
+ "@aws-sdk/middleware-bucket-endpoint": "3.734.0",
+ "@aws-sdk/middleware-expect-continue": "3.734.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.735.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-location-constraint": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-sdk-s3": "3.734.0",
+ "@aws-sdk/middleware-ssec": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/signature-v4-multi-region": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@aws-sdk/xml-builder": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/eventstream-serde-browser": "^4.0.1",
+ "@smithy/eventstream-serde-config-resolver": "^4.0.1",
+ "@smithy/eventstream-serde-node": "^4.0.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-blob-browser": "^4.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/hash-stream-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/md5-js": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "@smithy/util-waiter": "^4.0.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/client-sso": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.716.0.tgz",
- "integrity": "sha512-5Nb0jJXce2TclbjG7WVPufwhgV1TRydz1QnsuBtKU0AdViEpr787YrZhPpGnNIM1Dx+R1H/tmAHZnOoohS6D8g==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz",
+ "integrity": "sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg==",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/middleware-host-header": "3.714.0",
- "@aws-sdk/middleware-logger": "3.714.0",
- "@aws-sdk/middleware-recursion-detection": "3.714.0",
- "@aws-sdk/middleware-user-agent": "3.716.0",
- "@aws-sdk/region-config-resolver": "3.714.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-endpoints": "3.714.0",
- "@aws-sdk/util-user-agent-browser": "3.714.0",
- "@aws-sdk/util-user-agent-node": "3.716.0",
- "@smithy/config-resolver": "^3.0.13",
- "@smithy/core": "^2.5.5",
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/hash-node": "^3.0.11",
- "@smithy/invalid-dependency": "^3.0.11",
- "@smithy/middleware-content-length": "^3.0.13",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/middleware-retry": "^3.0.31",
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/middleware-stack": "^3.0.11",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.31",
- "@smithy/util-defaults-mode-node": "^3.0.31",
- "@smithy/util-endpoints": "^2.1.7",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-retry": "^3.0.11",
- "@smithy/util-utf8": "^3.0.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.716.0.tgz",
- "integrity": "sha512-lA4IB9FzR2KjH7EVCo+mHGFKqdViVyeBQEIX9oVratL/l7P0bMS1fMwgfHOc3ACazqNxBxDES7x08ZCp32y6Lw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/credential-provider-node": "3.716.0",
- "@aws-sdk/middleware-host-header": "3.714.0",
- "@aws-sdk/middleware-logger": "3.714.0",
- "@aws-sdk/middleware-recursion-detection": "3.714.0",
- "@aws-sdk/middleware-user-agent": "3.716.0",
- "@aws-sdk/region-config-resolver": "3.714.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-endpoints": "3.714.0",
- "@aws-sdk/util-user-agent-browser": "3.714.0",
- "@aws-sdk/util-user-agent-node": "3.716.0",
- "@smithy/config-resolver": "^3.0.13",
- "@smithy/core": "^2.5.5",
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/hash-node": "^3.0.11",
- "@smithy/invalid-dependency": "^3.0.11",
- "@smithy/middleware-content-length": "^3.0.13",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/middleware-retry": "^3.0.31",
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/middleware-stack": "^3.0.11",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.31",
- "@smithy/util-defaults-mode-node": "^3.0.31",
- "@smithy/util-endpoints": "^2.1.7",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-retry": "^3.0.11",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.716.0"
- }
- },
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.716.0.tgz",
- "integrity": "sha512-i4SVNsrdXudp8T4bkm7Fi3YWlRnvXCSwvNDqf6nLqSJxqr4CN3VlBELueDyjBK7TAt453/qSif+eNx+bHmwo4Q==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.716.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/credential-provider-node": "3.716.0",
- "@aws-sdk/middleware-host-header": "3.714.0",
- "@aws-sdk/middleware-logger": "3.714.0",
- "@aws-sdk/middleware-recursion-detection": "3.714.0",
- "@aws-sdk/middleware-user-agent": "3.716.0",
- "@aws-sdk/region-config-resolver": "3.714.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-endpoints": "3.714.0",
- "@aws-sdk/util-user-agent-browser": "3.714.0",
- "@aws-sdk/util-user-agent-node": "3.716.0",
- "@smithy/config-resolver": "^3.0.13",
- "@smithy/core": "^2.5.5",
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/hash-node": "^3.0.11",
- "@smithy/invalid-dependency": "^3.0.11",
- "@smithy/middleware-content-length": "^3.0.13",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/middleware-retry": "^3.0.31",
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/middleware-stack": "^3.0.11",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.31",
- "@smithy/util-defaults-mode-node": "^3.0.31",
- "@smithy/util-endpoints": "^2.1.7",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-retry": "^3.0.11",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.716.0.tgz",
- "integrity": "sha512-5DkUiTrbyzO8/W4g7UFEqRFpuhgizayHI/Zbh0wtFMcot8801nJV+MP/YMhdjimlvAr/OqYB08FbGsPyWppMTw==",
- "dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/core": "^2.5.5",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/signature-v4": "^4.2.4",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/util-middleware": "^3.0.11",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz",
+ "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
"fast-xml-parser": "4.4.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.716.0.tgz",
- "integrity": "sha512-JI2KQUnn2arICwP9F3CnqP1W3nAbm4+meQg/yOhp9X0DMzQiHrHRd4HIrK2vyVgi2/6hGhONY5uLF26yRTA7nQ==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz",
+ "integrity": "sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.716.0.tgz",
- "integrity": "sha512-CZ04pl2z7igQPysQyH2xKZHM3fLwkemxQbKOlje3TmiS1NwXvcKvERhp9PE/H23kOL7beTM19NMRog/Fka/rlw==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/util-stream": "^3.3.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz",
+ "integrity": "sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.716.0.tgz",
- "integrity": "sha512-P37We2GtZvdROxiwP0zrpEL81/HuYK1qlYxp5VCj3uV+G4mG8UQN2gMIU/baYrpOQqa0h81RfyQGRFUjVaDVqw==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/credential-provider-env": "3.716.0",
- "@aws-sdk/credential-provider-http": "3.716.0",
- "@aws-sdk/credential-provider-process": "3.716.0",
- "@aws-sdk/credential-provider-sso": "3.716.0",
- "@aws-sdk/credential-provider-web-identity": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/credential-provider-imds": "^3.2.8",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.734.0.tgz",
+ "integrity": "sha512-HEyaM/hWI7dNmb4NhdlcDLcgJvrilk8G4DQX6qz0i4pBZGC2l4iffuqP8K6ZQjUfz5/6894PzeFuhTORAMd+cg==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.716.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.716.0.tgz",
- "integrity": "sha512-FGQPK2uKfS53dVvoskN/s/t6m0Po24BGd1PzJdzHBFCOjxbZLM6+8mDMXeyi2hCLVVQOUcuW41kOgmJ0+zMbww==",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.716.0",
- "@aws-sdk/credential-provider-http": "3.716.0",
- "@aws-sdk/credential-provider-ini": "3.716.0",
- "@aws-sdk/credential-provider-process": "3.716.0",
- "@aws-sdk/credential-provider-sso": "3.716.0",
- "@aws-sdk/credential-provider-web-identity": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/credential-provider-imds": "^3.2.8",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.734.0.tgz",
+ "integrity": "sha512-9NOSNbkPVb91JwaXOhyfahkzAwWdMsbWHL6fh5/PHlXYpsDjfIfT23I++toepNF2nODAJNLnOEHGYIxgNgf6jQ==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-ini": "3.734.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.716.0.tgz",
- "integrity": "sha512-0spcu2MWVVHSTHH3WE2E//ttUJPwXRM3BCp+WyI41xLzpNu1Fd8zjOrDpEo0SnGUzsSiRTIJWgkuu/tqv9NJ2A==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz",
+ "integrity": "sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.716.0.tgz",
- "integrity": "sha512-J2IA3WuCpRGGoZm6VHZVFCnrxXP+41iUWb9Ct/1spljegTa1XjiaZ5Jf3+Ubj7WKiyvP9/dgz1L0bu2bYEjliw==",
- "dependencies": {
- "@aws-sdk/client-sso": "3.716.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/token-providers": "3.714.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz",
+ "integrity": "sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q==",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.734.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/token-providers": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.716.0.tgz",
- "integrity": "sha512-vzgpWKs2gGXZGdbMKRFrMW4PqEFWkGvwWH2T7ZwQv9m+8lQ7P4Dk2uimqu0f37HZAbpn8HFMqRh4CaySjU354A==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz",
+ "integrity": "sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.716.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/lib-storage": {
- "version": "3.717.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.717.0.tgz",
- "integrity": "sha512-3Wpsi5soTH2XCEEu9qctj6zVH4ViZ3Qe3crFL7fJQrE9Uw3X60/+IfYfJMgZdQY3pIqmUsjydR93PZG0x6cXLw==",
+ "version": "3.735.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.735.0.tgz",
+ "integrity": "sha512-rKCtjP1MC+coDXFJUpxVEZXY5qShE4aduWZTlmEdGptu81GgM6efNAU/GvMIB6Ttju/m+VqLYLWBuxG5js7Uhw==",
"dependencies": {
- "@smithy/abort-controller": "^3.1.9",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/smithy-client": "^3.5.1",
+ "@smithy/abort-controller": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/smithy-client": "^4.1.2",
"buffer": "5.6.0",
"events": "3.3.0",
"stream-browserify": "3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
"peerDependencies": {
- "@aws-sdk/client-s3": "^3.717.0"
+ "@aws-sdk/client-s3": "^3.735.0"
}
},
"node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
@@ -862,321 +766,367 @@
}
},
"node_modules/@aws-sdk/middleware-bucket-endpoint": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.714.0.tgz",
- "integrity": "sha512-I/xSOskiseJJ8i183Z522BgqbgYzLKP7jGcg2Qeib/IWoG2IP+9DH8pwqagKaPAycyswtnoKBJiiFXY43n0CkA==",
- "dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-arn-parser": "3.693.0",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
- "@smithy/util-config-provider": "^3.0.0",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.734.0.tgz",
+ "integrity": "sha512-etC7G18aF7KdZguW27GE/wpbrNmYLVT755EsFc8kXpZj8D6AFKxc7OuveinJmiy0bYXAMspJUWsF6CrGpOw6CQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-arn-parser": "3.723.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-expect-continue": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.714.0.tgz",
- "integrity": "sha512-rlzsXdG8Lzo4Qpl35ZnpOBAWlzvDHpP9++0AXoUwAJA0QmMm7auIRmgxJuNj91VwT9h15ZU6xjU4S7fJl4W0+w==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.734.0.tgz",
+ "integrity": "sha512-P38/v1l6HjuB2aFUewt7ueAW5IvKkFcv5dalPtbMGRhLeyivBOHwbCyuRKgVs7z7ClTpu9EaViEGki2jEQqEsQ==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.717.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.717.0.tgz",
- "integrity": "sha512-a5kY5r7/7bDZZlOQQGWOR1ulQewdtNexdW1Ex5DD0FLKlFY7RD0va24hxQ6BP7mWHol+Dx4pj6UQ8ahk0ap1tw==",
+ "version": "3.735.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.735.0.tgz",
+ "integrity": "sha512-Tx7lYTPwQFRe/wQEHMR6Drh/S+X0ToAEq1Ava9QyxV1riwtepzRLojpNDELFb3YQVVYbX7FEiBMCJLMkmIIY+A==",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/is-array-buffer": "^3.0.0",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-stream": "^3.3.2",
- "@smithy/util-utf8": "^3.0.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.714.0.tgz",
- "integrity": "sha512-6l68kjNrh5QC8FGX3I3geBDavWN5Tg1RLHJ2HLA8ByGBtJyCwnz3hEkKfaxn0bBx0hF9DzbfjEOUF6cDqy2Kjg==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.734.0.tgz",
+ "integrity": "sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-location-constraint": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.714.0.tgz",
- "integrity": "sha512-MX7M+V+FblujKck3fyuzePVIAy9530gY719IiSxV6uN1qLHl7VDJxNblpF/KpXakD6rOg8OpvtmqsXj9aBMftw==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.734.0.tgz",
+ "integrity": "sha512-EJEIXwCQhto/cBfHdm3ZOeLxd2NlJD+X2F+ZTOxzokuhBtY0IONfC/91hOo5tWQweerojwshSMHRCKzRv1tlwg==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-logger": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.714.0.tgz",
- "integrity": "sha512-RkqHlMvQWUaRklU1bMfUuBvdWwxgUtEqpADaHXlGVj3vtEY2UgBjy+57CveC4MByqKIunNvVHBBbjrGVtwY7Lg==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.734.0.tgz",
+ "integrity": "sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.714.0.tgz",
- "integrity": "sha512-AVU5ixnh93nqtsfgNc284oXsXaadyHGPHpql/jwgaaqQfEXjS/1/j3j9E/vpacfTTz2Vzo7hAOjnvrOXSEVDaA==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.734.0.tgz",
+ "integrity": "sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.716.0.tgz",
- "integrity": "sha512-Qzz5OfRA/5brqfvq+JHTInwS1EuJ1+tC6qMtwKWJN3czMnVJVdnnsPTf+G5IM/1yYaGEIjY8rC1ExQLcc8ApFQ==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-arn-parser": "3.693.0",
- "@smithy/core": "^2.5.5",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/signature-v4": "^4.2.4",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-stream": "^3.3.2",
- "@smithy/util-utf8": "^3.0.0",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.734.0.tgz",
+ "integrity": "sha512-zeZPenDhkP/RXYMFG3exhNOe2Qukg2l2KpIjxq9o66meELiTULoIXjCmgPoWcM8zzrue06SBdTsaJDHfDl2vdA==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-arn-parser": "3.723.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-ssec": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.714.0.tgz",
- "integrity": "sha512-RkK8REAVwNUQmYbIDRw8eYbMJ8F1Rw4C9mlME4BBMhFlelGcD3ErU2ce24moQbDxBjNwHNESmIqgmdQk93CDCQ==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.734.0.tgz",
+ "integrity": "sha512-d4yd1RrPW/sspEXizq2NSOUivnheac6LPeLSLnaeTbBG9g1KqIqvCzP1TfXEqv2CrWfHEsWtJpX7oyjySSPvDQ==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.716.0.tgz",
- "integrity": "sha512-FpAtT6nNKrYdkDZndutEraiRMf+TgDzAGvniqRtZ/YTPA+gIsWrsn+TwMKINR81lFC3nQfb9deS5CFtxd021Ew==",
- "dependencies": {
- "@aws-sdk/core": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-endpoints": "3.714.0",
- "@smithy/core": "^2.5.5",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz",
+ "integrity": "sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg==",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.714.0.tgz",
- "integrity": "sha512-HJzsQxgMOAzZrbf/YIqEx30or4tZK1oNAk6Wm6xecUQx+23JXIaePRu1YFUOLBBERQ4QBPpISFurZWBMZ5ibAw==",
+ "node_modules/@aws-sdk/nested-clients": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz",
+ "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/types": "^3.7.2",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.11",
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.734.0.tgz",
+ "integrity": "sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/s3-request-presigner": {
- "version": "3.717.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.717.0.tgz",
- "integrity": "sha512-gpT310jVQiqVxE6Nh4yEABbYNVOfUC/DuMtp5/JAb+cz1nNLfA45KgaJ73UCPbimVszUH0Cb7RouC/zv1uB84w==",
- "dependencies": {
- "@aws-sdk/signature-v4-multi-region": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@aws-sdk/util-format-url": "3.714.0",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
+ "version": "3.735.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.735.0.tgz",
+ "integrity": "sha512-PzfS4rWDLlp22NORWmezA8ZH6uwz7fAmYfdIbWsPKoy1Rpm+/6Kqn7Nx+Taz6UKNhGPtexutCoJqsMxCy0ZmxQ==",
+ "dependencies": {
+ "@aws-sdk/signature-v4-multi-region": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-format-url": "3.734.0",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.716.0.tgz",
- "integrity": "sha512-k0goWotZKKz+kV6Ln0qeAMSeSVi4NipuIIz5R8A0uCF2zBK4CXWdZR7KeaIoLBhJwQnHj1UU7E+2MK74KIUBzA==",
- "dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/signature-v4": "^4.2.4",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.734.0.tgz",
+ "integrity": "sha512-GSRP8UH30RIYkcpPILV4pWrKFjRmmNjtUd41HTKWde5GbjJvNYpxqFXw2aIJHjKTw/js3XEtGSNeTaQMVVt3CQ==",
+ "dependencies": {
+ "@aws-sdk/middleware-sdk-s3": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.714.0.tgz",
- "integrity": "sha512-vKN064aLE3kl+Zl16Ony3jltHnMddMBT7JRkP1L+lLywhA0PcAKxpdvComul/sTBWnbnwLnaS5NsDUhcWySH8A==",
- "dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz",
+ "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==",
+ "dependencies": {
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-sso-oidc": "^3.714.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.714.0.tgz",
- "integrity": "sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.734.0.tgz",
+ "integrity": "sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-arn-parser": {
- "version": "3.693.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.693.0.tgz",
- "integrity": "sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==",
+ "version": "3.723.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.723.0.tgz",
+ "integrity": "sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.714.0.tgz",
- "integrity": "sha512-Xv+Z2lhe7w7ZZRsgBwBMZgGTVmS+dkkj2S13uNHAx9lhB5ovM8PhK5G/j28xYf6vIibeuHkRAbb7/ozdZIGR+A==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz",
+ "integrity": "sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/types": "^3.7.2",
- "@smithy/util-endpoints": "^2.1.7",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-format-url": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.714.0.tgz",
- "integrity": "sha512-PA/ES6BeKmYzFOsZ3az/8MqSLf6uzXAS7GsYONZMF6YASn4ewd/AspuvQMp6+x9VreAPCq7PecF+XL9KXejtPg==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.734.0.tgz",
+ "integrity": "sha512-TxZMVm8V4aR/QkW9/NhujvYpPZjUYqzLwSge5imKZbWFR806NP7RMwc5ilVuHF/bMOln/cVHkl42kATElWBvNw==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/querystring-builder": "^3.0.11",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-locate-window": {
- "version": "3.693.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.693.0.tgz",
- "integrity": "sha512-ttrag6haJLWABhLqtg1Uf+4LgHWIMOVSYL+VYZmAp2v4PUGOwWmWQH0Zk8RM7YuQcLfH/EoR72/Yxz6A4FKcuw==",
+ "version": "3.723.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.723.0.tgz",
+ "integrity": "sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.714.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.714.0.tgz",
- "integrity": "sha512-OdJJ03cP9/MgIVToPJPCPUImbpZzTcwdIgbXC0tUQPJhbD7b7cB4LdnkhNHko+MptpOrCq4CPY/33EpOjRdofw==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.734.0.tgz",
+ "integrity": "sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==",
"dependencies": {
- "@aws-sdk/types": "3.714.0",
- "@smithy/types": "^3.7.2",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.716.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.716.0.tgz",
- "integrity": "sha512-3PqaXmQbxrtHKAsPCdp7kn5FrQktj8j3YyuNsqFZ8rWZeEQ88GWlsvE61PTsr2peYCKzpFqYVddef2x1axHU0w==",
- "dependencies": {
- "@aws-sdk/middleware-user-agent": "3.716.0",
- "@aws-sdk/types": "3.714.0",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz",
+ "integrity": "sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA==",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
"peerDependencies": {
"aws-crt": ">=1.0.0"
@@ -1188,15 +1138,15 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.709.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.709.0.tgz",
- "integrity": "sha512-2GPCwlNxeHspoK/Mc8nbk9cBOkSpp3j2SJUQmFnyQK6V/pR6II2oPRyZkMomug1Rc10hqlBHByMecq4zhV2uUw==",
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.734.0.tgz",
+ "integrity": "sha512-Zrjxi5qwGEcUsJ0ru7fRtW74WcTS0rbLcehoFB+rN1GRi2hbLcFaYs4PwVA5diLeAJH0gszv3x4Hr/S87MfbKQ==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@babel/code-frame": {
@@ -1213,30 +1163,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz",
- "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
+ "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
- "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
+ "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.26.0",
- "@babel/generator": "^7.26.0",
- "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.5",
+ "@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.0",
- "@babel/parser": "^7.26.0",
+ "@babel/helpers": "^7.26.7",
+ "@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.26.0",
+ "@babel/traverse": "^7.26.7",
+ "@babel/types": "^7.26.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -1258,13 +1208,13 @@
"dev": true
},
"node_modules/@babel/generator": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
- "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
+ "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.26.3",
- "@babel/types": "^7.26.3",
+ "@babel/parser": "^7.26.5",
+ "@babel/types": "^7.26.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -1274,12 +1224,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
- "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
+ "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.25.9",
+ "@babel/compat-data": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -1335,9 +1285,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
- "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -1370,25 +1320,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
- "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz",
+ "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==",
"dev": true,
"dependencies": {
"@babel/template": "^7.25.9",
- "@babel/types": "^7.26.0"
+ "@babel/types": "^7.26.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
- "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
+ "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.26.3"
+ "@babel/types": "^7.26.7"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1619,16 +1569,16 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.26.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz",
- "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
+ "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.3",
- "@babel/parser": "^7.26.3",
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
- "@babel/types": "^7.26.3",
+ "@babel/types": "^7.26.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1646,9 +1596,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
+ "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
@@ -1961,6 +1911,111 @@
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz",
+ "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz",
+ "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ }
+ },
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz",
+ "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "dependencies": {
+ "@csstools/color-helpers": "^5.0.1",
+ "@csstools/css-calc": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz",
+ "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.3"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz",
+ "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@dabh/diagnostics": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
@@ -2242,11 +2297,11 @@
"integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA=="
},
"node_modules/@firebase/component": {
- "version": "0.6.11",
- "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.11.tgz",
- "integrity": "sha512-eQbeCgPukLgsKD0Kw5wQgsMDX5LeoI1MIrziNDjmc6XDq5ZQnuUymANQgAb2wp1tSF9zDSXyxJmIUXaKgN58Ug==",
+ "version": "0.6.12",
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.12.tgz",
+ "integrity": "sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw==",
"dependencies": {
- "@firebase/util": "1.10.2",
+ "@firebase/util": "1.10.3",
"tslib": "^2.1.0"
},
"engines": {
@@ -2254,15 +2309,15 @@
}
},
"node_modules/@firebase/database": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.10.tgz",
- "integrity": "sha512-sWp2g92u7xT4BojGbTXZ80iaSIaL6GAL0pwvM0CO/hb0nHSnABAqsH7AhnWGsGvXuEvbPr7blZylPaR9J+GSuQ==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.11.tgz",
+ "integrity": "sha512-gLrw/XeioswWUXgpVKCPAzzoOuvYNqK5fRUeiJTzO7Mlp9P6ylFEyPJlRBl1djqYye641r3MX6AmIeMXwjgwuQ==",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/auth-interop-types": "0.2.4",
- "@firebase/component": "0.6.11",
+ "@firebase/component": "0.6.12",
"@firebase/logger": "0.4.4",
- "@firebase/util": "1.10.2",
+ "@firebase/util": "1.10.3",
"faye-websocket": "0.11.4",
"tslib": "^2.1.0"
},
@@ -2271,15 +2326,15 @@
}
},
"node_modules/@firebase/database-compat": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.1.tgz",
- "integrity": "sha512-IsFivOjdE1GrjTeKoBU/ZMenESKDXidFDzZzHBPQ/4P20ptGdrl3oLlWrV/QJqJ9lND4IidE3z4Xr5JyfUW1vg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.2.tgz",
+ "integrity": "sha512-5zvdnMsfDHvrQAVM6jBS7CkBpu+z3YbpFdhxRsrK1FP45IEfxlzpeuEUb17D/tpM10vfq4Ok0x5akIBaCv7gfA==",
"dependencies": {
- "@firebase/component": "0.6.11",
- "@firebase/database": "1.0.10",
- "@firebase/database-types": "1.0.7",
+ "@firebase/component": "0.6.12",
+ "@firebase/database": "1.0.11",
+ "@firebase/database-types": "1.0.8",
"@firebase/logger": "0.4.4",
- "@firebase/util": "1.10.2",
+ "@firebase/util": "1.10.3",
"tslib": "^2.1.0"
},
"engines": {
@@ -2287,12 +2342,12 @@
}
},
"node_modules/@firebase/database-types": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.7.tgz",
- "integrity": "sha512-I7zcLfJXrM0WM+ksFmFdAMdlq/DFmpeMNa+/GNsLyFo5u/lX5zzkPzGe3srVWqaBQBY5KprylDGxOsP6ETfL0A==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.8.tgz",
+ "integrity": "sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g==",
"dependencies": {
"@firebase/app-types": "0.9.3",
- "@firebase/util": "1.10.2"
+ "@firebase/util": "1.10.3"
}
},
"node_modules/@firebase/logger": {
@@ -2307,9 +2362,9 @@
}
},
"node_modules/@firebase/util": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.2.tgz",
- "integrity": "sha512-qnSHIoE9FK+HYnNhTI8q14evyqbc/vHRivfB4TgCIUOl4tosmKSQlp7ltymOlMP4xVIJTg5wrkfcZ60X4nUf7Q==",
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.3.tgz",
+ "integrity": "sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A==",
"dependencies": {
"tslib": "^2.1.0"
},
@@ -2370,9 +2425,9 @@
}
},
"node_modules/@google-cloud/storage": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.14.0.tgz",
- "integrity": "sha512-H41bPL2cMfSi4EEnFzKvg7XSb7T67ocSXrmF7MPjfgFB0L6CKGzfIYJheAZi1iqXjz6XaCT1OBf6HCG5vDBTOQ==",
+ "version": "7.15.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.15.0.tgz",
+ "integrity": "sha512-/j/+8DFuEOo33fbdX0V5wjooOoFahEaMEdImHBmM2tH9MPHJYNtmXOf2sGUmZmiufSukmBEvdlzYgDkkgeBiVQ==",
"optional": true,
"dependencies": {
"@google-cloud/paginator": "^5.0.0",
@@ -2639,9 +2694,9 @@
}
},
"node_modules/@hapi/podium": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz",
- "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.2.tgz",
+ "integrity": "sha512-T7gf2JYHQQfEfewTQFbsaXoZxSvuXO/QBIGljucUQ/lmPnTTNAepoIKOakWNVWvo2fMEDjycu77r8k6dhreqHA==",
"dev": true,
"dependencies": {
"@hapi/hoek": "^11.0.2",
@@ -4296,9 +4351,9 @@
}
},
"node_modules/@lerna/create/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -4341,6 +4396,59 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@lerna/create/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@lerna/create/node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@lerna/create/node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@lerna/create/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/@lerna/create/node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -4430,6 +4538,21 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
+ "node_modules/@lerna/create/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/@lerna/create/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -4648,6 +4771,28 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/@lerna/create/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@lerna/create/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
+ },
"node_modules/@lerna/create/node_modules/proc-log": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
@@ -4893,18 +5038,18 @@
}
},
"node_modules/@loopback/boot": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-7.0.9.tgz",
- "integrity": "sha512-ccsTFxEfUxoHbfZCMsb0uUDhQbW1yEzUMHskdi4cTxFPEIvl2zvic8gA/GsTuypbo8joqxS6o0jHyHR9jETtzQ==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-7.0.10.tgz",
+ "integrity": "sha512-VasJ2zSc10w6l4pwXRqzT/pdX2t0xKRB6pRDjCle7j4CuVTkcV83yc6ek5BP1Zs9TV7yY6yEB+Fa7xuvrhUX7Q==",
"dependencies": {
- "@loopback/model-api-builder": "^6.0.9",
- "@loopback/repository": "^7.0.9",
- "@loopback/service-proxy": "^7.0.9",
+ "@loopback/model-api-builder": "^6.0.10",
+ "@loopback/repository": "^7.0.10",
+ "@loopback/service-proxy": "^7.0.10",
"@types/debug": "^4.1.12",
"@types/glob": "^8.1.0",
"debug": "^4.4.0",
- "glob": "^10.4.5",
- "tslib": "^2.6.3"
+ "glob": "^11.0.1",
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -4914,23 +5059,23 @@
}
},
"node_modules/@loopback/build": {
- "version": "11.0.8",
- "resolved": "https://registry.npmjs.org/@loopback/build/-/build-11.0.8.tgz",
- "integrity": "sha512-aFR2mTj1jnK9OynxEoiGkAr+kHYhraHLPBVYOHYP5G83/DD/Ji6rAxXmCmXt4xb71Yk2nG34u+whyNcAFZNQfA==",
+ "version": "11.0.9",
+ "resolved": "https://registry.npmjs.org/@loopback/build/-/build-11.0.9.tgz",
+ "integrity": "sha512-3TcMPpoJJvtABHTN0UXGoyC9KKd7aXSUe4offMptHAs94c1X5bHOpwy9QMP139qQEL/KA9hZC/WaM+KfOBnneQ==",
"dev": true,
"dependencies": {
- "@loopback/eslint-config": "^15.0.4",
+ "@loopback/eslint-config": "^15.0.5",
"@types/mocha": "^10.0.10",
- "@types/node": "^16.18.119",
+ "@types/node": "^16.18.123",
"cross-spawn": "^7.0.6",
"debug": "^4.4.0",
- "eslint": "^8.57.0",
+ "eslint": "^8.57.1",
"fs-extra": "^11.2.0",
- "glob": "^10.4.5",
+ "glob": "^11.0.1",
"lodash": "^4.17.21",
- "mocha": "^10.8.2",
+ "mocha": "^11.0.1",
"nyc": "^17.1.0",
- "prettier": "^3.3.2",
+ "prettier": "^3.4.2",
"rimraf": "^5.0.10",
"source-map-support": "^0.5.21",
"typescript": "~5.2.2"
@@ -4949,26 +5094,15 @@
}
},
"node_modules/@loopback/build/node_modules/@types/node": {
- "version": "16.18.122",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.122.tgz",
- "integrity": "sha512-rF6rUBS80n4oK16EW8nE75U+9fw0SSUgoPtWSvHhPXdT7itbvmS7UjB/jyM8i3AkvI6yeSM5qCwo+xN0npGDHg==",
+ "version": "16.18.125",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.125.tgz",
+ "integrity": "sha512-w7U5ojboSPfZP4zD98d+/cjcN2BDW6lKH2M0ubipt8L8vUC7qUAC6ENKGSJL4tEktH2Saw2K4y1uwSjyRGKMhw==",
"dev": true
},
- "node_modules/@loopback/build/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
"node_modules/@loopback/build/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -4979,73 +5113,6 @@
"node": ">=14.14"
}
},
- "node_modules/@loopback/build/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@loopback/build/node_modules/mocha": {
- "version": "10.8.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
- "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.3",
- "browser-stdout": "^1.3.1",
- "chokidar": "^3.5.3",
- "debug": "^4.3.5",
- "diff": "^5.2.0",
- "escape-string-regexp": "^4.0.0",
- "find-up": "^5.0.0",
- "glob": "^8.1.0",
- "he": "^1.2.0",
- "js-yaml": "^4.1.0",
- "log-symbols": "^4.1.0",
- "minimatch": "^5.1.6",
- "ms": "^2.1.3",
- "serialize-javascript": "^6.0.2",
- "strip-json-comments": "^3.1.1",
- "supports-color": "^8.1.1",
- "workerpool": "^6.5.1",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.9",
- "yargs-unparser": "^2.0.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha.js"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@loopback/build/node_modules/mocha/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/@loopback/build/node_modules/typescript": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
@@ -5059,33 +5126,6 @@
"node": ">=14.17"
}
},
- "node_modules/@loopback/build/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@loopback/build/node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@loopback/cli": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/@loopback/cli/-/cli-5.2.4.tgz",
@@ -5181,9 +5221,9 @@
}
},
"node_modules/@loopback/cli/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -5193,6 +5233,62 @@
"node": ">=14.14"
}
},
+ "node_modules/@loopback/cli/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@loopback/cli/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/@loopback/cli/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@loopback/cli/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@loopback/cli/node_modules/ts-morph": {
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-20.0.0.tgz",
@@ -5215,16 +5311,16 @@
}
},
"node_modules/@loopback/context": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/context/-/context-7.0.9.tgz",
- "integrity": "sha512-NDCNDRO/PaHBGASG/Q+upO+nYbPpabpyzQylLSpk0Ic06oAcyB4mXeUYoxLWIZf9f3F/CMQSvxZz+Zjr2Lvkbg==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/context/-/context-7.0.10.tgz",
+ "integrity": "sha512-3gwjtJk0D2JeMTRzHyyMKwtaQGHa6UlN55Ms7WPjwYKOkhEyeMTTLBYnVtL/J7VoY91lBEcB7CXXAfj6JEHpyQ==",
"dependencies": {
- "@loopback/metadata": "^7.0.9",
+ "@loopback/metadata": "^7.0.10",
"@types/debug": "^4.1.12",
"debug": "^4.4.0",
"hyperid": "^3.3.0",
"p-event": "^4.2.0",
- "tslib": "^2.6.3",
+ "tslib": "^2.8.1",
"uuid": "^10.0.0"
},
"engines": {
@@ -5244,35 +5340,35 @@
}
},
"node_modules/@loopback/core": {
- "version": "6.1.6",
- "resolved": "https://registry.npmjs.org/@loopback/core/-/core-6.1.6.tgz",
- "integrity": "sha512-i4jKlv6O9avq5x3YSCYNUs2bRzrKZdb9svlIggRhGwokbeUuKvZ4D2n+PjpWFQbTM2j6OHi0ENg7UUdXiGOoqg==",
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@loopback/core/-/core-6.1.7.tgz",
+ "integrity": "sha512-OlN3dszhLaihAjJ9U3GAxHo4a7a2VbT/h/majoxJhWG5MH8918CUbegYY2ZQ3F8bb/X9ATXShcLaKGAECV7aZg==",
"dependencies": {
- "@loopback/context": "^7.0.9",
+ "@loopback/context": "^7.0.10",
"debug": "^4.4.0",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
}
},
"node_modules/@loopback/eslint-config": {
- "version": "15.0.4",
- "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-15.0.4.tgz",
- "integrity": "sha512-ZmCd/2qoSQrKzvM4pBmSJJ1KAecVvFFimGQjZgafmxe7J5Jfb1bamLoDYMcMI1DmKCRxd77nweX1PJHC4AmGtg==",
+ "version": "15.0.5",
+ "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-15.0.5.tgz",
+ "integrity": "sha512-0YLaUx3sqjVKGlsmzZ5wkkDX38bOVIAzs8byygCYwLWQnZXehJ/aTrJ/b7/uPyCDllwY/0lTy67HhJqWOSNjRQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/eslint-plugin": "^7.16.0",
- "@typescript-eslint/parser": "^7.16.0",
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
+ "@typescript-eslint/parser": "^7.18.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-eslint-plugin": "^5.5.1",
- "eslint-plugin-mocha": "^10.4.3"
+ "eslint-plugin-mocha": "^10.5.0"
},
"engines": {
"node": "18 || 20 || 22"
},
"peerDependencies": {
- "eslint": "^8.57.0"
+ "eslint": "^8.57.1"
}
},
"node_modules/@loopback/eslint-config/node_modules/@typescript-eslint/eslint-plugin": {
@@ -5481,11 +5577,11 @@
}
},
"node_modules/@loopback/express": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/express/-/express-7.0.9.tgz",
- "integrity": "sha512-S0jXDe0xhRHN5ATLuVIE4292+e/ZyUhZH9i79gDxJDinlj/ltJOpyA2rwkI9HaKJ6DLGH0dG4FJgv7dxgUdU3w==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/express/-/express-7.0.10.tgz",
+ "integrity": "sha512-NSHF41PmkrMWAh19F62M4Lf+qb6ILmBbFNaTHhnGnyX983D+as3Fp7hIN3/DpkEcUvHkzxpp8ODWIXdwm8pMlw==",
"dependencies": {
- "@loopback/http-server": "^6.0.9",
+ "@loopback/http-server": "^6.0.10",
"@types/body-parser": "^1.19.5",
"@types/express": "^4.17.21",
"@types/express-serve-static-core": "^4.17.37",
@@ -5496,7 +5592,7 @@
"http-errors": "^2.0.0",
"on-finished": "^2.4.1",
"toposort": "^2.0.2",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5506,38 +5602,38 @@
}
},
"node_modules/@loopback/filter": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-5.0.8.tgz",
- "integrity": "sha512-WqHXTuMuR/tZzP8wcdMi9qrIF6dSoRGpq5Vqvu7CUFQUludbTJfvf5ol4x1yL5QmrrGEb+hyGx6DATexhsKJxw==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-5.0.9.tgz",
+ "integrity": "sha512-6Tzpixb3AczmpnxN4etChYmpB8Ihx7yuROrfRu2HzY369Hyvjd0KLYWQ+8oIkHka4wzkBh+CKcfBrJV4bPcaDg==",
"dependencies": {
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
}
},
"node_modules/@loopback/http-server": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-6.0.9.tgz",
- "integrity": "sha512-LZlCqARGRzxpyY1R8uNFRKqRtavW3WZyuIU89QYomCp/UfckrXOzkdQe54/dWdwOkNrCibxSY1Nd6XJlM668Bw==",
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-6.0.10.tgz",
+ "integrity": "sha512-vaf0XZxX2p/iKj24UgHbHeDwqBm640uq5VzDeTI+Yy83H188ZZ2fhhsEXjuECLzlQoqVzaxGZdMY+DQnkS+4iQ==",
"dependencies": {
"debug": "^4.4.0",
"stoppable": "^1.1.0",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
}
},
"node_modules/@loopback/metadata": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-7.0.9.tgz",
- "integrity": "sha512-5NmEnsGNQIBQ4ha+smH3QT6S6Y82NSA77A/xOo0zP5UTG8MexZZB3fZXXMpn/xj6qR/o7qwkD+DASN6abm91pA==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-7.0.10.tgz",
+ "integrity": "sha512-1mgN7k56NCyZVY1kpX7DbrDOYN4AQNqQ9lkhz+o42pprSgX2oBzqRZ5T+xPp6liAEvW9CLLxRunVRHOUQbukiw==",
"dependencies": {
"debug": "^4.4.0",
"lodash": "^4.17.21",
"reflect-metadata": "^0.2.1",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5549,11 +5645,11 @@
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="
},
"node_modules/@loopback/model-api-builder": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-6.0.9.tgz",
- "integrity": "sha512-ms9enF31IAu6spzb+Vv/avIYq5Um6JS9P62dZ+OoWVOoXlfAquNNJEGO29qh4VrMESJLpajzWWdxYqRJgnQ/3w==",
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-6.0.10.tgz",
+ "integrity": "sha512-HgMnp+6AhK5WZUAEUHQ31WyfhOhdFpCemiGQxhlwDu4Cs4Yifg7FHHpAz+bYm3/23fKo9tq+9dY6hI5JuVW2lw==",
"dependencies": {
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5564,17 +5660,17 @@
}
},
"node_modules/@loopback/openapi-v3": {
- "version": "10.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-10.0.9.tgz",
- "integrity": "sha512-T5QBlGRYNekjUj/sAFvbRnJatNfEspQg+Dv4rtHW/BMUrbKuzUqtaagypFW4CPDkvmTRKUinOGyVmibgAKfBug==",
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-10.0.10.tgz",
+ "integrity": "sha512-Qpsuc1YQ2IMiHN+Cg7WbKR0PuLFWf4RE3yrzD0SI8UsJQvr4yrlYGOYtToWPwkTezg2OD38PRB0WGB56lFiXtg==",
"dependencies": {
- "@loopback/repository-json-schema": "^8.0.9",
+ "@loopback/repository-json-schema": "^8.0.10",
"debug": "^4.4.0",
"http-status": "^1.8.1",
"json-merge-patch": "^1.0.2",
"lodash": "^4.17.21",
"openapi3-ts": "^2.0.2",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5584,16 +5680,16 @@
}
},
"node_modules/@loopback/repository": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-7.0.9.tgz",
- "integrity": "sha512-I+sc5pSbThKCbCPnwKWLEyNcO97Er2HIEjK92BraFBXGvnEQ54TT7vSeXtaWhWahh02oXBtR2ecbY40HX11wHQ==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-7.0.10.tgz",
+ "integrity": "sha512-vkel6uR3aoNiJ5/U+EslPvck1OEFUHmMRyYkEodT2lDCirT803Tbne3b2uUjFBRR4dYouGOCaQIiFVSrpQN/XQ==",
"dependencies": {
- "@loopback/filter": "^5.0.8",
+ "@loopback/filter": "^5.0.9",
"@types/debug": "^4.1.12",
"debug": "^4.4.0",
"lodash": "^4.17.21",
- "loopback-datasource-juggler": "^5.1.3",
- "tslib": "^2.6.3"
+ "loopback-datasource-juggler": "^5.1.4",
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5603,13 +5699,13 @@
}
},
"node_modules/@loopback/repository-json-schema": {
- "version": "8.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-8.0.9.tgz",
- "integrity": "sha512-kqDg05splhRsU2p3sYFPcMS5nrqcwSBjtqrtyodZwkn6rPj0VxVJV0qzRyNFFy7yO+m4KqbYnY6bep7tto18BA==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-8.0.10.tgz",
+ "integrity": "sha512-XG0Zt4xfGlEOzhUf7UIYf/ZeuzVpUaxzhf6w58TtLgnGo2Gpjo/jNBtQ7/vIDDjjB4A9EBsY0tMcwvKHZLAARA==",
"dependencies": {
"@types/json-schema": "^7.0.15",
"debug": "^4.4.0",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5620,14 +5716,14 @@
}
},
"node_modules/@loopback/repository-tests": {
- "version": "0.24.9",
- "resolved": "https://registry.npmjs.org/@loopback/repository-tests/-/repository-tests-0.24.9.tgz",
- "integrity": "sha512-LIT/Q1wk781ai8O9u2uqYjorTS/DtjEqtPA/FXbRJiOhSvhdoNl4KwoLiMEbZfKVTV7YqgnDKsNzZ8d1izN7ZQ==",
+ "version": "0.24.10",
+ "resolved": "https://registry.npmjs.org/@loopback/repository-tests/-/repository-tests-0.24.10.tgz",
+ "integrity": "sha512-kn+CJdk8VMjVmQ/qNPhnVTJMyNnpVn+cB/muWTvOUjcRaRpucZeTnXm3wSo7Dxnpm1SuQMfKOazBcH9qoPu48Q==",
"dependencies": {
- "@loopback/testlab": "^7.0.8",
+ "@loopback/testlab": "^7.0.9",
"@types/debug": "^4.1.12",
"debug": "^4.4.0",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5638,13 +5734,13 @@
}
},
"node_modules/@loopback/rest": {
- "version": "14.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-14.0.9.tgz",
- "integrity": "sha512-dKlXL7rXDnteiOfeS9802Ehj8sbKhr1nyJ0DiLgADQGRAH6o6rGn0/+I2nXwFCtxOFpqoLyyGCJhu1Ff5Jf3qA==",
+ "version": "14.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-14.0.10.tgz",
+ "integrity": "sha512-Ax3Dr0+Txg2Wi3p6FkM8nNQMrqH2PLUc+qCA1G6wlN+pEIF9oSkiNZI/PnSUk54zmAF+t8GdLT1zTqcHKHJFFA==",
"dependencies": {
- "@loopback/express": "^7.0.9",
- "@loopback/http-server": "^6.0.9",
- "@loopback/openapi-v3": "^10.0.9",
+ "@loopback/express": "^7.0.10",
+ "@loopback/http-server": "^6.0.10",
+ "@loopback/openapi-v3": "^10.0.10",
"@openapi-contrib/openapi-schema-to-json-schema": "^5.1.0",
"@types/body-parser": "^1.19.5",
"@types/cors": "^2.8.17",
@@ -5669,8 +5765,8 @@
"on-finished": "^2.4.1",
"path-to-regexp": "^6.3.0",
"qs": "^6.13.1",
- "strong-error-handler": "^5.0.14",
- "tslib": "^2.6.3",
+ "strong-error-handler": "^5.0.15",
+ "tslib": "^2.8.1",
"type-is": "^1.6.18",
"validator": "^13.12.0"
},
@@ -5682,13 +5778,13 @@
}
},
"node_modules/@loopback/rest-explorer": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-7.0.9.tgz",
- "integrity": "sha512-ANJ0Rwl6zrQRoSTGARX/HLN5YroQFE6Z3aL9QCdNNbigclW/HGXrMmFESdet/EmextKqnFaBMluQ1haUQO8eWQ==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-7.0.10.tgz",
+ "integrity": "sha512-AiP4oRlqPiAdUxffivgTM+ZiRl6fB0eqavd3Ck69PRVze17uvFywcpWtRaOC4TxMbXjoqoaMvIkF36i7h7K5nA==",
"dependencies": {
"ejs": "^3.1.10",
"swagger-ui-dist": "5.18.2",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5719,13 +5815,13 @@
}
},
"node_modules/@loopback/sequelize": {
- "version": "0.6.9",
- "resolved": "https://registry.npmjs.org/@loopback/sequelize/-/sequelize-0.6.9.tgz",
- "integrity": "sha512-xpGfaiRvMLWj6rLMSfe4XF+3bxTZ8CO+ihU9hxoOLLLnX9e32QzpLw7nMQk96ZVGf3sdNZwbdDGezrfX9A5xTQ==",
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/@loopback/sequelize/-/sequelize-0.6.10.tgz",
+ "integrity": "sha512-AUTw5zRXUbWFskx6hOIWiTlXRxWUmRaufzuXlHa2G5Ge0HqdmORL8ec/UfB078+3wpbpzPbjXNcislbyPcum6Q==",
"dependencies": {
"debug": "^4.4.0",
"sequelize": "^6.37.5",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5736,12 +5832,12 @@
}
},
"node_modules/@loopback/service-proxy": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-7.0.9.tgz",
- "integrity": "sha512-BMUilu8At5yrIVxPpkY12ay9iOatT1s8KIogZmctMONL8fvGTrEZTa/lUdOkH3rGP+i1YfoOXwCAgLugu3A/eA==",
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-7.0.10.tgz",
+ "integrity": "sha512-yO8CbAPqve9eJvQPIMaBIhYQWwQBQajIQ3h4azISNtdemqI5O+K9QUfGq6yZK0QUgKMI3wkyq1hqVj39cK5Ouw==",
"dependencies": {
- "loopback-datasource-juggler": "^5.1.3",
- "tslib": "^2.6.3"
+ "loopback-datasource-juggler": "^5.1.4",
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5751,9 +5847,9 @@
}
},
"node_modules/@loopback/testlab": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-7.0.8.tgz",
- "integrity": "sha512-Xj6uRTwODOhE2dNjCp31Tq+b6tR5r22TCNNnc/O8g4qyklNYWZN6lxZkAswXJquUpOYUnbS5+eXwIUlseAoSNQ==",
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-7.0.9.tgz",
+ "integrity": "sha512-02OjJDFp6zXFjhWBHxVLyhoK8gBLQWbyx+faLPMhs6vpZ4SPpvhG43TuApqc8u7D5h5r09O/jMDjzCcNjUKibw==",
"dependencies": {
"@hapi/shot": "^6.0.1",
"@types/express": "^4.17.21",
@@ -5765,9 +5861,9 @@
"fs-extra": "^11.2.0",
"oas-validator": "^5.0.8",
"should": "^13.2.3",
- "sinon": "^18.0.1",
+ "sinon": "^19.0.2",
"supertest": "^7.0.0",
- "tslib": "^2.6.3"
+ "tslib": "^2.8.1"
},
"engines": {
"node": "18 || 20 || 22"
@@ -5782,11 +5878,11 @@
}
},
"node_modules/@loopback/testlab/node_modules/@sinonjs/fake-timers": {
- "version": "11.2.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
- "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
+ "version": "13.0.5",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
+ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
"dependencies": {
- "@sinonjs/commons": "^3.0.0"
+ "@sinonjs/commons": "^3.0.1"
}
},
"node_modules/@loopback/testlab/node_modules/@types/sinon": {
@@ -5797,6 +5893,14 @@
"@types/sinonjs__fake-timers": "*"
}
},
+ "node_modules/@loopback/testlab/node_modules/diff": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/@loopback/testlab/node_modules/formidable": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz",
@@ -5811,9 +5915,9 @@
}
},
"node_modules/@loopback/testlab/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -5854,14 +5958,6 @@
"path-to-regexp": "^8.1.0"
}
},
- "node_modules/@loopback/testlab/node_modules/nise/node_modules/@sinonjs/fake-timers": {
- "version": "13.0.5",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
- "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
- "dependencies": {
- "@sinonjs/commons": "^3.0.1"
- }
- },
"node_modules/@loopback/testlab/node_modules/path-to-regexp": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
@@ -5871,16 +5967,16 @@
}
},
"node_modules/@loopback/testlab/node_modules/sinon": {
- "version": "18.0.1",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.1.tgz",
- "integrity": "sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==",
+ "version": "19.0.2",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.2.tgz",
+ "integrity": "sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==",
"dependencies": {
"@sinonjs/commons": "^3.0.1",
- "@sinonjs/fake-timers": "11.2.2",
- "@sinonjs/samsam": "^8.0.0",
- "diff": "^5.2.0",
- "nise": "^6.0.0",
- "supports-color": "^7"
+ "@sinonjs/fake-timers": "^13.0.2",
+ "@sinonjs/samsam": "^8.0.1",
+ "diff": "^7.0.0",
+ "nise": "^6.1.1",
+ "supports-color": "^7.2.0"
},
"funding": {
"type": "opencollective",
@@ -6043,9 +6139,9 @@
"integrity": "sha512-xsgwcL7J7WhlHJ3RNbaVgssaIwcEyFkBqxHdcdaiJzwTZAWEOD8BuUFxnxV9k5S0qHN3v/KzUpq0IUpjH1seRg=="
},
"node_modules/@messageformat/parser": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.0.tgz",
- "integrity": "sha512-jKlkls3Gewgw6qMjKZ9SFfHUpdzEVdovKFtW1qRhJ3WI4FW5R/NnGDqr8SDGz+krWDO3ki94boMmQvGke1HwUQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.1.tgz",
+ "integrity": "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==",
"dependencies": {
"moo": "^0.5.1"
}
@@ -6108,6 +6204,66 @@
}
}
},
+ "node_modules/@nestjs/cli/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@nestjs/cli/node_modules/typescript": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
@@ -6192,11 +6348,11 @@
"integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw=="
},
"node_modules/@nestjs/mapped-types": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.6.tgz",
- "integrity": "sha512-84ze+CPfp1OWdpRi1/lOu59hOhTz38eVzJvRKrg9ykRFwDz+XleKfMsG0gUqNZYFa6v53XYzeD+xItt8uDW7NQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz",
+ "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==",
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
"class-transformer": "^0.4.0 || ^0.5.0",
"class-validator": "^0.13.0 || ^0.14.0",
"reflect-metadata": "^0.1.12 || ^0.2.0"
@@ -6322,9 +6478,9 @@
"dev": true
},
"node_modules/@nestjs/swagger": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-8.1.0.tgz",
- "integrity": "sha512-8hzH+r/31XshzXHC9vww4T0xjDAxMzvOaT1xAOvvY1LtXTWyNRCUP2iQsCYJOnnMrR+vydWjvRZiuB3hdvaHxA==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-8.1.1.tgz",
+ "integrity": "sha512-5Mda7H1DKnhKtlsb0C7PYshcvILv8UFyUotHzxmWh0G65Z21R3LZH/J8wmpnlzL4bmXIfr42YwbEwRxgzpJ5sQ==",
"dependencies": {
"@microsoft/tsdoc": "^0.15.0",
"@nestjs/mapped-types": "2.0.6",
@@ -6353,6 +6509,25 @@
}
}
},
+ "node_modules/@nestjs/swagger/node_modules/@nestjs/mapped-types": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.6.tgz",
+ "integrity": "sha512-84ze+CPfp1OWdpRi1/lOu59hOhTz38eVzJvRKrg9ykRFwDz+XleKfMsG0gUqNZYFa6v53XYzeD+xItt8uDW7NQ==",
+ "peerDependencies": {
+ "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
+ "class-transformer": "^0.4.0 || ^0.5.0",
+ "class-validator": "^0.13.0 || ^0.14.0",
+ "reflect-metadata": "^0.1.12 || ^0.2.0"
+ },
+ "peerDependenciesMeta": {
+ "class-transformer": {
+ "optional": true
+ },
+ "class-validator": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@nestjs/swagger/node_modules/path-to-regexp": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
@@ -7376,6 +7551,62 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/@npmcli/map-workspaces/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@npmcli/map-workspaces/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/@npmcli/map-workspaces/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@npmcli/map-workspaces/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@npmcli/metavuln-calculator": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz",
@@ -8038,6 +8269,62 @@
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/@npmcli/package-json/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@npmcli/promise-spawn": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz",
@@ -9284,9 +9571,9 @@
}
},
"node_modules/@opentelemetry/context-async-hooks": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.0.tgz",
- "integrity": "sha512-roCetrG/cz0r/gugQm/jFo75UxblVvHaNSRoR0kSSRSzXFAiIBqFCZuH458BHBNRtRe+0yJdIJ21L9t94bw7+g==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz",
+ "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==",
"engines": {
"node": ">=14"
},
@@ -9295,9 +9582,9 @@
}
},
"node_modules/@opentelemetry/core": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz",
- "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz",
+ "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==",
"dependencies": {
"@opentelemetry/semantic-conventions": "1.28.0"
},
@@ -9309,12 +9596,12 @@
}
},
"node_modules/@opentelemetry/exporter-jaeger": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.30.0.tgz",
- "integrity": "sha512-ovV16vnvx0h6dwsHaUnvLHrqkjmejeaUcbgtBPpR+gt65ZhdYso5dgDFkvzqvPnyclKU7muE6QBf+0xRMePJcw==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.30.1.tgz",
+ "integrity": "sha512-7Ki+x7cZ/PEQxp3UyB+CWkWBqLk22yRGQ4AWIGwZlEs6rpCOdWwIFOyQDO9DdeyWtTPTvO3An/7chPZcRHOgzQ==",
"dependencies": {
- "@opentelemetry/core": "1.30.0",
- "@opentelemetry/sdk-trace-base": "1.30.0",
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/sdk-trace-base": "1.30.1",
"@opentelemetry/semantic-conventions": "1.28.0",
"jaeger-client": "^3.15.0"
},
@@ -9518,11 +9805,11 @@
}
},
"node_modules/@opentelemetry/propagator-b3": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.0.tgz",
- "integrity": "sha512-lcobQQmd+hLdtxJJKu/i51lNXmF1PJJ7Y9B97ciHRVQuMI260vSZG7Uf4Zg0fqR8PB+fT/7rnlDwS0M7QldZQQ==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz",
+ "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==",
"dependencies": {
- "@opentelemetry/core": "1.30.0"
+ "@opentelemetry/core": "1.30.1"
},
"engines": {
"node": ">=14"
@@ -9532,11 +9819,11 @@
}
},
"node_modules/@opentelemetry/propagator-jaeger": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.0.tgz",
- "integrity": "sha512-0hdP495V6HPRkVpowt54+Swn5NdesMIRof+rlp0mbnuIUOM986uF+eNxnPo9q5MmJegVBRTxgMHXXwvnXRnKRg==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz",
+ "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==",
"dependencies": {
- "@opentelemetry/core": "1.30.0"
+ "@opentelemetry/core": "1.30.1"
},
"engines": {
"node": ">=14"
@@ -9546,11 +9833,11 @@
}
},
"node_modules/@opentelemetry/resources": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz",
- "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz",
+ "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==",
"dependencies": {
- "@opentelemetry/core": "1.30.0",
+ "@opentelemetry/core": "1.30.1",
"@opentelemetry/semantic-conventions": "1.28.0"
},
"engines": {
@@ -9561,12 +9848,12 @@
}
},
"node_modules/@opentelemetry/sdk-trace-base": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.0.tgz",
- "integrity": "sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz",
+ "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==",
"dependencies": {
- "@opentelemetry/core": "1.30.0",
- "@opentelemetry/resources": "1.30.0",
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/resources": "1.30.1",
"@opentelemetry/semantic-conventions": "1.28.0"
},
"engines": {
@@ -9577,15 +9864,15 @@
}
},
"node_modules/@opentelemetry/sdk-trace-node": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.0.tgz",
- "integrity": "sha512-MeXkXEdBs9xq1JSGTr/3P1lHBSUBaVmo1+UpoQhUpviPMzDXy0MNsdTC7KKI6/YcG74lTX6eqeNjlC1jV4Rstw==",
- "dependencies": {
- "@opentelemetry/context-async-hooks": "1.30.0",
- "@opentelemetry/core": "1.30.0",
- "@opentelemetry/propagator-b3": "1.30.0",
- "@opentelemetry/propagator-jaeger": "1.30.0",
- "@opentelemetry/sdk-trace-base": "1.30.0",
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz",
+ "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==",
+ "dependencies": {
+ "@opentelemetry/context-async-hooks": "1.30.1",
+ "@opentelemetry/core": "1.30.1",
+ "@opentelemetry/propagator-b3": "1.30.1",
+ "@opentelemetry/propagator-jaeger": "1.30.1",
+ "@opentelemetry/sdk-trace-base": "1.30.1",
"semver": "^7.5.2"
},
"engines": {
@@ -10001,6 +10288,47 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/@sigstore/sign/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/@sigstore/sign/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -10066,6 +10394,26 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/@sigstore/sign/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sigstore/sign/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
"node_modules/@sigstore/sign/node_modules/ssri": {
"version": "10.0.6",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
@@ -10144,11 +10492,11 @@
}
},
"node_modules/@sigstore/verify/node_modules/@sigstore/protobuf-specs": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz",
- "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz",
+ "integrity": "sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==",
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@sinclair/typebox": {
@@ -10224,272 +10572,293 @@
"integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA=="
},
"node_modules/@smithy/abort-controller": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz",
- "integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.1.tgz",
+ "integrity": "sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/chunked-blob-reader": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz",
- "integrity": "sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz",
+ "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==",
"dependencies": {
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/chunked-blob-reader-native": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz",
- "integrity": "sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz",
+ "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==",
"dependencies": {
- "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-base64": "^4.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/config-resolver": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.13.tgz",
- "integrity": "sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.0.1.tgz",
+ "integrity": "sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==",
"dependencies": {
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/types": "^3.7.2",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.11",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/core": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.5.tgz",
- "integrity": "sha512-G8G/sDDhXA7o0bOvkc7bgai6POuSld/+XhNnWAbpQTpLv2OZPvyqQ58tLPPlz0bSNsXktldDDREIv1LczFeNEw==",
- "dependencies": {
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-stream": "^3.3.2",
- "@smithy/util-utf8": "^3.0.0",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz",
+ "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==",
+ "dependencies": {
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz",
- "integrity": "sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.1.tgz",
+ "integrity": "sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==",
"dependencies": {
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-codec": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz",
- "integrity": "sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.1.tgz",
+ "integrity": "sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
- "@smithy/types": "^3.7.2",
- "@smithy/util-hex-encoding": "^3.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-serde-browser": {
- "version": "3.0.14",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz",
- "integrity": "sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.1.tgz",
+ "integrity": "sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^3.0.13",
- "@smithy/types": "^3.7.2",
+ "@smithy/eventstream-serde-universal": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-serde-config-resolver": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz",
- "integrity": "sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.0.1.tgz",
+ "integrity": "sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-serde-node": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz",
- "integrity": "sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.1.tgz",
+ "integrity": "sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^3.0.13",
- "@smithy/types": "^3.7.2",
+ "@smithy/eventstream-serde-universal": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-serde-universal": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz",
- "integrity": "sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.1.tgz",
+ "integrity": "sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==",
"dependencies": {
- "@smithy/eventstream-codec": "^3.1.10",
- "@smithy/types": "^3.7.2",
+ "@smithy/eventstream-codec": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.2.tgz",
- "integrity": "sha512-R7rU7Ae3ItU4rC0c5mB2sP5mJNbCfoDc8I5XlYjIZnquyUwec7fEo78F6DA3SmgJgkU1qTMcZJuGblxZsl10ZA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.1.tgz",
+ "integrity": "sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==",
"dependencies": {
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/querystring-builder": "^3.0.11",
- "@smithy/types": "^3.7.2",
- "@smithy/util-base64": "^3.0.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/hash-blob-browser": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz",
- "integrity": "sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.1.tgz",
+ "integrity": "sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==",
"dependencies": {
- "@smithy/chunked-blob-reader": "^4.0.0",
- "@smithy/chunked-blob-reader-native": "^3.0.1",
- "@smithy/types": "^3.7.2",
+ "@smithy/chunked-blob-reader": "^5.0.0",
+ "@smithy/chunked-blob-reader-native": "^4.0.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/hash-node": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.11.tgz",
- "integrity": "sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.1.tgz",
+ "integrity": "sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==",
"dependencies": {
- "@smithy/types": "^3.7.2",
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/hash-stream-node": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz",
- "integrity": "sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.1.tgz",
+ "integrity": "sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==",
"dependencies": {
- "@smithy/types": "^3.7.2",
- "@smithy/util-utf8": "^3.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz",
- "integrity": "sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.1.tgz",
+ "integrity": "sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/is-array-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
- "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
+ "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/md5-js": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.11.tgz",
- "integrity": "sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.1.tgz",
+ "integrity": "sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==",
"dependencies": {
- "@smithy/types": "^3.7.2",
- "@smithy/util-utf8": "^3.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz",
- "integrity": "sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.1.tgz",
+ "integrity": "sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==",
"dependencies": {
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.6.tgz",
- "integrity": "sha512-WAqzyulvvSKrT5c6VrQelgNVNNO7BlTQW9Z+s9tcG6G5CaBS1YBpPtT3VuhXLQbewSiGi7oXQROwpw26EG9PLQ==",
- "dependencies": {
- "@smithy/core": "^2.5.5",
- "@smithy/middleware-serde": "^3.0.11",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
- "@smithy/url-parser": "^3.0.11",
- "@smithy/util-middleware": "^3.0.11",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz",
+ "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==",
+ "dependencies": {
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-middleware": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "3.0.31",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.31.tgz",
- "integrity": "sha512-yq9wawrJLYHAYFpChLujxRN4My+SiKXvZk9Ml/CvTdRSA8ew+hvuR5LT+mjSlSBv3c4XJrkN8CWegkBaeD0Vrg==",
- "dependencies": {
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/service-error-classification": "^3.0.11",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-retry": "^3.0.11",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz",
+ "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
"tslib": "^2.6.2",
"uuid": "^9.0.1"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-retry/node_modules/uuid": {
@@ -10505,374 +10874,380 @@
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz",
- "integrity": "sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz",
+ "integrity": "sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-stack": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz",
- "integrity": "sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.1.tgz",
+ "integrity": "sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz",
- "integrity": "sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.0.1.tgz",
+ "integrity": "sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==",
"dependencies": {
- "@smithy/property-provider": "^3.1.11",
- "@smithy/shared-ini-file-loader": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.2.tgz",
- "integrity": "sha512-t4ng1DAd527vlxvOfKFYEe6/QFBcsj7WpNlWTyjorwXXcKw3XlltBGbyHfSJ24QT84nF+agDha9tNYpzmSRZPA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz",
+ "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==",
"dependencies": {
- "@smithy/abort-controller": "^3.1.9",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/querystring-builder": "^3.0.11",
- "@smithy/types": "^3.7.2",
+ "@smithy/abort-controller": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/property-provider": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz",
- "integrity": "sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.1.tgz",
+ "integrity": "sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/protocol-http": {
- "version": "4.1.8",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
- "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
+ "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/querystring-builder": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz",
- "integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.1.tgz",
+ "integrity": "sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==",
"dependencies": {
- "@smithy/types": "^3.7.2",
- "@smithy/util-uri-escape": "^3.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-uri-escape": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz",
- "integrity": "sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.1.tgz",
+ "integrity": "sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz",
- "integrity": "sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.1.tgz",
+ "integrity": "sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==",
"dependencies": {
- "@smithy/types": "^3.7.2"
+ "@smithy/types": "^4.1.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz",
- "integrity": "sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.1.tgz",
+ "integrity": "sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/signature-v4": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.4.tgz",
- "integrity": "sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==",
- "dependencies": {
- "@smithy/is-array-buffer": "^3.0.0",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
- "@smithy/util-hex-encoding": "^3.0.0",
- "@smithy/util-middleware": "^3.0.11",
- "@smithy/util-uri-escape": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.1.tgz",
+ "integrity": "sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-uri-escape": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/smithy-client": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.5.1.tgz",
- "integrity": "sha512-PmjskH4Os1Eh3rd5vSsa5uVelZ4DRu+N5CBEgb9AT96hQSJGWSEb6pGxKV/PtKQSIp9ft3+KvnT8ViMKaguzgA==",
- "dependencies": {
- "@smithy/core": "^2.5.5",
- "@smithy/middleware-endpoint": "^3.2.6",
- "@smithy/middleware-stack": "^3.0.11",
- "@smithy/protocol-http": "^4.1.8",
- "@smithy/types": "^3.7.2",
- "@smithy/util-stream": "^3.3.2",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz",
+ "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==",
+ "dependencies": {
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-endpoint": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/types": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
- "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
+ "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/url-parser": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz",
- "integrity": "sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.1.tgz",
+ "integrity": "sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==",
"dependencies": {
- "@smithy/querystring-parser": "^3.0.11",
- "@smithy/types": "^3.7.2",
+ "@smithy/querystring-parser": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-base64": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz",
- "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
+ "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
"dependencies": {
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-body-length-browser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz",
- "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
+ "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
"dependencies": {
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz",
- "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
+ "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz",
- "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
+ "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
"dependencies": {
- "@smithy/is-array-buffer": "^3.0.0",
+ "@smithy/is-array-buffer": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-config-provider": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz",
- "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
+ "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "3.0.31",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.31.tgz",
- "integrity": "sha512-eO+zkbqrPnmsagqzrmF7IJrCoU2wTQXWVYxMPqA9Oue55kw9WEvhyuw2XQzTVTCRcYsg6KgmV3YYhLlWQJfK1A==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz",
+ "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==",
"dependencies": {
- "@smithy/property-provider": "^3.1.11",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "3.0.31",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.31.tgz",
- "integrity": "sha512-0/nJfpSpbGZOs6qs42wCe2TdjobbnnD4a3YUUlvTXSQqLy4qa63luDaV04hGvqSHP7wQ7/WGehbvHkDhMZd1MQ==",
- "dependencies": {
- "@smithy/config-resolver": "^3.0.13",
- "@smithy/credential-provider-imds": "^3.2.8",
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/property-provider": "^3.1.11",
- "@smithy/smithy-client": "^3.5.1",
- "@smithy/types": "^3.7.2",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz",
+ "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==",
+ "dependencies": {
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-endpoints": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz",
- "integrity": "sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.1.tgz",
+ "integrity": "sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==",
"dependencies": {
- "@smithy/node-config-provider": "^3.1.12",
- "@smithy/types": "^3.7.2",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-hex-encoding": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz",
- "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
+ "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-middleware": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz",
- "integrity": "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.1.tgz",
+ "integrity": "sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==",
"dependencies": {
- "@smithy/types": "^3.7.2",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-retry": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.11.tgz",
- "integrity": "sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.1.tgz",
+ "integrity": "sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==",
"dependencies": {
- "@smithy/service-error-classification": "^3.0.11",
- "@smithy/types": "^3.7.2",
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-stream": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.2.tgz",
- "integrity": "sha512-sInAqdiVeisUGYAv/FrXpmJ0b4WTFmciTRqzhb7wVuem9BHvhIG7tpiYHLDWrl2stOokNZpTTGqz3mzB2qFwXg==",
- "dependencies": {
- "@smithy/fetch-http-handler": "^4.1.2",
- "@smithy/node-http-handler": "^3.3.2",
- "@smithy/types": "^3.7.2",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-hex-encoding": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz",
+ "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==",
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-uri-escape": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz",
- "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
+ "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-utf8": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz",
- "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
+ "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
"dependencies": {
- "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-waiter": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.2.0.tgz",
- "integrity": "sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.2.tgz",
+ "integrity": "sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==",
"dependencies": {
- "@smithy/abort-controller": "^3.1.9",
- "@smithy/types": "^3.7.2",
+ "@smithy/abort-controller": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
@@ -10881,9 +11256,9 @@
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
},
"node_modules/@sourceloop/audit-log": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/@sourceloop/audit-log/-/audit-log-8.0.4.tgz",
- "integrity": "sha512-GNYM1H7fcHkpwE9aX6lltDab+Ja8G//ajz5CSOVJoY2AYesYY/DFi/MOJ6ci7Q19Y7MTX9c3cxGEZM040Yi34A==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@sourceloop/audit-log/-/audit-log-8.0.5.tgz",
+ "integrity": "sha512-7Gcof4wTLUSIJP7Lp/UPOrjMXgr897mKvp2zUTqeYREUfCu6kl7HpBgZ6TKbfpE8ufWofNGRry9qQ4Z9fW6Wgg==",
"dependencies": {
"@loopback/boot": "^7.0.9",
"@loopback/core": "^6.1.6",
@@ -10908,16 +11283,22 @@
}
},
"node_modules/@sourceloop/audit-log/node_modules/cssstyle": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz",
- "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz",
+ "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==",
"dependencies": {
- "rrweb-cssom": "^0.7.1"
+ "@asamuzakjp/css-color": "^2.8.2",
+ "rrweb-cssom": "^0.8.0"
},
"engines": {
"node": ">=18"
}
},
+ "node_modules/@sourceloop/audit-log/node_modules/cssstyle/node_modules/rrweb-cssom": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="
+ },
"node_modules/@sourceloop/audit-log/node_modules/data-urls": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
@@ -11175,10 +11556,6 @@
"resolved": "sandbox/notification-socket-example",
"link": true
},
- "node_modules/@sourceloop/oauth-example-api": {
- "resolved": "sandbox/oauth-example",
- "link": true
- },
"node_modules/@sourceloop/oidc-basic-example": {
"resolved": "sandbox/oidc-basic-example",
"link": true
@@ -11553,9 +11930,9 @@
}
},
"node_modules/@types/diff": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@types/diff/-/diff-6.0.0.tgz",
- "integrity": "sha512-dhVCYGv3ZSbzmQaBSagrv1WJ6rXCdkyTcDyoNu1MD8JohI7pR7k8wdZEm+mvdxRKXyHVwckFzWU1vJc+Z29MlA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-sVpkpbnTJL9CYoDf4U+tHaQLe5HiTaHWY7m9FuYA7oMCHwC9ie0Vh9eIGapyzYrU3+pILlSY2fAc4elfw5m4dg==",
"dev": true
},
"node_modules/@types/dotenv": {
@@ -11733,10 +12110,14 @@
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
},
"node_modules/@types/json-stable-stringify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz",
- "integrity": "sha512-ESTsHWB72QQq+pjUFIbEz9uSCZppD31YrVkbt2rnUciTYEvcwN6uZIhX5JZeBHqRlFJ41x/7MewCs7E2Qux6Cg==",
- "dev": true
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.2.0.tgz",
+ "integrity": "sha512-PEHY3ohqolHqAzDyB1+31tFaAMnoLN7x/JgdcGmNZ2uvtEJ6rlFCUYNQc0Xe754xxCYLNGZbLUGydSE6tS4S9A==",
+ "deprecated": "This is a stub types definition. json-stable-stringify provides its own type definitions, so you do not need this installed.",
+ "dev": true,
+ "dependencies": {
+ "json-stable-stringify": "*"
+ }
},
"node_modules/@types/jsonfile": {
"version": "6.1.4",
@@ -11747,10 +12128,11 @@
}
},
"node_modules/@types/jsonwebtoken": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
- "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz",
+ "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==",
"dependencies": {
+ "@types/ms": "*",
"@types/node": "*"
}
},
@@ -11794,9 +12176,9 @@
}
},
"node_modules/@types/lodash": {
- "version": "4.17.13",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
- "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg=="
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw=="
},
"node_modules/@types/long": {
"version": "4.0.2",
@@ -11896,9 +12278,9 @@
}
},
"node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
},
"node_modules/@types/multer": {
"version": "1.4.12",
@@ -11920,9 +12302,9 @@
}
},
"node_modules/@types/node": {
- "version": "20.17.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz",
- "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==",
+ "version": "20.17.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz",
+ "integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==",
"dependencies": {
"undici-types": "~6.19.2"
}
@@ -12108,9 +12490,9 @@
}
},
"node_modules/@types/pg": {
- "version": "8.11.10",
- "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.10.tgz",
- "integrity": "sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==",
+ "version": "8.11.11",
+ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.11.tgz",
+ "integrity": "sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==",
"dependencies": {
"@types/node": "*",
"pg-protocol": "*",
@@ -12144,9 +12526,9 @@
}
},
"node_modules/@types/qs": {
- "version": "6.9.17",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz",
- "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ=="
+ "version": "6.9.18",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz",
+ "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA=="
},
"node_modules/@types/range-parser": {
"version": "1.2.7",
@@ -12318,9 +12700,9 @@
"integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="
},
"node_modules/@types/type-is": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.6.tgz",
- "integrity": "sha512-fs1KHv/f9OvmTMsu4sBNaUu32oyda9Y9uK25naJG8gayxNrfqGIjPQsbLIYyfe7xFkppnPlJB+BuTldOaX9bXw==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.7.tgz",
+ "integrity": "sha512-gEsh7n8824nusZ2Sidh6POxNsIdTSvIAl5gXbeFj+TUaD1CO2r4i7MQYNMfEQkChU42s2bVWAda6x6BzIhtFbQ==",
"dependencies": {
"@types/node": "*"
}
@@ -12694,9 +13076,9 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
- "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
"dev": true
},
"node_modules/@webassemblyjs/ast": {
@@ -13058,9 +13440,9 @@
}
},
"node_modules/agentkeepalive": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
+ "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
"dependencies": {
"humanize-ms": "^1.2.1"
},
@@ -13527,6 +13909,15 @@
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/async-retry": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
@@ -14263,9 +14654,9 @@
}
},
"node_modules/boxen/node_modules/type-fest": {
- "version": "4.30.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz",
- "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==",
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz",
+ "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==",
"engines": {
"node": ">=16"
},
@@ -14343,9 +14734,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.24.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz",
- "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==",
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"dev": true,
"funding": [
{
@@ -14899,9 +15290,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001690",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz",
- "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==",
+ "version": "1.0.30001695",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz",
+ "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==",
"dev": true,
"funding": [
{
@@ -14941,9 +15332,9 @@
}
},
"node_modules/casbin": {
- "version": "5.36.0",
- "resolved": "https://registry.npmjs.org/casbin/-/casbin-5.36.0.tgz",
- "integrity": "sha512-vaH292Ed+Op8WhNFA/VJqMearhnQwFs3TU3qKCOAmUeTtGS9un8+fPvJ4OGQ7luWFAG/EVZAvNWCWTbciU4R+Q==",
+ "version": "5.38.0",
+ "resolved": "https://registry.npmjs.org/casbin/-/casbin-5.38.0.tgz",
+ "integrity": "sha512-0VI0j18XtftaMj3nnv6CM3h0EvtB8IWPdxWD1t1myyUBOUboMSsMrU9PUtYFX9oAAXRpY2DWNTF1mXUG+QcYvw==",
"dependencies": {
"@casbin/expression-eval": "^5.3.0",
"await-lock": "^2.0.1",
@@ -15961,9 +16352,9 @@
}
},
"node_modules/configstore/node_modules/type-fest": {
- "version": "4.30.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz",
- "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==",
+ "version": "4.33.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz",
+ "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==",
"engines": {
"node": ">=16"
},
@@ -17068,9 +17459,9 @@
}
},
"node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz",
+ "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="
},
"node_modules/decompress-response": {
"version": "6.0.0",
@@ -17670,9 +18061,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.75",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz",
- "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==",
+ "version": "1.5.88",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz",
+ "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==",
"dev": true
},
"node_modules/emittery": {
@@ -17735,9 +18126,9 @@
}
},
"node_modules/engine.io-client": {
- "version": "6.6.2",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz",
- "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==",
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz",
+ "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1",
@@ -17869,9 +18260,9 @@
}
},
"node_modules/es-abstract": {
- "version": "1.23.7",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz",
- "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==",
+ "version": "1.23.9",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz",
+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==",
"dev": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.2",
@@ -17885,10 +18276,11 @@
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
- "es-set-tostringtag": "^2.0.3",
+ "es-set-tostringtag": "^2.1.0",
"es-to-primitive": "^1.3.0",
"function.prototype.name": "^1.1.8",
- "get-intrinsic": "^1.2.6",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.0",
"get-symbol-description": "^1.1.0",
"globalthis": "^1.0.4",
"gopd": "^1.2.0",
@@ -17909,9 +18301,12 @@
"object-inspect": "^1.13.3",
"object-keys": "^1.1.1",
"object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
"regexp.prototype.flags": "^1.5.3",
"safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
"safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
"string.prototype.trim": "^1.2.10",
"string.prototype.trimend": "^1.0.9",
"string.prototype.trimstart": "^1.0.8",
@@ -17946,15 +18341,15 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
- "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
"dev": true
},
"node_modules/es-object-atoms": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "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==",
"dependencies": {
"es-errors": "^1.3.0"
},
@@ -17963,14 +18358,15 @@
}
},
"node_modules/es-set-tostringtag": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.4",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
- "hasown": "^2.0.1"
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -18175,9 +18571,9 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
- "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz",
+ "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==",
"dev": true,
"dependencies": {
"prettier-linter-helpers": "^1.0.0",
@@ -18726,15 +19122,15 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
@@ -18812,9 +19208,19 @@
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
},
"node_modules/fast-uri": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
- "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw=="
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ]
},
"node_modules/fast-xml-parser": {
"version": "4.4.1",
@@ -19151,9 +19557,9 @@
}
},
"node_modules/firebase-admin/node_modules/@types/node": {
- "version": "22.10.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
- "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
+ "version": "22.12.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz",
+ "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==",
"dependencies": {
"undici-types": "~6.20.0"
}
@@ -19164,9 +19570,9 @@
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
},
"node_modules/firebase-admin/node_modules/uuid": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
- "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz",
+ "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -19332,11 +19738,17 @@
}
},
"node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz",
+ "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==",
"dependencies": {
- "is-callable": "^1.1.3"
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/foreach": {
@@ -19899,20 +20311,20 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
- "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
+ "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
- "dunder-proto": "^1.0.0",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"function-bind": "^1.1.2",
+ "get-proto": "^1.0.0",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
- "math-intrinsics": "^1.0.0"
+ "math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -20066,6 +20478,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "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==",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -20363,20 +20787,23 @@
}
},
"node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz",
+ "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
+ "jackspeak": "^4.0.1",
+ "minimatch": "^10.0.0",
"minipass": "^7.1.2",
"package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
+ "path-scurry": "^2.0.0"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
+ "engines": {
+ "node": "20 || >=22"
+ },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -20398,6 +20825,20 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/glob/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -20581,9 +21022,9 @@
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
},
"node_modules/google-auth-library": {
- "version": "9.15.0",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz",
- "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==",
+ "version": "9.15.1",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
"dependencies": {
"base64-js": "^1.3.0",
"ecdsa-sig-formatter": "^1.0.11",
@@ -21150,9 +21591,9 @@
}
},
"node_modules/http-parser-js": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
- "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz",
+ "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw=="
},
"node_modules/http-proxy-agent": {
"version": "5.0.0",
@@ -21868,12 +22309,16 @@
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
"node_modules/is-async-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
- "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -22084,11 +22529,14 @@
}
},
"node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
+ "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.0",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -22264,7 +22712,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
"integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
- "dev": true,
"dependencies": {
"call-bound": "^1.0.2",
"gopd": "^1.2.0",
@@ -22763,17 +23210,17 @@
}
},
"node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz",
+ "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
+ "engines": {
+ "node": "20 || >=22"
+ },
"funding": {
"url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/jaeger-client": {
@@ -25353,9 +25800,9 @@
}
},
"node_modules/lerna/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -25398,6 +25845,59 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lerna/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/lerna/node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/lerna/node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/lerna/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/lerna/node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -25506,6 +26006,21 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
+ "node_modules/lerna/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/lerna/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -25724,6 +26239,28 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/lerna/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/lerna/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
+ },
"node_modules/lerna/node_modules/proc-log": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
@@ -26349,7 +26886,8 @@
"node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+ "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead."
},
"node_modules/lodash.groupby": {
"version": "4.6.0",
@@ -26381,7 +26919,8 @@
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead."
},
"node_modules/lodash.isfunction": {
"version": "3.0.9",
@@ -26508,9 +27047,9 @@
}
},
"node_modules/long": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
- "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz",
+ "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg=="
},
"node_modules/longest": {
"version": "2.0.1",
@@ -26552,9 +27091,9 @@
}
},
"node_modules/loopback-connector-mysql": {
- "version": "7.0.17",
- "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-7.0.17.tgz",
- "integrity": "sha512-Oxs0hPuPHUZQXlKjymHAoHhtivaZ9TL/Eq1azQK8duvIKbDOZulpmQ5jriVw5HtpSd37BeT2PlvewxGmREEVow==",
+ "version": "7.0.18",
+ "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-7.0.18.tgz",
+ "integrity": "sha512-dW3LdGqwV0CZ+EL5akLKF9IgLu/2qyU8zEF5HVnXAesGwrLv2ntV2MirqLDQN2G7smI58t/3a4hNvZONNTDizA==",
"hasInstallScript": true,
"dependencies": {
"async": "^3.2.6",
@@ -26570,25 +27109,25 @@
}
},
"node_modules/loopback-connector-mysql/node_modules/loopback-connector": {
- "version": "6.1.12",
- "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.1.12.tgz",
- "integrity": "sha512-WO3FVwpbabPfe1h7SmSyB6rBySgScN9mQ0M0GwN8TWbA+0HcCP9DWFiXYPHvS4v7QXOkey62sYVW+7M1l9zkNQ==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.2.0.tgz",
+ "integrity": "sha512-mCYZJCdp0K4tQA5U2XJW1HgWZLCnQ8n/ss+hrLLsqKxBLCal9T3LarBFyFlLUwx4IidKJdQkndE1NUwk948VIA==",
"dependencies": {
"async": "^3.2.6",
"bluebird": "^3.7.2",
- "debug": "^4.3.7",
+ "debug": "^4.4.0",
"msgpack5": "^4.5.1",
"strong-globalize": "^6.0.6",
- "uuid": "^11.0.3"
+ "uuid": "^11.0.5"
},
"engines": {
"node": ">=18"
}
},
"node_modules/loopback-connector-mysql/node_modules/uuid": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
- "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz",
+ "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -26598,9 +27137,9 @@
}
},
"node_modules/loopback-connector-postgresql": {
- "version": "7.1.8",
- "resolved": "https://registry.npmjs.org/loopback-connector-postgresql/-/loopback-connector-postgresql-7.1.8.tgz",
- "integrity": "sha512-fhEVQ+E8otQ4uwMCdiIcQC/WtxuQDgHzWLCtGB2DGuNyAVU5+eY7yGpsUJKmlpTdSVMAZp8TC6KWyYJMKev4+Q==",
+ "version": "7.1.9",
+ "resolved": "https://registry.npmjs.org/loopback-connector-postgresql/-/loopback-connector-postgresql-7.1.9.tgz",
+ "integrity": "sha512-3gOcH4TEeHpLpCjWg93fahGqvjyT3adFLS/2J2uTeWIqmpDXHYLix9qE8pKjbHQcCGf9skilBVIwiLA2yn8RFg==",
"dependencies": {
"async": "^3.2.0",
"bluebird": "^3.4.6",
@@ -26616,25 +27155,25 @@
}
},
"node_modules/loopback-connector-postgresql/node_modules/loopback-connector": {
- "version": "6.1.12",
- "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.1.12.tgz",
- "integrity": "sha512-WO3FVwpbabPfe1h7SmSyB6rBySgScN9mQ0M0GwN8TWbA+0HcCP9DWFiXYPHvS4v7QXOkey62sYVW+7M1l9zkNQ==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.2.0.tgz",
+ "integrity": "sha512-mCYZJCdp0K4tQA5U2XJW1HgWZLCnQ8n/ss+hrLLsqKxBLCal9T3LarBFyFlLUwx4IidKJdQkndE1NUwk948VIA==",
"dependencies": {
"async": "^3.2.6",
"bluebird": "^3.7.2",
- "debug": "^4.3.7",
+ "debug": "^4.4.0",
"msgpack5": "^4.5.1",
"strong-globalize": "^6.0.6",
- "uuid": "^11.0.3"
+ "uuid": "^11.0.5"
},
"engines": {
"node": ">=18"
}
},
"node_modules/loopback-connector-postgresql/node_modules/uuid": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
- "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz",
+ "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -26713,47 +27252,47 @@
}
},
"node_modules/loopback-datasource-juggler": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-5.1.3.tgz",
- "integrity": "sha512-r+fVHyziu1LhiuVDUOMF2C8vqBuHSTJvRlvGHGLMFZI/4XsjUciAFil7r1xSFepGAfBDWZEZUya67m0lb05wXQ==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-5.1.4.tgz",
+ "integrity": "sha512-DI22buY0aorxC2lgXuMaWwBlN4OSJbd7X0jAtIk1Sv8AUBYBd1izlT/po5B4vkbqGo5btkEjHRFG/Rc0F0swzg==",
"dependencies": {
"async": "^3.2.6",
"change-case": "^4.1.2",
- "debug": "^4.3.7",
+ "debug": "^4.4.0",
"depd": "^2.0.0",
- "inflection": "^3.0.0",
+ "inflection": "^3.0.2",
"lodash": "^4.17.21",
- "loopback-connector": "^6.1.12",
+ "loopback-connector": "^6.2.0",
"minimatch": "^10.0.1",
"nanoid": "^3.3.8",
"neotraverse": "^0.6.18",
"qs": "^6.13.1",
"strong-globalize": "^6.0.6",
- "uuid": "^11.0.3"
+ "uuid": "^11.0.5"
},
"engines": {
"node": ">=18"
}
},
"node_modules/loopback-datasource-juggler/node_modules/inflection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.0.tgz",
- "integrity": "sha512-1zEJU1l19SgJlmwqsEyFTbScw/tkMHFenUo//Y0i+XEP83gDFdMvPizAD/WGcE+l1ku12PcTVHQhO6g5E0UCMw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.2.tgz",
+ "integrity": "sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==",
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/loopback-datasource-juggler/node_modules/loopback-connector": {
- "version": "6.1.12",
- "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.1.12.tgz",
- "integrity": "sha512-WO3FVwpbabPfe1h7SmSyB6rBySgScN9mQ0M0GwN8TWbA+0HcCP9DWFiXYPHvS4v7QXOkey62sYVW+7M1l9zkNQ==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.2.0.tgz",
+ "integrity": "sha512-mCYZJCdp0K4tQA5U2XJW1HgWZLCnQ8n/ss+hrLLsqKxBLCal9T3LarBFyFlLUwx4IidKJdQkndE1NUwk948VIA==",
"dependencies": {
"async": "^3.2.6",
"bluebird": "^3.7.2",
- "debug": "^4.3.7",
+ "debug": "^4.4.0",
"msgpack5": "^4.5.1",
"strong-globalize": "^6.0.6",
- "uuid": "^11.0.3"
+ "uuid": "^11.0.5"
},
"engines": {
"node": ">=18"
@@ -26774,9 +27313,9 @@
}
},
"node_modules/loopback-datasource-juggler/node_modules/uuid": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
- "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz",
+ "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -26786,9 +27325,9 @@
}
},
"node_modules/loopback4-authentication": {
- "version": "12.1.1",
- "resolved": "https://registry.npmjs.org/loopback4-authentication/-/loopback4-authentication-12.1.1.tgz",
- "integrity": "sha512-30GQ6TEeoN4nSJYGAMuYd4XEEfOPug77J3Q+yRKCBZyDghRq2Hu4sU78bXjNe39sG7Jf1kzLKL+xF9kYJsarYQ==",
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/loopback4-authentication/-/loopback4-authentication-12.2.0.tgz",
+ "integrity": "sha512-LfVqSDE+g25Nl5j8kSahKzzmXsO2sBesyC7pnPIvcrNyyV5CUpUSdPmaSooz+N8quNDKLn0b72XZyB9+sKQ5xQ==",
"dependencies": {
"@loopback/context": "^7.0.9",
"@loopback/core": "^6.1.6",
@@ -26922,6 +27461,326 @@
"node": ">=18"
}
},
+ "node_modules/loopback4-s3/node_modules/@smithy/abort-controller": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz",
+ "integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/core": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.7.tgz",
+ "integrity": "sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg==",
+ "dependencies": {
+ "@smithy/middleware-serde": "^3.0.11",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-middleware": "^3.0.11",
+ "@smithy/util-stream": "^3.3.4",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/fetch-http-handler": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz",
+ "integrity": "sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA==",
+ "dependencies": {
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/querystring-builder": "^3.0.11",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-base64": "^3.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/is-array-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
+ "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/middleware-endpoint": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz",
+ "integrity": "sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ==",
+ "dependencies": {
+ "@smithy/core": "^2.5.7",
+ "@smithy/middleware-serde": "^3.0.11",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/shared-ini-file-loader": "^3.1.12",
+ "@smithy/types": "^3.7.2",
+ "@smithy/url-parser": "^3.0.11",
+ "@smithy/util-middleware": "^3.0.11",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/middleware-serde": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz",
+ "integrity": "sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/middleware-stack": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz",
+ "integrity": "sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/node-config-provider": {
+ "version": "3.1.12",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz",
+ "integrity": "sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==",
+ "dependencies": {
+ "@smithy/property-provider": "^3.1.11",
+ "@smithy/shared-ini-file-loader": "^3.1.12",
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/node-http-handler": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz",
+ "integrity": "sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==",
+ "dependencies": {
+ "@smithy/abort-controller": "^3.1.9",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/querystring-builder": "^3.0.11",
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/property-provider": {
+ "version": "3.1.11",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz",
+ "integrity": "sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/querystring-builder": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz",
+ "integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-uri-escape": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/querystring-parser": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz",
+ "integrity": "sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/shared-ini-file-loader": {
+ "version": "3.1.12",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz",
+ "integrity": "sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/smithy-client": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.7.0.tgz",
+ "integrity": "sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA==",
+ "dependencies": {
+ "@smithy/core": "^2.5.7",
+ "@smithy/middleware-endpoint": "^3.2.8",
+ "@smithy/middleware-stack": "^3.0.11",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-stream": "^3.3.4",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/url-parser": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz",
+ "integrity": "sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==",
+ "dependencies": {
+ "@smithy/querystring-parser": "^3.0.11",
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-base64": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz",
+ "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-body-length-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz",
+ "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-buffer-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz",
+ "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-hex-encoding": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz",
+ "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-middleware": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz",
+ "integrity": "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz",
+ "integrity": "sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==",
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^4.1.3",
+ "@smithy/node-http-handler": "^3.3.3",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-hex-encoding": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-uri-escape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz",
+ "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/loopback4-s3/node_modules/@smithy/util-utf8": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz",
+ "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/loopback4-soft-delete": {
"version": "10.0.3",
"resolved": "https://registry.npmjs.org/loopback4-soft-delete/-/loopback4-soft-delete-10.0.3.tgz",
@@ -27997,11 +28856,10 @@
}
},
"node_modules/mocha": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz",
- "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz",
+ "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==",
"dev": true,
- "peer": true,
"dependencies": {
"ansi-colors": "^4.1.3",
"browser-stdout": "^1.3.1",
@@ -28020,8 +28878,8 @@
"strip-json-comments": "^3.1.1",
"supports-color": "^8.1.1",
"workerpool": "^6.5.1",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.9",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1",
"yargs-unparser": "^2.0.0"
},
"bin": {
@@ -28032,16 +28890,54 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/mocha/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/mocha/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
- "peer": true,
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mocha/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/mocha/node_modules/minimatch": {
@@ -28049,7 +28945,6 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
- "peer": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -28057,33 +28952,29 @@
"node": ">=10"
}
},
- "node_modules/mocha/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "node_modules/mocha/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mocha/node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "node_modules/mocha/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
- "peer": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mochawesome": {
@@ -28168,9 +29059,9 @@
}
},
"node_modules/moment-timezone": {
- "version": "0.5.46",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz",
- "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==",
+ "version": "0.5.47",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.47.tgz",
+ "integrity": "sha512-UbNt/JAWS0m/NJOebR0QMRHBk0hu03r5dx9GK8Cs0AS3I81yDcOc9k+DytPItgVvBP7J6Mf6U2n3BPAacAV9oA==",
"dependencies": {
"moment": "^2.29.4"
},
@@ -28581,9 +29472,9 @@
}
},
"node_modules/napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
"dev": true
},
"node_modules/natural-compare": {
@@ -28703,9 +29594,9 @@
}
},
"node_modules/node-abi": {
- "version": "3.71.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz",
- "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==",
+ "version": "3.73.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz",
+ "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==",
"dev": true,
"dependencies": {
"semver": "^7.3.5"
@@ -29172,9 +30063,9 @@
"dev": true
},
"node_modules/nodemailer": {
- "version": "6.9.16",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz",
- "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==",
+ "version": "6.10.0",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz",
+ "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==",
"engines": {
"node": ">=6.0.0"
}
@@ -29586,6 +30477,33 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/npm-registry-fetch/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/npm-registry-fetch/node_modules/hosted-git-info": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz",
@@ -29597,6 +30515,20 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/npm-registry-fetch/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/npm-registry-fetch/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -29676,6 +30608,26 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/npm-registry-fetch/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
"node_modules/npm-registry-fetch/node_modules/proc-log": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
@@ -29856,9 +30808,9 @@
}
},
"node_modules/nx/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -30160,6 +31112,10 @@
"node": ">=6"
}
},
+ "node_modules/o-auth": {
+ "resolved": "sandbox/oauth-example",
+ "link": true
+ },
"node_modules/oas-kit-common": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz",
@@ -30507,9 +31463,9 @@
}
},
"node_modules/opentok": {
- "version": "2.18.1",
- "resolved": "https://registry.npmjs.org/opentok/-/opentok-2.18.1.tgz",
- "integrity": "sha512-0dbqGAKKGikEuRUwhbHuhF/nyUH+r4gv3MYy1QpZInD78JpvcKeaX1FgUJjhUYERiVGf4rGay1njAvM6v9hg8g==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/opentok/-/opentok-2.20.0.tgz",
+ "integrity": "sha512-ydmI0mWvMnJF85KjJBT9lylOhCBY6H5MJ00rMhpeLY72pwo0SrfZqKkhfBJNsvR+GB5dnO498EqylIev0jaaQw==",
"dependencies": {
"jsonwebtoken": "9.0.2",
"lodash": "4.17.21",
@@ -30699,6 +31655,23 @@
"@otplib/preset-v11": "^12.0.1"
}
},
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/p-cancelable": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
@@ -31056,11 +32029,11 @@
}
},
"node_modules/pacote/node_modules/@sigstore/protobuf-specs": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz",
- "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz",
+ "integrity": "sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==",
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/pacote/node_modules/@sigstore/sign": {
@@ -31152,6 +32125,25 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/pacote/node_modules/ignore-walk": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz",
@@ -31163,6 +32155,20 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/pacote/node_modules/make-fetch-happen": {
"version": "13.0.1",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
@@ -31308,6 +32314,21 @@
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/pacote/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/pacote/node_modules/read-package-json": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.1.tgz",
@@ -31895,9 +32916,9 @@
}
},
"node_modules/patch-package/node_modules/yaml": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
- "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
+ "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
"bin": {
"yaml": "bin.mjs"
},
@@ -31949,20 +32970,28 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": "20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
+ "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
"node_modules/path-scurry/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -32422,9 +33451,9 @@
}
},
"node_modules/prebuild-install": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
- "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
"dev": true,
"dependencies": {
"detect-libc": "^2.0.0",
@@ -32432,7 +33461,7 @@
"github-from-package": "0.0.0",
"minimist": "^1.2.3",
"mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
+ "napi-build-utils": "^2.0.0",
"node-abi": "^3.3.0",
"pump": "^3.0.0",
"rc": "^1.2.7",
@@ -33462,11 +34491,11 @@
}
},
"node_modules/qs": {
- "version": "6.13.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz",
- "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"dependencies": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -33695,6 +34724,25 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/read-package-json/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/read-package-json/node_modules/hosted-git-info": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz",
@@ -33706,7 +34754,7 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/read-package-json/node_modules/lru-cache": {
+ "node_modules/read-package-json/node_modules/hosted-git-info/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
@@ -33714,6 +34762,28 @@
"node": ">=12"
}
},
+ "node_modules/read-package-json/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/read-package-json/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/read-package-json/node_modules/normalize-package-data": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz",
@@ -33736,6 +34806,21 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/read-package-json/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -34068,18 +35153,18 @@
"integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A=="
},
"node_modules/reflect.getprototypeof": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz",
- "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "dunder-proto": "^1.0.1",
- "es-abstract": "^1.23.6",
+ "es-abstract": "^1.23.9",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "gopd": "^1.2.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
"which-builtin-type": "^1.2.1"
},
"engines": {
@@ -34103,14 +35188,16 @@
"integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
},
"node_modules/regexp.prototype.flags": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
- "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
"es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
"set-function-name": "^2.0.2"
},
"engines": {
@@ -34384,6 +35471,66 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/rimraf/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/rimraf/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/rrweb-cssom": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
@@ -34482,11 +35629,32 @@
"integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
"optional": true
},
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"node_modules/safe-regex-test": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
"integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
- "dev": true,
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
@@ -34838,6 +36006,20 @@
"node": ">= 0.4"
}
},
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -35151,6 +36333,47 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/sigstore/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sigstore/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sigstore/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/sigstore/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -35216,6 +36439,26 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/sigstore/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sigstore/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
"node_modules/sigstore/node_modules/ssri": {
"version": "10.0.6",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
@@ -35733,9 +36976,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.20",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
- "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw=="
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
+ "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg=="
},
"node_modules/spdx-license-list": {
"version": "6.9.0",
@@ -36638,12 +37881,12 @@
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"node_modules/strong-error-handler": {
- "version": "5.0.14",
- "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-5.0.14.tgz",
- "integrity": "sha512-z9zuPyymIeoU0mTsaMvtIGyeiTNSBigSmLCFfbVIcS3FZA9d4g/t0k+jKhlR8rzVj4ppdz9kWCcchUkRrcP0vw==",
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-5.0.15.tgz",
+ "integrity": "sha512-AIUC4SR/uRZ0i1ol53S6J6Rir/p8NpYAnRaH/nEeZbVO+X9Y2B3TXgIiYwwSGJcr080lCTtfkjX+Ev7zYyCuEg==",
"dependencies": {
"accepts": "^1.3.8",
- "debug": "^4.3.7",
+ "debug": "^4.4.0",
"fast-safe-stringify": "^2.1.1",
"handlebars": "^4.7.8",
"http-status": "^1.8.1",
@@ -37312,9 +38555,9 @@
}
},
"node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
+ "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
"dev": true,
"dependencies": {
"chownr": "^1.1.1",
@@ -37863,14 +39106,14 @@
}
},
"node_modules/traverse": {
- "version": "0.6.10",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.10.tgz",
- "integrity": "sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==",
+ "version": "0.6.11",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.11.tgz",
+ "integrity": "sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==",
"dev": true,
"dependencies": {
- "gopd": "^1.0.1",
- "typedarray.prototype.slice": "^1.0.3",
- "which-typed-array": "^1.1.15"
+ "gopd": "^1.2.0",
+ "typedarray.prototype.slice": "^1.0.5",
+ "which-typed-array": "^1.1.18"
},
"engines": {
"node": ">= 0.4"
@@ -37995,9 +39238,9 @@
}
},
"node_modules/ts-loader": {
- "version": "9.5.1",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
- "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz",
+ "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0",
@@ -38592,6 +39835,47 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/tuf-js/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tuf-js/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/tuf-js/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/tuf-js/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -38657,6 +39941,26 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/tuf-js/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tuf-js/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
"node_modules/tuf-js/node_modules/ssri": {
"version": "10.0.6",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
@@ -38901,17 +40205,19 @@
}
},
"node_modules/typedarray.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz",
+ "integrity": "sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
+ "es-abstract": "^1.23.9",
"es-errors": "^1.3.0",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-offset": "^1.0.2"
+ "get-proto": "^1.0.1",
+ "math-intrinsics": "^1.1.0",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -39048,9 +40354,9 @@
"integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
},
"node_modules/undici": {
- "version": "5.28.4",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
- "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "version": "5.28.5",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
+ "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
@@ -39198,9 +40504,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
- "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
+ "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
"dev": true,
"funding": [
{
@@ -39218,7 +40524,7 @@
],
"dependencies": {
"escalade": "^3.2.0",
- "picocolors": "^1.1.0"
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -39798,9 +41104,9 @@
"integrity": "sha512-h0l57vFJ4YQe1/U+C+oqBfAoopxXABUm6VqWM0x2gg4pARru4IUWo/PAxyawWgbGtndXrZbA41EzsfxacZVEXQ=="
},
"node_modules/when-exit": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.3.tgz",
- "integrity": "sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw=="
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.4.tgz",
+ "integrity": "sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg=="
},
"node_modules/which": {
"version": "4.0.0",
@@ -40287,16 +41593,13 @@
}
},
"node_modules/xml-encryption": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/xml-encryption/-/xml-encryption-3.0.2.tgz",
- "integrity": "sha512-VxYXPvsWB01/aqVLd6ZMPWZ+qaj0aIdF+cStrVJMcFj3iymwZeI0ABzB3VqMYv48DkSpRhnrXqTUkR34j+UDyg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xml-encryption/-/xml-encryption-3.1.0.tgz",
+ "integrity": "sha512-PV7qnYpoAMXbf1kvQkqMScLeQpjCMixddAKq9PtqVrho8HnYbBOWNfG0kA4R7zxQDo7w9kiYAyzS/ullAyO55Q==",
"dependencies": {
"@xmldom/xmldom": "^0.8.5",
"escape-html": "^1.0.3",
"xpath": "0.0.32"
- },
- "engines": {
- "node": ">=12"
}
},
"node_modules/xml-encryption/node_modules/xpath": {
@@ -41124,9 +42427,9 @@
}
},
"node_modules/yeoman-environment/node_modules/readable-stream": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.6.0.tgz",
- "integrity": "sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"dependencies": {
"abort-controller": "^3.0.0",
"buffer": "^6.0.3",
@@ -41352,6 +42655,33 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/yeoman-generator/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/yeoman-generator/node_modules/glob/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/yeoman-generator/node_modules/hosted-git-info": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz",
@@ -41379,6 +42709,20 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
+ "node_modules/yeoman-generator/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/yeoman-generator/node_modules/locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -41525,6 +42869,26 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/yeoman-generator/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/yeoman-generator/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
"node_modules/yeoman-generator/node_modules/proc-log": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
@@ -41989,9 +43353,9 @@
}
},
"packages/cache/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -42774,9 +44138,9 @@
}
},
"packages/core/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -42890,9 +44254,9 @@
}
},
"packages/feature-toggle/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -42945,9 +44309,9 @@
}
},
"packages/file-utils/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -42999,9 +44363,9 @@
}
},
"sandbox/audit-ms-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43272,9 +44636,9 @@
}
},
"sandbox/auth-mfa-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43384,9 +44748,9 @@
}
},
"sandbox/auth-ms-basic-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43444,9 +44808,9 @@
}
},
"sandbox/auth-multitenant-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43718,9 +45082,9 @@
}
},
"sandbox/auth-public-private-client/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43820,9 +45184,9 @@
}
},
"sandbox/cache-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43869,9 +45233,9 @@
}
},
"sandbox/feature-toggle-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -43918,9 +45282,9 @@
}
},
"sandbox/in-mail-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44341,9 +45705,9 @@
}
},
"sandbox/nestjs-auth-ms-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44392,9 +45756,9 @@
}
},
"sandbox/notification-socket-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44405,43 +45769,272 @@
}
},
"sandbox/oauth-example": {
- "name": "@sourceloop/oauth-example-api",
- "version": "0.5.13",
+ "name": "o-auth",
+ "version": "0.0.1",
"license": "MIT",
"dependencies": {
"@loopback/boot": "^7.0.9",
+ "@loopback/context": "^7.0.9",
"@loopback/core": "^6.1.6",
+ "@loopback/openapi-v3": "^10.0.9",
"@loopback/repository": "^7.0.9",
"@loopback/rest": "^14.0.9",
"@loopback/rest-explorer": "^7.0.9",
"@loopback/service-proxy": "^7.0.9",
+ "@opentelemetry/exporter-jaeger": "^1.15.0",
+ "@opentelemetry/plugin-dns": "^0.15.0",
+ "@opentelemetry/plugin-http": "^0.18.2",
+ "@opentelemetry/plugin-https": "^0.18.2",
+ "@opentelemetry/plugin-pg": "^0.15.0",
+ "@opentelemetry/plugin-pg-pool": "^0.15.0",
+ "@opentelemetry/sdk-trace-base": "^1.15.0",
+ "@opentelemetry/sdk-trace-node": "^1.15.0",
"@sourceloop/authentication-service": "^20.0.2",
- "bcrypt": "^5.0.1",
+ "@sourceloop/core": "^15.0.2",
"db-migrate": "^1.0.0-beta.21",
"db-migrate-pg": "^1.3.0",
"dotenv": "^16.4.5",
"dotenv-extended": "^2.9.0",
+ "loopback-connector-kv-redis": "^4.0.0",
"loopback-connector-postgresql": "^7.1.8",
+ "loopback4-authentication": "^12.1.1",
+ "loopback4-authorization": "^7.0.3",
+ "swagger-stats": "^0.99.5",
+ "symlink-resolver": "0.2.1",
"tslib": "^2.6.2"
},
"devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
"@loopback/build": "^11.0.8",
"@loopback/eslint-config": "^15.0.4",
"@loopback/testlab": "^7.0.8",
- "@types/bcrypt": "^5.0.0",
"@types/node": "^20.12.7",
"eslint": "^8.57.0",
+ "nodemon": "^2.0.21",
+ "nyc": "^15.1.0",
"source-map-support": "^0.5.21",
"typescript": "^5.4.5"
},
"engines": {
- "node": "18 || 20"
+ "node": ">=18"
+ }
+ },
+ "sandbox/oauth-example/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==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "sandbox/oauth-example/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "sandbox/oauth-example/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "sandbox/oauth-example/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/foreground-child": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "sandbox/oauth-example/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "sandbox/oauth-example/node_modules/istanbul-lib-instrument": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "sandbox/oauth-example/node_modules/nyc": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
+ "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "caching-transform": "^4.0.0",
+ "convert-source-map": "^1.7.0",
+ "decamelize": "^1.2.0",
+ "find-cache-dir": "^3.2.0",
+ "find-up": "^4.1.0",
+ "foreground-child": "^2.0.0",
+ "get-package-type": "^0.1.0",
+ "glob": "^7.1.6",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-hook": "^3.0.0",
+ "istanbul-lib-instrument": "^4.0.0",
+ "istanbul-lib-processinfo": "^2.0.2",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.0.2",
+ "make-dir": "^3.0.0",
+ "node-preload": "^0.2.1",
+ "p-map": "^3.0.0",
+ "process-on-spawn": "^1.0.0",
+ "resolve-from": "^5.0.0",
+ "rimraf": "^3.0.0",
+ "signal-exit": "^3.0.2",
+ "spawn-wrap": "^2.0.0",
+ "test-exclude": "^6.0.0",
+ "yargs": "^15.0.2"
+ },
+ "bin": {
+ "nyc": "bin/nyc.js"
+ },
+ "engines": {
+ "node": ">=8.9"
+ }
+ },
+ "sandbox/oauth-example/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "sandbox/oauth-example/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"sandbox/oauth-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44451,6 +46044,61 @@
"node": ">=14.17"
}
},
+ "sandbox/oauth-example/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "sandbox/oauth-example/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "sandbox/oauth-example/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"sandbox/oidc-basic-example": {
"name": "@sourceloop/oidc-basic-example",
"version": "0.4.9",
@@ -44480,9 +46128,9 @@
}
},
"sandbox/oidc-basic-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44528,9 +46176,9 @@
}
},
"sandbox/payment-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44584,9 +46232,9 @@
}
},
"sandbox/pubnub-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44634,9 +46282,9 @@
}
},
"sandbox/scheduler-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44686,9 +46334,9 @@
}
},
"sandbox/search-ms-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -44737,9 +46385,9 @@
}
},
"sandbox/task-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45010,9 +46658,9 @@
}
},
"sandbox/user-tenant-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45117,9 +46765,9 @@
}
},
"sandbox/video-conferencing-ms-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45171,9 +46819,9 @@
}
},
"sandbox/workflow-ms-example/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45231,9 +46879,9 @@
}
},
"services/audit-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45586,9 +47234,9 @@
}
},
"services/authentication-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45705,9 +47353,9 @@
}
},
"services/bpmn-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -45979,9 +47627,9 @@
}
},
"services/chat-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -46106,9 +47754,9 @@
}
},
"services/feature-toggle-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -46375,9 +48023,9 @@
}
},
"services/in-mail-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -46942,9 +48590,9 @@
}
},
"services/notification-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -47327,9 +48975,9 @@
}
},
"services/oidc-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -47448,9 +49096,9 @@
}
},
"services/payment-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -47508,9 +49156,9 @@
"dev": true
},
"services/reporting-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -48002,9 +49650,9 @@
}
},
"services/scheduler-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -48522,9 +50170,9 @@
}
},
"services/search-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -48827,9 +50475,9 @@
}
},
"services/survey-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -49175,9 +50823,9 @@
}
},
"services/task-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -49386,9 +51034,9 @@
}
},
"services/user-tenant-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -49950,9 +51598,9 @@
}
},
"services/video-conferencing-service/node_modules/typescript": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
- "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
diff --git a/sandbox/oauth-example/.dockerignore b/sandbox/oauth-example/.dockerignore
index 7aecc7e3dd..86e2a5ca75 100644
--- a/sandbox/oauth-example/.dockerignore
+++ b/sandbox/oauth-example/.dockerignore
@@ -1,5 +1,6 @@
-node_modules
+coverage
npm-debug.log
/dist
# Cache used by TypeScript's incremental build
*.tsbuildinfo
+mochawesome-report
\ No newline at end of file
diff --git a/sandbox/oauth-example/.env.defaults b/sandbox/oauth-example/.env.defaults
new file mode 100644
index 0000000000..9be445332f
--- /dev/null
+++ b/sandbox/oauth-example/.env.defaults
@@ -0,0 +1,66 @@
+NODE_ENV=production
+LOG_LEVEL=info
+USER_TEMP_PASSWORD=temp123!@
+GOOGLE_AUTH_URL=q
+GOOGLE_AUTH_CLIENT_ID=a
+GOOGLE_AUTH_CLIENT_SECRET=q
+GOOGLE_AUTH_TOKEN_URL=q
+GOOGLE_AUTH_CALLBACK_URL=q
+GOOGLE_TOKEN_INFO_URL=q
+INSTAGRAM_AUTH_URL=q
+INSTAGRAM_AUTH_CLIENT_ID=a
+INSTAGRAM_AUTH_CLIENT_SECRET=q
+INSTAGRAM_AUTH_TOKEN_URL=q
+INSTAGRAM_AUTH_CALLBACK_URL=q
+SAML_URL=q
+SAML_CLIENT_ID=a
+SAML_CLIENT_SECRET=q
+SAML_TOKEN_URL=q
+SAML_CALLBACK_URL=q
+APPLE_AUTH_URL=q
+APPLE_AUTH_CLIENT_ID=a
+APPLE_AUTH_TEAM_ID=q
+APPLE_AUTH_KEY_ID=q
+APPLE_AUTH_CALLBACK_URL=q
+FACEBOOK_AUTH_URL=q
+FACEBOOK_AUTH_CLIENT_ID=a
+FACEBOOK_AUTH_CLIENT_SECRET=q
+FACEBOOK_AUTH_TOKEN_URL=q
+FACEBOOK_AUTH_CALLBACK_URL=q
+REDIS_PORT=a
+REDIS_HOST=a
+REDIS_URL=
+REDIS_PASSWORD=a
+REDIS_DATABASE=a
+FORGOT_PASSWORD_LINK_EXPIRY=30
+REQUEST_SIGNUP_LINK_EXPIRY=30
+
+# AZURE AD
+#boolean values will be 0 or 1
+
+AZURE_AUTH_ENABLED=0
+AZURE_IDENTITY_METADATA=https://login.microsoftonline.com/common/.well-known/openid-configuration
+AZURE_AUTH_CLIENT_ID=a
+AZURE_AUTH_REDIRECT_URL=url
+AZURE_AUTH_CLIENT_SECRET=client_secret
+AZURE_AUTH_ALLOW_HTTP_REDIRECT=1
+AZURE_AUTH_COOKIE_INSTEAD_SESSION=1
+AZURE_AUTH_PASS_REQ_CALLBACK=0
+AZURE_AUTH_VALIDATE_ISSUER=0
+AZURE_AUTH_B2C_TENANT=0
+AZURE_AUTH_CLOCK_SKEW=300
+AZURE_AUTH_LOG_LEVEL=
+AZURE_AUTH_LOG_PII=1
+AZURE_AUTH_NONCE_TIME=3600
+AZURE_AUTH_NONCE_COUNT=10
+AZURE_AUTH_ISSUER=
+
+# key is 32 bit
+
+AZURE_AUTH_COOKIE_KEY=
+
+#iv is 12 bit
+
+AZURE_AUTH_COOKIE_IV=
+
+MAX_JWT_KEYS=2
diff --git a/sandbox/oauth-example/.env.example b/sandbox/oauth-example/.env.example
new file mode 100644
index 0000000000..71738a117e
--- /dev/null
+++ b/sandbox/oauth-example/.env.example
@@ -0,0 +1,20 @@
+NODE_ENV=
+LOG_LEVEL=
+DB_HOST=
+DB_PORT=
+DB_USER=
+DB_PASSWORD=
+DB_DATABASE=
+DB_SCHEMA=
+REDIS_HOST=
+REDIS_PORT=
+REDIS_URL=
+REDIS_PASSWORD=
+REDIS_DATABASE=
+JWT_SECRET=
+JWT_ISSUER=
+GOOGLE_AUTH_URL=
+GOOGLE_AUTH_CLIENT_ID=
+GOOGLE_AUTH_CLIENT_SECRET=
+GOOGLE_AUTH_TOKEN_URL=
+GOOGLE_AUTH_CALLBACK_URL=
\ No newline at end of file
diff --git a/sandbox/oauth-example/.eslintignore b/sandbox/oauth-example/.eslintignore
index 51b39e3ec0..7ea7e127cc 100644
--- a/sandbox/oauth-example/.eslintignore
+++ b/sandbox/oauth-example/.eslintignore
@@ -2,4 +2,6 @@ node_modules/
dist/
coverage/
migrations/
+migration.js
.eslintrc.js
+mochawesome-report/
\ No newline at end of file
diff --git a/sandbox/oauth-example/.eslintrc.js b/sandbox/oauth-example/.eslintrc.js
index 978b9dcca2..aef13fa415 100644
--- a/sandbox/oauth-example/.eslintrc.js
+++ b/sandbox/oauth-example/.eslintrc.js
@@ -1,3 +1,13 @@
module.exports = {
extends: '@loopback/eslint-config',
+ rules: {
+ 'no-extra-boolean-cast': 'off',
+ '@typescript-eslint/interface-name-prefix': 'off',
+ 'no-prototype-builtins': 'off',
+ 'no-await-in-loop': 'error',
+ },
+ parserOptions: {
+ project: './tsconfig.json',
+ tsconfigRootDir: __dirname,
+ },
};
diff --git a/sandbox/oauth-example/.mocharc.json b/sandbox/oauth-example/.mocharc.json
index 7b523c3163..a141fff9d2 100644
--- a/sandbox/oauth-example/.mocharc.json
+++ b/sandbox/oauth-example/.mocharc.json
@@ -1,5 +1,6 @@
{
"exit": true,
"recursive": true,
- "require": "source-map-support/register"
+ "require": "source-map-support/register",
+ "reporter": "mochawesome"
}
diff --git a/sandbox/oauth-example/.nycrc b/sandbox/oauth-example/.nycrc
new file mode 100644
index 0000000000..115a4e397c
--- /dev/null
+++ b/sandbox/oauth-example/.nycrc
@@ -0,0 +1,5 @@
+{
+ "extends": "@istanbuljs/nyc-config-typescript",
+ "all": true,
+ "reporter": ["html", "text-summary"]
+}
\ No newline at end of file
diff --git a/sandbox/oauth-example/.prettierignore b/sandbox/oauth-example/.prettierignore
index c6911da9e1..3f725726d0 100644
--- a/sandbox/oauth-example/.prettierignore
+++ b/sandbox/oauth-example/.prettierignore
@@ -1,2 +1,5 @@
dist
*.json
+coverage
+mochawesome-report
+node_modules/
\ No newline at end of file
diff --git a/sandbox/oauth-example/.vscode/settings.json b/sandbox/oauth-example/.vscode/settings.json
index 07313667ec..fa3c3aea67 100644
--- a/sandbox/oauth-example/.vscode/settings.json
+++ b/sandbox/oauth-example/.vscode/settings.json
@@ -5,8 +5,8 @@
"editor.trimAutoWhitespace": true,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
- "source.organizeImports": true,
- "source.fixAll.eslint": true
+ "source.organizeImports": "explicit",
+ "source.fixAll.eslint": "explicit"
},
"files.exclude": {
@@ -15,7 +15,7 @@
"**/.hg": true,
"**/.svn": true,
"**/CVS": true,
- "dist": true,
+ "dist": true
},
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
@@ -25,8 +25,5 @@
"typescript.preferences.quoteStyle": "single",
"eslint.run": "onSave",
"eslint.nodePath": "./node_modules",
- "eslint.validate": [
- "javascript",
- "typescript"
- ]
+ "eslint.validate": ["javascript", "typescript"]
}
diff --git a/sandbox/oauth-example/.yo-rc.json b/sandbox/oauth-example/.yo-rc.json
index a464128411..d4a996bdbb 100644
--- a/sandbox/oauth-example/.yo-rc.json
+++ b/sandbox/oauth-example/.yo-rc.json
@@ -1,6 +1,6 @@
{
- "@loopback/cli": {
+ "@sourceloop/cli": {
"packageManager": "npm",
- "version": "4.1.0"
+ "version": "5.2.4"
}
}
diff --git a/sandbox/oauth-example/CHANGELOG.md b/sandbox/oauth-example/CHANGELOG.md
deleted file mode 100644
index 92dc1b2c86..0000000000
--- a/sandbox/oauth-example/CHANGELOG.md
+++ /dev/null
@@ -1,492 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## 0.5.13 (2025-01-07)
-
-* chore(deps): version update (#2227) ([6d6b00e](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/6d6b00e)), closes [#2227](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2227)
-
-
-
-
-
-## 0.5.12 (2024-12-20)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.11 (2024-12-05)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.10 (2024-11-22)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.9 (2024-10-22)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.8 (2024-10-16)
-
-* chore(ci-cd): resolve sonar issues (#2179) ([12ec556](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/12ec556)), closes [#2179](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2179) [#2177](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2177) [#2177](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2177)
-* chore(ci-cd): resolve sonar issues (#2180) ([19c969b](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/19c969b)), closes [#2180](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2180) [#2177](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2177)
-
-
-
-
-
-## 0.5.7 (2024-09-30)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.6 (2024-09-30)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.5 (2024-09-26)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.4 (2024-08-05)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.3 (2024-06-11)
-
-* chore: publish release ([89d1599](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/89d1599))
-* chore(deps): version update in sandbox (#2109) ([615d7f5](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/615d7f5)), closes [#2109](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2109) [#2104](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2104) [#2104](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2104)
-* chore(deps): version bump commit (#2111) ([c87bc75](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/c87bc75)), closes [#2111](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2111) [#00](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/00)
-* fix(all-services): revert to pr 2072 (#2106) ([502812f](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/502812f)), closes [#2106](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2106) [#0](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/0) [#0](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/0)
-
-
-
-
-
-## 0.5.2 (2024-06-10)
-
-* fix(all-services): revert to pr 2072 (#2106) ([502812f](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/502812f)), closes [#2106](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2106) [#0](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/0) [#0](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/0)
-
-
-
-
-
-## 0.5.1 (2024-06-04)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.5.0 (2024-05-20)
-
-* feat(all-services): Follow solid for repositories in all services (#2072) ([82c934b](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/82c934b)), closes [#2072](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2072) [#2037](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2037)
-
-
-
-
-
-## 0.4.4 (2024-05-07)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.4.3 (2024-04-05)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.4.2 (2024-04-02)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.4.1 (2024-03-26)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.4.0 (2024-03-20)
-
-* feat(authentication-service): added SAML example (#1912) ([72002ac](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/72002ac)), closes [#1912](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1912) [#1663](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1663) [#1663](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1663)
-
-
-### BREAKING CHANGE
-
-*
-
-
-
-
-## 0.3.12 (2024-03-12)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.11 (2024-03-06)
-
-* fix(all-services): fix sonar issues in all services (#2018) ([33dfa77](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/33dfa77)), closes [#2018](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2018) [#2013](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2013)
-* fix(all-services): fix the pending sonar issues in all services (#2025) ([b2f6dc3](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/b2f6dc3)), closes [#2025](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2025) [#2013](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/2013)
-* chore(deps): update versions in sandbox and fix vulnerabilities (#1941) ([5e37add](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/5e37add)), closes [#1941](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1941) [#1934](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1934)
-
-
-
-
-
-## 0.3.10 (2024-02-02)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.9 (2024-02-01)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.8 (2024-01-23)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.7 (2024-01-19)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.6 (2024-01-09)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.5 (2024-01-01)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.4 (2024-01-01)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.3 (2023-12-22)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.2 (2023-12-07)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.1 (2023-12-07)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.3.0 (2023-11-09)
-
-* feat(chore): migrate to use npm workspaces (#1684) ([72d8f6e](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/72d8f6e)), closes [#1684](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1684) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673) [#1673](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1673)
-
-
-### BREAKING CHANGE
-
-* lerna bootstrap command will not be supported
-* lerna bootstrap command will not be supported
-* lerna bootstrap command will not be supported
-* lerna bootstrap will not be supported
-* lerna bootstrap will not be supported
-
-
-
-
-## 0.2.25 (2023-10-19)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.24 (2023-10-05)
-
-* refactor(all-services): remove redundant `posttest` script (#1677) ([4b252cf](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/4b252cf)), closes [#1677](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1677) [#1657](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1657)
-
-
-
-
-
-## 0.2.23 (2023-09-01)
-
-* refactor(all-services): fix sonar code smells (#1602) ([51f1cc3](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/51f1cc3)), closes [#1602](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1602)
-
-
-
-
-
-## 0.2.22 (2023-08-10)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.21 (2023-08-09)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.20 (2023-07-28)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.19 (2023-07-18)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.18 (2023-07-11)
-
-* chore(deps): combine dependabot updates (#1474) ([c333a9c](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/c333a9c)), closes [#1474](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1474)
-* chore(deps): combine snyk updates (#1480) ([ef93ac6](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/ef93ac6)), closes [#1480](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1480)
-* chore(deps): package lock upgrade (#1519) ([5aaddbf](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/5aaddbf)), closes [#1519](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1519)
-
-
-
-
-
-## 0.2.17 (2023-06-19)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.16 (2023-06-10)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.15 (2023-06-08)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.14 (2023-06-08)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.13 (2023-06-07)
-
-* refactor(all-services): remove empty and unnecessary folder (#1423) ([15c8235](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/15c8235)), closes [#1423](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1423)
-
-
-
-
-
-## 0.2.12 (2023-05-11)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.11 (2023-05-03)
-
-* chore(all-services): update license and copyright headers (#1405) ([7493640](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/7493640)), closes [#1405](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1405)
-
-
-
-
-
-## 0.2.10 (2023-04-27)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.9 (2023-04-10)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.8 (2023-03-15)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.7 (2023-03-06)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.6 (2023-02-01)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.5 (2023-01-31)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.4 (2023-01-20)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.3 (2023-01-17)
-
-* fix(authentication-service): fix sql syntax in migrations. (#1205) ([2a1298b](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/2a1298b)), closes [#1205](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1205) [#1204](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1204) [#1204](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1204)
-
-
-
-
-
-## 0.2.2 (2023-01-12)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.1 (2022-12-07)
-
-**Note:** Version bump only for package @sourceloop/oauth-example-api
-
-
-
-
-
-## 0.2.0 (2022-11-25)
-
-* feat(authentication-service): feat(authentication-service): change parent class AuthClient (#1081) ([537cc75](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/537cc75)), closes [#1081](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1081)
-
-
-
-
-
-## 0.1.0 (2022-10-17)
-
-* feat(sandbox): add oAuth-example with ui (#1008) ([2c990dc](https://github.com/sourcefuse/loopback4-microservice-catalog/commit/2c990dc)), closes [#1008](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/1008) [#993](https://github.com/sourcefuse/loopback4-microservice-catalog/issues/993)
diff --git a/sandbox/oauth-example/Dockerfile b/sandbox/oauth-example/Dockerfile
deleted file mode 100644
index 320047513d..0000000000
--- a/sandbox/oauth-example/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Check out https://hub.docker.com/_/node to select a new base image
-FROM node:lts-slim
-
-# Set to a non-root built-in user `node`
-USER node
-
-# Create app directory (with user `node`)
-RUN mkdir -p /home/node/app
-
-WORKDIR /home/node/app
-
-# Install app dependencies
-# A wildcard is used to ensure both package.json AND package-lock.json are copied
-# where available (npm@5+)
-COPY --chown=node package*.json ./
-
-RUN npm ci
-
-# Bundle app source code
-COPY --chown=node . .
-
-RUN npm run build
-
-# Bind to all network interfaces so that it can be mapped to the host OS
-ENV HOST=0.0.0.0 PORT=3000
-
-EXPOSE ${PORT}
-CMD [ "node", "." ]
diff --git a/sandbox/oauth-example/README.md b/sandbox/oauth-example/README.md
index 8bb67b6509..80e4d61385 100644
--- a/sandbox/oauth-example/README.md
+++ b/sandbox/oauth-example/README.md
@@ -1,4 +1,4 @@
-# auth-service
+# auth
This application is generated using [LoopBack 4 CLI](https://loopback.io/doc/en/lb4/Command-line-interface.html) with the
[initial project layout](https://loopback.io/doc/en/lb4/Loopback-application-layout.html).
diff --git a/sandbox/oauth-example/database.json b/sandbox/oauth-example/database.json
deleted file mode 100644
index cf1880315e..0000000000
--- a/sandbox/oauth-example/database.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "defaultEnv": "local",
- "local": {
- "driver": "pg",
- "host": {
- "ENV": "DB_HOST"
- },
- "port": {
- "ENV": "DB_PORT"
- },
- "user": {
- "ENV": "DB_USER"
- },
- "password": {
- "ENV": "DB_PASSWORD"
- },
- "database": {
- "ENV": "DB_DATABASE"
- }
- }
- }
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/20210421113036-init.js b/sandbox/oauth-example/migrations/20210318100600-init.js
similarity index 77%
rename from sandbox/oauth-example/migrations/20210421113036-init.js
rename to sandbox/oauth-example/migrations/20210318100600-init.js
index 4faf7411cb..f7aa1b04c5 100644
--- a/sandbox/oauth-example/migrations/20210421113036-init.js
+++ b/sandbox/oauth-example/migrations/20210318100600-init.js
@@ -5,16 +5,8 @@ var type;
var seed;
var fs = require('fs');
var path = require('path');
-var Promise;
-
-function handleFile(filePath, resolve, reject) {
- fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
- if (err) return reject(err);
- console.log('received data: ' + data);
- resolve(data);
- });
-}
+var Promise;
/**
* We receive the dbmigrate dependency from dbmigrate initially.
@@ -28,23 +20,32 @@ exports.setup = function (options, seedLink) {
};
exports.up = function (db) {
- var filePath = path.join(__dirname, 'sqls', '20210421113036-init-up.sql');
+ var filePath = path.join(__dirname, 'sqls', '20210318100600-init-up.sql');
return new Promise(function (resolve, reject) {
- handleFile(filePath, resolve, reject);
+ receiveData(resolve, reject, filePath);
}).then(function (data) {
return db.runSql(data);
});
};
exports.down = function (db) {
- var filePath = path.join(__dirname, 'sqls', '20210421113036-init-down.sql');
+ var filePath = path.join(__dirname, 'sqls', '20210318100600-init-down.sql');
return new Promise(function (resolve, reject) {
- handleFile(filePath, resolve, reject);
+ receiveData(resolve, reject, filePath);
}).then(function (data) {
return db.runSql(data);
});
};
+function receiveData(resolve, reject, filePath) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+}
+
exports._meta = {
version: 1,
};
diff --git a/sandbox/oauth-example/migrations/20221123082900-updated-init.js b/sandbox/oauth-example/migrations/20221110095658-updated-init.js
similarity index 93%
rename from sandbox/oauth-example/migrations/20221123082900-updated-init.js
rename to sandbox/oauth-example/migrations/20221110095658-updated-init.js
index 7509afe9ab..250582cb55 100644
--- a/sandbox/oauth-example/migrations/20221123082900-updated-init.js
+++ b/sandbox/oauth-example/migrations/20221110095658-updated-init.js
@@ -22,7 +22,7 @@ exports.up = function (db) {
var filePath = path.join(
__dirname,
'sqls',
- '20221123082900-updated-init-up.sql',
+ '20221110095658-updated-init-up.sql',
);
return new Promise(function (resolve, reject) {
fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
@@ -40,7 +40,7 @@ exports.down = function (db) {
var filePath = path.join(
__dirname,
'sqls',
- '20221123082900-updated-init-down.sql',
+ '20221110095658-updated-init-down.sql',
);
return new Promise(function (resolve, reject) {
fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
diff --git a/sandbox/oauth-example/migrations/20230323132703-client-type-column.js b/sandbox/oauth-example/migrations/20230323132703-client-type-column.js
new file mode 100644
index 0000000000..2608f6e0f0
--- /dev/null
+++ b/sandbox/oauth-example/migrations/20230323132703-client-type-column.js
@@ -0,0 +1,59 @@
+'use strict';
+
+var dbm;
+var type;
+var seed;
+var fs = require('fs');
+var path = require('path');
+var Promise;
+
+/**
+ * We receive the dbmigrate dependency from dbmigrate initially.
+ * This enables us to not have to rely on NODE_PATH.
+ */
+exports.setup = function (options, seedLink) {
+ dbm = options.dbmigrate;
+ type = dbm.dataType;
+ seed = seedLink;
+ Promise = options.Promise;
+};
+
+exports.up = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20230323132703-client-type-column-up.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports.down = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20230323132703-client-type-column-down.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports._meta = {
+ version: 1,
+};
diff --git a/sandbox/oauth-example/migrations/20230524115047-login-activity.js b/sandbox/oauth-example/migrations/20230524115047-login-activity.js
new file mode 100644
index 0000000000..fc6fbcb7c3
--- /dev/null
+++ b/sandbox/oauth-example/migrations/20230524115047-login-activity.js
@@ -0,0 +1,59 @@
+'use strict';
+
+var dbm;
+var type;
+var seed;
+var fs = require('fs');
+var path = require('path');
+var Promise;
+
+/**
+ * We receive the dbmigrate dependency from dbmigrate initially.
+ * This enables us to not have to rely on NODE_PATH.
+ */
+exports.setup = function (options, seedLink) {
+ dbm = options.dbmigrate;
+ type = dbm.dataType;
+ seed = seedLink;
+ Promise = options.Promise;
+};
+
+exports.up = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20230524115047-login-activity-up.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports.down = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20230524115047-login-activity-down.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports._meta = {
+ version: 1,
+};
diff --git a/sandbox/oauth-example/migrations/20240116123737-sync-with-user-tenant.js b/sandbox/oauth-example/migrations/20240116123737-sync-with-user-tenant.js
new file mode 100644
index 0000000000..5481f600c7
--- /dev/null
+++ b/sandbox/oauth-example/migrations/20240116123737-sync-with-user-tenant.js
@@ -0,0 +1,59 @@
+'use strict';
+
+var dbm;
+var type;
+var seed;
+var fs = require('fs');
+var path = require('path');
+var Promise;
+
+/**
+ * We receive the dbmigrate dependency from dbmigrate initially.
+ * This enables us to not have to rely on NODE_PATH.
+ */
+exports.setup = function (options, seedLink) {
+ dbm = options.dbmigrate;
+ type = dbm.dataType;
+ seed = seedLink;
+ Promise = options.Promise;
+};
+
+exports.up = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20240116123737-sync-with-user-tenant-up.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports.down = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20240116123737-sync-with-user-tenant-down.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports._meta = {
+ version: 1,
+};
diff --git a/sandbox/oauth-example/migrations/20241105074844-add-jwt-keys-schema.js b/sandbox/oauth-example/migrations/20241105074844-add-jwt-keys-schema.js
new file mode 100644
index 0000000000..b1ebc0e60c
--- /dev/null
+++ b/sandbox/oauth-example/migrations/20241105074844-add-jwt-keys-schema.js
@@ -0,0 +1,59 @@
+'use strict';
+
+var dbm;
+var type;
+var seed;
+var fs = require('fs');
+var path = require('path');
+var Promise;
+
+/**
+ * We receive the dbmigrate dependency from dbmigrate initially.
+ * This enables us to not have to rely on NODE_PATH.
+ */
+exports.setup = function (options, seedLink) {
+ dbm = options.dbmigrate;
+ type = dbm.dataType;
+ seed = seedLink;
+ Promise = options.Promise;
+};
+
+exports.up = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20241105074844-add-jwt-keys-schema-up.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports.down = function (db) {
+ var filePath = path.join(
+ __dirname,
+ 'sqls',
+ '20241105074844-add-jwt-keys-schema-down.sql',
+ );
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
+ }).then(function (data) {
+ return db.runSql(data);
+ });
+};
+
+exports._meta = {
+ version: 1,
+};
diff --git a/sandbox/oauth-example/migrations/20210421113146-seed.js b/sandbox/oauth-example/migrations/20241105074844-seed.js
old mode 100644
new mode 100755
similarity index 60%
rename from sandbox/oauth-example/migrations/20210421113146-seed.js
rename to sandbox/oauth-example/migrations/20241105074844-seed.js
index 629a05737b..3ba882f2b0
--- a/sandbox/oauth-example/migrations/20210421113146-seed.js
+++ b/sandbox/oauth-example/migrations/20241105074844-seed.js
@@ -7,14 +7,6 @@ var fs = require('fs');
var path = require('path');
var Promise;
-function handleFile(filePath, resolve, reject) {
- fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
- if (err) return reject(err);
- console.log('received data: ' + data);
-
- resolve(data);
- });
-}
/**
* We receive the dbmigrate dependency from dbmigrate initially.
* This enables us to not have to rely on NODE_PATH.
@@ -27,18 +19,28 @@ exports.setup = function (options, seedLink) {
};
exports.up = function (db) {
- var filePath = path.join(__dirname, 'sqls', '20210421113146-seed-up.sql');
+ var filePath = path.join(__dirname, 'sqls', '20241105074844-seed-up.sql');
return new Promise(function (resolve, reject) {
- handleFile(filePath, resolve, reject);
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
}).then(function (data) {
return db.runSql(data);
});
};
exports.down = function (db) {
- var filePath = path.join(__dirname, 'sqls', '20210421113146-seed-down.sql');
+ var filePath = path.join(__dirname, 'sqls', '20241105074844-seed-down.sql');
return new Promise(function (resolve, reject) {
- handleFile(filePath, resolve, reject);
+ fs.readFile(filePath, {encoding: 'utf-8'}, function (err, data) {
+ if (err) return reject(err);
+ console.log('received data: ' + data);
+
+ resolve(data);
+ });
}).then(function (data) {
return db.runSql(data);
});
diff --git a/sandbox/oauth-example/migrations/database.json b/sandbox/oauth-example/migrations/database.json
index 414a359e8c..b50814c9ad 100644
--- a/sandbox/oauth-example/migrations/database.json
+++ b/sandbox/oauth-example/migrations/database.json
@@ -1,22 +1,22 @@
{
- "defaultEnv": "master",
- "master": {
- "driver": "pg",
- "host": {
- "ENV": "DB_HOST"
- },
- "port": {
- "ENV": "DB_PORT"
- },
- "user": {
- "ENV": "DB_USER"
- },
- "password": {
- "ENV": "DB_PASSWORD"
- },
- "database": {
- "ENV": "DB_DATABASE"
- }
+ "defaultEnv": "master",
+ "master": {
+ "driver": "pg",
+ "host": {
+ "ENV": "DB_HOST"
},
- "sql-file": true
+ "port": {
+ "ENV": "DB_PORT"
+ },
+ "user": {
+ "ENV": "DB_USER"
+ },
+ "password": {
+ "ENV": "DB_PASSWORD"
+ },
+ "database": {
+ "ENV": "DB_DATABASE"
+ }
+ },
+ "sql-file": true
}
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20210421113036-init-down.sql b/sandbox/oauth-example/migrations/sqls/20210318100600-init-down.sql
similarity index 100%
rename from sandbox/oauth-example/migrations/sqls/20210421113036-init-down.sql
rename to sandbox/oauth-example/migrations/sqls/20210318100600-init-down.sql
diff --git a/sandbox/oauth-example/migrations/sqls/20210421113036-init-up.sql b/sandbox/oauth-example/migrations/sqls/20210318100600-init-up.sql
similarity index 59%
rename from sandbox/oauth-example/migrations/sqls/20210421113036-init-up.sql
rename to sandbox/oauth-example/migrations/sqls/20210318100600-init-up.sql
index f860c3fc70..5d87000632 100644
--- a/sandbox/oauth-example/migrations/sqls/20210421113036-init-up.sql
+++ b/sandbox/oauth-example/migrations/sqls/20210318100600-init-up.sql
@@ -1,18 +1,17 @@
-DROP SCHEMA IF EXISTS main CASCADE;
-CREATE SCHEMA main;
+CREATE SCHEMA IF NOT EXISTS main;
SET search_path TO main,public;
GRANT ALL ON SCHEMA main TO public;
-CREATE TABLE main.auth_clients (
+CREATE TABLE IF NOT EXISTS main.auth_clients (
id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
client_id varchar(50) NOT NULL ,
- client_secret varchar(50) NOT NULL ,
+ client_secret text NOT NULL ,
redirect_url varchar(200) ,
access_token_expiration integer DEFAULT 900 NOT NULL ,
refresh_token_expiration integer DEFAULT 86400 NOT NULL ,
auth_code_expiration integer DEFAULT 180 NOT NULL ,
- secret varchar(50) NOT NULL ,
+ secret text NOT NULL ,
created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
modified_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
deleted bool DEFAULT false NOT NULL ,
@@ -21,22 +20,7 @@ CREATE TABLE main.auth_clients (
CONSTRAINT pk_auth_clients_id PRIMARY KEY ( id )
);
-CREATE TABLE main.groups (
- id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
- name varchar(200) NOT NULL ,
- description varchar(500) ,
- photo_url varchar(500) ,
- created_by uuid ,
- modified_by uuid ,
- created_on timestamptz DEFAULT CURRENT_TIMESTAMP ,
- modified_on timestamptz DEFAULT CURRENT_TIMESTAMP ,
- deleted bool DEFAULT false ,
- deleted_on timestamptz ,
- deleted_by uuid ,
- CONSTRAINT pk_groups_id PRIMARY KEY ( id )
- );
-
-CREATE TABLE main.roles (
+ CREATE TABLE IF NOT EXISTS main.roles (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
name varchar(100) NOT NULL ,
created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -50,8 +34,8 @@ CREATE TABLE main.roles (
deleted_on timestamptz ,
CONSTRAINT pk_roles_id PRIMARY KEY ( id )
);
-
-CREATE TABLE main.tenants (
+
+ CREATE TABLE IF NOT EXISTS main.tenants (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
name varchar(100) NOT NULL ,
status integer DEFAULT 0 NOT NULL ,
@@ -72,7 +56,25 @@ CREATE TABLE main.tenants (
CONSTRAINT idx_tenants UNIQUE ( "key" )
);
-CREATE TABLE main.users (
+ CREATE TABLE IF NOT EXISTS main.tenant_configs (
+ id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
+ config_key varchar(100) NOT NULL ,
+ config_value jsonb NOT NULL ,
+ created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
+ modified_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
+ created_by integer ,
+ modified_by integer ,
+ deleted bool DEFAULT false NOT NULL ,
+ tenant_id uuid NOT NULL ,
+ deleted_by uuid ,
+ deleted_on timestamptz ,
+ CONSTRAINT pk_tenant_configs_id PRIMARY KEY ( id ),
+ CONSTRAINT fk_tenant_configs_tenants FOREIGN KEY ( tenant_id ) REFERENCES main.tenants( id )
+
+ );
+
+
+CREATE TABLE IF NOT EXISTS main.users (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
first_name varchar(50) NOT NULL ,
middle_name varchar(50) ,
@@ -86,40 +88,16 @@ CREATE TABLE main.users (
modified_by uuid ,
deleted bool DEFAULT false NOT NULL ,
last_login timestamptz ,
- photo_url varchar(250) ,
auth_client_ids integer[] ,
gender char(1) ,
dob date ,
- designation varchar(50) ,
default_tenant_id uuid ,
deleted_by uuid ,
deleted_on timestamptz ,
CONSTRAINT pk_users_id PRIMARY KEY ( id )
);
-CREATE TABLE main.todo (
- id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
- title varchar(50) NOT NULL ,
- description varchar(150) NOT NULL ,
- items _text
- );
-
-CREATE TABLE main.tenant_configs (
- id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
- config_key varchar(100) NOT NULL ,
- config_value jsonb NOT NULL ,
- created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
- modified_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
- created_by integer ,
- modified_by integer ,
- deleted bool DEFAULT false NOT NULL ,
- tenant_id uuid NOT NULL ,
- deleted_by uuid ,
- deleted_on timestamptz ,
- CONSTRAINT pk_tenant_configs_id PRIMARY KEY ( id )
- );
-
-CREATE TABLE main.user_credentials (
+CREATE TABLE IF NOT EXISTS main.user_credentials (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
user_id uuid NOT NULL ,
auth_provider varchar(50) DEFAULT 'internal'::character varying NOT NULL ,
@@ -132,10 +110,12 @@ CREATE TABLE main.user_credentials (
deleted_on timestamptz ,
deleted_by uuid ,
CONSTRAINT pk_user_credentials_id PRIMARY KEY ( id ),
- CONSTRAINT idx_user_credentials_user_id UNIQUE ( user_id )
+ CONSTRAINT idx_user_credentials_user_id UNIQUE ( user_id ),
+ CONSTRAINT idx_user_credentials_uniq UNIQUE ( auth_provider, auth_id, auth_token, "password" ),
+ CONSTRAINT fk_user_credentials_users FOREIGN KEY ( user_id ) REFERENCES main.users( id )
);
-
-CREATE TABLE main.user_tenants (
+
+ CREATE TABLE IF NOT EXISTS main.user_tenants (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
user_id uuid NOT NULL ,
tenant_id uuid NOT NULL ,
@@ -147,38 +127,48 @@ CREATE TABLE main.user_tenants (
locale varchar(5) ,
deleted_by uuid ,
deleted_on timestamptz ,
- CONSTRAINT pk_user_tenants_id PRIMARY KEY ( id )
+ CONSTRAINT pk_user_tenants_id PRIMARY KEY ( id ),
+ CONSTRAINT fk_user_tenants_users FOREIGN KEY ( user_id ) REFERENCES main.users( id ) ,
+ CONSTRAINT fk_user_tenants_tenants FOREIGN KEY ( tenant_id ) REFERENCES main.tenants( id ) ,
+ CONSTRAINT fk_user_tenants_roles FOREIGN KEY ( role_id ) REFERENCES main.roles( id )
);
-CREATE TABLE main.user_groups (
+ CREATE TABLE IF NOT EXISTS main.user_permissions (
id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
user_tenant_id uuid NOT NULL ,
- group_id uuid NOT NULL ,
- created_on timestamptz DEFAULT CURRENT_TIMESTAMP ,
- modified_on timestamptz DEFAULT CURRENT_TIMESTAMP ,
- deleted bool DEFAULT false ,
+ permission text NOT NULL ,
+ allowed bool NOT NULL ,
+ created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
+ modified_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
created_by uuid ,
modified_by uuid ,
+ deleted bool DEFAULT false NOT NULL ,
deleted_on timestamptz ,
deleted_by uuid ,
- CONSTRAINT pk_user_groups_id PRIMARY KEY ( id )
+ CONSTRAINT pk_user_permissions_id PRIMARY KEY ( id ),
+ CONSTRAINT fk_user_permissions FOREIGN KEY ( user_tenant_id ) REFERENCES main.user_tenants( id )
+
);
-CREATE TABLE main.user_permissions (
- id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
- user_tenant_id uuid NOT NULL ,
- permission varchar(50) NOT NULL ,
- allowed bool NOT NULL ,
+CREATE TABLE IF NOT EXISTS main.user_resources (
+ deleted bool DEFAULT false NOT NULL ,
+ deleted_on timestamptz ,
+ deleted_by uuid ,
created_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
modified_on timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL ,
created_by uuid ,
modified_by uuid ,
- deleted bool DEFAULT false NOT NULL ,
- deleted_on timestamptz ,
- deleted_by uuid ,
- CONSTRAINT pk_user_permissions_id PRIMARY KEY ( id )
+ id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
+ user_tenant_id uuid ,
+ resource_name varchar(50) ,
+ resource_value varchar(100) ,
+ allowed bool DEFAULT true NOT NULL ,
+ CONSTRAINT user_resources_pkey PRIMARY KEY ( id ),
+ CONSTRAINT fk_user_resources FOREIGN KEY ( user_tenant_id ) REFERENCES main.user_tenants( id )
+
);
+
CREATE OR REPLACE FUNCTION main.moddatetime()
RETURNS trigger
LANGUAGE plpgsql
@@ -190,35 +180,18 @@ END;
$function$
;
-CREATE TRIGGER mdt_auth_clients BEFORE UPDATE ON main.auth_clients FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_roles BEFORE UPDATE ON main.roles FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_tenant_configs BEFORE UPDATE ON main.tenant_configs FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_tenants BEFORE UPDATE ON main.tenants FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_user_credentials BEFORE UPDATE ON main.user_credentials FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_user_permissions BEFORE UPDATE ON main.user_permissions FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_user_tenants BEFORE UPDATE ON main.user_tenants FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-CREATE TRIGGER mdt_users BEFORE UPDATE ON main.users FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-
-ALTER TABLE main.tenant_configs ADD CONSTRAINT fk_tenant_configs_tenants FOREIGN KEY ( tenant_id ) REFERENCES main.tenants( id );
-
-ALTER TABLE main.user_credentials ADD CONSTRAINT fk_user_credentials_users FOREIGN KEY ( user_id ) REFERENCES main.users( id );
+CREATE OR REPLACE TRIGGER mdt_auth_clients BEFORE UPDATE ON main.auth_clients FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_groups ADD CONSTRAINT fk_user_tenant FOREIGN KEY ( user_tenant_id ) REFERENCES main.user_tenants( id );
+CREATE OR REPLACE TRIGGER mdt_roles BEFORE UPDATE ON main.roles FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_groups ADD CONSTRAINT fk_groups FOREIGN KEY ( group_id ) REFERENCES main.groups( id );
+CREATE OR REPLACE TRIGGER mdt_tenant_configs BEFORE UPDATE ON main.tenant_configs FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_permissions ADD CONSTRAINT fk_user_permissions FOREIGN KEY ( user_tenant_id ) REFERENCES main.user_tenants( id );
+CREATE OR REPLACE TRIGGER mdt_tenants BEFORE UPDATE ON main.tenants FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_tenants ADD CONSTRAINT fk_user_tenants_users FOREIGN KEY ( user_id ) REFERENCES main.users( id );
+CREATE OR REPLACE TRIGGER mdt_user_credentials BEFORE UPDATE ON main.user_credentials FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_tenants ADD CONSTRAINT fk_user_tenants_tenants FOREIGN KEY ( tenant_id ) REFERENCES main.tenants( id );
+CREATE OR REPLACE TRIGGER mdt_user_permissions BEFORE UPDATE ON main.user_permissions FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
-ALTER TABLE main.user_tenants ADD CONSTRAINT fk_user_tenants_roles FOREIGN KEY ( role_id ) REFERENCES main.roles( id );
+CREATE OR REPLACE TRIGGER mdt_user_tenants BEFORE UPDATE ON main.user_tenants FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
+CREATE OR REPLACE TRIGGER mdt_users BEFORE UPDATE ON main.users FOR EACH ROW EXECUTE PROCEDURE main.moddatetime('modified_on');
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20210421113146-seed-down.sql b/sandbox/oauth-example/migrations/sqls/20210421113146-seed-down.sql
deleted file mode 100644
index 0e68c90bbe..0000000000
--- a/sandbox/oauth-example/migrations/sqls/20210421113146-seed-down.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-SET search_path TO main,public;
-
-DELETE FROM user_credentials;
-DELETE FROM user_tenants;
-DELETE FROM users;
-DELETE FROM tenants;
-DELETE FROM roles;
-DELETE FROM auth_clients;
diff --git a/sandbox/oauth-example/migrations/sqls/20210421113146-seed-up.sql b/sandbox/oauth-example/migrations/sqls/20210421113146-seed-up.sql
deleted file mode 100644
index b4113d3e8b..0000000000
--- a/sandbox/oauth-example/migrations/sqls/20210421113146-seed-up.sql
+++ /dev/null
@@ -1,51 +0,0 @@
-SET search_path
-TO main,public;
-
-/* Inserting auth clients */
-insert into auth_clients
- (client_id, client_secret, secret)
-values
- ('test_client_id', 'test_client_secret', 'secret');
-
--- Inserting roles
-insert into roles
- (name, permissions, role_type)
-values
- ('Admin', '{CreateTodo,UpdateTodo,DeleteTodo}', 0);
-
-insert into roles
- (name, permissions, role_type)
-values
- ('Others', '{}', 1);
-
--- Inserting tenants
-insert into tenants
- (name, status, key)
-values
- ('Master', 1, 'master');
-
--- Inserting Admin User
-insert into users
- (first_name, last_name, username, email, default_tenant_id)
-select 'Admin', 'User', 'admin@example.com', 'admin@example.com', id
-from tenants
-where key = 'master';
-
-insert into user_tenants
- (user_id, tenant_id, status, role_id)
-select (select id
- from users
- where username = 'admin@example.com'), (select id
- from tenants
- where key = 'master'), 1, id
-from roles
-where role_type = 0;
-
-insert into user_credentials
- (user_id, auth_provider, password)
-select id, 'internal', '$2a$10$TOLMGK43MjbibS8Jap2RXeHl3.4sJcR3eFbms2dBll2LTMggSK9hG'
-from users
-where username = 'admin@example.com';
-update users set auth_client_ids = ARRAY[(select id from auth_clients where client_id = 'test_client_id')::integer];
-
-
diff --git a/sandbox/oauth-example/migrations/sqls/20220607063927-secret-key-column-up.sql b/sandbox/oauth-example/migrations/sqls/20220607063927-secret-key-column-up.sql
index d66c203490..570a7ab069 100644
--- a/sandbox/oauth-example/migrations/sqls/20220607063927-secret-key-column-up.sql
+++ b/sandbox/oauth-example/migrations/sqls/20220607063927-secret-key-column-up.sql
@@ -1,2 +1,2 @@
ALTER TABLE main.user_credentials
-ADD secret_key varchar(100);
+ADD IF NOT EXISTS secret_key text;
diff --git a/sandbox/oauth-example/migrations/sqls/20221123082900-updated-init-down.sql b/sandbox/oauth-example/migrations/sqls/20221110095658-updated-init-down.sql
similarity index 100%
rename from sandbox/oauth-example/migrations/sqls/20221123082900-updated-init-down.sql
rename to sandbox/oauth-example/migrations/sqls/20221110095658-updated-init-down.sql
diff --git a/sandbox/oauth-example/migrations/sqls/20221110095658-updated-init-up.sql b/sandbox/oauth-example/migrations/sqls/20221110095658-updated-init-up.sql
new file mode 100644
index 0000000000..22c5208465
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20221110095658-updated-init-up.sql
@@ -0,0 +1,11 @@
+ALTER TABLE main.auth_clients
+ADD IF NOT EXISTS created_by varchar(100),
+ADD IF NOT EXISTS modified_by varchar(100);
+
+ALTER TABLE main.user_credentials
+ADD IF NOT EXISTS created_by varchar(100),
+ADD IF NOT EXISTS modified_by varchar(100);
+
+ALTER TABLE main.user_tenants
+ADD IF NOT EXISTS created_by varchar(100),
+ADD IF NOT EXISTS modified_by varchar(100);
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20221123082900-updated-init-up.sql b/sandbox/oauth-example/migrations/sqls/20221123082900-updated-init-up.sql
deleted file mode 100644
index 7a3da56364..0000000000
--- a/sandbox/oauth-example/migrations/sqls/20221123082900-updated-init-up.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-ALTER TABLE main.auth_clients
-ADD created_by varchar(100),
-ADD modified_by varchar(100);
-
-ALTER TABLE main.user_credentials
-ADD created_by varchar(100),
-ADD modified_by varchar(100);
-
-ALTER TABLE main.user_tenants
-ADD created_by varchar(100),
-ADD modified_by varchar(100);
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-down.sql b/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-down.sql
new file mode 100644
index 0000000000..752870fd2f
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-down.sql
@@ -0,0 +1,3 @@
+/* Replace with your SQL commands */
+
+ALTER TABLE main.auth_clients DROP COLUMN client_type;
diff --git a/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-up.sql b/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-up.sql
new file mode 100644
index 0000000000..c9c45ba9b1
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20230323132703-client-type-column-up.sql
@@ -0,0 +1,4 @@
+/* Replace with your SQL commands */
+
+ALTER TABLE main.auth_clients
+ADD IF NOT EXISTS client_type varchar(100) DEFAULT 'public';
diff --git a/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-down.sql b/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-down.sql
new file mode 100644
index 0000000000..fa7e8d10a1
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-down.sql
@@ -0,0 +1,6 @@
+/* Replace with your SQL commands */
+
+SET search_path TO main,public;
+GRANT ALL ON SCHEMA main TO public;
+
+drop table main.login_activity;
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-up.sql b/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-up.sql
new file mode 100644
index 0000000000..075c744eac
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20230524115047-login-activity-up.sql
@@ -0,0 +1,16 @@
+/* Replace with your SQL commands */
+
+SET search_path TO main,public;
+GRANT ALL ON SCHEMA main TO public;
+
+CREATE TABLE main.login_activity (
+ id uuid DEFAULT md5(random()::text || clock_timestamp()::text)::uuid NOT NULL ,
+ actor text NOT NULL,
+ tenant_id text,
+ login_time timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ token_payload text NOT NULL,
+ login_type text NOT NULL,
+ device_info text,
+ ip_address text,
+ CONSTRAINT pk_login_activity PRIMARY KEY ( id )
+);
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-down.sql b/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-down.sql
new file mode 100644
index 0000000000..44f074ea89
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-down.sql
@@ -0,0 +1 @@
+/* Replace with your SQL commands */
\ No newline at end of file
diff --git a/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-up.sql b/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-up.sql
new file mode 100644
index 0000000000..98849b18b4
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20240116123737-sync-with-user-tenant-up.sql
@@ -0,0 +1,15 @@
+/* Replace with your SQL commands */
+
+ALTER TABLE main.roles
+ADD IF NOT EXISTS tenant_id uuid NOT NULL,
+ADD IF NOT EXISTS allowed_clients text[],
+ADD IF NOT EXISTS description varchar(500);
+
+ALTER TABLE main.tenants
+ADD IF NOT EXISTS website varchar(100);
+
+ALTER TABLE main.users
+ADD IF NOT EXISTS photo_url text,
+ADD IF NOT EXISTS designation varchar(50);
+
+
diff --git a/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-down.sql b/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-down.sql
new file mode 100644
index 0000000000..fbcccb9d0c
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-down.sql
@@ -0,0 +1 @@
+DROP TABLE main.jwt_keys;
diff --git a/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-up.sql b/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-up.sql
new file mode 100644
index 0000000000..f644e574f5
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20241105074844-add-jwt-keys-schema-up.sql
@@ -0,0 +1,7 @@
+CREATE TABLE main.jwt_keys (
+ id SERIAL PRIMARY KEY,
+ key_id VARCHAR(100) UNIQUE NOT NULL,
+ public_key TEXT NOT NULL, -- Public key in PEM format
+ private_key TEXT NOT NULL, -- Private key in PEM format
+ created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
diff --git a/sandbox/oauth-example/src/models/index.ts b/sandbox/oauth-example/migrations/sqls/20241105074844-seed-down.sql
old mode 100644
new mode 100755
similarity index 100%
rename from sandbox/oauth-example/src/models/index.ts
rename to sandbox/oauth-example/migrations/sqls/20241105074844-seed-down.sql
diff --git a/sandbox/oauth-example/migrations/sqls/20241105074844-seed-up.sql b/sandbox/oauth-example/migrations/sqls/20241105074844-seed-up.sql
new file mode 100755
index 0000000000..869a084fbf
--- /dev/null
+++ b/sandbox/oauth-example/migrations/sqls/20241105074844-seed-up.sql
@@ -0,0 +1,14 @@
+-- Insert dummy data into auth_clients table
+INSERT INTO main.auth_clients (id,client_id, client_secret, redirect_url, access_token_expiration, refresh_token_expiration, auth_code_expiration, secret)
+VALUES
+(1,'client1', 'secret1', 'http://localhost:8080/callback', 900, 86400, 180, 'secret1');
+
+-- Insert dummy data into tenants table
+INSERT INTO main.tenants (name, status, "key", address, city, "state", zip, country)
+VALUES
+('Tenant 1', 0, 'tenant1', '123 Main St', 'New York', 'NY', '10001', 'USA');
+
+-- Insert dummy data into roles table
+INSERT INTO main.roles (name, role_type, permissions, tenant_id)
+VALUES
+('Admin', 0, ARRAY['CREATE', 'READ', 'UPDATE', 'DELETE']::text[], (SELECT id FROM main.tenants WHERE "key" = 'tenant1'));
\ No newline at end of file
diff --git a/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff b/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff
new file mode 100644
index 0000000000..b648a3eea2
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff2 b/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff2
new file mode 100644
index 0000000000..9fa2112520
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/MaterialIcons-Regular.woff2 differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/app.css b/sandbox/oauth-example/mochawesome-report/assets/app.css
new file mode 100644
index 0000000000..eb7c4e9ead
--- /dev/null
+++ b/sandbox/oauth-example/mochawesome-report/assets/app.css
@@ -0,0 +1,14 @@
+/*! mochawesome-report-generator 6.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.dropdown--trans-color---3ixtY{transition:color .2s ease-out;transition:var(--link-transition)}.dropdown--component---21Q9c{position:relative}.dropdown--toggle---3gdzr{white-space:nowrap}.dropdown--toggle-icon---1j9Ga:not(.dropdown--icon-only---3vq2I){margin-left:.5rem}.dropdown--list---8GPrA{padding:0;margin:0;list-style:none;text-align:left}.dropdown--list-main---3QZnQ{position:absolute;top:100%;z-index:1000;visibility:hidden;min-width:160px;overflow:auto}.dropdown--align-left---3-3Hu{left:0}.dropdown--align-right---2ZQx0{right:0}.dropdown--list-item-link---JRrOY,.dropdown--list-item-text---2COKZ{display:block;position:relative;white-space:nowrap;text-decoration:none}.dropdown--list-item-text---2COKZ{cursor:default}@-webkit-keyframes dropdown--in---FpwEb{0%{opacity:0}to{opacity:1}}@keyframes dropdown--in---FpwEb{0%{opacity:0}to{opacity:1}}@-webkit-keyframes dropdown--out---2HVe1{0%{opacity:1;visibility:visible}to{opacity:0}}@keyframes dropdown--out---2HVe1{0%{opacity:1;visibility:visible}to{opacity:0}}.dropdown--close---2LnDu{-webkit-animation:dropdown--out---2HVe1 .2s ease;animation:dropdown--out---2HVe1 .2s ease;-webkit-animation:dropdown--out---2HVe1 var(--default-transition-duration) var(--default-transition-easing);animation:dropdown--out---2HVe1 var(--default-transition-duration) var(--default-transition-easing);visibility:hidden}.dropdown--open---3bwiy{-webkit-animation:dropdown--in---FpwEb .2s ease;animation:dropdown--in---FpwEb .2s ease;-webkit-animation:dropdown--in---FpwEb var(--default-transition-duration) var(--default-transition-easing);animation:dropdown--in---FpwEb var(--default-transition-duration) var(--default-transition-easing);visibility:visible}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.dropdown-selector--trans-color---3nePW{transition:color .2s ease-out;transition:var(--link-transition)}.dropdown-selector--dropdown---AT5ee{right:-8px}.dropdown-selector--menu---nW4gv{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);font-family:robotolight;font-family:var(--font-family-light);min-width:70px;width:70px;background:#fff;top:0}.dropdown-selector--toggle---WEnEe{display:inline-block;font-family:robotoregular;font-family:var(--font-family-regular);font-size:14px;color:rgba(0,0,0,.54);color:var(--black54);vertical-align:top;line-height:24px;padding:0 22px 0 0;cursor:pointer;border:none;background:none;outline:none;width:70px}.dropdown-selector--toggle---WEnEe:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500)}.dropdown-selector--toggle-icon---10VKo{position:absolute;top:4px;right:4px}.dropdown-selector--item-link---2W1T7,.dropdown-selector--toggle-icon---10VKo{color:rgba(0,0,0,.38);color:var(--black38)}.dropdown-selector--item-link---2W1T7{border:none;cursor:pointer;padding:4px 10px;text-align:left;width:100%}.dropdown-selector--item-link---2W1T7:hover{background-color:#f5f5f5;background-color:var(--grey100)}.dropdown-selector--item-link---2W1T7:focus{box-shadow:inset 0 0 2px 0 #03a9f4;box-shadow:inset 0 0 2px 0 var(--ltblue500);outline:none}.dropdown-selector--item-selected---1q-NK .dropdown-selector--item-link---2W1T7{color:#4caf50;color:var(--green500)}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.footer--trans-color---205XF{transition:color .2s ease-out;transition:var(--link-transition)}.footer--component---1WcTR{position:absolute;bottom:0;width:100%;height:60px;height:var(--footer-height);color:rgba(0,0,0,.38);color:var(--black38);text-align:center}.footer--component---1WcTR p{font-size:12px;margin:10px 0}.footer--component---1WcTR a{color:rgba(0,0,0,.54);color:var(--black54);transition:color .2s ease-out;transition:var(--link-transition)}.footer--component---1WcTR a:hover{color:rgba(0,0,0,.87);color:var(--black87)}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.loader--trans-color---97r08{transition:color .2s ease-out;transition:var(--link-transition)}.loader--component---2grcA{position:fixed;top:0;height:100%;width:100%;background-color:color(#f2f2f2 alpha(60%));background-color:color(var(--body-bg) alpha(60%));padding-top:122px;padding-top:var(--navbar-height)}.loader--wrap---3Fhrc{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;min-height:200px}.loader--text---3Yu3g{color:color(#000 tint(46.7%));color:var(--gray-light);text-align:center;margin:1rem 0 0}.loader--spinner---2q6MO{border-radius:50%;width:42px;height:42px;border:.25rem solid color(#000 tint(73.5%));border-top-color:color(#000 tint(33.5%));border:.25rem solid var(--gray-medium);border-top-color:var(--gray);-webkit-animation:loader--spin---K6Loh 1s linear infinite;animation:loader--spin---K6Loh 1s linear infinite}@-webkit-keyframes loader--spin---K6Loh{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loader--spin---K6Loh{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@media (min-width:768px){.loader--component---2grcA{padding-top:56px;padding-top:var(--navbar-height-short)}}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.nav-menu--trans-color---1l-R-{transition:color .2s ease-out;transition:var(--link-transition)}.nav-menu--wrap---39S_b{position:fixed;z-index:2010;top:0;right:0;bottom:0;left:0;overflow:hidden;visibility:hidden}.nav-menu--overlay---k2Lwz{display:none;background:rgba(0,0,0,.5)}.nav-menu--close-btn---2m7W7{border:none;background:transparent;padding:0}.nav-menu--close-btn---2m7W7:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.nav-menu--close-btn---2m7W7{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);position:absolute;top:16px;right:16px;color:rgba(0,0,0,.54);color:var(--black54)}.nav-menu--close-btn---2m7W7:active,.nav-menu--close-btn---2m7W7:hover{color:rgba(0,0,0,.87);color:var(--black87)}.nav-menu--menu---lFcsl{position:absolute;transition:all .15s cubic-bezier(.25,1,.8,1);-webkit-transform:translate(-100%);transform:translate(-100%);width:100%;z-index:1;top:0;bottom:0;left:0;overflow:auto;background:#fff}.nav-menu--close-button---2_OHr{border:none;background:transparent;padding:0}.nav-menu--close-button---2_OHr:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.nav-menu--close-button---2_OHr{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);position:absolute;top:14px;right:14px;font-size:21px;width:26px;height:26px;color:color(#000 tint(33.5%));color:var(--gray)}.nav-menu--close-button---2_OHr:hover{color:color(#000 tint(20%));color:var(--gray-dark)}.nav-menu--date---3SYOi,.nav-menu--section-head---3LXPD{color:rgba(0,0,0,.54);color:var(--black54)}.nav-menu--section-head---3LXPD{text-transform:uppercase}.nav-menu--control---1JEYH{display:-webkit-flex;display:flex;position:relative;margin:8px 0;-webkit-align-items:center;align-items:center}.nav-menu--control-label---3f2XU{display:inline-block;-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--regular);font-size:13px;vertical-align:top;line-height:24px}.nav-menu--control-label---3f2XU.nav-menu--with-icon---qF4hj{margin-left:12px}.nav-menu--control-group---32kKg{margin-bottom:10px}.nav-menu--toggle-icon-passed---132lH{color:#4caf50;color:var(--green500)}.nav-menu--toggle-icon-failed---x-XUB{color:#f44336;color:var(--red500)}.nav-menu--toggle-icon-pending---3ZJAs{color:#03a9f4;color:var(--ltblue500)}.nav-menu--toggle-icon-skipped---FyedH{color:#9e9e9e;color:var(--grey500)}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O{visibility:visible}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O .nav-menu--overlay---k2Lwz{opacity:1}.nav-menu--wrap---39S_b.nav-menu--open---3BW1O .nav-menu--menu---lFcsl{-webkit-transform:translate(0);transform:translate(0)}.nav-menu--section---2z7Dj{padding:0 16px;border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.nav-menu--list---2QMG9{list-style:none;padding-left:0}.nav-menu--main---jkqJW{margin:8px 0}.nav-menu--no-tests---2sRAg>.nav-menu--item---gXWu6:not(.nav-menu--has-tests---1ND4g)>div>.nav-menu--sub---EnSIu{padding-left:0}.nav-menu--no-tests---2sRAg>.nav-menu--item---gXWu6:not(.nav-menu--has-tests---1ND4g):not(:only-child){padding-left:22px}.nav-menu--sub---EnSIu{padding-left:24px;margin:0 0 2px}.nav-menu--link---tywPF{display:-webkit-flex;display:flex;position:relative;-webkit-align-items:center;align-items:center;padding:3px 0;color:color(#000 tint(33.5%));color:var(--gray)}.nav-menu--link---tywPF:hover{color:color(color(#428bca shade(6.5%)) shade(15%));color:var(--link-hover-color);text-decoration:none}.nav-menu--link---tywPF:active,.nav-menu--link---tywPF:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none;text-decoration:none}.nav-menu--link---tywPF span{transition:color .2s ease-out;transition:var(--link-transition);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-menu--link-icon---1Q2NP{margin-right:2px}.nav-menu--link-icon---1Q2NP.nav-menu--pass---1PUeh{color:#4caf50;color:var(--green500)}.nav-menu--link-icon---1Q2NP.nav-menu--fail---3gQQa{color:#f44336;color:var(--red500)}.nav-menu--link-icon---1Q2NP.nav-menu--pending---9zAw0{color:#03a9f4;color:var(--ltblue500)}.nav-menu--link-icon---1Q2NP.nav-menu--skipped---31GPM{color:#9e9e9e;color:var(--grey500)}.nav-menu--disabled---2MoA_{opacity:.3;pointer-events:none}@media (min-width:768px){.nav-menu--menu---lFcsl{width:320px;left:auto}.nav-menu--overlay---k2Lwz{display:block;position:fixed;transition:all .2s ease-out;top:0;right:0;bottom:0;left:0;cursor:pointer;opacity:0}}
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.trans-color{transition:color .2s ease-out;transition:var(--link-transition)}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-family:var(--headings-font-family);font-weight:400;font-weight:var(--headings-font-weight);line-height:1.1;line-height:var(--headings-line-height);color:inherit;color:var(--headings-color)}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:color(#000 tint(46.7%));color:var(--headings-small-color)}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-top:var(--line-height-computed);margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2)}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-top:calc(var(--line-height-computed)/2);margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2)}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px;font-size:var(--font-size-h1)}.h2,h2{font-size:30px;font-size:var(--font-size-h2)}.h3,h3{font-size:24px;font-size:var(--font-size-h3)}.h4,h4{font-size:18px;font-size:var(--font-size-h4)}.h5,h5{font-size:14px;font-size:var(--font-size-h5)}.h6,h6{font-size:12px;font-size:var(--font-size-h6)}p{margin:0 0 10px;margin:0 0 calc(var(--line-height-computed)/2)}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}ol,ul{margin-top:0;margin-bottom:10px;margin-bottom:calc(var(--line-height-computed)/2);ol,ul{margin-bottom:0}}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-family-mono)}.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end}.ct-label.ct-horizontal.ct-end,.ct-label.ct-horizontal.ct-start{-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start}.ct-label.ct-vertical.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-align-items:flex-end;align-items:flex-end;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-grid-background{fill:none}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{content:"";display:table;clear:both}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{content:"";display:table;clear:both}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{content:"";display:table;clear:both}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{content:"";display:table;clear:both}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{content:"";display:table;clear:both}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{content:"";display:table;clear:both}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{content:"";display:table;clear:both}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{content:"";display:table;clear:both}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{content:"";display:table;clear:both}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{content:"";display:table;clear:both}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{content:"";display:table;clear:both}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{content:"";display:table;clear:both}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{content:"";display:table;clear:both}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{content:"";display:table;clear:both}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{content:"";display:table;clear:both}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{content:"";display:table;clear:both}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0}@font-face{font-family:robotolight;src:url(roboto-light-webfont.woff2) format("woff2"),url(roboto-light-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(roboto-medium-webfont.woff2) format("woff2"),url(roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotoregular;src:url(roboto-regular-webfont.woff2) format("woff2"),url(roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(MaterialIcons-Regular.woff2) format("woff2"),url(MaterialIcons-Regular.woff) format("woff")}.material-icons{display:inline-block;font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}.material-icons.md-18{font-size:18px}.material-icons.md-24{font-size:24px}.material-icons.md-36{font-size:36px}.material-icons.md-48{font-size:48px}.material-icons.md-dark{color:rgba(0,0,0,.54)}.material-icons.md-dark.md-inactive{color:rgba(0,0,0,.26)}.material-icons.md-light{color:#fff}.material-icons.md-light.md-inactive{color:hsla(0,0%,100%,.3)}*,:after,:before{box-sizing:border-box}html{position:relative;min-height:100%}body{font-family:robotoregular,Helvetica Neue,Helvetica,Arial,sans-serif;font-family:var(--font-family-base);font-size:14px;font-size:var(--font-size-base);line-height:1.429;line-height:var(--line-height-base);color:rgba(0,0,0,.87);color:var(--text-color);background-color:#f2f2f2;background-color:var(--body-bg);margin-bottom:60px;margin-bottom:var(--footer-height)}a{text-decoration:none;transition:color .2s ease-out;transition:var(--link-transition)}a:hover{text-decoration:underline}pre{word-break:break-all;word-wrap:break-word;border-radius:4px}.cf:before,.clearfix:before{content:" ";display:table}.cf:after,.clearfix:after{content:" ";display:table;clear:both}.container:after,.container:before{content:" ";display:table}.container:after{clear:both}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-left:calc(var(--grid-gutter-width)/2);padding-right:15px;padding-right:calc(var(--grid-gutter-width)/2)}.row:after,.row:before{content:" ";display:table}.row:after{clear:both}.row{margin-left:-15px;margin-left:calc(var(--grid-gutter-width)/-2);margin-right:-15px;margin-right:calc(var(--grid-gutter-width)/-2)}.details{padding-top:146px;padding-top:calc(var(--navbar-height) + 24px)}.z-depth-0{box-shadow:none!important}.z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}@media (min-width:768px){.container{width:750px;width:var(--container-sm)}.details{padding-top:80px;padding-top:calc(var(--navbar-height-short) + 24px)}}@media (min-width:992px){.container{width:970px;width:var(--container-md)}}@media (min-width:1200px){.container{width:1170px;width:var(--container-lg)}}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.navbar--trans-color---1tk7E{transition:color .2s ease-out;transition:var(--link-transition)}.navbar--component---2UCEi:after,.navbar--component---2UCEi:before{content:" ";display:table}.navbar--component---2UCEi:after{clear:both}.navbar--component---2UCEi{position:fixed;-webkit-flex-direction:column;flex-direction:column;top:0;right:0;left:0;z-index:1030;min-height:122px;min-height:var(--navbar-height);height:122px;height:var(--navbar-height);margin-bottom:0;border:none;background:#37474f;background:var(--bluegrey800)}.navbar--component---2UCEi,.navbar--report-info-cnt---8y9Bb{display:-webkit-flex;display:flex}.navbar--report-info-cnt---8y9Bb{overflow:hidden;padding-right:12px}.navbar--menu-button---1ZRpz{border:none;background:transparent;padding:0}.navbar--menu-button---1ZRpz:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.navbar--menu-button---1ZRpz{cursor:pointer;transition:color .2s ease-out;transition:var(--link-transition);height:40px;margin:8px 8px 0;padding:8px;color:hsla(0,0%,100%,.5);color:var(--light-icon-inactive)}.navbar--menu-button---1ZRpz:hover{color:#fff;color:var(--light-icon-active)}.navbar--report-title---3bXCv{-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--light);color:#fff;font-size:18px;line-height:52px;line-height:calc(var(--navbar-height-short) - 4px);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar--pct-bar---3EwW-:after,.navbar--pct-bar---3EwW-:before{content:" ";display:table}.navbar--pct-bar---3EwW-:after{clear:both}.navbar--pct-bar---3EwW-{display:-webkit-flex;display:flex;position:absolute;left:0;right:0;bottom:0;height:4px}.navbar--pct-bar---3EwW- .navbar--pass---2oR-w{background-color:#4caf50;background-color:var(--green500)}.navbar--pct-bar---3EwW- .navbar--fail---3mN80{background-color:#f44336;background-color:var(--red500)}.navbar--pct-bar---3EwW- .navbar--pend---2iqjh{background-color:#03a9f4;background-color:var(--ltblue500)}.navbar--pct-bar-segment---3T0_o{height:4px}@media (min-width:768px){.navbar--component---2UCEi{min-height:56px;min-height:var(--navbar-height-short);height:56px;height:var(--navbar-height-short);-webkit-flex-direction:initial;flex-direction:row}.navbar--report-info-cnt---8y9Bb{-webkit-flex-grow:1;flex-grow:1}}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.quick-summary--trans-color---HUJqE{transition:color .2s ease-out;transition:var(--link-transition)}.quick-summary--cnt---3s38x{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;padding:0 12px}.quick-summary--list---2_80W:after,.quick-summary--list---2_80W:before{content:" ";display:table}.quick-summary--list---2_80W:after{clear:both}.quick-summary--list---2_80W{list-style:none;padding-left:0;transition:opacity .2s ease-out;margin:0 0 8px}.quick-summary--item---bfSQ0,.quick-summary--list---2_80W{display:-webkit-flex;display:flex}.quick-summary--item---bfSQ0{font-family:var(--font-family--light);-webkit-align-items:flex-start;align-items:flex-start;color:#fff;font-size:16px;-webkit-flex-basis:25%;flex-basis:25%}.quick-summary--item---bfSQ0 button{border:none;background:transparent;padding:0}.quick-summary--item---bfSQ0 button:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.quick-summary--item---bfSQ0 button{transition:color .2s ease-out;transition:var(--link-transition);display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;color:#fff;cursor:pointer}.quick-summary--item---bfSQ0 button:hover .quick-summary--icon---TW1oG{border-color:#fff}.quick-summary--item---bfSQ0.quick-summary--tests---2nNut{color:#fff}.quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{color:#388e3c;color:var(--green700);background-color:#c8e6c9;background-color:var(--green100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--passed---3QnUL .quick-summary--item---bfSQ0.quick-summary--passes---3IjYH .quick-summary--icon---TW1oG{color:#fff;background-color:#388e3c;background-color:var(--green700)}.quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{color:#d32f2f;color:var(--red700);background-color:#ffcdd2;background-color:var(--red100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--failed---3_tAw .quick-summary--item---bfSQ0.quick-summary--failures---14s29 .quick-summary--icon---TW1oG{color:#fff;background-color:#d32f2f;background-color:var(--red700)}.quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{color:#0288d1;color:var(--ltblue700);background-color:#b3e5fc;background-color:var(--ltblue100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--pending---21lZM .quick-summary--item---bfSQ0.quick-summary--pending---261aV .quick-summary--icon---TW1oG{color:#fff;background-color:#0288d1;background-color:var(--ltblue700)}.quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{color:#616161;color:var(--grey700);background-color:#f5f5f5;background-color:var(--grey100)}.quick-summary--single-filter---31Thy .quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{background-color:#e0e0e0;background-color:var(--grey300);color:#9e9e9e;color:var(--grey500)}.quick-summary--single-filter--skipped---1AdZA .quick-summary--item---bfSQ0.quick-summary--skipped---tyOc4 .quick-summary--icon---TW1oG{color:#fff;background-color:#616161;background-color:var(--grey700)}.quick-summary--icon---TW1oG{position:relative;top:2px;font-size:18px;margin-right:4px}.quick-summary--circle-icon---1HDS7{font-size:12px;border-radius:50%;padding:2px;border:1px solid transparent;transition:border-color .2s ease-out}@media (min-width:768px){.quick-summary--cnt---3s38x{-webkit-flex-direction:initial;flex-direction:row;padding:14px 12px 0 0}.quick-summary--list---2_80W{margin:0}.quick-summary--item---bfSQ0{font-size:18px;-webkit-flex-basis:initial;flex-basis:auto;margin:0 12px}.quick-summary--icon---TW1oG{font-size:24px;width:24px;top:0}.quick-summary--circle-icon---1HDS7{font-size:18px}}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.radio-button--trans-color---egsik{transition:color .2s ease-out;transition:var(--link-transition)}.radio-button--component---1ix3c:after,.radio-button--component---1ix3c:before{content:" ";display:table}.radio-button--component---1ix3c:after{clear:both}.radio-button--component---1ix3c{position:relative;height:24px}.radio-button--outer---a_NqL{position:absolute;top:50%;right:0;margin-top:-9px;width:18px;height:18px;border:2px solid #4caf50;border:2px solid var(--green500);border-radius:12px;cursor:pointer;transition:border-color .2s ease-out}.radio-button--off---dBAOK{border-color:color(#000 tint(73.5%));border-color:var(--gray-medium)}.radio-button--inner---3bo9Q{display:block;position:absolute;top:2px;right:2px;width:10px;height:10px;border-radius:100%;background-color:#4caf50;background-color:var(--green500)}.radio-button--off---dBAOK .radio-button--inner---3bo9Q{background-color:#fff;-webkit-transform:scale(0);transform:scale(0)}.radio-button--inner---3bo9Q{transition:all .15s cubic-bezier(.23,1,.32,1)}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.test--trans-color---3sP2r{transition:color .2s ease-out;transition:var(--link-transition)}.test--component---1mwsi{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.test--component---1mwsi.test--expanded---3hI0z.test--passed---38wAs .test--body-wrap---3EGPT,.test--component---1mwsi.test--expanded---3hI0z.test--passed---38wAs .test--header-btn---mI0Oy{border-left-color:#4caf50;border-left-color:var(--green500)}.test--component---1mwsi.test--expanded---3hI0z.test--failed---2PZhW .test--body-wrap---3EGPT,.test--component---1mwsi.test--expanded---3hI0z.test--failed---2PZhW .test--header-btn---mI0Oy{border-left-color:#f44336;border-left-color:var(--red500)}.test--list---24Hjy{list-style-type:none;margin:0;padding:0}.test--header-btn---mI0Oy{display:-webkit-flex;display:flex;position:relative;background:#fff;border:none;border-left:3px solid transparent;cursor:pointer;-webkit-flex-wrap:wrap;flex-wrap:wrap;padding:10px 16px 10px 13px;transition:border-color .2s ease-out;width:100%}.test--header-btn---mI0Oy[disabled]{cursor:default}.test--header-btn---mI0Oy:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.test--header-btn---mI0Oy:focus:not([disabled]),.test--header-btn---mI0Oy:hover:not([disabled]){border-left-color:#9e9e9e;border-left-color:var(--grey500)}.test--title---4c0rg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-flex-grow:1;flex-grow:1;font-family:var(--font-family--regular);font-size:13px;line-height:24px;margin:0;padding-right:12px;text-align:left}.test--hook---3T4lI .test--title---4c0rg{color:rgba(0,0,0,.54);color:var(--black54)}.test--expanded---3hI0z .test--title---4c0rg{line-height:1.5;padding-top:3px;white-space:normal}.test--icon---2jgH_{-webkit-align-self:flex-start;align-self:flex-start;padding:3px;border-radius:50%;color:#fff;margin-right:16px}.test--icon---2jgH_.test--pass---C1Mk7{color:#c8e6c9;color:var(--green100);background-color:#4caf50;background-color:var(--green500)}.test--icon---2jgH_.test--fail---3u2w0{color:#ffcdd2;color:var(--red100);background-color:#f44336;background-color:var(--red500)}.test--icon---2jgH_.test--pending---3Ctfm{color:#b3e5fc;color:var(--ltblue100);background-color:#03a9f4;background-color:var(--ltblue500)}.test--icon---2jgH_.test--skipped---3aU0Y{color:#f5f5f5;color:var(--grey100);background-color:#9e9e9e;background-color:var(--grey500)}.test--icon---2jgH_.test--hook---3T4lI{color:rgba(0,0,0,.38);color:var(--black38);padding:0}.test--failed---2PZhW .test--icon---2jgH_.test--hook---3T4lI{color:#f44336;color:var(--red500)}.test--info---1UQNw{display:-webkit-flex;display:flex}.test--duration---2tVp5{font-family:var(--font-family--regular);line-height:24px;color:rgba(0,0,0,.54);color:var(--black54)}.test--component---1mwsi:hover:not(.test--pending---3Ctfm) .test--duration---2tVp5,.test--expanded---3hI0z .test--duration---2tVp5{color:rgba(0,0,0,.87);color:var(--black87)}.test--duration---2tVp5{transition:color .2s ease-out}.test--duration-icon---2KnOU{margin-left:4px;line-height:24px!important;color:rgba(0,0,0,.38);color:var(--black38)}.test--duration-icon---2KnOU.test--slow---MQOnF{color:#e57373;color:var(--red300)}.test--duration-icon---2KnOU.test--medium---5j890{color:#fbc02d;color:var(--yellow700)}.test--context-icon---2POzC{position:relative;line-height:24px!important;color:rgba(0,0,0,.38);color:var(--black38);margin-right:8px;top:1px}.test--body-wrap---3EGPT{border-left:3px solid transparent;transition:border-color .2s ease-out}.test--expanded---3hI0z .test--body-wrap---3EGPT{display:block;padding-bottom:10px}.test--body---Ox0q_{display:none;background-color:#fafafa;border:1px solid #eceff1;border:1px solid var(--grey50);border-radius:4px}.test--expanded---3hI0z .test--body---Ox0q_{display:block;margin:0 16px 0 13px}.test--error-message---3Grn0{color:#f44336;color:var(--red500);font-size:12px;margin:10px 0 0;text-align:left;width:100%;word-break:break-word}.test--code-snippet---3H5Xj{position:relative;font-size:11px;margin:0;border-radius:0}.test--code-snippet---3H5Xj+.test--code-snippet---3H5Xj{border-top:1px solid #fff}.test--code-snippet---3H5Xj.hljs{padding:1em;background:none}.test--code-diff---2XQsb code>span:first-child{margin-right:11px}.test--code-diff-expected---1QWLl span{color:#859900}.test--inline-diff---3OmYO .test--code-diff-expected---1QWLl{background-color:#859900;color:#fff}.test--code-diff-actual---3MMxN span{color:#dc322f}.test--inline-diff---3OmYO .test--code-diff-actual---3MMxN{background-color:#dc322f;color:#fff}.test--code-label---1QEUY{position:absolute;font-family:var(--font-family--regular);top:0;right:0;padding:.2em .6em;background-color:#9e9e9e;background-color:var(--grey500);color:#fff}.test--context---1YYgX{background-color:#fff;border-top:1px solid #eceff1;border-top:1px solid var(--grey50);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.test--context-title---HHH10{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-family--regular);font-size:13px;color:rgba(0,0,0,.54);color:var(--black54);margin:0;padding:11px 11px 0}.test--context-item---R1NNU{padding-top:11px}.test--context-item---R1NNU .test--code-snippet---3H5Xj{padding-top:0}.test--context-item-title---1KxIO{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-family--medium);font-size:13px;margin:0;padding:0 11px 11px}.test--text-link---2_cSn{display:inline-block;padding:0 1em 1em;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-family:var(--font-family-mono);font-size:11px;color:#0288d1;color:var(--ltblue700)}.test--text-link---2_cSn:hover{color:#03a9f4;color:var(--ltblue500)}.test--image-link---PUFPJ,.test--video-link---1L-2D{display:inline-block;font-size:11px;padding:0 1em 1em}.test--image---2Z5X2,.test--video---2JK7O{display:block;max-width:100%;height:auto}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.suite--trans-color---2pu6T{transition:color .2s ease-out;transition:var(--link-transition)}.suite--component---22Vxk:after,.suite--component---22Vxk:before{content:" ";display:table}.suite--component---22Vxk:after{clear:both}.suite--component---22Vxk{position:relative;background-color:#fff;margin-bottom:20px}.suite--component---22Vxk>.suite--body---1itCO>ul>li>.suite--component---22Vxk{border:1px solid #e0e0e0;border:1px solid var(--grey300);border-right:none;border-bottom:none;margin:16px 0 16px 16px}.suite--component---22Vxk>.suite--body---1itCO>ul>li>.suite--component---22Vxk.suite--no-tests---l47BS{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--list---3WtMK{list-style-type:none;margin:0;padding:0}.suite--list-main---3KCXR>li>.suite--component---22Vxk,.suite--root-suite---ZDRuj{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 0 24px}.suite--list-main---3KCXR>.suite--no-tests---l47BS>.suite--body---1itCO>ul>li>.suite--component---22Vxk:not(.suite--no-suites---2PQFQ){border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--header---TddSn:after,.suite--header---TddSn:before{content:" ";display:table}.suite--header---TddSn:after{clear:both}.suite--header---TddSn{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--no-tests---l47BS>.suite--header---TddSn{padding-bottom:0;border-bottom:none}.suite--header-btn---25qLz{background:#fff;border:none;cursor:pointer;padding:12px 16px;text-align:left;width:100%}.suite--header-btn---25qLz:focus{box-shadow:0 0 2px 0 #03a9f4;box-shadow:0 0 2px 0 var(--ltblue500);outline:none}.suite--title---3T6OR{display:-webkit-flex;display:flex;font-family:var(--font-family--light);font-size:21px;margin:0}.suite--title---3T6OR span{margin-right:auto}.suite--title---3T6OR .suite--icon---2KPe5{margin-left:58px}.suite--filename---1u8oo{color:rgba(0,0,0,.54);color:var(--black54);font-family:var(--font-family--regular);margin:6px 0 0}.suite--body---1itCO:after,.suite--body---1itCO:before{content:" ";display:table}.suite--body---1itCO:after{clear:both}.suite--body---1itCO.suite--hide---2i8QF{display:none}.suite--has-suites---3OYDf>.suite--body---1itCO{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--grey300)}.suite--chart-wrap---7hvUh{display:none;position:absolute;top:12px;right:36px;width:50px;height:50px}.suite--chart-slice---1XN2j{stroke:#fff;stroke-width:2px}.ct-series-a .suite--chart-slice---1XN2j{fill:#4caf50;fill:var(--green500)}.ct-series-b .suite--chart-slice---1XN2j{fill:#f44336;fill:var(--red500)}.ct-series-c .suite--chart-slice---1XN2j{fill:#03a9f4;fill:var(--ltblue500)}.ct-series-d .suite--chart-slice---1XN2j{fill:rgba(0,0,0,.38);fill:var(--black38)}@media (min-width:768px){.suite--chart-wrap---7hvUh{display:block}.suite--chart-enabled---1N-VF:not(.suite--no-tests---l47BS) .suite--header---TddSn{min-height:66px}}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.suite-summary--trans-color---14JXk{transition:color .2s ease-out;transition:var(--link-transition)}.suite-summary--component---cFAkx:after,.suite-summary--component---cFAkx:before{content:" ";display:table}.suite-summary--component---cFAkx:after{clear:both}.suite-summary--component---cFAkx{list-style:none;padding-left:0;display:-webkit-flex;display:flex;font-family:var(--font-family--regular);font-size:15px;margin:16px 0 0}.suite-summary--component---cFAkx.suite-summary--no-margin---3WX9n{margin:0}.suite-summary--summary-item---JHYFN{display:-webkit-flex;display:flex;line-height:18px;margin:0 8px;color:rgba(0,0,0,.54);color:var(--black54)}.suite-summary--summary-item---JHYFN:first-child{margin-left:0}.suite-summary--summary-item---JHYFN.suite-summary--duration---AzGUQ,.suite-summary--summary-item---JHYFN.suite-summary--tests---3Zhct{color:rgba(0,0,0,.54);color:var(--black54)}.suite-summary--summary-item---JHYFN.suite-summary--passed---24BnC{color:#4caf50;color:var(--green500)}.suite-summary--summary-item---JHYFN.suite-summary--failed---205C4{color:#f44336;color:var(--red500)}.suite-summary--summary-item---JHYFN.suite-summary--pending---3_Nkj{color:#03a9f4;color:var(--ltblue500)}.suite-summary--summary-item---JHYFN.suite-summary--skipped---TovqF{color:rgba(0,0,0,.38);color:var(--black38)}.suite-summary--icon---3rZ6G{margin-right:2px}
+:root{--screen-sm-min:768px;--screen-md-min:992px;--screen-lg-min:1200px;--grid-gutter-width:30px;--container-sm:calc(720px + var(--grid-gutter-width));--container-md:calc(940px + var(--grid-gutter-width));--container-lg:calc(1140px + var(--grid-gutter-width));--navbar-height:122px;--navbar-height-short:56px;--summary-height-stacked:82px;--statusbar-height-stacked:54px;--footer-height:60px;--default-transition-duration:0.2s;--default-transition-easing:ease;--gray-base:#000;--gray-darker-faded:color(var(--gray-darker) alpha(95%));--gray-darker:color(var(--gray-base) tint(13.5%));--gray-dark:color(var(--gray-base) tint(20%));--gray:color(var(--gray-base) tint(33.5%));--gray-light:color(var(--gray-base) tint(46.7%));--gray-medium:color(var(--gray-base) tint(73.5%));--gray-lighter:color(var(--gray-base) tint(93.5%));--gray-lighter-faded:color(var(--gray-lighter) alpha(95%));--gray-border:color(var(--gray-base) tint(80%));--grey50:#eceff1;--grey100:#f5f5f5;--grey300:#e0e0e0;--grey500:#9e9e9e;--grey700:#616161;--green100:#c8e6c9;--green200:#a5d6a7;--green300:#81c784;--green500:#4caf50;--green700:#388e3c;--red100:#ffcdd2;--red300:#e57373;--red500:#f44336;--red700:#d32f2f;--ltblue100:#b3e5fc;--ltblue300:#4fc3f7;--ltblue500:#03a9f4;--ltblue700:#0288d1;--black87:rgba(0,0,0,0.87);--black54:rgba(0,0,0,0.54);--black38:rgba(0,0,0,0.38);--bluegrey500:#607d8b;--bluegrey800:#37474f;--bluegrey900:#263238;--light-icon-active:#fff;--light-icon-inactive:hsla(0,0%,100%,0.5);--dark-icon-active:var(--black54);--dark-icon-inactive:var(--black38);--amber300:#ffd54f;--amber400:#ffca28;--amber500:#ffc107;--yellow700:#fbc02d;--yellow800:#f9a825;--brand-primary:color(#428bca shade(6.5%));--brand-success:#4caf50;--brand-info:#5bc0de;--brand-warning:#f0ad4e;--brand-danger:#d9534f;--text-color:var(--black87);--body-bg:#f2f2f2;--link-color:var(--brand-primary);--link-hover-color:color(var(--link-color) shade(15%));--list-group-border:#ddd;--font-family-sans-serif:"robotoregular","Helvetica Neue",Helvetica,Arial,sans-serif;--font-family-base:var(--font-family-sans-serif);--font-family-mono:"Menlo","Monaco","Consolas","Courier New",monospace;--font-size-base:14px;--line-height-base:1.429;--line-height-computed:20px;--headings-font-family:inherit;--headings-font-weight:400;--headings-line-height:1.1;--headings-color:inherit;--headings-small-color:var(--gray-light);--font-size-h1:36px;--font-size-h2:30px;--font-size-h3:24px;--font-size-h4:18px;--font-size-h5:var(--font-size-base);--font-size-h6:12px;--font-family-light:"robotolight";--font-family-regular:"robotoregular";--font-family-medium:"robotomedium";--link-transition:color 0.2s ease-out}.toggle-switch--trans-color---16in9{transition:color .2s ease-out;transition:var(--link-transition)}.toggle-switch--component---3vjvh:after,.toggle-switch--component---3vjvh:before{content:" ";display:table}.toggle-switch--component---3vjvh:after{clear:both}.toggle-switch--component---3vjvh{height:24px}.toggle-switch--label---1Lu8U{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.toggle-switch--toggle-input---3BB7e{position:absolute;opacity:0}.toggle-switch--toggle-input---3BB7e:checked+.toggle-switch--toggle---2kPqc{background-color:#a5d6a7;background-color:var(--green200)}.toggle-switch--toggle-input---3BB7e:checked+.toggle-switch--toggle---2kPqc:before{background-color:#4caf50;background-color:var(--green500);-webkit-transform:translateX(14px);transform:translateX(14px)}.toggle-switch--toggle-input---3BB7e:focus+.toggle-switch--toggle---2kPqc:before{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12),0 0 2px 0 #03a9f4;box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12),0 0 2px 0 var(--ltblue500)}.toggle-switch--toggle---2kPqc{display:inline-block;position:relative;background-color:#e0e0e0;background-color:var(--grey300);border-radius:7px;cursor:pointer;height:14px;margin-left:auto;transition:background-color .15s cubic-bezier(.4,0,.2,1) 0s;width:34px}.toggle-switch--toggle---2kPqc:before{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);content:"";position:absolute;background-color:#9e9e9e;background-color:var(--grey500);border-radius:100%;height:20px;left:0;top:-3px;width:20px;transition:-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0s;transition:transform .15s cubic-bezier(.4,0,.2,1) 0s;transition:transform .15s cubic-bezier(.4,0,.2,1) 0s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0s}.toggle-switch--disabled---1qDLf{opacity:.6}.toggle-switch--disabled---1qDLf .toggle-switch--icon---348nT{color:rgba(0,0,0,.38);color:var(--black38)}.toggle-switch--disabled---1qDLf .toggle-switch--toggle---2kPqc{cursor:default}
diff --git a/sandbox/oauth-example/mochawesome-report/assets/app.js b/sandbox/oauth-example/mochawesome-report/assets/app.js
new file mode 100644
index 0000000000..23de4437e0
--- /dev/null
+++ b/sandbox/oauth-example/mochawesome-report/assets/app.js
@@ -0,0 +1,2 @@
+/*! mochawesome-report-generator 6.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
+!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=320)}([function(e,t,n){"use strict";e.exports=n(126)},function(e,t,n){e.exports=n(130)()},function(e,t,n){var r=n(198),o=n(51),i=36e5,a=6e4,s=/[T ]/,l=/:/,u=/^(\d{2})$/,c=[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],f=/^(\d{4})/,d=[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],p=/^-(\d{2})$/,h=/^-?(\d{3})$/,m=/^-?(\d{2})-?(\d{2})$/,v=/^-?W(\d{2})$/,g=/^-?W(\d{2})-?(\d{1})$/,y=/^(\d{2}([.,]\d*)?)$/,b=/^(\d{2}):?(\d{2}([.,]\d*)?)$/,_=/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,w=/([Z+-].*)$/,x=/^(Z)$/,E=/^([+-])(\d{2})$/,k=/^([+-])(\d{2}):?(\d{2})$/;function S(e,t,n){t=t||0,n=n||0;var r=new Date(0);r.setUTCFullYear(e,0,4);var o=7*t+n+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+o),r}e.exports=function(e,t){if(o(e))return new Date(e.getTime());if("string"!=typeof e)return new Date(e);var n=(t||{}).additionalDigits;n=null==n?2:Number(n);var O=function(e){var t,n={},r=e.split(s);l.test(r[0])?(n.date=null,t=r[0]):(n.date=r[0],t=r[1]);if(t){var o=w.exec(t);o?(n.time=t.replace(o[1],""),n.timezone=o[1]):n.time=t}return n}(e),T=function(e,t){var n,r=c[t],o=d[t];if(n=f.exec(e)||o.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=u.exec(e)||r.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}(O.date,n),N=T.year,C=function(e,t){if(null===t)return null;var n,r,o;if(0===e.length)return(r=new Date(0)).setUTCFullYear(t),r;if(n=p.exec(e))return r=new Date(0),o=parseInt(n[1],10)-1,r.setUTCFullYear(t,o),r;if(n=h.exec(e)){r=new Date(0);var i=parseInt(n[1],10);return r.setUTCFullYear(t,0,i),r}if(n=m.exec(e)){r=new Date(0),o=parseInt(n[1],10)-1;var a=parseInt(n[2],10);return r.setUTCFullYear(t,o,a),r}if(n=v.exec(e))return S(t,parseInt(n[1],10)-1);if(n=g.exec(e)){return S(t,parseInt(n[1],10)-1,parseInt(n[2],10)-1)}return null}(T.restDateString,N);if(C){var P,M=C.getTime(),j=0;if(O.time&&(j=function(e){var t,n,r;if(t=y.exec(e))return(n=parseFloat(t[1].replace(",",".")))%24*i;if(t=b.exec(e))return n=parseInt(t[1],10),r=parseFloat(t[2].replace(",",".")),n%24*i+r*a;if(t=_.exec(e)){n=parseInt(t[1],10),r=parseInt(t[2],10);var o=parseFloat(t[3].replace(",","."));return n%24*i+r*a+1e3*o}return null}(O.time)),O.timezone)P=function(e){var t,n;if(t=x.exec(e))return 0;if(t=E.exec(e))return n=60*parseInt(t[2],10),"+"===t[1]?-n:n;if(t=k.exec(e))return n=60*parseInt(t[2],10)+parseInt(t[3],10),"+"===t[1]?-n:n;return 0}(O.timezone)*a;else{var D=M+j,A=new Date(D);P=r(A);var I=new Date(D);I.setDate(A.getDate()+1);var R=r(I)-r(A);R>0&&(P+=R)}return new Date(M+j+P)}return new Date(e)}},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var l=[];Object.freeze(l);var u={};function c(){return++_e.mobxGuid}function f(e){throw d(!1,e),"X"}function d(e,t){if(!e)throw new Error("[mobx] "+(t||"An invariant failed, however the error is obfuscated because this is an production build."))}Object.freeze(u);function p(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var h=function(){};function m(e){return null!==e&&"object"==typeof e}function v(e){if(null===e||"object"!=typeof e)return!1;var t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function g(e,t,n){Object.defineProperty(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function y(e,t){var n="isMobX"+e;return t.prototype[n]=!0,function(e){return m(e)&&!0===e[n]}}function b(e){return e instanceof Map}function _(e){return e instanceof Set}function w(e){return null===e?null:"object"==typeof e?""+e:e}var x=Symbol("mobx administration"),E=function(){function e(e){void 0===e&&(e="Atom@"+c()),this.name=e,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=new Set,this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=te.NOT_TRACKING}return e.prototype.onBecomeObserved=function(){this.onBecomeObservedListeners&&this.onBecomeObservedListeners.forEach((function(e){return e()}))},e.prototype.onBecomeUnobserved=function(){this.onBecomeUnobservedListeners&&this.onBecomeUnobservedListeners.forEach((function(e){return e()}))},e.prototype.reportObserved=function(){return Te(this)},e.prototype.reportChanged=function(){Se(),function(e){if(e.lowestObserverState===te.STALE)return;e.lowestObserverState=te.STALE,e.observers.forEach((function(t){t.dependenciesState===te.UP_TO_DATE&&(t.isTracing!==re.NONE&&Ne(t,e),t.onBecomeStale()),t.dependenciesState=te.STALE}))}(this),Oe()},e.prototype.toString=function(){return this.name},e}(),k=y("Atom",E);function S(e,t,n){void 0===t&&(t=h),void 0===n&&(n=h);var r,o=new E(e);return t!==h&&$e("onBecomeObserved",o,t,r),n!==h&&function(e,t,n){$e("onBecomeUnobserved",e,t,n)}(o,n),o}var O={identity:function(e,t){return e===t},structural:function(e,t){return zt(e,t)},default:function(e,t){return Object.is(e,t)}},T=Symbol("mobx did run lazy initializers"),N=Symbol("mobx pending decorators"),C={},P={};function M(e,t){var n=t?C:P;return n[e]||(n[e]={configurable:!0,enumerable:t,get:function(){return j(this),this[e]},set:function(t){j(this),this[e]=t}})}function j(e){if(!0!==e[T]){var t=e[N];if(t)for(var n in g(e,T,!0),t){var r=t[n];r.propertyCreator(e,r.prop,r.descriptor,r.decoratorTarget,r.decoratorArguments)}}}function D(e,t){return function(){var n,r=function(r,o,a,s){if(!0===s)return t(r,o,a,r,n),null;if(!Object.prototype.hasOwnProperty.call(r,N)){var l=r[N];g(r,N,i({},l))}return r[N][o]={prop:o,propertyCreator:t,descriptor:a,decoratorTarget:r,decoratorArguments:n},M(o,e)};return A(arguments)?(n=l,r.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),r)}}function A(e){return(2===e.length||3===e.length)&&"string"==typeof e[1]||4===e.length&&!0===e[3]}function I(e,t,n){return Ze(e)?e:Array.isArray(e)?$.array(e,{name:n}):v(e)?$.object(e,void 0,{name:n}):b(e)?$.map(e,{name:n}):_(e)?$.set(e,{name:n}):e}function R(e){return e}function z(t){d(t);var n=D(!0,(function(e,n,r,o,i){var a=r?r.initializer?r.initializer.call(e):r.value:void 0;Tt(e).addObservableProp(n,a,t)})),r=(void 0!==e&&e.env,n);return r.enhancer=t,r}var F={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function L(e){return null==e?F:"string"==typeof e?{name:e,deep:!0,proxy:!0}:e}Object.freeze(F);var U=z(I),B=z((function(e,t,n){return null==e||jt(e)||yt(e)||xt(e)||St(e)?e:Array.isArray(e)?$.array(e,{name:n,deep:!1}):v(e)?$.object(e,void 0,{name:n,deep:!1}):b(e)?$.map(e,{name:n,deep:!1}):_(e)?$.set(e,{name:n,deep:!1}):f(!1)})),H=z(R),V=z((function(e,t,n){return zt(e,t)?t:e}));function W(e){return e.defaultDecorator?e.defaultDecorator.enhancer:!1===e.deep?R:I}var Y={box:function(e,t){arguments.length>2&&q("box");var n=L(t);return new oe(e,W(n),n.name,!0,n.equals)},array:function(e,t){arguments.length>2&&q("array");var n=L(t);return pt(e,W(n),n.name)},map:function(e,t){arguments.length>2&&q("map");var n=L(t);return new wt(e,W(n),n.name)},set:function(e,t){arguments.length>2&&q("set");var n=L(t);return new kt(e,W(n),n.name)},object:function(e,t,n){"string"==typeof arguments[1]&&q("object");var r=L(n);if(!1===r.proxy)return Qe({},e,t,r);var o=Ge(r),i=Qe({},void 0,void 0,r),a=it(i);return Xe(a,e,t,o),a},ref:H,shallow:B,deep:U,struct:V},$=function(e,t,n){if("string"==typeof arguments[1])return U.apply(null,arguments);if(Ze(e))return e;var r=v(e)?$.object(e,t,n):Array.isArray(e)?$.array(e,t):b(e)?$.map(e,t):_(e)?$.set(e,t):e;if(r!==e)return r;f(!1)};function q(e){f("Expected one or two arguments to observable."+e+". Did you accidentally try to use observable."+e+" as decorator?")}Object.keys(Y).forEach((function(e){return $[e]=Y[e]}));var Q=D(!1,(function(e,t,n,r,o){var a=n.get,s=n.set,l=o[0]||{};Tt(e).addComputedProp(e,t,i({get:a,set:s,context:e},l))}));Q({equals:O.structural});function G(e,t){var n=function(){return X(e,t,this,arguments)};return n.isMobxAction=!0,n}function X(e,t,n,r){var o=function(e,t,n,r){var o=!1,i=0;var a=he();Se();var s=Z(!0);return{prevDerivation:a,prevAllowStateChanges:s,notifySpy:o,startTime:i}}(),i=!0;try{var a=t.apply(n,r);return i=!1,a}finally{i?(_e.suppressReactionErrors=i,K(o),_e.suppressReactionErrors=!1):K(o)}}function K(e){ee(e.prevAllowStateChanges),Oe(),me(e.prevDerivation),e.notifySpy}function J(e,t){var n,r=Z(e);try{n=t()}finally{ee(r)}return n}function Z(e){var t=_e.allowStateChanges;return _e.allowStateChanges=e,t}function ee(e){_e.allowStateChanges=e}var te,ne,re,oe=function(e){function t(t,n,r,o,i){void 0===r&&(r="ObservableValue@"+c()),void 0===o&&(o=!0),void 0===i&&(i=O.default);var a=e.call(this,r)||this;return a.enhancer=n,a.name=r,a.equals=i,a.hasUnreportedChange=!1,a.value=n(t,void 0,r),a}return function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.prototype.set=function(e){this.value;if((e=this.prepareNewValue(e))!==_e.UNCHANGED){false,this.setNewValue(e)}},t.prototype.prepareNewValue=function(e){if(ce(this),at(this)){var t=lt(this,{object:this,type:"update",newValue:e});if(!t)return _e.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value,this.name),this.equals(this.value,e)?_e.UNCHANGED:e},t.prototype.setNewValue=function(e){var t=this.value;this.value=e,this.reportChanged(),ut(this)&&ft(this,{type:"update",object:this,newValue:e,oldValue:t})},t.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},t.prototype.intercept=function(e){return st(this,e)},t.prototype.observe=function(e,t){return t&&e({object:this,type:"update",newValue:this.value,oldValue:void 0}),ct(this,e)},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.value+"]"},t.prototype.valueOf=function(){return w(this.get())},t.prototype[Symbol.toPrimitive]=function(){return this.valueOf()},t}(E),ie=(y("ObservableValue",oe),function(){function e(e){this.dependenciesState=te.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=new Set,this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=te.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+c(),this.value=new se(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=re.NONE,this.derivation=e.get,this.name=e.name||"ComputedValue@"+c(),e.set&&(this.setter=G(this.name+"-setter",e.set)),this.equals=e.equals||(e.compareStructural||e.struct?O.structural:O.default),this.scope=e.context,this.requiresReaction=!!e.requiresReaction,this.keepAlive=!!e.keepAlive}return e.prototype.onBecomeStale=function(){!function(e){if(e.lowestObserverState!==te.UP_TO_DATE)return;e.lowestObserverState=te.POSSIBLY_STALE,e.observers.forEach((function(t){t.dependenciesState===te.UP_TO_DATE&&(t.dependenciesState=te.POSSIBLY_STALE,t.isTracing!==re.NONE&&Ne(t,e),t.onBecomeStale())}))}(this)},e.prototype.onBecomeObserved=function(){this.onBecomeObservedListeners&&this.onBecomeObservedListeners.forEach((function(e){return e()}))},e.prototype.onBecomeUnobserved=function(){this.onBecomeUnobservedListeners&&this.onBecomeUnobservedListeners.forEach((function(e){return e()}))},e.prototype.get=function(){this.isComputing&&f("Cycle detected in computation "+this.name+": "+this.derivation),0!==_e.inBatch||0!==this.observers.size||this.keepAlive?(Te(this),ue(this)&&this.trackAndCompute()&&function(e){if(e.lowestObserverState===te.STALE)return;e.lowestObserverState=te.STALE,e.observers.forEach((function(t){t.dependenciesState===te.POSSIBLY_STALE?t.dependenciesState=te.STALE:t.dependenciesState===te.UP_TO_DATE&&(e.lowestObserverState=te.UP_TO_DATE)}))}(this)):ue(this)&&(this.warnAboutUntrackedRead(),Se(),this.value=this.computeValue(!1),Oe());var e=this.value;if(le(e))throw e.cause;return e},e.prototype.peek=function(){var e=this.computeValue(!1);if(le(e))throw e.cause;return e},e.prototype.set=function(e){if(this.setter){d(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,e)}finally{this.isRunningSetter=!1}}else d(!1,!1)},e.prototype.trackAndCompute=function(){var e=this.value,t=this.dependenciesState===te.NOT_TRACKING,n=this.computeValue(!0),r=t||le(e)||le(n)||!this.equals(e,n);return r&&(this.value=n),r},e.prototype.computeValue=function(e){var t;if(this.isComputing=!0,_e.computationDepth++,e)t=fe(this,this.derivation,this.scope);else if(!0===_e.disableErrorBoundaries)t=this.derivation.call(this.scope);else try{t=this.derivation.call(this.scope)}catch(e){t=new se(e)}return _e.computationDepth--,this.isComputing=!1,t},e.prototype.suspend=function(){this.keepAlive||(de(this),this.value=void 0)},e.prototype.observe=function(e,t){var n=this,r=!0,o=void 0;return He((function(){var i=n.get();if(!r||t){var a=he();e({type:"update",object:n,newValue:i,oldValue:o}),me(a)}r=!1,o=i}))},e.prototype.warnAboutUntrackedRead=function(){},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},e.prototype.valueOf=function(){return w(this.get())},e.prototype[Symbol.toPrimitive]=function(){return this.valueOf()},e}()),ae=y("ComputedValue",ie);(ne=te||(te={}))[ne.NOT_TRACKING=-1]="NOT_TRACKING",ne[ne.UP_TO_DATE=0]="UP_TO_DATE",ne[ne.POSSIBLY_STALE=1]="POSSIBLY_STALE",ne[ne.STALE=2]="STALE",function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(re||(re={}));var se=function(e){this.cause=e};function le(e){return e instanceof se}function ue(e){switch(e.dependenciesState){case te.UP_TO_DATE:return!1;case te.NOT_TRACKING:case te.STALE:return!0;case te.POSSIBLY_STALE:for(var t=he(),n=e.observing,r=n.length,o=0;o0;_e.computationDepth>0&&t&&f(!1),_e.allowStateChanges||!t&&"strict"!==_e.enforceActions||f(!1)}function fe(e,t,n){ve(e),e.newObserving=new Array(e.observing.length+100),e.unboundDepsCount=0,e.runId=++_e.runId;var r,o=_e.trackingDerivation;if(_e.trackingDerivation=e,!0===_e.disableErrorBoundaries)r=t.call(n);else try{r=t.call(n)}catch(e){r=new se(e)}return _e.trackingDerivation=o,function(e){for(var t=e.observing,n=e.observing=e.newObserving,r=te.UP_TO_DATE,o=0,i=e.unboundDepsCount,a=0;ar&&(r=s.dependenciesState)}n.length=o,e.newObserving=null,i=t.length;for(;i--;){0===(s=t[i]).diffValue&&Ee(s,e),s.diffValue=0}for(;o--;){var s;1===(s=n[o]).diffValue&&(s.diffValue=0,xe(s,e))}r!==te.UP_TO_DATE&&(e.dependenciesState=r,e.onBecomeStale())}(e),r}function de(e){var t=e.observing;e.observing=[];for(var n=t.length;n--;)Ee(t[n],e);e.dependenciesState=te.NOT_TRACKING}function pe(e){var t=he();try{return e()}finally{me(t)}}function he(){var e=_e.trackingDerivation;return _e.trackingDerivation=null,e}function me(e){_e.trackingDerivation=e}function ve(e){if(e.dependenciesState!==te.UP_TO_DATE){e.dependenciesState=te.UP_TO_DATE;for(var t=e.observing,n=t.length;n--;)t[n].lowestObserverState=te.UP_TO_DATE}}var ge=function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1},ye=!0,be=!1,_e=function(){var e=we();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(ye=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new ge).version&&(ye=!1),ye?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ge):(setTimeout((function(){be||f("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new ge)}();function we(){return"undefined"!=typeof window?window:r}function xe(e,t){e.observers.add(t),e.lowestObserverState>t.dependenciesState&&(e.lowestObserverState=t.dependenciesState)}function Ee(e,t){e.observers.delete(t),0===e.observers.size&&ke(e)}function ke(e){!1===e.isPendingUnobservation&&(e.isPendingUnobservation=!0,_e.pendingUnobservations.push(e))}function Se(){_e.inBatch++}function Oe(){if(0==--_e.inBatch){je();for(var e=_e.pendingUnobservations,t=0;t0&&ke(e),!1)}function Ne(e,t){if(console.log("[mobx.trace] '"+e.name+"' is invalidated due to a change in: '"+t.name+"'"),e.isTracing===re.BREAK){var n=[];Ce(Ke(Dt(e,r)),n,1),new Function("debugger;\n/*\nTracing '"+e.name+"'\n\nYou are entering this break point because derivation '"+e.name+"' is being traced and '"+t.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(e instanceof ie?e.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n ")()}var r}function Ce(e,t,n){t.length>=1e3?t.push("(and many more)"):(t.push(""+new Array(n).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return Ce(e,t,n+1)})))}var Pe=function(){function e(e,t,n){void 0===e&&(e="Reaction@"+c()),this.name=e,this.onInvalidate=t,this.errorHandler=n,this.observing=[],this.newObserving=[],this.dependenciesState=te.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+c(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=re.NONE}return e.prototype.onBecomeStale=function(){this.schedule()},e.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,_e.pendingReactions.push(this),je())},e.prototype.isScheduled=function(){return this._isScheduled},e.prototype.runReaction=function(){if(!this.isDisposed){if(Se(),this._isScheduled=!1,ue(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending}catch(e){this.reportExceptionInDerivation(e)}}Oe()}},e.prototype.track=function(e){Se();this._isRunning=!0;var t=fe(this,e,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&de(this),le(t)&&this.reportExceptionInDerivation(t.cause),Oe()},e.prototype.reportExceptionInDerivation=function(e){var t=this;if(this.errorHandler)this.errorHandler(e,this);else{if(_e.disableErrorBoundaries)throw e;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";_e.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,e),_e.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},e.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Se(),de(this),Oe()))},e.prototype.getDisposer=function(){var e=this.dispose.bind(this);return e[x]=this,e},e.prototype.toString=function(){return"Reaction["+this.name+"]"},e.prototype.trace=function(e){void 0===e&&(e=!1),function(){for(var e=[],t=0;t0||_e.isRunningReactions||Me(De)}function De(){_e.isRunningReactions=!0;for(var e=_e.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r",e):2===arguments.length&&"function"==typeof t?G(e,t):1===arguments.length&&"string"==typeof e?Fe(e):!0!==r?Fe(t).apply(null,arguments):void g(e,t,G(e.name||t,n.value))};function Be(e,t,n){g(e,t,G(t,n.bind(e)))}function He(e,t){void 0===t&&(t=u);var n,r=t&&t.name||e.name||"Autorun@"+c();if(!t.scheduler&&!t.delay)n=new Pe(r,(function(){this.track(a)}),t.onError);else{var o=We(t),i=!1;n=new Pe(r,(function(){i||(i=!0,o((function(){i=!1,n.isDisposed||n.track(a)})))}),t.onError)}function a(){e(n)}return n.schedule(),n.getDisposer()}Ue.bound=function(e,t,n,r){return!0===r?(Be(e,t,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return Be(this,t,n.value||n.initializer.call(this)),this[t]},set:ze}:{enumerable:!1,configurable:!0,set:function(e){Be(this,t,e)},get:function(){}}};var Ve=function(e){return e()};function We(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Ve}function Ye(e,t,n){void 0===n&&(n=u);var r,o,i,a=n.name||"Reaction@"+c(),s=Ue(a,n.onError?(r=n.onError,o=t,function(){try{return o.apply(this,arguments)}catch(e){r.call(this,e)}}):t),l=!n.scheduler&&!n.delay,f=We(n),d=!0,p=!1,h=n.compareStructural?O.structural:n.equals||O.default,m=new Pe(a,(function(){d||l?v():p||(p=!0,f(v))}),n.onError);function v(){if(p=!1,!m.isDisposed){var t=!1;m.track((function(){var n=e(m);t=d||!h(i,n),i=n})),d&&n.fireImmediately&&s(i,m),d||!0!==t||s(i,m),d&&(d=!1)}}return m.schedule(),m.getDisposer()}function $e(e,t,n,r){var o="string"==typeof n?Dt(t,n):Dt(t),i="string"==typeof n?r:n,a=e+"Listeners";return o[a]?o[a].add(i):o[a]=new Set([i]),"function"!=typeof o[e]?f(!1):function(){var e=o[a];e&&(e.delete(i),0===e.size&&delete o[a])}}function qe(e){var t=e.enforceActions,n=e.computedRequiresReaction,r=e.disableErrorBoundaries,o=e.reactionScheduler;if(!0===e.isolateGlobalState&&((_e.pendingReactions.length||_e.inBatch||_e.isRunningReactions)&&f("isolateGlobalState should be called before MobX is running any reactions"),be=!0,ye&&(0==--we().__mobxInstanceCount&&(we().__mobxGlobals=void 0),_e=new ge)),void 0!==t){var i=void 0;switch(t){case!0:case"observed":i=!0;break;case!1:case"never":i=!1;break;case"strict":case"always":i="strict";break;default:f("Invalid value for 'enforceActions': '"+t+"', expected 'never', 'always' or 'observed'")}_e.enforceActions=i,_e.allowStateChanges=!0!==i&&"strict"!==i}void 0!==n&&(_e.computedRequiresReaction=!!n),void 0!==r&&(!0===r&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),_e.disableErrorBoundaries=!!r),o&&Ie(o)}function Qe(e,t,n,r){var o=Ge(r=L(r));return j(e),Tt(e,r.name,o.enhancer),t&&Xe(e,t,n,o),e}function Ge(e){return e.defaultDecorator||(!1===e.deep?H:U)}function Xe(e,t,n,r){Se();try{for(var o in t){var i=Object.getOwnPropertyDescriptor(t,o);0;var a=(n&&o in n?n[o]:i.get?Q:r)(e,o,i,!0);a&&Object.defineProperty(e,o,a)}}finally{Oe()}}function Ke(e){var t,n,r={name:e.name};return e.observing&&e.observing.length>0&&(r.dependencies=(t=e.observing,n=[],t.forEach((function(e){-1===n.indexOf(e)&&n.push(e)})),n).map(Ke)),r}function Je(e,t){return null!=e&&(void 0!==t?!!jt(e)&&e[x].values.has(t):jt(e)||!!e[x]||k(e)||Ae(e)||ae(e))}function Ze(e){return 1!==arguments.length&&f(!1),Je(e)}function et(e,t,n){if(2!==arguments.length)if(jt(e)){var r=e[x],o=r.values.get(t);o?r.write(t,n):r.addObservableProp(t,n,r.defaultEnhancer)}else if(xt(e))e.set(t,n);else{if(!yt(e))return f(!1);"number"!=typeof t&&(t=parseInt(t,10)),d(t>=0,"Not a valid index: '"+t+"'"),Se(),t>=e.length&&(e.length=t+1),e[t]=n,Oe()}else{Se();var i=t;try{for(var a in i)et(e,a,i[a])}finally{Oe()}}}function tt(e){switch(e.length){case 0:return _e.trackingDerivation;case 1:return Dt(e[0]);case 2:return Dt(e[0],e[1])}}function nt(e,t){void 0===t&&(t=void 0),Se();try{return e.apply(t)}finally{Oe()}}function rt(e){return e[x]}var ot={has:function(e,t){if(t===x||"constructor"===t||t===T)return!0;var n=rt(e);return"string"==typeof t?n.has(t):t in e},get:function(e,t){if(t===x||"constructor"===t||t===T)return e[t];var n=rt(e),r=n.values.get(t);if(r instanceof E){var o=r.get();return void 0===o&&n.has(t),o}return"string"==typeof t&&n.has(t),e[t]},set:function(e,t,n){return"string"==typeof t&&(et(e,t,n),!0)},deleteProperty:function(e,t){return"string"==typeof t&&(rt(e).remove(t),!0)},ownKeys:function(e){return rt(e).keysAtom.reportObserved(),Reflect.ownKeys(e)},preventExtensions:function(e){return f("Dynamic observable objects cannot be frozen"),!1}};function it(e){var t=new Proxy(e,ot);return e[x].proxy=t,t}function at(e){return void 0!==e.interceptors&&e.interceptors.length>0}function st(e,t){var n=e.interceptors||(e.interceptors=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function lt(e,t){var n=he();try{var r=e.interceptors;if(r)for(var o=0,i=r.length;o0}function ct(e,t){var n=e.changeListeners||(e.changeListeners=[]);return n.push(t),p((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function ft(e,t){var n=he(),r=e.changeListeners;if(r){for(var o=0,i=(r=r.slice()).length;o0?e.map(this.dehancer):e},e.prototype.intercept=function(e){return st(this,e)},e.prototype.observe=function(e,t){return void 0===t&&(t=!1),t&&e({object:this.proxy,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),ct(this,e)},e.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},e.prototype.setArrayLength=function(e){if("number"!=typeof e||e<0)throw new Error("[mobx.array] Out of range: "+e);var t=this.values.length;if(e!==t)if(e>t){for(var n=new Array(e-t),r=0;ro?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=l),at(this)){var i=lt(this,{object:this.proxy,type:"splice",index:e,removedCount:t,added:n});if(!i)return l;t=i.removedCount,n=i.added}n=0===n.length?n:n.map((function(e){return r.enhancer(e,void 0)}));var a=this.spliceItemsIntoValues(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice(e,n,a),this.dehanceValues(a)},e.prototype.spliceItemsIntoValues=function(e,t,n){var r;if(n.length<1e4)return(r=this.values).splice.apply(r,function(){for(var e=[],t=0;t-1&&(this.splice(n,1),!0)},get:function(e){var t=this[x];if(t){if(e=a.getTime()?n+1:t.getTime()>=l.getTime()?n:n-1}},function(e,t,n){var r=n(34);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setHours(0,0,0,0),t}},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(127)},function(e,t,n){var r=n(27),o=n(132),i=n(133),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(140),o=n(143);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;to?1:0}},function(e,t,n){var r=n(62);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;(function(e){var t,n=[],r=Object.keys,o={},i={},a=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,u="",c={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function f(e){return e.replace(/&/g,"&").replace(//g,">")}function d(e){return e.nodeName.toLowerCase()}function p(e,t){var n=e&&e.exec(t);return n&&0===n.index}function h(e){return a.test(e)}function m(e){var t,n,r,o,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",n=s.exec(i))return j(n[1])?n[1]:"no-highlight";for(t=0,r=(i=i.split(/\s+/)).length;t"}function u(e){i+=""+d(e)+">"}function c(e){("start"===e.event?l:u)(e.node)}for(;e.length||t.length;){var p=s();if(i+=f(r.substring(o,p[0].offset)),o=p[0].offset,p===e){a.reverse().forEach(u);do{c(p.splice(0,1)[0]),p=s()}while(p===e&&p.length&&p[0].offset===o);a.reverse().forEach(l)}else"start"===p[0].event?a.push(p[0].node):a.pop(),c(p.splice(0,1)[0])}return i+f(r.substr(o))}function b(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(t){return v(e,{variants:null},t)}))),e.cached_variants||e.endsWithParent&&[v(e)]||[e]}function _(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(_)}}function w(e){function t(e){return e&&e.source||e}function n(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function o(e,n){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,o=0,i="",a=0;a0&&(i+=n);l.length>0;){var u=r.exec(l);if(null==u){i+=l;break}i+=l.substring(0,u.index),l=l.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?i+="\\"+String(Number(u[1])+s):(i+=u[0],"("==u[0]&&o++)}}return i}function i(a,s){if(!a.compiled){if(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords){var l={},u=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach((function(e){var n=e.split("|");l[n[0]]=[t,n[1]?Number(n[1]):1]}))};"string"==typeof a.keywords?u("keyword",a.keywords):r(a.keywords).forEach((function(e){u(e,a.keywords[e])})),a.keywords=l}a.lexemesRe=n(a.lexemes||/\w+/,!0),s&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(" ").join("|")+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=n(a.begin),a.endSameAsBegin&&(a.end=a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=n(a.end)),a.terminator_end=t(a.end)||"",a.endsWithParent&&s.terminator_end&&(a.terminator_end+=(a.end?"|":"")+s.terminator_end)),a.illegal&&(a.illegalRe=n(a.illegal)),null==a.relevance&&(a.relevance=1),a.contains||(a.contains=[]),a.contains=Array.prototype.concat.apply([],a.contains.map((function(e){return b("self"===e?a:e)}))),a.contains.forEach((function(e){i(e,a)})),a.starts&&i(a.starts,s);var c=a.contains.map((function(e){return e.beginKeywords?"\\.?(?:"+e.begin+")\\.?":e.begin})).concat([a.terminator_end,a.illegal]).map(t).filter(Boolean);a.terminators=c.length?n(o(c,"|"),!0):{exec:function(){return null}}}}i(e)}function x(e,t,n,r){function i(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function a(e,t){var n,r;for(n=0,r=t.contains.length;n')+t+(n?"":u)}function m(){var e,t,n,r;if(!S.keywords)return f(N);for(r="",t=0,S.lexemesRe.lastIndex=0,n=S.lexemesRe.exec(N);n;)r+=f(N.substring(t,n.index)),(e=d(S,n))?(C+=e[1],r+=h(e[0],f(n[0]))):r+=f(n[0]),t=S.lexemesRe.lastIndex,n=S.lexemesRe.exec(N);return r+f(N.substr(t))}function v(){var e="string"==typeof S.subLanguage;if(e&&!o[S.subLanguage])return f(N);var t=e?x(S.subLanguage,N,!0,O[S.subLanguage]):E(N,S.subLanguage.length?S.subLanguage:void 0);return S.relevance>0&&(C+=t.relevance),e&&(O[S.subLanguage]=t.top),h(t.language,t.value,!1,!0)}function g(){T+=null!=S.subLanguage?v():m(),N=""}function y(e){T+=e.className?h(e.className,"",!0):"",S=Object.create(e,{parent:{value:S}})}function b(e,t){if(N+=e,null==t)return g(),0;var n=a(t,S);if(n)return n.skip?N+=t:(n.excludeBegin&&(N+=t),g(),n.returnBegin||n.excludeBegin||(N=t)),y(n,t),n.returnBegin?0:t.length;var r=s(S,t);if(r){var o=S;o.skip?N+=t:(o.returnEnd||o.excludeEnd||(N+=t),g(),o.excludeEnd&&(N=t));do{S.className&&(T+=u),S.skip||S.subLanguage||(C+=S.relevance),S=S.parent}while(S!==r.parent);return r.starts&&(r.endSameAsBegin&&(r.starts.endRe=r.endRe),y(r.starts,"")),o.returnEnd?0:t.length}if(l(t,S))throw new Error('Illegal lexeme "'+t+'" for mode "'+(S.className||"")+'"');return N+=t,t.length||1}var _=j(e);if(!_)throw new Error('Unknown language: "'+e+'"');w(_);var k,S=r||_,O={},T="";for(k=S;k!==_;k=k.parent)k.className&&(T=h(k.className,"",!0)+T);var N="",C=0;try{for(var P,M,D=0;S.terminators.lastIndex=D,P=S.terminators.exec(t);)M=b(t.substring(D,P.index),P[0]),D=P.index+M;for(b(t.substr(D)),k=S;k.parent;k=k.parent)k.className&&(T+=u);return{relevance:C,value:T,language:e,top:S}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:f(t)};throw e}}function E(e,t){t=t||c.languages||r(o);var n={relevance:0,value:f(e)},i=n;return t.filter(j).filter(D).forEach((function(t){var r=x(t,e,!1);r.language=t,r.relevance>i.relevance&&(i=r),r.relevance>n.relevance&&(i=n,n=r)})),i.language&&(n.second_best=i),n}function k(e){return c.tabReplace||c.useBR?e.replace(l,(function(e,t){return c.useBR&&"\n"===e?"
":c.tabReplace?t.replace(/\t/g,c.tabReplace):""})):e}function S(e,t,n){var r=t?i[t]:n,o=[e.trim()];return e.match(/\bhljs\b/)||o.push("hljs"),-1===e.indexOf(r)&&o.push(r),o.join(" ").trim()}function O(e){var t,n,r,o,i,a=m(e);h(a)||(c.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/
/g,"\n"):t=e,i=t.textContent,r=a?x(a,i,!0):E(i),(n=g(t)).length&&((o=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=y(n,g(o),i)),r.value=k(r.value),e.innerHTML=r.value,e.className=S(e.className,a,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function T(e){c=v(c,e)}function N(){if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,O)}}function C(){addEventListener("DOMContentLoaded",N,!1),addEventListener("load",N,!1)}function P(t,n){var r=o[t]=n(e);_(r),r.aliases&&r.aliases.forEach((function(e){i[e]=t}))}function M(){return r(o)}function j(e){return e=(e||"").toLowerCase(),o[e]||o[i[e]]}function D(e){var t=j(e);return t&&!t.disableAutodetect}e.highlight=x,e.highlightAuto=E,e.fixMarkup=k,e.highlightBlock=O,e.configure=T,e.initHighlighting=N,e.initHighlightingOnLoad=C,e.registerLanguage=P,e.listLanguages=M,e.getLanguage=j,e.autoDetection=D,e.inherit=v,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var o=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return o.contains.push(e.PHRASAL_WORDS_MODE),o.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),o},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0}})(t)}()},function(e,t,n){var r=n(14),o=n(15);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(8).Symbol;e.exports=r},function(e,t,n){var r=n(16)(Object,"create");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(148),o=n(149),i=n(150),a=n(151),s=n(152);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(38),o=n(49);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},function(e,t){e.exports=function(e){return e instanceof Date}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear(),o=t.getMonth(),i=new Date(0);return i.setFullYear(n,o+1,0),i.setHours(0,0,0,0),i.getDate()}},function(e,t,n){var r=n(20);e.exports=function(e,t){var n=Number(t);return r(e,7*n)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e).getTime(),o=r(t).getTime();return n>o?-1:n0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(211),o=n(212);e.exports={distanceInWords:r(),format:o()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(2),o=n(11),i=n(22);e.exports=function(e){var t=r(e),n=o(t).getTime()-i(t).getTime();return Math.round(n/6048e5)+1}},function(e,t,n){var r=n(34);e.exports=function(e,t,n){var o=r(e,n),i=r(t,n);return o.getTime()===i.getTime()}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),u=1;uc))return!1;var d=l.get(e);if(d&&l.get(t))return d==t;var p=-1,h=!0,m=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++p-1&&e%1==0&&e0?(p=o(e),h=o(t)):(p=o(t),h=o(e));var v,g=i(h,p),y=h.getTimezoneOffset()-p.getTimezoneOffset(),b=Math.round(g/60)-y;if(b<2)return u.includeSeconds?g<5?d("lessThanXSeconds",5,m):g<10?d("lessThanXSeconds",10,m):g<20?d("lessThanXSeconds",20,m):g<40?d("halfAMinute",null,m):d(g<60?"lessThanXMinutes":"xMinutes",1,m):0===b?d("lessThanXMinutes",1,m):d("xMinutes",b,m);if(b<45)return d("xMinutes",b,m);if(b<90)return d("aboutXHours",1,m);if(b<1440)return d("aboutXHours",Math.round(b/60),m);if(b<2520)return d("xDays",1,m);if(b{if(!Number.isFinite(e))throw new TypeError("Expected a finite number");t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);const n=[],o=(e,r,o,i)=>{if(!(0!==n.length&&t.colonNotation||0!==e||t.colonNotation&&"m"===o))return;let a,s;if(i=(i||e||"0").toString(),t.colonNotation){a=n.length>0?":":"",s="";const e=i.includes(".")?i.split(".")[0].length:i.length,t=n.length>0?2:1;i="0".repeat(Math.max(0,t-e))+i}else a="",s=t.verbose?" "+(l=r,1===e?l:`${l}s`):o;var l;n.push(a+i+s)},i=r(e);if(o(Math.trunc(i.days/365),"year","y"),o(i.days%365,"day","d"),o(i.hours,"hour","h"),o(i.minutes,"minute","m"),t.separateMilliseconds||t.formatSubMilliseconds||e<1e3)if(o(i.seconds,"second","s"),t.formatSubMilliseconds)o(i.milliseconds,"millisecond","ms"),o(i.microseconds,"microsecond","µs"),o(i.nanoseconds,"nanosecond","ns");else{const e=i.milliseconds+i.microseconds/1e3+i.nanoseconds/1e6,n="number"==typeof t.millisecondsDecimalDigits?t.millisecondsDecimalDigits:0,r=e>=1?Math.round(e):Math.ceil(e),a=n?e.toFixed(n):r;o(Number.parseFloat(a,10),"millisecond","ms",a)}else{const n=((e,t)=>{const n=Math.floor(e*10**t+1e-7);return(Math.round(n)/10**t).toFixed(t)})(e/1e3%60,"number"==typeof t.secondsDecimalDigits?t.secondsDecimalDigits:1),r=t.keepDecimalsOnWholeSeconds?n:n.replace(/\.0+$/,"");o(Number.parseFloat(r,10),"second","s",r)}if(0===n.length)return"0"+(t.verbose?" milliseconds":"ms");if(t.compact)return n[0];if("number"==typeof t.unitCount){const e=t.colonNotation?"":" ";return n.slice(0,Math.max(t.unitCount,1)).join(e)}return t.colonNotation?n.join(""):n.join(" ")}},function(e,t,n){e.exports={"trans-color":"footer--trans-color---205XF",component:"footer--component---1WcTR"}},function(e){e.exports={"3d_rotation":"e84d",ac_unit:"eb3b",access_alarm:"e190",access_alarms:"e191",access_time:"e192",accessibility:"e84e",accessible:"e914",account_balance:"e84f",account_balance_wallet:"e850",account_box:"e851",account_circle:"e853",adb:"e60e",add:"e145",add_a_photo:"e439",add_alarm:"e193",add_alert:"e003",add_box:"e146",add_circle:"e147",add_circle_outline:"e148",add_location:"e567",add_shopping_cart:"e854",add_to_photos:"e39d",add_to_queue:"e05c",adjust:"e39e",airline_seat_flat:"e630",airline_seat_flat_angled:"e631",airline_seat_individual_suite:"e632",airline_seat_legroom_extra:"e633",airline_seat_legroom_normal:"e634",airline_seat_legroom_reduced:"e635",airline_seat_recline_extra:"e636",airline_seat_recline_normal:"e637",airplanemode_active:"e195",airplanemode_inactive:"e194",airplay:"e055",airport_shuttle:"eb3c",alarm:"e855",alarm_add:"e856",alarm_off:"e857",alarm_on:"e858",album:"e019",all_inclusive:"eb3d",all_out:"e90b",android:"e859",announcement:"e85a",apps:"e5c3",archive:"e149",arrow_back:"e5c4",arrow_downward:"e5db",arrow_drop_down:"e5c5",arrow_drop_down_circle:"e5c6",arrow_drop_up:"e5c7",arrow_forward:"e5c8",arrow_upward:"e5d8",art_track:"e060",aspect_ratio:"e85b",assessment:"e85c",assignment:"e85d",assignment_ind:"e85e",assignment_late:"e85f",assignment_return:"e860",assignment_returned:"e861",assignment_turned_in:"e862",assistant:"e39f",assistant_photo:"e3a0",attach_file:"e226",attach_money:"e227",attachment:"e2bc",audiotrack:"e3a1",autorenew:"e863",av_timer:"e01b",backspace:"e14a",backup:"e864",battery_alert:"e19c",battery_charging_full:"e1a3",battery_full:"e1a4",battery_std:"e1a5",battery_unknown:"e1a6",beach_access:"eb3e",beenhere:"e52d",block:"e14b",bluetooth:"e1a7",bluetooth_audio:"e60f",bluetooth_connected:"e1a8",bluetooth_disabled:"e1a9",bluetooth_searching:"e1aa",blur_circular:"e3a2",blur_linear:"e3a3",blur_off:"e3a4",blur_on:"e3a5",book:"e865",bookmark:"e866",bookmark_border:"e867",border_all:"e228",border_bottom:"e229",border_clear:"e22a",border_color:"e22b",border_horizontal:"e22c",border_inner:"e22d",border_left:"e22e",border_outer:"e22f",border_right:"e230",border_style:"e231",border_top:"e232",border_vertical:"e233",branding_watermark:"e06b",brightness_1:"e3a6",brightness_2:"e3a7",brightness_3:"e3a8",brightness_4:"e3a9",brightness_5:"e3aa",brightness_6:"e3ab",brightness_7:"e3ac",brightness_auto:"e1ab",brightness_high:"e1ac",brightness_low:"e1ad",brightness_medium:"e1ae",broken_image:"e3ad",brush:"e3ae",bubble_chart:"e6dd",bug_report:"e868",build:"e869",burst_mode:"e43c",business:"e0af",business_center:"eb3f",cached:"e86a",cake:"e7e9",call:"e0b0",call_end:"e0b1",call_made:"e0b2",call_merge:"e0b3",call_missed:"e0b4",call_missed_outgoing:"e0e4",call_received:"e0b5",call_split:"e0b6",call_to_action:"e06c",camera:"e3af",camera_alt:"e3b0",camera_enhance:"e8fc",camera_front:"e3b1",camera_rear:"e3b2",camera_roll:"e3b3",cancel:"e5c9",card_giftcard:"e8f6",card_membership:"e8f7",card_travel:"e8f8",casino:"eb40",cast:"e307",cast_connected:"e308",center_focus_strong:"e3b4",center_focus_weak:"e3b5",change_history:"e86b",chat:"e0b7",chat_bubble:"e0ca",chat_bubble_outline:"e0cb",check:"e5ca",check_box:"e834",check_box_outline_blank:"e835",check_circle:"e86c",chevron_left:"e5cb",chevron_right:"e5cc",child_care:"eb41",child_friendly:"eb42",chrome_reader_mode:"e86d",class:"e86e",clear:"e14c",clear_all:"e0b8",close:"e5cd",closed_caption:"e01c",cloud:"e2bd",cloud_circle:"e2be",cloud_done:"e2bf",cloud_download:"e2c0",cloud_off:"e2c1",cloud_queue:"e2c2",cloud_upload:"e2c3",code:"e86f",collections:"e3b6",collections_bookmark:"e431",color_lens:"e3b7",colorize:"e3b8",comment:"e0b9",compare:"e3b9",compare_arrows:"e915",computer:"e30a",confirmation_number:"e638",contact_mail:"e0d0",contact_phone:"e0cf",contacts:"e0ba",content_copy:"e14d",content_cut:"e14e",content_paste:"e14f",control_point:"e3ba",control_point_duplicate:"e3bb",copyright:"e90c",create:"e150",create_new_folder:"e2cc",credit_card:"e870",crop:"e3be",crop_16_9:"e3bc",crop_3_2:"e3bd",crop_5_4:"e3bf",crop_7_5:"e3c0",crop_din:"e3c1",crop_free:"e3c2",crop_landscape:"e3c3",crop_original:"e3c4",crop_portrait:"e3c5",crop_rotate:"e437",crop_square:"e3c6",dashboard:"e871",data_usage:"e1af",date_range:"e916",dehaze:"e3c7",delete:"e872",delete_forever:"e92b",delete_sweep:"e16c",description:"e873",desktop_mac:"e30b",desktop_windows:"e30c",details:"e3c8",developer_board:"e30d",developer_mode:"e1b0",device_hub:"e335",devices:"e1b1",devices_other:"e337",dialer_sip:"e0bb",dialpad:"e0bc",directions:"e52e",directions_bike:"e52f",directions_boat:"e532",directions_bus:"e530",directions_car:"e531",directions_railway:"e534",directions_run:"e566",directions_subway:"e533",directions_transit:"e535",directions_walk:"e536",disc_full:"e610",dns:"e875",do_not_disturb:"e612",do_not_disturb_alt:"e611",do_not_disturb_off:"e643",do_not_disturb_on:"e644",dock:"e30e",domain:"e7ee",done:"e876",done_all:"e877",donut_large:"e917",donut_small:"e918",drafts:"e151",drag_handle:"e25d",drive_eta:"e613",dvr:"e1b2",edit:"e3c9",edit_location:"e568",eject:"e8fb",email:"e0be",enhanced_encryption:"e63f",equalizer:"e01d",error:"e000",error_outline:"e001",euro_symbol:"e926",ev_station:"e56d",event:"e878",event_available:"e614",event_busy:"e615",event_note:"e616",event_seat:"e903",exit_to_app:"e879",expand_less:"e5ce",expand_more:"e5cf",explicit:"e01e",explore:"e87a",exposure:"e3ca",exposure_neg_1:"e3cb",exposure_neg_2:"e3cc",exposure_plus_1:"e3cd",exposure_plus_2:"e3ce",exposure_zero:"e3cf",extension:"e87b",face:"e87c",fast_forward:"e01f",fast_rewind:"e020",favorite:"e87d",favorite_border:"e87e",featured_play_list:"e06d",featured_video:"e06e",feedback:"e87f",fiber_dvr:"e05d",fiber_manual_record:"e061",fiber_new:"e05e",fiber_pin:"e06a",fiber_smart_record:"e062",file_download:"e2c4",file_upload:"e2c6",filter:"e3d3",filter_1:"e3d0",filter_2:"e3d1",filter_3:"e3d2",filter_4:"e3d4",filter_5:"e3d5",filter_6:"e3d6",filter_7:"e3d7",filter_8:"e3d8",filter_9:"e3d9",filter_9_plus:"e3da",filter_b_and_w:"e3db",filter_center_focus:"e3dc",filter_drama:"e3dd",filter_frames:"e3de",filter_hdr:"e3df",filter_list:"e152",filter_none:"e3e0",filter_tilt_shift:"e3e2",filter_vintage:"e3e3",find_in_page:"e880",find_replace:"e881",fingerprint:"e90d",first_page:"e5dc",fitness_center:"eb43",flag:"e153",flare:"e3e4",flash_auto:"e3e5",flash_off:"e3e6",flash_on:"e3e7",flight:"e539",flight_land:"e904",flight_takeoff:"e905",flip:"e3e8",flip_to_back:"e882",flip_to_front:"e883",folder:"e2c7",folder_open:"e2c8",folder_shared:"e2c9",folder_special:"e617",font_download:"e167",format_align_center:"e234",format_align_justify:"e235",format_align_left:"e236",format_align_right:"e237",format_bold:"e238",format_clear:"e239",format_color_fill:"e23a",format_color_reset:"e23b",format_color_text:"e23c",format_indent_decrease:"e23d",format_indent_increase:"e23e",format_italic:"e23f",format_line_spacing:"e240",format_list_bulleted:"e241",format_list_numbered:"e242",format_paint:"e243",format_quote:"e244",format_shapes:"e25e",format_size:"e245",format_strikethrough:"e246",format_textdirection_l_to_r:"e247",format_textdirection_r_to_l:"e248",format_underlined:"e249",forum:"e0bf",forward:"e154",forward_10:"e056",forward_30:"e057",forward_5:"e058",free_breakfast:"eb44",fullscreen:"e5d0",fullscreen_exit:"e5d1",functions:"e24a",g_translate:"e927",gamepad:"e30f",games:"e021",gavel:"e90e",gesture:"e155",get_app:"e884",gif:"e908",golf_course:"eb45",gps_fixed:"e1b3",gps_not_fixed:"e1b4",gps_off:"e1b5",grade:"e885",gradient:"e3e9",grain:"e3ea",graphic_eq:"e1b8",grid_off:"e3eb",grid_on:"e3ec",group:"e7ef",group_add:"e7f0",group_work:"e886",hd:"e052",hdr_off:"e3ed",hdr_on:"e3ee",hdr_strong:"e3f1",hdr_weak:"e3f2",headset:"e310",headset_mic:"e311",healing:"e3f3",hearing:"e023",help:"e887",help_outline:"e8fd",high_quality:"e024",highlight:"e25f",highlight_off:"e888",history:"e889",home:"e88a",hot_tub:"eb46",hotel:"e53a",hourglass_empty:"e88b",hourglass_full:"e88c",http:"e902",https:"e88d",image:"e3f4",image_aspect_ratio:"e3f5",import_contacts:"e0e0",import_export:"e0c3",important_devices:"e912",inbox:"e156",indeterminate_check_box:"e909",info:"e88e",info_outline:"e88f",input:"e890",insert_chart:"e24b",insert_comment:"e24c",insert_drive_file:"e24d",insert_emoticon:"e24e",insert_invitation:"e24f",insert_link:"e250",insert_photo:"e251",invert_colors:"e891",invert_colors_off:"e0c4",iso:"e3f6",keyboard:"e312",keyboard_arrow_down:"e313",keyboard_arrow_left:"e314",keyboard_arrow_right:"e315",keyboard_arrow_up:"e316",keyboard_backspace:"e317",keyboard_capslock:"e318",keyboard_hide:"e31a",keyboard_return:"e31b",keyboard_tab:"e31c",keyboard_voice:"e31d",kitchen:"eb47",label:"e892",label_outline:"e893",landscape:"e3f7",language:"e894",laptop:"e31e",laptop_chromebook:"e31f",laptop_mac:"e320",laptop_windows:"e321",last_page:"e5dd",launch:"e895",layers:"e53b",layers_clear:"e53c",leak_add:"e3f8",leak_remove:"e3f9",lens:"e3fa",library_add:"e02e",library_books:"e02f",library_music:"e030",lightbulb_outline:"e90f",line_style:"e919",line_weight:"e91a",linear_scale:"e260",link:"e157",linked_camera:"e438",list:"e896",live_help:"e0c6",live_tv:"e639",local_activity:"e53f",local_airport:"e53d",local_atm:"e53e",local_bar:"e540",local_cafe:"e541",local_car_wash:"e542",local_convenience_store:"e543",local_dining:"e556",local_drink:"e544",local_florist:"e545",local_gas_station:"e546",local_grocery_store:"e547",local_hospital:"e548",local_hotel:"e549",local_laundry_service:"e54a",local_library:"e54b",local_mall:"e54c",local_movies:"e54d",local_offer:"e54e",local_parking:"e54f",local_pharmacy:"e550",local_phone:"e551",local_pizza:"e552",local_play:"e553",local_post_office:"e554",local_printshop:"e555",local_see:"e557",local_shipping:"e558",local_taxi:"e559",location_city:"e7f1",location_disabled:"e1b6",location_off:"e0c7",location_on:"e0c8",location_searching:"e1b7",lock:"e897",lock_open:"e898",lock_outline:"e899",looks:"e3fc",looks_3:"e3fb",looks_4:"e3fd",looks_5:"e3fe",looks_6:"e3ff",looks_one:"e400",looks_two:"e401",loop:"e028",loupe:"e402",low_priority:"e16d",loyalty:"e89a",mail:"e158",mail_outline:"e0e1",map:"e55b",markunread:"e159",markunread_mailbox:"e89b",memory:"e322",menu:"e5d2",merge_type:"e252",message:"e0c9",mic:"e029",mic_none:"e02a",mic_off:"e02b",mms:"e618",mode_comment:"e253",mode_edit:"e254",monetization_on:"e263",money_off:"e25c",monochrome_photos:"e403",mood:"e7f2",mood_bad:"e7f3",more:"e619",more_horiz:"e5d3",more_vert:"e5d4",motorcycle:"e91b",mouse:"e323",move_to_inbox:"e168",movie:"e02c",movie_creation:"e404",movie_filter:"e43a",multiline_chart:"e6df",music_note:"e405",music_video:"e063",my_location:"e55c",nature:"e406",nature_people:"e407",navigate_before:"e408",navigate_next:"e409",navigation:"e55d",near_me:"e569",network_cell:"e1b9",network_check:"e640",network_locked:"e61a",network_wifi:"e1ba",new_releases:"e031",next_week:"e16a",nfc:"e1bb",no_encryption:"e641",no_sim:"e0cc",not_interested:"e033",note:"e06f",note_add:"e89c",notifications:"e7f4",notifications_active:"e7f7",notifications_none:"e7f5",notifications_off:"e7f6",notifications_paused:"e7f8",offline_pin:"e90a",ondemand_video:"e63a",opacity:"e91c",open_in_browser:"e89d",open_in_new:"e89e",open_with:"e89f",pages:"e7f9",pageview:"e8a0",palette:"e40a",pan_tool:"e925",panorama:"e40b",panorama_fish_eye:"e40c",panorama_horizontal:"e40d",panorama_vertical:"e40e",panorama_wide_angle:"e40f",party_mode:"e7fa",pause:"e034",pause_circle_filled:"e035",pause_circle_outline:"e036",payment:"e8a1",people:"e7fb",people_outline:"e7fc",perm_camera_mic:"e8a2",perm_contact_calendar:"e8a3",perm_data_setting:"e8a4",perm_device_information:"e8a5",perm_identity:"e8a6",perm_media:"e8a7",perm_phone_msg:"e8a8",perm_scan_wifi:"e8a9",person:"e7fd",person_add:"e7fe",person_outline:"e7ff",person_pin:"e55a",person_pin_circle:"e56a",personal_video:"e63b",pets:"e91d",phone:"e0cd",phone_android:"e324",phone_bluetooth_speaker:"e61b",phone_forwarded:"e61c",phone_in_talk:"e61d",phone_iphone:"e325",phone_locked:"e61e",phone_missed:"e61f",phone_paused:"e620",phonelink:"e326",phonelink_erase:"e0db",phonelink_lock:"e0dc",phonelink_off:"e327",phonelink_ring:"e0dd",phonelink_setup:"e0de",photo:"e410",photo_album:"e411",photo_camera:"e412",photo_filter:"e43b",photo_library:"e413",photo_size_select_actual:"e432",photo_size_select_large:"e433",photo_size_select_small:"e434",picture_as_pdf:"e415",picture_in_picture:"e8aa",picture_in_picture_alt:"e911",pie_chart:"e6c4",pie_chart_outlined:"e6c5",pin_drop:"e55e",place:"e55f",play_arrow:"e037",play_circle_filled:"e038",play_circle_outline:"e039",play_for_work:"e906",playlist_add:"e03b",playlist_add_check:"e065",playlist_play:"e05f",plus_one:"e800",poll:"e801",polymer:"e8ab",pool:"eb48",portable_wifi_off:"e0ce",portrait:"e416",power:"e63c",power_input:"e336",power_settings_new:"e8ac",pregnant_woman:"e91e",present_to_all:"e0df",print:"e8ad",priority_high:"e645",public:"e80b",publish:"e255",query_builder:"e8ae",question_answer:"e8af",queue:"e03c",queue_music:"e03d",queue_play_next:"e066",radio:"e03e",radio_button_checked:"e837",radio_button_unchecked:"e836",rate_review:"e560",receipt:"e8b0",recent_actors:"e03f",record_voice_over:"e91f",redeem:"e8b1",redo:"e15a",refresh:"e5d5",remove:"e15b",remove_circle:"e15c",remove_circle_outline:"e15d",remove_from_queue:"e067",remove_red_eye:"e417",remove_shopping_cart:"e928",reorder:"e8fe",repeat:"e040",repeat_one:"e041",replay:"e042",replay_10:"e059",replay_30:"e05a",replay_5:"e05b",reply:"e15e",reply_all:"e15f",report:"e160",report_problem:"e8b2",restaurant:"e56c",restaurant_menu:"e561",restore:"e8b3",restore_page:"e929",ring_volume:"e0d1",room:"e8b4",room_service:"eb49",rotate_90_degrees_ccw:"e418",rotate_left:"e419",rotate_right:"e41a",rounded_corner:"e920",router:"e328",rowing:"e921",rss_feed:"e0e5",rv_hookup:"e642",satellite:"e562",save:"e161",scanner:"e329",schedule:"e8b5",school:"e80c",screen_lock_landscape:"e1be",screen_lock_portrait:"e1bf",screen_lock_rotation:"e1c0",screen_rotation:"e1c1",screen_share:"e0e2",sd_card:"e623",sd_storage:"e1c2",search:"e8b6",security:"e32a",select_all:"e162",send:"e163",sentiment_dissatisfied:"e811",sentiment_neutral:"e812",sentiment_satisfied:"e813",sentiment_very_dissatisfied:"e814",sentiment_very_satisfied:"e815",settings:"e8b8",settings_applications:"e8b9",settings_backup_restore:"e8ba",settings_bluetooth:"e8bb",settings_brightness:"e8bd",settings_cell:"e8bc",settings_ethernet:"e8be",settings_input_antenna:"e8bf",settings_input_component:"e8c0",settings_input_composite:"e8c1",settings_input_hdmi:"e8c2",settings_input_svideo:"e8c3",settings_overscan:"e8c4",settings_phone:"e8c5",settings_power:"e8c6",settings_remote:"e8c7",settings_system_daydream:"e1c3",settings_voice:"e8c8",share:"e80d",shop:"e8c9",shop_two:"e8ca",shopping_basket:"e8cb",shopping_cart:"e8cc",short_text:"e261",show_chart:"e6e1",shuffle:"e043",signal_cellular_4_bar:"e1c8",signal_cellular_connected_no_internet_4_bar:"e1cd",signal_cellular_no_sim:"e1ce",signal_cellular_null:"e1cf",signal_cellular_off:"e1d0",signal_wifi_4_bar:"e1d8",signal_wifi_4_bar_lock:"e1d9",signal_wifi_off:"e1da",sim_card:"e32b",sim_card_alert:"e624",skip_next:"e044",skip_previous:"e045",slideshow:"e41b",slow_motion_video:"e068",smartphone:"e32c",smoke_free:"eb4a",smoking_rooms:"eb4b",sms:"e625",sms_failed:"e626",snooze:"e046",sort:"e164",sort_by_alpha:"e053",spa:"eb4c",space_bar:"e256",speaker:"e32d",speaker_group:"e32e",speaker_notes:"e8cd",speaker_notes_off:"e92a",speaker_phone:"e0d2",spellcheck:"e8ce",star:"e838",star_border:"e83a",star_half:"e839",stars:"e8d0",stay_current_landscape:"e0d3",stay_current_portrait:"e0d4",stay_primary_landscape:"e0d5",stay_primary_portrait:"e0d6",stop:"e047",stop_screen_share:"e0e3",storage:"e1db",store:"e8d1",store_mall_directory:"e563",straighten:"e41c",streetview:"e56e",strikethrough_s:"e257",style:"e41d",subdirectory_arrow_left:"e5d9",subdirectory_arrow_right:"e5da",subject:"e8d2",subscriptions:"e064",subtitles:"e048",subway:"e56f",supervisor_account:"e8d3",surround_sound:"e049",swap_calls:"e0d7",swap_horiz:"e8d4",swap_vert:"e8d5",swap_vertical_circle:"e8d6",switch_camera:"e41e",switch_video:"e41f",sync:"e627",sync_disabled:"e628",sync_problem:"e629",system_update:"e62a",system_update_alt:"e8d7",tab:"e8d8",tab_unselected:"e8d9",tablet:"e32f",tablet_android:"e330",tablet_mac:"e331",tag_faces:"e420",tap_and_play:"e62b",terrain:"e564",text_fields:"e262",text_format:"e165",textsms:"e0d8",texture:"e421",theaters:"e8da",thumb_down:"e8db",thumb_up:"e8dc",thumbs_up_down:"e8dd",time_to_leave:"e62c",timelapse:"e422",timeline:"e922",timer:"e425",timer_10:"e423",timer_3:"e424",timer_off:"e426",title:"e264",toc:"e8de",today:"e8df",toll:"e8e0",tonality:"e427",touch_app:"e913",toys:"e332",track_changes:"e8e1",traffic:"e565",train:"e570",tram:"e571",transfer_within_a_station:"e572",transform:"e428",translate:"e8e2",trending_down:"e8e3",trending_flat:"e8e4",trending_up:"e8e5",tune:"e429",turned_in:"e8e6",turned_in_not:"e8e7",tv:"e333",unarchive:"e169",undo:"e166",unfold_less:"e5d6",unfold_more:"e5d7",update:"e923",usb:"e1e0",verified_user:"e8e8",vertical_align_bottom:"e258",vertical_align_center:"e259",vertical_align_top:"e25a",vibration:"e62d",video_call:"e070",video_label:"e071",video_library:"e04a",videocam:"e04b",videocam_off:"e04c",videogame_asset:"e338",view_agenda:"e8e9",view_array:"e8ea",view_carousel:"e8eb",view_column:"e8ec",view_comfy:"e42a",view_compact:"e42b",view_day:"e8ed",view_headline:"e8ee",view_list:"e8ef",view_module:"e8f0",view_quilt:"e8f1",view_stream:"e8f2",view_week:"e8f3",vignette:"e435",visibility:"e8f4",visibility_off:"e8f5",voice_chat:"e62e",voicemail:"e0d9",volume_down:"e04d",volume_mute:"e04e",volume_off:"e04f",volume_up:"e050",vpn_key:"e0da",vpn_lock:"e62f",wallpaper:"e1bc",warning:"e002",watch:"e334",watch_later:"e924",wb_auto:"e42c",wb_cloudy:"e42d",wb_incandescent:"e42e",wb_iridescent:"e436",wb_sunny:"e430",wc:"e63d",web:"e051",web_asset:"e069",weekend:"e16b",whatshot:"e80e",widgets:"e1bd",wifi:"e63e",wifi_lock:"e1e1",wifi_tethering:"e1e2",work:"e8f9",wrap_text:"e25b",youtube_searched_for:"e8fa",zoom_in:"e8ff",zoom_out:"e900",zoom_out_map:"e56b"}},function(e,t,n){e.exports={"trans-color":"loader--trans-color---97r08",component:"loader--component---2grcA",wrap:"loader--wrap---3Fhrc",text:"loader--text---3Yu3g",spinner:"loader--spinner---2q6MO",spin:"loader--spin---K6Loh"}},function(e,t,n){e.exports={addDays:n(20),addHours:n(75),addISOYears:n(76),addMilliseconds:n(21),addMinutes:n(78),addMonths:n(36),addQuarters:n(79),addSeconds:n(80),addWeeks:n(53),addYears:n(81),areRangesOverlapping:n(199),closestIndexTo:n(200),closestTo:n(201),compareAsc:n(23),compareDesc:n(54),differenceInCalendarDays:n(35),differenceInCalendarISOWeeks:n(202),differenceInCalendarISOYears:n(82),differenceInCalendarMonths:n(83),differenceInCalendarQuarters:n(203),differenceInCalendarWeeks:n(204),differenceInCalendarYears:n(85),differenceInDays:n(86),differenceInHours:n(205),differenceInISOYears:n(206),differenceInMilliseconds:n(37),differenceInMinutes:n(207),differenceInMonths:n(55),differenceInQuarters:n(208),differenceInSeconds:n(56),differenceInWeeks:n(209),differenceInYears:n(210),distanceInWords:n(88),distanceInWordsStrict:n(214),distanceInWordsToNow:n(215),eachDay:n(216),endOfDay:n(58),endOfHour:n(217),endOfISOWeek:n(218),endOfISOYear:n(219),endOfMinute:n(220),endOfMonth:n(90),endOfQuarter:n(221),endOfSecond:n(222),endOfToday:n(223),endOfTomorrow:n(224),endOfWeek:n(89),endOfYear:n(225),endOfYesterday:n(226),format:n(227),getDate:n(228),getDay:n(229),getDayOfYear:n(91),getDaysInMonth:n(52),getDaysInYear:n(230),getHours:n(231),getISODay:n(95),getISOWeek:n(59),getISOWeeksInYear:n(232),getISOYear:n(10),getMilliseconds:n(233),getMinutes:n(234),getMonth:n(235),getOverlappingDaysInRanges:n(236),getQuarter:n(84),getSeconds:n(237),getTime:n(238),getYear:n(239),isAfter:n(240),isBefore:n(241),isDate:n(51),isEqual:n(242),isFirstDayOfMonth:n(243),isFriday:n(244),isFuture:n(245),isLastDayOfMonth:n(246),isLeapYear:n(94),isMonday:n(247),isPast:n(248),isSameDay:n(249),isSameHour:n(96),isSameISOWeek:n(98),isSameISOYear:n(99),isSameMinute:n(100),isSameMonth:n(102),isSameQuarter:n(103),isSameSecond:n(105),isSameWeek:n(60),isSameYear:n(107),isSaturday:n(250),isSunday:n(251),isThisHour:n(252),isThisISOWeek:n(253),isThisISOYear:n(254),isThisMinute:n(255),isThisMonth:n(256),isThisQuarter:n(257),isThisSecond:n(258),isThisWeek:n(259),isThisYear:n(260),isThursday:n(261),isToday:n(262),isTomorrow:n(263),isTuesday:n(264),isValid:n(93),isWednesday:n(265),isWeekend:n(266),isWithinRange:n(267),isYesterday:n(268),lastDayOfISOWeek:n(269),lastDayOfISOYear:n(270),lastDayOfMonth:n(271),lastDayOfQuarter:n(272),lastDayOfWeek:n(108),lastDayOfYear:n(273),max:n(274),min:n(275),parse:n(2),setDate:n(276),setDay:n(277),setDayOfYear:n(278),setHours:n(279),setISODay:n(280),setISOWeek:n(281),setISOYear:n(77),setMilliseconds:n(282),setMinutes:n(283),setMonth:n(109),setQuarter:n(284),setSeconds:n(285),setYear:n(286),startOfDay:n(12),startOfHour:n(97),startOfISOWeek:n(11),startOfISOYear:n(22),startOfMinute:n(101),startOfMonth:n(287),startOfQuarter:n(104),startOfSecond:n(106),startOfToday:n(288),startOfTomorrow:n(289),startOfWeek:n(34),startOfYear:n(92),startOfYesterday:n(290),subDays:n(291),subHours:n(292),subISOYears:n(87),subMilliseconds:n(293),subMinutes:n(294),subMonths:n(295),subQuarters:n(296),subSeconds:n(297),subWeeks:n(298),subYears:n(299)}},function(e,t,n){var r=n(300)(n(312));e.exports=r},function(e,t,n){e.exports={"trans-color":"navbar--trans-color---1tk7E",component:"navbar--component---2UCEi","report-info-cnt":"navbar--report-info-cnt---8y9Bb","menu-button":"navbar--menu-button---1ZRpz","report-title":"navbar--report-title---3bXCv","pct-bar":"navbar--pct-bar---3EwW-",pass:"navbar--pass---2oR-w",fail:"navbar--fail---3mN80",pend:"navbar--pend---2iqjh","pct-bar-segment":"navbar--pct-bar-segment---3T0_o"}},function(e,t,n){e.exports={"trans-color":"quick-summary--trans-color---HUJqE",cnt:"quick-summary--cnt---3s38x",list:"quick-summary--list---2_80W",item:"quick-summary--item---bfSQ0",icon:"quick-summary--icon---TW1oG",tests:"quick-summary--tests---2nNut",passes:"quick-summary--passes---3IjYH","single-filter":"quick-summary--single-filter---31Thy","single-filter--passed":"quick-summary--single-filter--passed---3QnUL",failures:"quick-summary--failures---14s29","single-filter--failed":"quick-summary--single-filter--failed---3_tAw",pending:"quick-summary--pending---261aV","single-filter--pending":"quick-summary--single-filter--pending---21lZM",skipped:"quick-summary--skipped---tyOc4","single-filter--skipped":"quick-summary--single-filter--skipped---1AdZA","circle-icon":"quick-summary--circle-icon---1HDS7"}},function(e,t,n){e.exports={"trans-color":"radio-button--trans-color---egsik",component:"radio-button--component---1ix3c",outer:"radio-button--outer---a_NqL",off:"radio-button--off---dBAOK",inner:"radio-button--inner---3bo9Q"}},function(e,t,n){var r,o;o=this,void 0===(r=function(){return o.Chartist=(e={version:"0.11.0"},function(e,t,n){"use strict";n.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},n.noop=function(e){return e},n.alphaNumerate=function(e){return String.fromCharCode(97+e%26)},n.extend=function(e){var t,r,o;for(e=e||{},t=1;t":">",'"':""","'":"'"},n.serialize=function(e){return null==e?e:("number"==typeof e?e=""+e:"object"==typeof e&&(e=JSON.stringify({data:e})),Object.keys(n.escapingMap).reduce((function(e,t){return n.replaceAll(e,t,n.escapingMap[t])}),e))},n.deserialize=function(e){if("string"!=typeof e)return e;e=Object.keys(n.escapingMap).reduce((function(e,t){return n.replaceAll(e,n.escapingMap[t],t)}),e);try{e=void 0!==(e=JSON.parse(e)).data?e.data:e}catch(e){}return e},n.createSvg=function(e,t,r,o){var i;return t=t||"100%",r=r||"100%",Array.prototype.slice.call(e.querySelectorAll("svg")).filter((function(e){return e.getAttributeNS(n.namespaces.xmlns,"ct")})).forEach((function(t){e.removeChild(t)})),(i=new n.Svg("svg").attr({width:t,height:r}).addClass(o))._node.style.width=t,i._node.style.height=r,e.appendChild(i._node),i},n.normalizeData=function(e,t,r){var o,i={raw:e,normalized:{}};return i.normalized.series=n.getDataArray({series:e.series||[]},t,r),o=i.normalized.series.every((function(e){return e instanceof Array}))?Math.max.apply(null,i.normalized.series.map((function(e){return e.length}))):i.normalized.series.length,i.normalized.labels=(e.labels||[]).slice(),Array.prototype.push.apply(i.normalized.labels,n.times(Math.max(0,o-i.normalized.labels.length)).map((function(){return""}))),t&&n.reverseData(i.normalized),i},n.safeHasProperty=function(e,t){return null!==e&&"object"==typeof e&&e.hasOwnProperty(t)},n.isDataHoleValue=function(e){return null==e||"number"==typeof e&&isNaN(e)},n.reverseData=function(e){e.labels.reverse(),e.series.reverse();for(var t=0;to.high&&(o.high=n),a&&n0||(o.high=1),o.low=0)),o},n.isNumeric=function(e){return null!==e&&isFinite(e)},n.isFalseyButZero=function(e){return!e&&0!==e},n.getNumberOrUndefined=function(e){return n.isNumeric(e)?+e:void 0},n.isMultiValue=function(e){return"object"==typeof e&&("x"in e||"y"in e)},n.getMultiValue=function(e,t){return n.isMultiValue(e)?n.getNumberOrUndefined(e[t||"y"]):n.getNumberOrUndefined(e)},n.rho=function(e){if(1===e)return e;function t(e,n){return e%n==0?n:t(n,e%n)}function n(e){return e*e+1}var r,o=2,i=2;if(e%2==0)return 2;do{o=n(o)%e,i=n(n(i))%e,r=t(Math.abs(o-i),e)}while(1===r);return r},n.getBounds=function(e,t,r,o){var i,a,s,l=0,u={high:t.high,low:t.low};u.valueRange=u.high-u.low,u.oom=n.orderOfMagnitude(u.valueRange),u.step=Math.pow(10,u.oom),u.min=Math.floor(u.low/u.step)*u.step,u.max=Math.ceil(u.high/u.step)*u.step,u.range=u.max-u.min,u.numberOfSteps=Math.round(u.range/u.step);var c=n.projectLength(e,u.step,u)=r)u.step=1;else if(o&&f=r)u.step=f;else for(;;){if(c&&n.projectLength(e,u.step,u)<=r)u.step*=2;else{if(c||!(n.projectLength(e,u.step/2,u)>=r))break;if(u.step/=2,o&&u.step%1!=0){u.step*=2;break}}if(l++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var d=2221e-19;function p(e,t){return e===(e+=t)&&(e*=1+(t>0?d:-d)),e}for(u.step=Math.max(u.step,d),a=u.min,s=u.max;a+u.step<=u.low;)a=p(a,u.step);for(;s-u.step>=u.high;)s=p(s,-u.step);u.min=a,u.max=s,u.range=u.max-u.min;var h=[];for(i=u.min;i<=u.max;i=p(i,u.step)){var m=n.roundWithPrecision(i);m!==h[h.length-1]&&h.push(m)}return u.values=h,u},n.polarToCartesian=function(e,t,n,r){var o=(r-90)*Math.PI/180;return{x:e+n*Math.cos(o),y:t+n*Math.sin(o)}},n.createChartRect=function(e,t,r){var o=!(!t.axisX&&!t.axisY),i=o?t.axisY.offset:0,a=o?t.axisX.offset:0,s=e.width()||n.quantity(t.width).value||0,l=e.height()||n.quantity(t.height).value||0,u=n.normalizePadding(t.chartPadding,r);s=Math.max(s,i+u.left+u.right),l=Math.max(l,a+u.top+u.bottom);var c={padding:u,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return o?("start"===t.axisX.position?(c.y2=u.top+a,c.y1=Math.max(l-u.bottom,c.y2+1)):(c.y2=u.top,c.y1=Math.max(l-u.bottom-a,c.y2+1)),"start"===t.axisY.position?(c.x1=u.left+i,c.x2=Math.max(s-u.right,c.x1+1)):(c.x1=u.left,c.x2=Math.max(s-u.right-i,c.x1+1))):(c.x1=u.left,c.x2=Math.max(s-u.right,c.x1+1),c.y2=u.top,c.y1=Math.max(l-u.bottom,c.y2+1)),c},n.createGrid=function(e,t,r,o,i,a,s,l){var u={};u[r.units.pos+"1"]=e,u[r.units.pos+"2"]=e,u[r.counterUnits.pos+"1"]=o,u[r.counterUnits.pos+"2"]=o+i;var c=a.elem("line",u,s.join(" "));l.emit("draw",n.extend({type:"grid",axis:r,index:t,group:a,element:c},u))},n.createGridBackground=function(e,t,n,r){var o=e.elem("rect",{x:t.x1,y:t.y2,width:t.width(),height:t.height()},n,!0);r.emit("draw",{type:"gridBackground",group:e,element:o})},n.createLabel=function(e,r,o,i,a,s,l,u,c,f,d){var p,h={};if(h[a.units.pos]=e+l[a.units.pos],h[a.counterUnits.pos]=l[a.counterUnits.pos],h[a.units.len]=r,h[a.counterUnits.len]=Math.max(0,s-10),f){var m=t.createElement("span");m.className=c.join(" "),m.setAttribute("xmlns",n.namespaces.xhtml),m.innerText=i[o],m.style[a.units.len]=Math.round(h[a.units.len])+"px",m.style[a.counterUnits.len]=Math.round(h[a.counterUnits.len])+"px",p=u.foreignObject(m,n.extend({style:"overflow: visible;"},h))}else p=u.elem("text",h,c.join(" ")).text(i[o]);d.emit("draw",n.extend({type:"label",axis:a,index:o,group:u,element:p,text:i[o]},h))},n.getSeriesOption=function(e,t,n){if(e.name&&t.series&&t.series[e.name]){var r=t.series[e.name];return r.hasOwnProperty(n)?r[n]:t[n]}return t[n]},n.optionsProvider=function(t,r,o){var i,a,s=n.extend({},t),l=[];function u(t){var l=i;if(i=n.extend({},s),r)for(a=0;a=2&&e[s]<=e[s-2]&&(a=!0),a&&(i.push({pathCoordinates:[],valueData:[]}),a=!1),i[i.length-1].pathCoordinates.push(e[s],e[s+1]),i[i.length-1].valueData.push(t[s/2]));return i}}(window,document,e),function(e,t,n){"use strict";n.Interpolation={},n.Interpolation.none=function(e){var t={fillHoles:!1};return e=n.extend({},t,e),function(t,r){for(var o=new n.Svg.Path,i=!0,a=0;a1){var l=[];return s.forEach((function(e){l.push(t(e.pathCoordinates,e.valueData))})),n.Svg.Path.join(l)}if(i=s[0].pathCoordinates,a=s[0].valueData,i.length<=4)return n.Interpolation.none()(i,a);for(var u,c=(new n.Svg.Path).move(i[0],i[1],!1,a[0]),f=0,d=i.length;d-2*!u>f;f+=2){var p=[{x:+i[f-2],y:+i[f-1]},{x:+i[f],y:+i[f+1]},{x:+i[f+2],y:+i[f+3]},{x:+i[f+4],y:+i[f+5]}];u?f?d-4===f?p[3]={x:+i[0],y:+i[1]}:d-2===f&&(p[2]={x:+i[0],y:+i[1]},p[3]={x:+i[2],y:+i[3]}):p[0]={x:+i[d-2],y:+i[d-1]}:d-4===f?p[3]=p[2]:f||(p[0]={x:+i[f],y:+i[f+1]}),c.curve(r*(-p[0].x+6*p[1].x+p[2].x)/6+o*p[2].x,r*(-p[0].y+6*p[1].y+p[2].y)/6+o*p[2].y,r*(p[1].x+6*p[2].x-p[3].x)/6+o*p[2].x,r*(p[1].y+6*p[2].y-p[3].y)/6+o*p[2].y,p[2].x,p[2].y,!1,a[(f+2)/2])}return c}return n.Interpolation.none()([])}},n.Interpolation.monotoneCubic=function(e){var t={fillHoles:!1};return e=n.extend({},t,e),function t(r,o){var i=n.splitIntoSegments(r,o,{fillHoles:e.fillHoles,increasingX:!0});if(i.length){if(i.length>1){var a=[];return i.forEach((function(e){a.push(t(e.pathCoordinates,e.valueData))})),n.Svg.Path.join(a)}if(r=i[0].pathCoordinates,o=i[0].valueData,r.length<=4)return n.Interpolation.none()(r,o);var s,l,u=[],c=[],f=r.length/2,d=[],p=[],h=[],m=[];for(s=0;s0!=p[s]>0?d[s]=0:(d[s]=3*(m[s-1]+m[s])/((2*m[s]+m[s-1])/p[s-1]+(m[s]+2*m[s-1])/p[s]),isFinite(d[s])||(d[s]=0));for(l=(new n.Svg.Path).move(u[0],c[0],!1,o[0]),s=0;s1})).map((function(e){var t=e.pathElements[0],n=e.pathElements[e.pathElements.length-1];return e.clone(!0).position(0).remove(1).move(t.x,v).line(t.x,t.y).position(e.pathElements.length+1).line(n.x,v)})).forEach(function(n){var s=l.elem("path",{d:n.stringify()},e.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:t.normalized.series[a],path:n.clone(),series:r,seriesIndex:a,axisX:o,axisY:i,chartRect:u,index:a,group:l,element:s})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:i.bounds,chartRect:u,axisX:o,axisY:i,svg:this.svg,options:e})}function i(e,t,o,i){n.Line.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Line=n.Base.extend({constructor:i,createChart:o})}(window,document,e),function(e,t,n){"use strict";var r={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:n.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,referenceValue:0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,showGridBackground:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",gridBackground:"ct-grid-background",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};function o(e){var t,o;e.distributeSeries?(t=n.normalizeData(this.data,e.reverseData,e.horizontalBars?"x":"y")).normalized.series=t.normalized.series.map((function(e){return[e]})):t=n.normalizeData(this.data,e.reverseData,e.horizontalBars?"x":"y"),this.svg=n.createSvg(this.container,e.width,e.height,e.classNames.chart+(e.horizontalBars?" "+e.classNames.horizontalBars:""));var i=this.svg.elem("g").addClass(e.classNames.gridGroup),a=this.svg.elem("g"),s=this.svg.elem("g").addClass(e.classNames.labelGroup);if(e.stackBars&&0!==t.normalized.series.length){var l=n.serialMap(t.normalized.series,(function(){return Array.prototype.slice.call(arguments).map((function(e){return e})).reduce((function(e,t){return{x:e.x+(t&&t.x)||0,y:e.y+(t&&t.y)||0}}),{x:0,y:0})}));o=n.getHighLow([l],e,e.horizontalBars?"x":"y")}else o=n.getHighLow(t.normalized.series,e,e.horizontalBars?"x":"y");o.high=+e.high||(0===e.high?0:o.high),o.low=+e.low||(0===e.low?0:o.low);var u,c,f,d,p,h=n.createChartRect(this.svg,e,r.padding);c=e.distributeSeries&&e.stackBars?t.normalized.labels.slice(0,1):t.normalized.labels,e.horizontalBars?(u=d=void 0===e.axisX.type?new n.AutoScaleAxis(n.Axis.units.x,t.normalized.series,h,n.extend({},e.axisX,{highLow:o,referenceValue:0})):e.axisX.type.call(n,n.Axis.units.x,t.normalized.series,h,n.extend({},e.axisX,{highLow:o,referenceValue:0})),f=p=void 0===e.axisY.type?new n.StepAxis(n.Axis.units.y,t.normalized.series,h,{ticks:c}):e.axisY.type.call(n,n.Axis.units.y,t.normalized.series,h,e.axisY)):(f=d=void 0===e.axisX.type?new n.StepAxis(n.Axis.units.x,t.normalized.series,h,{ticks:c}):e.axisX.type.call(n,n.Axis.units.x,t.normalized.series,h,e.axisX),u=p=void 0===e.axisY.type?new n.AutoScaleAxis(n.Axis.units.y,t.normalized.series,h,n.extend({},e.axisY,{highLow:o,referenceValue:0})):e.axisY.type.call(n,n.Axis.units.y,t.normalized.series,h,n.extend({},e.axisY,{highLow:o,referenceValue:0})));var m=e.horizontalBars?h.x1+u.projectValue(0):h.y1-u.projectValue(0),v=[];f.createGridAndLabels(i,s,this.supportsForeignObject,e,this.eventEmitter),u.createGridAndLabels(i,s,this.supportsForeignObject,e,this.eventEmitter),e.showGridBackground&&n.createGridBackground(i,h,e.classNames.gridBackground,this.eventEmitter),t.raw.series.forEach(function(r,o){var i,s,l=o-(t.raw.series.length-1)/2;i=e.distributeSeries&&!e.stackBars?f.axisLength/t.normalized.series.length/2:e.distributeSeries&&e.stackBars?f.axisLength/2:f.axisLength/t.normalized.series[o].length/2,(s=a.elem("g")).attr({"ct:series-name":r.name,"ct:meta":n.serialize(r.meta)}),s.addClass([e.classNames.series,r.className||e.classNames.series+"-"+n.alphaNumerate(o)].join(" ")),t.normalized.series[o].forEach(function(a,c){var g,y,b,_;if(_=e.distributeSeries&&!e.stackBars?o:e.distributeSeries&&e.stackBars?0:c,g=e.horizontalBars?{x:h.x1+u.projectValue(a&&a.x?a.x:0,c,t.normalized.series[o]),y:h.y1-f.projectValue(a&&a.y?a.y:0,_,t.normalized.series[o])}:{x:h.x1+f.projectValue(a&&a.x?a.x:0,_,t.normalized.series[o]),y:h.y1-u.projectValue(a&&a.y?a.y:0,c,t.normalized.series[o])},f instanceof n.StepAxis&&(f.options.stretch||(g[f.units.pos]+=i*(e.horizontalBars?-1:1)),g[f.units.pos]+=e.stackBars||e.distributeSeries?0:l*e.seriesBarDistance*(e.horizontalBars?-1:1)),b=v[c]||m,v[c]=b-(m-g[f.counterUnits.pos]),void 0!==a){var w={};w[f.units.pos+"1"]=g[f.units.pos],w[f.units.pos+"2"]=g[f.units.pos],!e.stackBars||"accumulate"!==e.stackMode&&e.stackMode?(w[f.counterUnits.pos+"1"]=m,w[f.counterUnits.pos+"2"]=g[f.counterUnits.pos]):(w[f.counterUnits.pos+"1"]=b,w[f.counterUnits.pos+"2"]=v[c]),w.x1=Math.min(Math.max(w.x1,h.x1),h.x2),w.x2=Math.min(Math.max(w.x2,h.x1),h.x2),w.y1=Math.min(Math.max(w.y1,h.y2),h.y1),w.y2=Math.min(Math.max(w.y2,h.y2),h.y1);var x=n.getMetaData(r,c);y=s.elem("line",w,e.classNames.bar).attr({"ct:value":[a.x,a.y].filter(n.isNumeric).join(","),"ct:meta":n.serialize(x)}),this.eventEmitter.emit("draw",n.extend({type:"bar",value:a,index:c,meta:x,series:r,seriesIndex:o,axisX:d,axisY:p,chartRect:h,group:s,element:y},w))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:u.bounds,chartRect:h,axisX:d,axisY:p,svg:this.svg,options:e})}function i(e,t,o,i){n.Bar.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Bar=n.Base.extend({constructor:i,createChart:o})}(window,document,e),function(e,t,n){"use strict";var r={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",sliceDonutSolid:"ct-slice-donut-solid",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutSolid:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:n.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};function o(e,t,n){var r=t.x>e.x;return r&&"explode"===n||!r&&"implode"===n?"start":r&&"implode"===n||!r&&"explode"===n?"end":"middle"}function i(e){var t,i,a,s,l,u=n.normalizeData(this.data),c=[],f=e.startAngle;this.svg=n.createSvg(this.container,e.width,e.height,e.donut?e.classNames.chartDonut:e.classNames.chartPie),i=n.createChartRect(this.svg,e,r.padding),a=Math.min(i.width()/2,i.height()/2),l=e.total||u.normalized.series.reduce((function(e,t){return e+t}),0);var d=n.quantity(e.donutWidth);"%"===d.unit&&(d.value*=a/100),a-=e.donut&&!e.donutSolid?d.value/2:0,s="outside"===e.labelPosition||e.donut&&!e.donutSolid?a:"center"===e.labelPosition?0:e.donutSolid?a-d.value/2:a/2,s+=e.labelOffset;var p={x:i.x1+i.width()/2,y:i.y2+i.height()/2},h=1===u.raw.series.filter((function(e){return e.hasOwnProperty("value")?0!==e.value:0!==e})).length;u.raw.series.forEach(function(e,t){c[t]=this.svg.elem("g",null,null)}.bind(this)),e.showLabel&&(t=this.svg.elem("g",null,null)),u.raw.series.forEach(function(r,i){if(0!==u.normalized.series[i]||!e.ignoreEmptyValues){c[i].attr({"ct:series-name":r.name}),c[i].addClass([e.classNames.series,r.className||e.classNames.series+"-"+n.alphaNumerate(i)].join(" "));var m=l>0?f+u.normalized.series[i]/l*360:0,v=Math.max(0,f-(0===i||h?0:.2));m-v>=359.99&&(m=v+359.99);var g,y,b,_=n.polarToCartesian(p.x,p.y,a,v),w=n.polarToCartesian(p.x,p.y,a,m),x=new n.Svg.Path(!e.donut||e.donutSolid).move(w.x,w.y).arc(a,a,0,m-f>180,0,_.x,_.y);e.donut?e.donutSolid&&(b=a-d.value,g=n.polarToCartesian(p.x,p.y,b,f-(0===i||h?0:.2)),y=n.polarToCartesian(p.x,p.y,b,m),x.line(g.x,g.y),x.arc(b,b,0,m-f>180,1,y.x,y.y)):x.line(p.x,p.y);var E=e.classNames.slicePie;e.donut&&(E=e.classNames.sliceDonut,e.donutSolid&&(E=e.classNames.sliceDonutSolid));var k=c[i].elem("path",{d:x.stringify()},E);if(k.attr({"ct:value":u.normalized.series[i],"ct:meta":n.serialize(r.meta)}),e.donut&&!e.donutSolid&&(k._node.style.strokeWidth=d.value+"px"),this.eventEmitter.emit("draw",{type:"slice",value:u.normalized.series[i],totalDataSum:l,index:i,meta:r.meta,series:r,group:c[i],element:k,path:x.clone(),center:p,radius:a,startAngle:f,endAngle:m}),e.showLabel){var S,O;S=1===u.raw.series.length?{x:p.x,y:p.y}:n.polarToCartesian(p.x,p.y,s,f+(m-f)/2),O=u.normalized.labels&&!n.isFalseyButZero(u.normalized.labels[i])?u.normalized.labels[i]:u.normalized.series[i];var T=e.labelInterpolationFnc(O,i);if(T||0===T){var N=t.elem("text",{dx:S.x,dy:S.y,"text-anchor":o(p,S,e.labelDirection)},e.classNames.label).text(""+T);this.eventEmitter.emit("draw",{type:"label",index:i,group:t,element:N,text:""+T,x:S.x,y:S.y})}}f=m}}.bind(this)),this.eventEmitter.emit("created",{chartRect:i,svg:this.svg,options:e})}function a(e,t,o,i){n.Pie.super.constructor.call(this,e,t,r,n.extend({},r,o),i)}n.Pie=n.Base.extend({constructor:a,createChart:i,determineAnchorPosition:o})}(window,document,e),e);var e}.apply(t,[]))||(e.exports=r)},function(e,t,n){e.exports={"trans-color":"suite-summary--trans-color---14JXk",component:"suite-summary--component---cFAkx","no-margin":"suite-summary--no-margin---3WX9n","summary-item":"suite-summary--summary-item---JHYFN",duration:"suite-summary--duration---AzGUQ",tests:"suite-summary--tests---3Zhct",passed:"suite-summary--passed---24BnC",failed:"suite-summary--failed---205C4",pending:"suite-summary--pending---3_Nkj",skipped:"suite-summary--skipped---TovqF",icon:"suite-summary--icon---3rZ6G"}},function(e,t,n){e.exports={"trans-color":"toggle-switch--trans-color---16in9",component:"toggle-switch--component---3vjvh",label:"toggle-switch--label---1Lu8U","toggle-input":"toggle-switch--toggle-input---3BB7e",toggle:"toggle-switch--toggle---2kPqc",disabled:"toggle-switch--disabled---1qDLf",icon:"toggle-switch--icon---348nT"}},function(e,t,n){"use strict";var r=n(61),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,u=o?Symbol.for("react.profiler"):60114,c=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.memo"):60115,m=o?Symbol.for("react.lazy"):60116,v="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nP.length&&P.push(e)}function D(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s=!1;if(null===e)s=!0;else switch(o){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case i:case a:s=!0}}if(s)return n(r,e,""===t?"."+I(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;lt}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!V.call(Y,e)||!V.call(W,e)&&(H.test(e)?Y[e]=!0:(W[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}X.hasOwnProperty("ReactCurrentDispatcher")||(X.ReactCurrentDispatcher={current:null}),X.hasOwnProperty("ReactCurrentBatchConfig")||(X.ReactCurrentBatchConfig={suspense:null});var J=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,oe=Z?Symbol.for("react.profiler"):60114,ie=Z?Symbol.for("react.provider"):60109,ae=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ue=Z?Symbol.for("react.suspense"):60113,ce=Z?Symbol.for("react.suspense_list"):60120,fe=Z?Symbol.for("react.memo"):60115,de=Z?Symbol.for("react.lazy"):60116,pe=Z?Symbol.for("react.block"):60121,he="function"==typeof Symbol&&Symbol.iterator;function me(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=he&&e[he]||e["@@iterator"])?e:null}function ve(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case oe:return"Profiler";case re:return"StrictMode";case ue:return"Suspense";case ce:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ae:return"Context.Consumer";case ie:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case fe:return ve(e.type);case pe:return ve(e.render);case de:if(e=1===e._status?e._result:null)return ve(e)}return null}function ge(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,i=ve(e.type);n=null,r&&(n=ve(r.type)),r=i,i="",o?i=" (at "+o.fileName.replace(J,"")+":"+o.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}function ye(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function be(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function _e(e){e._valueTracker||(e._valueTracker=function(e){var t=be(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function we(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=be(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function xe(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ye(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function ke(e,t){null!=(t=t.checked)&&K(e,"checked",t,!1)}function Se(e,t){ke(e,t);var n=ye(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Te(e,t.type,n):t.hasOwnProperty("defaultValue")&&Te(e,t.type,ye(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Oe(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Te(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Ne(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ye(n)}}function je(e,t){var n=ye(t.value),r=ye(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function De(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Ae="http://www.w3.org/1999/xhtml",Ie="http://www.w3.org/2000/svg";function Re(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function ze(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Re(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Fe,Le,Ue=(Le=function(e,t){if(e.namespaceURI!==Ie||"innerHTML"in e)e.innerHTML=t;else{for((Fe=Fe||document.createElement("div")).innerHTML="",t=Fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return Le(e,t)}))}:Le);function Be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function He(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Ve={animationend:He("Animation","AnimationEnd"),animationiteration:He("Animation","AnimationIteration"),animationstart:He("Animation","AnimationStart"),transitionend:He("Transition","TransitionEnd")},We={},Ye={};function $e(e){if(We[e])return We[e];if(!Ve[e])return e;var t,n=Ve[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ye)return We[e]=n[t];return e}T&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete Ve.animationend.animation,delete Ve.animationiteration.animation,delete Ve.animationstart.animation),"TransitionEvent"in window||delete Ve.transitionend.transition);var qe=$e("animationend"),Qe=$e("animationiteration"),Ge=$e("animationstart"),Xe=$e("transitionend"),Ke="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Je=new("function"==typeof WeakMap?WeakMap:Map);function Ze(e){var t=Je.get(e);return void 0===t&&(t=new Map,Je.set(e,t)),t}function et(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function tt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function nt(e){if(et(e)!==e)throw Error(a(188))}function rt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=et(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return nt(o),e;if(i===r)return nt(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function ot(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function it(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var at=null;function st(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;rft.length&&ft.push(e)}function pt(e,t,n,r){if(ft.length){var o=ft.pop();return o.topLevelType=e,o.eventSystemFlags=r,o.nativeEvent=t,o.targetInst=n,o}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function ht(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=Mn(r)}while(n);for(n=0;n=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=dn(r)}}function hn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mn(){for(var e=window,t=fn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=fn((e=t.contentWindow).document)}return t}function vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var gn="$?",yn="$!",bn=null,_n=null;function wn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var En="function"==typeof setTimeout?setTimeout:void 0,kn="function"==typeof clearTimeout?clearTimeout:void 0;function Sn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function On(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||n===yn||n===gn){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Tn=Math.random().toString(36).slice(2),Nn="__reactInternalInstance$"+Tn,Cn="__reactEventHandlers$"+Tn,Pn="__reactContainere$"+Tn;function Mn(e){var t=e[Nn];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Pn]||n[Nn]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=On(e);null!==e;){if(n=e[Nn])return n;e=On(e)}return t}n=(e=n).parentNode}return null}function jn(e){return!(e=e[Nn]||e[Pn])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Dn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function An(e){return e[Cn]||null}function In(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function Rn(e,t){var n=e.stateNode;if(!n)return null;var r=h(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}function zn(e,t,n){(t=Rn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Fn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=In(t);for(t=n.length;0this.eventPool.length&&this.eventPool.push(e)}function Kn(e){e.eventPool=[],e.getPooled=Gn,e.release=Xn}o(Qn.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=$n)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=$n)},persist:function(){this.isPersistent=$n},isPersistent:qn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=qn,this._dispatchInstances=this._dispatchListeners=null}}),Qn.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Qn.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,Kn(n),n},Kn(Qn);var Jn=Qn.extend({data:null}),Zn=Qn.extend({data:null}),er=[9,13,27,32],tr=T&&"CompositionEvent"in window,nr=null;T&&"documentMode"in document&&(nr=document.documentMode);var rr=T&&"TextEvent"in window&&!nr,or=T&&(!tr||nr&&8=nr),ir=String.fromCharCode(32),ar={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},sr=!1;function lr(e,t){switch(e){case"keyup":return-1!==er.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function ur(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var cr=!1;var fr={eventTypes:ar,extractEvents:function(e,t,n,r){var o;if(tr)e:{switch(e){case"compositionstart":var i=ar.compositionStart;break e;case"compositionend":i=ar.compositionEnd;break e;case"compositionupdate":i=ar.compositionUpdate;break e}i=void 0}else cr?lr(e,n)&&(i=ar.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=ar.compositionStart);return i?(or&&"ko"!==n.locale&&(cr||i!==ar.compositionStart?i===ar.compositionEnd&&cr&&(o=Yn()):(Vn="value"in(Hn=r)?Hn.value:Hn.textContent,cr=!0)),i=Jn.getPooled(i,t,n,r),o?i.data=o:null!==(o=ur(n))&&(i.data=o),Bn(i),o=i):o=null,(e=rr?function(e,t){switch(e){case"compositionend":return ur(t);case"keypress":return 32!==t.which?null:(sr=!0,ir);case"textInput":return(e=t.data)===ir&&sr?null:e;default:return null}}(e,n):function(e,t){if(cr)return"compositionend"===e||!tr&&lr(e,t)?(e=Yn(),Wn=Vn=Hn=null,cr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=document.documentMode,Yr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},$r=null,qr=null,Qr=null,Gr=!1;function Xr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Gr||null==$r||$r!==fn(n)?null:("selectionStart"in(n=$r)&&vn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Qr&&Vr(Qr,n)?null:(Qr=n,(e=Qn.getPooled(Yr.select,qr,e,t)).type="select",e.target=$r,Bn(e),e))}var Kr={eventTypes:Yr,extractEvents:function(e,t,n,r,o,i){if(!(i=!(o=i||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{o=Ze(o),i=S.onSelect;for(var a=0;afo||(e.current=co[fo],co[fo]=null,fo--)}function ho(e,t){fo++,co[fo]=e.current,e.current=t}var mo={},vo={current:mo},go={current:!1},yo=mo;function bo(e,t){var n=e.type.contextTypes;if(!n)return mo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function _o(e){return null!=(e=e.childContextTypes)}function wo(){po(go),po(vo)}function xo(e,t,n){if(vo.current!==mo)throw Error(a(168));ho(vo,t),ho(go,n)}function Eo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(a(108,ve(t)||"Unknown",i));return o({},n,{},r)}function ko(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||mo,yo=vo.current,ho(vo,e),ho(go,go.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Eo(e,t,yo),r.__reactInternalMemoizedMergedChildContext=e,po(go),po(vo),ho(vo,e)):po(go),ho(go,n)}var Oo=i.unstable_runWithPriority,To=i.unstable_scheduleCallback,No=i.unstable_cancelCallback,Co=i.unstable_requestPaint,Po=i.unstable_now,Mo=i.unstable_getCurrentPriorityLevel,jo=i.unstable_ImmediatePriority,Do=i.unstable_UserBlockingPriority,Ao=i.unstable_NormalPriority,Io=i.unstable_LowPriority,Ro=i.unstable_IdlePriority,zo={},Fo=i.unstable_shouldYield,Lo=void 0!==Co?Co:function(){},Uo=null,Bo=null,Ho=!1,Vo=Po(),Wo=1e4>Vo?Po:function(){return Po()-Vo};function Yo(){switch(Mo()){case jo:return 99;case Do:return 98;case Ao:return 97;case Io:return 96;case Ro:return 95;default:throw Error(a(332))}}function $o(e){switch(e){case 99:return jo;case 98:return Do;case 97:return Ao;case 96:return Io;case 95:return Ro;default:throw Error(a(332))}}function qo(e,t){return e=$o(e),Oo(e,t)}function Qo(e,t,n){return e=$o(e),To(e,t,n)}function Go(e){return null===Uo?(Uo=[e],Bo=To(jo,Ko)):Uo.push(e),zo}function Xo(){if(null!==Bo){var e=Bo;Bo=null,No(e)}Ko()}function Ko(){if(!Ho&&null!==Uo){Ho=!0;var e=0;try{var t=Uo;qo(99,(function(){for(;e=t&&(Aa=!0),e.firstContext=null)}function li(e,t){if(ri!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ri=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ni){if(null===ti)throw Error(a(308));ni=t,ti.dependencies={expirationTime:0,firstContext:t,responders:null}}else ni=ni.next=t;return e._currentValue}var ui=!1;function ci(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function fi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function di(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function pi(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function hi(e,t){var n=e.alternate;null!==n&&fi(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function mi(e,t,n,r){var i=e.updateQueue;ui=!1;var a=i.baseQueue,s=i.shared.pending;if(null!==s){if(null!==a){var l=a.next;a.next=s.next,s.next=l}a=s,i.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==a){l=a.next;var u=i.baseState,c=0,f=null,d=null,p=null;if(null!==l)for(var h=l;;){if((s=h.expirationTime)c&&(c=s)}else{null!==p&&(p=p.next={expirationTime:1073741823,suspenseConfig:h.suspenseConfig,tag:h.tag,payload:h.payload,callback:h.callback,next:null}),pl(s,h.suspenseConfig);e:{var v=e,g=h;switch(s=t,m=n,g.tag){case 1:if("function"==typeof(v=g.payload)){u=v.call(m,u,s);break e}u=v;break e;case 3:v.effectTag=-4097&v.effectTag|64;case 0:if(null==(s="function"==typeof(v=g.payload)?v.call(m,u,s):v))break e;u=o({},u,s);break e;case 2:ui=!0}}null!==h.callback&&(e.effectTag|=32,null===(s=i.effects)?i.effects=[h]:s.push(h))}if(null===(h=h.next)||h===l){if(null===(s=i.shared.pending))break;h=a.next=s.next,s.next=l,i.baseQueue=a=s,i.shared.pending=null}}null===p?f=u:p.next=d,i.baseState=f,i.baseQueue=p,hl(c),e.expirationTime=c,e.memoizedState=u}}function vi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;tm?(v=f,f=null):v=f.sibling;var g=p(o,f,s[m],l);if(null===g){null===f&&(f=v);break}e&&f&&null===g.alternate&&t(o,f),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g,f=v}if(m===s.length)return n(o,f),u;if(null===f){for(;mv?(g=m,m=null):g=m.sibling;var b=p(o,m,y.value,u);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(o,m),s=i(b,s,v),null===f?c=b:f.sibling=b,f=b,m=g}if(y.done)return n(o,m),c;if(null===m){for(;!y.done;v++,y=l.next())null!==(y=d(o,y.value,u))&&(s=i(y,s,v),null===f?c=y:f.sibling=y,f=y);return c}for(m=r(o,m);!y.done;v++,y=l.next())null!==(y=h(m,o,v,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?v:y.key),s=i(y,s,v),null===f?c=y:f.sibling=y,f=y);return e&&m.forEach((function(e){return t(o,e)})),c}return function(e,r,i,l){var u="object"==typeof i&&null!==i&&i.type===ne&&null===i.key;u&&(i=i.props.children);var c="object"==typeof i&&null!==i;if(c)switch(i.$$typeof){case ee:e:{for(c=i.key,u=r;null!==u;){if(u.key===c){switch(u.tag){case 7:if(i.type===ne){n(e,u.sibling),(r=o(u,i.props.children)).return=e,e=r;break e}break;default:if(u.elementType===i.type){n(e,u.sibling),(r=o(u,i.props)).ref=Oi(e,u,i),r.return=e,e=r;break e}}n(e,u);break}t(e,u),u=u.sibling}i.type===ne?((r=Rl(i.props.children,e.mode,l,i.key)).return=e,e=r):((l=Il(i.type,i.key,i.props,null,e.mode,l)).ref=Oi(e,r,i),l.return=e,e=l)}return s(e);case te:e:{for(u=i.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Fl(i,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=zl(i,e.mode,l)).return=e,e=r),s(e);if(Si(i))return m(e,r,i,l);if(me(i))return v(e,r,i,l);if(c&&Ti(e,i),void 0===i&&!u)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Ci=Ni(!0),Pi=Ni(!1),Mi={},ji={current:Mi},Di={current:Mi},Ai={current:Mi};function Ii(e){if(e===Mi)throw Error(a(174));return e}function Ri(e,t){switch(ho(Ai,t),ho(Di,e),ho(ji,Mi),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ze(null,"");break;default:t=ze(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}po(ji),ho(ji,t)}function zi(){po(ji),po(Di),po(Ai)}function Fi(e){Ii(Ai.current);var t=Ii(ji.current),n=ze(t,e.type);t!==n&&(ho(Di,e),ho(ji,n))}function Li(e){Di.current===e&&(po(ji),po(Di))}var Ui={current:0};function Bi(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===gn||n.data===yn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Hi(e,t){return{responder:e,props:t}}var Vi=X.ReactCurrentDispatcher,Wi=X.ReactCurrentBatchConfig,Yi=0,$i=null,qi=null,Qi=null,Gi=!1;function Xi(){throw Error(a(321))}function Ki(e,t){if(null===t)return!1;for(var n=0;ni))throw Error(a(301));i+=1,Qi=qi=null,t.updateQueue=null,Vi.current=Ea,e=n(r,o)}while(t.expirationTime===Yi)}if(Vi.current=_a,t=null!==qi&&null!==qi.next,Yi=0,Qi=qi=$i=null,Gi=!1,t)throw Error(a(300));return e}function Zi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Qi?$i.memoizedState=Qi=e:Qi=Qi.next=e,Qi}function ea(){if(null===qi){var e=$i.alternate;e=null!==e?e.memoizedState:null}else e=qi.next;var t=null===Qi?$i.memoizedState:Qi.next;if(null!==t)Qi=t,qi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(qi=e).memoizedState,baseState:qi.baseState,baseQueue:qi.baseQueue,queue:qi.queue,next:null},null===Qi?$i.memoizedState=Qi=e:Qi=Qi.next=e}return Qi}function ta(e,t){return"function"==typeof t?t(e):t}function na(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=qi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var l=s=i=null,u=o;do{var c=u.expirationTime;if(c$i.expirationTime&&($i.expirationTime=c,hl(c))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:u.suspenseConfig,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),pl(c,u.suspenseConfig),r=u.eagerReducer===e?u.eagerState:e(r,u.action);u=u.next}while(null!==u&&u!==o);null===l?i=r:l.next=s,Br(r,t.memoizedState)||(Aa=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ra(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);Br(i,t.memoizedState)||(Aa=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function oa(e){var t=Zi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ta,lastRenderedState:e}).dispatch=ba.bind(null,$i,e),[t.memoizedState,e]}function ia(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=$i.updateQueue)?(t={lastEffect:null},$i.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function aa(){return ea().memoizedState}function sa(e,t,n,r){var o=Zi();$i.effectTag|=e,o.memoizedState=ia(1|t,n,void 0,void 0===r?null:r)}function la(e,t,n,r){var o=ea();r=void 0===r?null:r;var i=void 0;if(null!==qi){var a=qi.memoizedState;if(i=a.destroy,null!==r&&Ki(r,a.deps))return void ia(t,n,i,r)}$i.effectTag|=e,o.memoizedState=ia(1|t,n,i,r)}function ua(e,t){return sa(516,4,e,t)}function ca(e,t){return la(516,4,e,t)}function fa(e,t){return la(4,2,e,t)}function da(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function pa(e,t,n){return n=null!=n?n.concat([e]):null,la(4,2,da.bind(null,t,e),n)}function ha(){}function ma(e,t){return Zi().memoizedState=[e,void 0===t?null:t],e}function va(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ki(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ga(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Ki(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function ya(e,t,n){var r=Yo();qo(98>r?98:r,(function(){e(!0)})),qo(97<\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(i,{is:r.is}):(e=l.createElement(i),"select"===i&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,i),e[Nn]=t,e[Cn]=r,Wa(e,t),t.stateNode=e,l=sn(i,r),i){case"iframe":case"object":case"embed":Qt("load",e),u=r;break;case"video":case"audio":for(u=0;ur.tailExpiration&&1t)&&Xs.set(e,t))}}function rl(e,t){e.expirationTime=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function il(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Go(sl.bind(null,e));else{var t=ol(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=el();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==zo&&No(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Go(sl.bind(null,e)):Qo(r,al.bind(null,e),{timeout:10*(1073741821-t)-Wo()}),e.callbackNode=t}}}function al(e,t){if(Zs=0,t)return Vl(e,t=el()),il(e),null;var n=ol(e);if(0!==n){if(t=e.callbackNode,0!=(48&Ms))throw Error(a(327));if(El(),e===js&&n===As||cl(e,n),null!==Ds){var r=Ms;Ms|=Os;for(var o=dl();;)try{vl();break}catch(t){fl(e,t)}if(oi(),Ms=r,ks.current=o,1===Is)throw t=Rs,cl(e,n),Bl(e,n),il(e),t;if(null===Ds)switch(o=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Is,js=null,r){case Ns:case 1:throw Error(a(345));case 2:Vl(e,2=n){e.lastPingedTime=n,cl(e,n);break}}if(0!==(i=ol(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=En(_l.bind(null,e),o);break}_l(e);break;case Ps:if(Bl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=bl(o)),Bs&&(0===(o=e.lastPingedTime)||o>=n)){e.lastPingedTime=n,cl(e,n);break}if(0!==(o=ol(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Fs?r=10*(1073741821-Fs)-Wo():1073741823===zs?r=0:(r=10*(1073741821-zs)-5e3,0>(r=(o=Wo())-r)&&(r=0),(n=10*(1073741821-n)-o)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)&&(r=n)),10=(r=0|s.busyMinDurationMs)?r=0:(o=0|s.busyDelayMs,r=(i=Wo()-(10*(1073741821-i)-(0|s.timeoutMs||5e3)))<=o?0:o+r-i),10 component higher in the tree to provide a loading indicator or placeholder to display."+ge(a))}5!==Is&&(Is=2),s=ns(s,a),f=i;do{switch(f.tag){case 3:l=s,f.effectTag|=4096,f.expirationTime=t,hi(f,_s(f,l,t));break e;case 1:l=s;var _=f.type,w=f.stateNode;if(0==(64&f.effectTag)&&("function"==typeof _.getDerivedStateFromError||null!==w&&"function"==typeof w.componentDidCatch&&(null===$s||!$s.has(w)))){f.effectTag|=4096,f.expirationTime=t,hi(f,ws(f,l,t));break e}}f=f.return}while(null!==f)}Ds=yl(Ds)}catch(e){t=e;continue}break}}function dl(){var e=ks.current;return ks.current=_a,null===e?_a:e}function pl(e,t){eUs&&(Us=e)}function ml(){for(;null!==Ds;)Ds=gl(Ds)}function vl(){for(;null!==Ds&&!Fo();)Ds=gl(Ds)}function gl(e){var t=xs(e.alternate,e,As);return e.memoizedProps=e.pendingProps,null===t&&(t=yl(e)),Ss.current=null,t}function yl(e){Ds=e;do{var t=Ds.alternate;if(e=Ds.return,0==(2048&Ds.effectTag)){if(t=es(t,Ds,As),1===As||1!==Ds.childExpirationTime){for(var n=0,r=Ds.child;null!==r;){var o=r.expirationTime,i=r.childExpirationTime;o>n&&(n=o),i>n&&(n=i),r=r.sibling}Ds.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ds.firstEffect),null!==Ds.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ds.firstEffect),e.lastEffect=Ds.lastEffect),1(e=e.childExpirationTime)?t:e}function _l(e){var t=Yo();return qo(99,wl.bind(null,e,t)),null}function wl(e,t){do{El()}while(null!==Qs);if(0!=(48&Ms))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var o=bl(n);if(e.firstPendingTime=o,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===js&&(Ds=js=null,As=0),1l&&(c=l,l=s,s=c),c=pn(_,s),f=pn(_,l),c&&f&&(1!==x.rangeCount||x.anchorNode!==c.node||x.anchorOffset!==c.offset||x.focusNode!==f.node||x.focusOffset!==f.offset)&&((w=w.createRange()).setStart(c.node,c.offset),x.removeAllRanges(),s>l?(x.addRange(w),x.extend(f.node,f.offset)):(w.setEnd(f.node,f.offset),x.addRange(w))))),w=[];for(x=_;x=x.parentNode;)1===x.nodeType&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof _.focus&&_.focus(),_=0;_=n?Qa(e,t,n):(ho(Ui,1&Ui.current),null!==(t=Ja(e,t,n))?t.sibling:null);ho(Ui,1&Ui.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Ka(e,t,n);t.effectTag|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null),ho(Ui,Ui.current),!r)return null}return Ja(e,t,n)}Aa=!1}}else Aa=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=bo(t,vo.current),si(t,n),o=Ji(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,_o(r)){var i=!0;ko(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ci(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&bi(t,r,s,e),o.updater=_i,t.stateNode=o,o._reactInternalFiber=t,ki(t,r,e,n),t=Ha(null,t,r,!0,i,n)}else t.tag=0,Ia(null,t,o,n),t=t.child;return t;case 16:e:{if(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(o),1!==o._status)throw o._result;switch(o=o._result,t.type=o,i=t.tag=function(e){if("function"==typeof e)return Dl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===fe)return 14}return 2}(o),e=Zo(o,e),i){case 0:t=Ua(null,t,o,e,n);break e;case 1:t=Ba(null,t,o,e,n);break e;case 11:t=Ra(null,t,o,e,n);break e;case 14:t=za(null,t,o,Zo(o.type,e),r,n);break e}throw Error(a(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Ua(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ba(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 3:if(Va(t),r=t.updateQueue,null===e||null===r)throw Error(a(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,fi(e,t),mi(t,r,null,n),(r=t.memoizedState.element)===o)ja(),t=Ja(e,t,n);else{if((o=t.stateNode.hydrate)&&(Sa=Sn(t.stateNode.containerInfo.firstChild),ka=t,o=Oa=!0),o)for(n=Pi(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Ia(e,t,r,n),ja();t=t.child}return t;case 5:return Fi(t),null===e&&Ca(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,xn(r,o)?s=null:null!==i&&xn(r,i)&&(t.effectTag|=16),La(e,t),4&t.mode&&1!==n&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ia(e,t,s,n),t=t.child),t;case 6:return null===e&&Ca(t),null;case 13:return Qa(e,t,n);case 4:return Ri(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ci(t,null,r,n):Ia(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,Ra(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 7:return Ia(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ia(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,s=t.memoizedProps,i=o.value;var l=t.type._context;if(ho(ei,l._currentValue),l._currentValue=i,null!==s)if(l=s.value,0===(i=Br(l,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,i):1073741823))){if(s.children===o.children&&!go.current){t=Ja(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){s=l.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&i)){1===l.tag&&((c=di(n,null)).tag=2,pi(l,c)),l.expirationTime=t&&e<=t}function Bl(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Hl(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Vl(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Wl(e,t,n,r){var o=t.current,i=el(),s=gi.suspense;i=tl(i,o,s);e:if(n){t:{if(et(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(_o(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(a(171))}if(1===n.tag){var u=n.type;if(_o(u)){n=Eo(n,u,l);break e}}n=l}else n=mo;return null===t.context?t.context=n:t.pendingContext=n,(t=di(i,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),pi(o,t),nl(o,i),i}function Yl(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function $l(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime=x},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,o=e[r];if(!(void 0!==o&&0N(a,n))void 0!==l&&0>N(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>N(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function N(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],P=[],M=1,j=null,D=3,A=!1,I=!1,R=!1;function z(e){for(var t=O(P);null!==t;){if(null===t.callback)T(P);else{if(!(t.startTime<=e))break;T(P),t.sortIndex=t.expirationTime,S(C,t)}t=O(P)}}function F(e){if(R=!1,z(e),!I)if(null!==O(C))I=!0,r(L);else{var t=O(P);null!==t&&o(F,t.startTime-e)}}function L(e,n){I=!1,R&&(R=!1,i()),A=!0;var r=D;try{for(z(n),j=O(C);null!==j&&(!(j.expirationTime>n)||e&&!a());){var s=j.callback;if(null!==s){j.callback=null,D=j.priorityLevel;var l=s(j.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?j.callback=l:j===O(C)&&T(C),z(n)}else T(C);j=O(C)}if(null!==j)var u=!0;else{var c=O(P);null!==c&&o(F,c.startTime-n),u=!1}return u}finally{j=null,D=r,A=!1}}function U(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var B=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){I||A||(I=!0,r(L))},t.unstable_getCurrentPriorityLevel=function(){return D},t.unstable_getFirstCallbackNode=function(){return O(C)},t.unstable_next=function(e){switch(D){case 1:case 2:case 3:var t=3;break;default:t=D}var n=D;D=t;try{return e()}finally{D=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=B,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=D;D=e;try{return t()}finally{D=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0s?(e.sortIndex=l,S(P,e),null===O(C)&&e===O(P)&&(R?i():R=!0,o(F,l-s))):(e.sortIndex=a,S(C,e),I||A||(I=!0,r(L))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();z(e);var n=O(C);return n!==j&&null!==j&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime-1}},function(e,t,n){var r=n(31);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(32);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(32);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(32);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(32);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},function(e,t,n){var r=n(159);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(27),o=n(160),i=n(6),a=n(26),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(i(t))return o(t,e)+"";if(a(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n{if("number"!=typeof e)throw new TypeError("Expected a number");const t=e>0?Math.floor:Math.ceil;return{days:t(e/864e5),hours:t(e/36e5)%24,minutes:t(e/6e4)%60,seconds:t(e/1e3)%60,milliseconds:t(e)%1e3,microseconds:t(1e3*e)%1e3,nanoseconds:t(1e6*e)%1e3}}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):f=-1,u.length&&p())}function p(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++f1)for(var n=1;na||s>l)throw new Error("The start of the range cannot be after the end of the range");return i0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(2),o=n(82),i=n(23),a=n(87);e.exports=function(e,t){var n=r(e),s=r(t),l=i(n,s),u=Math.abs(o(n,s));return n=a(n,l*u),l*(u-(i(n,s)===-l))}},function(e,t,n){var r=n(37);e.exports=function(e,t){var n=r(e,t)/6e4;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(55);e.exports=function(e,t){var n=r(e,t)/3;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(86);e.exports=function(e,t){var n=r(e,t)/7;return n>0?Math.floor(n):Math.ceil(n)}},function(e,t,n){var r=n(2),o=n(85),i=n(23);e.exports=function(e,t){var n=r(e),a=r(t),s=i(n,a),l=Math.abs(o(n,a));return n.setFullYear(n.getFullYear()-s*l),s*(l-(i(n,a)===-s))}},function(e,t){e.exports=function(){var e={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};return{localize:function(t,n,r){var o;return r=r||{},o="string"==typeof e[t]?e[t]:1===n?e[t].one:e[t].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"in "+o:o+" ago":o}}}},function(e,t,n){var r=n(213);e.exports=function(){var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["AM","PM"],s=["am","pm"],l=["a.m.","p.m."],u={MMM:function(t){return e[t.getMonth()]},MMMM:function(e){return t[e.getMonth()]},dd:function(e){return n[e.getDay()]},ddd:function(e){return o[e.getDay()]},dddd:function(e){return i[e.getDay()]},A:function(e){return e.getHours()/12>=1?a[1]:a[0]},a:function(e){return e.getHours()/12>=1?s[1]:s[0]},aa:function(e){return e.getHours()/12>=1?l[1]:l[0]}};return["M","D","DDD","d","Q","W"].forEach((function(e){u[e+"o"]=function(t,n){return function(e){var t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"}(n[e](t))}})),{formatters:u,formattingTokensRegExp:r(u)}}},function(e,t){var n=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];e.exports=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);var o=n.concat(t).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}},function(e,t,n){var r=n(54),o=n(2),i=n(56),a=n(57),s=525600;e.exports=function(e,t,n){var l=n||{},u=r(e,t),c=l.locale,f=a.distanceInWords.localize;c&&c.distanceInWords&&c.distanceInWords.localize&&(f=c.distanceInWords.localize);var d,p,h,m={addSuffix:Boolean(l.addSuffix),comparison:u};u>0?(d=o(e),p=o(t)):(d=o(t),p=o(e));var v=Math[l.partialMethod?String(l.partialMethod):"floor"],g=i(p,d),y=p.getTimezoneOffset()-d.getTimezoneOffset(),b=v(g/60)-y;if("s"===(h=l.unit?String(l.unit):b<1?"s":b<60?"m":b<1440?"h":b<43200?"d":ba)throw new Error("The first date cannot be after the second date");var s=[],l=o;for(l.setHours(0,0,0,0);l.getTime()<=a;)s.push(r(l)),l.setDate(l.getDate()+i);return s}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMinutes(59,59,999),t}},function(e,t,n){var r=n(89);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(10),o=n(11);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setMilliseconds(i.getMilliseconds()-1),i}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setSeconds(59,999),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(23,59,59,999),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e);return t.setMilliseconds(999),t}},function(e,t,n){var r=n(58);e.exports=function(){return r(new Date)}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r+1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}},function(e,t){e.exports=function(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),r=e.getDate(),o=new Date(0);return o.setFullYear(t,n,r-1),o.setHours(23,59,59,999),o}},function(e,t,n){var r=n(91),o=n(59),i=n(10),a=n(2),s=n(93),l=n(57);var u={M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1,2)},Q:function(e){return Math.ceil((e.getMonth()+1)/3)},D:function(e){return e.getDate()},DD:function(e){return d(e.getDate(),2)},DDD:function(e){return r(e)},DDDD:function(e){return d(r(e),3)},d:function(e){return e.getDay()},E:function(e){return e.getDay()||7},W:function(e){return o(e)},WW:function(e){return d(o(e),2)},YY:function(e){return d(e.getFullYear(),4).substr(2)},YYYY:function(e){return d(e.getFullYear(),4)},GG:function(e){return String(i(e)).substr(2)},GGGG:function(e){return i(e)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours(),2)},h:function(e){var t=e.getHours();return 0===t?12:t>12?t%12:t},hh:function(e){return d(u.h(e),2)},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes(),2)},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds(),2)},S:function(e){return Math.floor(e.getMilliseconds()/100)},SS:function(e){return d(Math.floor(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},Z:function(e){return f(e.getTimezoneOffset(),":")},ZZ:function(e){return f(e.getTimezoneOffset())},X:function(e){return Math.floor(e.getTime()/1e3)},x:function(e){return e.getTime()}};function c(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|]$/g,""):e.replace(/\\/g,"")}function f(e,t){t=t||"";var n=e>0?"-":"+",r=Math.abs(e),o=r%60;return n+d(Math.floor(r/60),2)+t+d(o,2)}function d(e,t){for(var n=Math.abs(e).toString();n.lengtha||s>l)throw new Error("The start of the range cannot be after the end of the range");if(!(ia?a:l)-(so.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()(new Date).getTime()}},function(e,t,n){var r=n(2),o=n(58),i=n(90);e.exports=function(e){var t=r(e);return o(t).getTime()===i(t).getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 1===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return r(e).getTime()<(new Date).getTime()}},function(e,t,n){var r=n(12);e.exports=function(e,t){var n=r(e),o=r(t);return n.getTime()===o.getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 6===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return 0===r(e).getDay()}},function(e,t,n){var r=n(96);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(98);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(99);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(100);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(102);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(103);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(105);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(60);e.exports=function(e,t){return r(new Date,e,t)}},function(e,t,n){var r=n(107);e.exports=function(e){return r(new Date,e)}},function(e,t,n){var r=n(2);e.exports=function(e){return 4===r(e).getDay()}},function(e,t,n){var r=n(12);e.exports=function(e){return r(e).getTime()===r(new Date).getTime()}},function(e,t,n){var r=n(12);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()+1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(2);e.exports=function(e){return 2===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){return 3===r(e).getDay()}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e).getDay();return 0===t||6===t}},function(e,t,n){var r=n(2);e.exports=function(e,t,n){var o=r(e).getTime(),i=r(t).getTime(),a=r(n).getTime();if(i>a)throw new Error("The start of the range cannot be after the end of the range");return o>=i&&o<=a}},function(e,t,n){var r=n(12);e.exports=function(e){var t=new Date;return t.setDate(t.getDate()-1),r(e).getTime()===r(t).getTime()}},function(e,t,n){var r=n(108);e.exports=function(e){return r(e,{weekStartsOn:1})}},function(e,t,n){var r=n(10),o=n(11);e.exports=function(e){var t=r(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var i=o(n);return i.setDate(i.getDate()-1),i}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getMonth(),o=n-n%3+3;return t.setMonth(o,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(e){var t=r(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(0,0,0,0),t}},function(e,t,n){var r=n(2);e.exports=function(){var e=Array.prototype.slice.call(arguments),t=e.map((function(e){return r(e)})),n=Math.max.apply(null,t);return new Date(n)}},function(e,t,n){var r=n(2);e.exports=function(){var e=Array.prototype.slice.call(arguments),t=e.map((function(e){return r(e)})),n=Math.min.apply(null,t);return new Date(n)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=r(e),o=Number(t);return n.setDate(o),n}},function(e,t,n){var r=n(2),o=n(20);e.exports=function(e,t,n){var i=n&&Number(n.weekStartsOn)||0,a=r(e),s=Number(t),l=a.getDay();return o(a,((s%7+7)%7-1?s[l?t[u]:u]:void 0}}},function(e,t,n){var r=n(302),o=n(303),i=n(112);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(68),o=n(44);e.exports=function(e,t,n,i){var a=n.length,s=a,l=!i;if(null==e)return!s;for(e=Object(e);a--;){var u=n[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:a}]}]},{begin:/,end:/(\/\w+|\w+\/)>/,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:a}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/\*{5}/,end:/\*{5}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=n(13),a=n.n(i),s=n(1),l=n.n(s),u=n(24),c=n.n(u),f=n(3),d=n.n(f),p=n(39),h=n.n(p),m=n(7),v=n.n(m),g=n(38),y=n.n(g);function b(e){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x(e,t){for(var n=0;n6?s-6:0),u=6;u>",a=a||r,null==n[r]){if(t){var s=null===n[r]?"null":"undefined";return new Error("The "+i+" `"+a+"` is marked as required in `"+o+"`, but its value is `"+s+"`.")}return null}return e.apply(void 0,[n,r,o,i,a].concat(l))}))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n}function Ve(e){var t=ye(e);return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||"Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol}(t,e)?"symbol":t}function We(e,t){return He((function(n,r,o,i,a){return Object(ge.o)((function(){if(e&&Ve(n[r])===t.toLowerCase())return null;var i;switch(t){case"Array":i=ge.i;break;case"Object":i=ge.k;break;case"Map":i=ge.j;break;default:throw new Error("Unexpected mobxType: ".concat(t))}var s=n[r];if(!i(s)){var l=function(e){var t=Ve(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}(s),u=e?" or javascript `"+t.toLowerCase()+"`":"";return new Error("Invalid prop `"+a+"` of type `"+l+"` supplied to `"+o+"`, expected `mobx.Observable"+t+"`"+u+".")}return null}))}))}function Ye(e,t){return He((function(n,r,o,i,a){for(var s=arguments.length,l=new Array(s>5?s-5:0),u=5;u2?r-2:0),i=2;i2?r-2:0),i=2;i",i=this._reactInternalInstance&&this._reactInternalInstance._rootNodeID||this._reactInternalInstance&&this._reactInternalInstance._debugID||this._reactInternalFiber&&this._reactInternalFiber._debugID;gt(this,ht,!1),gt(this,mt,!1);var a=e.bind(this),s=!1,l=new ge.b("".concat(o,"#").concat(i,".render()"),(function(){if(!s&&(s=!0,"function"==typeof t.componentWillReact&&t.componentWillReact(),!0!==t[lt])){var e=!0;try{gt(t,mt,!0),t[ht]||r.Component.prototype.forceUpdate.call(t),e=!1}finally{gt(t,mt,!1),e&&l.dispose()}}}));return l.reactComponent=this,n[st]=l,this.render=n,n.call(this)}var kt={componentWillUnmount:function(){if(!0!==ct&&(this.render[st]&&this.render[st].dispose(),this[lt]=!0,ut)){var e=yt(this);e&&dt&&dt.delete(e),pt.emit({event:"destroy",component:this,node:e})}},componentDidMount:function(){ut&&bt(this)},componentDidUpdate:function(){ut&&bt(this)},shouldComponentUpdate:function(e,t){return ct&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==t||!wt(this.props,e)}};function St(e,t){var n=Qe("reactProp_".concat(t,"_valueHolder")),r=Qe("reactProp_".concat(t,"_atomHolder"));function o(){return this[r]||gt(this,r,Object(ge.f)("reactive "+t)),this[r]}Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return o.call(this).reportObserved(),this[n]},set:function(e){this[mt]||wt(this[n],e)?gt(this,n,e):(gt(this,n,e),gt(this,ht,!0),o.call(this).reportChanged(),gt(this,ht,!1))}})}function Ot(e,t){if("string"==typeof e)throw new Error("Store names should be provided as array");if(Array.isArray(e))return ft||(ft=!0,console.warn('Mobx observer: Using observer to inject stores is deprecated since 4.0. Use `@inject("store1", "store2") @observer ComponentClass` or `inject("store1", "store2")(observer(componentClass))` instead of `@observer(["store1", "store2"]) ComponentClass`')),t?at.apply(null,e)(Ot(t)):function(t){return Ot(e,t)};var n=e;if(!0===n.isMobxInjector&&console.warn("Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'"),n.__proto__===r.PureComponent&&console.warn("Mobx observer: You are using 'observer' on React.PureComponent. These two achieve two opposite goals and should not be used together"),vt&&n.$$typeof===vt){var i=n.render;if("function"!=typeof i)throw new Error("render property of ForwardRef was not a function");return Object(r.forwardRef)((function(){var e=arguments;return o.a.createElement(Tt,null,(function(){return i.apply(void 0,e)}))}))}if(!("function"!=typeof n||n.prototype&&n.prototype.render||n.isReactClass||r.Component.isPrototypeOf(n))){var a,s,l=Ot((s=a=function(e){function t(){return be(this,t),Oe(this,ke(t).apply(this,arguments))}return Ee(t,e),we(t,[{key:"render",value:function(){return n.call(this,this.props,this.context)}}]),t}(r.Component),a.displayName=n.displayName||n.name,a.contextTypes=n.contextTypes,a.propTypes=n.propTypes,a.defaultProps=n.defaultProps,s));return Ue(l,n),l}if(!n)throw new Error("Please pass a valid component to 'observer'");var u=n.prototype||n;!function(e){["componentDidMount","componentWillUnmount","componentDidUpdate"].forEach((function(t){!function(e,t){et(e,t,kt[t])}(e,t)})),e.shouldComponentUpdate?e.shouldComponentUpdate!==kt.shouldComponentUpdate&&console.warn("Use `shouldComponentUpdate` in an `observer` based component breaks the behavior of `observer` and might lead to unexpected results. Manually implementing `sCU` should not be needed when using mobx-react."):e.shouldComponentUpdate=kt.shouldComponentUpdate}(u),n.isMobXReactObserver=!0,St(u,"props"),St(u,"state");var c=u.render;return u.render=function(){return Et.call(this,c)},n}var Tt=Ot((function(e){var t=e.children,n=e.inject,r=e.render,i=t||r;if(void 0===i)return null;if(!n)return i();console.warn(" is no longer supported. Please use inject on the enclosing component instead");var a=at(n)(i);return o.a.createElement(a,null)}));Tt.displayName="Observer";var Nt=function(e,t,n,r,o){var i="children"===t?"render":"children";return"function"==typeof e[t]&&"function"==typeof e[i]?new Error("Invalid prop,do not use children and render in the same time in`"+n):"function"!=typeof e[t]&&"function"!=typeof e[i]?new Error("Invalid prop `"+o+"` of type `"+ye(e[t])+"` supplied to `"+n+"`, expected `function`."):void 0};function Ct(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function Pt(e){this.setState(function(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!=n?n:null}.bind(this))}function Mt(e,t){try{var n=this.props,r=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}Tt.propTypes={render:Nt,children:Nt},Ct.__suppressDeprecationWarning=!0,Pt.__suppressDeprecationWarning=!0,Mt.__suppressDeprecationWarning=!0;var jt={children:!0,key:!0,ref:!0},Dt=function(e){function t(e,n){var r;return be(this,t),(r=Oe(this,ke(t).call(this,e,n))).state={},At(e,r.state),r}return Ee(t,e),we(t,[{key:"render",value:function(){return r.Children.only(this.props.children)}},{key:"getChildContext",value:function(){var e={};return At(this.context.mobxStores,e),At(this.props,e),{mobxStores:e}}}],[{key:"getDerivedStateFromProps",value:function(e,t){if(!e)return null;if(!t)return e;if(Object.keys(e).filter(It).length!==Object.keys(t).filter(It).length&&console.warn("MobX Provider: The set of provided stores has changed. Please avoid changing stores as the change might not propagate to all children"),!e.suppressChangedStoreWarning)for(var n in e)It(n)&&t[n]!==e[n]&&console.warn("MobX Provider: Provided store '"+n+"' has changed. Please avoid replacing stores as the change might not propagate to all children");return e}}]),t}(r.Component);function At(e,t){if(e)for(var n in e)It(n)&&(t[n]=e[n])}function It(e){return!jt[e]&&"suppressChangedStoreWarning"!==e}Dt.contextTypes={mobxStores:$e},Dt.childContextTypes={mobxStores:$e.isRequired},function(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n=null,r=null,o=null;if("function"==typeof t.componentWillMount?n="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?r="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(r="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?o="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(o="UNSAFE_componentWillUpdate"),null!==n||null!==r||null!==o){var i=e.displayName||e.name,a="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+i+" uses "+a+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==r?"\n "+r:"")+(null!==o?"\n "+o:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=Ct,t.componentWillReceiveProps=Pt),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=Mt;var s=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;s.call(this,e,t,r)}}}(Dt);Qe("disposeOnUnmount");if(!r.Component)throw new Error("mobx-react requires React to be available");if(!ge.n)throw new Error("mobx-react requires mobx to be available");"function"==typeof i.unstable_batchedUpdates&&Object(ge.e)({reactionScheduler:i.unstable_batchedUpdates});if("object"===("undefined"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__?"undefined":ye(__MOBX_DEVTOOLS_GLOBAL_HOOK__))){var Rt={spy:ge.n,extras:{getDebugName:ge.h}},zt={renderReporter:pt,componentByNodeRegistry:dt,componentByNodeRegistery:dt,trackComponents:function(){if("undefined"==typeof WeakMap)throw new Error("[mobx-react] tracking components is not supported in this browser.");ut||(ut=!0)}};__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobxReact(zt,Rt)}var Ft,Lt,Ut,Bt=n(117),Ht=n.n(Bt);function Vt(e){return(Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Yt(e,t){for(var n=0;n0?e.slice(0,t):e)||Hr.exec(e)||[],2)[1]||void 0}},Wr=function(e){function t(){var e,n;Pr(this,t);for(var r=arguments.length,i=new Array(r),a=0;a2&&void 0!==arguments[2]&&arguments[2],i=Vr(e);if(i)return n.renderVideo(e,t,i);if(Fr.test(e))return n.renderImage(e,t);if(Br.test(e))return n.renderBase64Image(e,t);if(Ur.test(e))return n.renderLink(e,t);if(Nr()(e))return o.a.createElement(Er,{className:Rr("code-snippet"),code:e,highlight:!1});var a=JSON.stringify(e,null,2);return o.a.createElement(Er,{className:Rr("code-snippet"),code:a,highlight:r})},n.renderContext=function(e,t){var r={className:Rr("context-item")};if(void 0!==t&&(r.key=t),Nr()(e))return o.a.createElement("div",r,n.renderContextContent(e));var i=e.title,a=e.value;return o.a.createElement("div",r,o.a.createElement("h4",{className:Rr("context-item-title")},i,":"),n.renderContextContent(a,i,!0))},n}var n,r,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ar(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=this.props,t=e.className,n=e.context,r=JSON.parse(n);return o.a.createElement("div",{className:Rr(t,"context")},o.a.createElement("h4",{className:Rr("context-title")},"Additional Test Context"),Array.isArray(r)?r.map(this.renderContext):this.renderContext(r))}}])&&Mr(n.prototype,r),i&&Mr(n,i),t}(r.Component);Wr.displayName="TestContext",Wr.propTypes={className:l.a.string,context:l.a.oneOfType([l.a.string,l.a.object,l.a.array])};var Yr=Wr,$r=n(19),qr=n.n($r);function Qr(e){return(Qr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Gr(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Wo(this,e),this._mapHook=function(e){return("always"===t.showHooks||"failed"===t.showHooks&&e.fail||"context"===t.showHooks&&e.context)&&e},this._mapTest=function(e){return(t.showPassed&&e.pass||t.showFailed&&e.fail||t.showPending&&e.pending||t.showSkipped&&e.skipped)&&e},this._mapSuite=function(e){var n=e.suites.length?t._getFilteredTests(e.suites):[],r=qo(e.tests,t._mapTest,t._reduceItem,[]),o=qo(e.beforeHooks,t._mapHook,t._reduceItem,[]),i=qo(e.afterHooks,t._mapHook,t._reduceItem,[]);return o.length||i.length||r.length||n.length?Object.assign({},e,{suites:n,beforeHooks:o,afterHooks:i,tests:r}):null},this._reduceItem=function(e,t){return t&&e.push(t),e},this._getFilteredTests=function(e){return qo(e,t._mapSuite,t._reduceItem,[])},this._isValidOption=function(e,t,n){var r=t.indexOf(n)>=0;return r||console.error("Warning: '".concat(n,"' is not a valid option for property: '").concat(e,"'. Valid options are: ").concat(t.join(", "))),r},this._isValidShowHookOption=function(e){return t._isValidOption("showHooks",t.showHooksOptions,e)},this._getShowHooks=function(e){var n=e.showHooks,r="failed";return n&&t._isValidShowHookOption(n)?n:r},this._restoreInitialFilterState=function(){t.filters.forEach((function(e){t[e]=t.initialFilterState[e]}))},Object.assign(this,{devMode:!!r.dev,enableChart:!!r.enableCharts,enableCode:!!r.enableCode,filters:["showPassed","showFailed","showPending","showSkipped"],initialLoadTimeout:300,initialFilterState:null,reportTitle:r.reportTitle||n.reportTitle,results:n.results||[],showHooksOptions:["failed","always","never","context"],stats:n.stats||{},VERSION:"6.2.0"}),Object(ge.g)(this,{filteredSuites:[],isLoading:!0,showFailed:void 0===r.showFailed||r.showFailed,showHooks:this._getShowHooks(r),showPassed:void 0===r.showPassed||r.showPassed,showPending:void 0===r.showPending||r.showPending,showSkipped:void 0!==r.showSkipped&&r.showSkipped,singleFilter:null,sideNavOpen:!1},{filteredSuites:ge.l.shallow}),this.initialize()}var t,n,r;return t=e,(n=[{key:"initialize",value:function(){var e=this;this.initialFilterState=this.filters.reduce((function(t,n){return function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:this.initialLoadTimeout;setTimeout((function(){e.toggleIsLoading(!1),e.filteredSuites=e._getFilteredTests(e.results)}),t)}}])&&Yo(t.prototype,n),r&&Yo(t,r),e}()).prototype,"openSideNav",[Ro],Object.getOwnPropertyDescriptor(Bo.prototype,"openSideNav"),Bo.prototype),$o(Bo.prototype,"closeSideNav",[zo],Object.getOwnPropertyDescriptor(Bo.prototype,"closeSideNav"),Bo.prototype),$o(Bo.prototype,"toggleFilter",[Fo],Object.getOwnPropertyDescriptor(Bo.prototype,"toggleFilter"),Bo.prototype),$o(Bo.prototype,"toggleSingleFilter",[Lo],Object.getOwnPropertyDescriptor(Bo.prototype,"toggleSingleFilter"),Bo.prototype),$o(Bo.prototype,"setShowHooks",[Uo],Object.getOwnPropertyDescriptor(Bo.prototype,"setShowHooks"),Bo.prototype),$o(Bo.prototype,"toggleIsLoading",[ge.d],Object.getOwnPropertyDescriptor(Bo.prototype,"toggleIsLoading"),Bo.prototype),Bo);pr.a.registerLanguage("javascript",n(318)),pr.a.registerLanguage("diff",n(319));var Go=document.querySelector("body"),Xo=new Qo(JSON.parse(Go.getAttribute("data-raw")),JSON.parse(Go.getAttribute("data-config")));Go.removeAttribute("data-raw"),Go.removeAttribute("data-config"),window.marge=Xo,a.a.render(o.a.createElement(Ln,{store:Xo}),document.getElementById("report"))}]);
\ No newline at end of file
diff --git a/sandbox/oauth-example/mochawesome-report/assets/app.js.LICENSE.txt b/sandbox/oauth-example/mochawesome-report/assets/app.js.LICENSE.txt
new file mode 100644
index 0000000000..f83dc9a458
--- /dev/null
+++ b/sandbox/oauth-example/mochawesome-report/assets/app.js.LICENSE.txt
@@ -0,0 +1,55 @@
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+
+/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. 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
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+/*! mochawesome-report-generator 6.2.0 | https://github.com/adamgruber/mochawesome-report-generator */
+
+/** @license React v0.19.1
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff b/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff
new file mode 100644
index 0000000000..966d1114a9
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff2 b/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff2
new file mode 100644
index 0000000000..3421bbfbab
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-light-webfont.woff2 differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff b/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff
new file mode 100644
index 0000000000..38aebe506e
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff2 b/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff2
new file mode 100644
index 0000000000..6b22807f64
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-medium-webfont.woff2 differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff b/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff
new file mode 100644
index 0000000000..d0890af211
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff differ
diff --git a/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff2 b/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff2
new file mode 100644
index 0000000000..c0adbed786
Binary files /dev/null and b/sandbox/oauth-example/mochawesome-report/assets/roboto-regular-webfont.woff2 differ
diff --git a/sandbox/oauth-example/mochawesome-report/mochawesome.html b/sandbox/oauth-example/mochawesome-report/mochawesome.html
new file mode 100644
index 0000000000..004cfd56c4
--- /dev/null
+++ b/sandbox/oauth-example/mochawesome-report/mochawesome.html
@@ -0,0 +1,2 @@
+
+Mochawesome Report
\ No newline at end of file
diff --git a/sandbox/oauth-example/mochawesome-report/mochawesome.json b/sandbox/oauth-example/mochawesome-report/mochawesome.json
new file mode 100644
index 0000000000..5173364f05
--- /dev/null
+++ b/sandbox/oauth-example/mochawesome-report/mochawesome.json
@@ -0,0 +1,234 @@
+{
+ "stats": {
+ "suites": 2,
+ "tests": 3,
+ "passes": 3,
+ "pending": 0,
+ "failures": 0,
+ "start": "2025-01-23T11:42:22.083Z",
+ "end": "2025-01-23T11:42:22.280Z",
+ "duration": 197,
+ "testsRegistered": 3,
+ "passPercent": 100,
+ "pendingPercent": 0,
+ "other": 0,
+ "hasOther": false,
+ "skipped": 0,
+ "hasSkipped": false
+ },
+ "results": [
+ {
+ "uuid": "3409a82a-d36e-461c-ba58-bdbd8e96f2d3",
+ "title": "",
+ "fullFile": "",
+ "file": "",
+ "beforeHooks": [],
+ "afterHooks": [],
+ "tests": [],
+ "suites": [
+ {
+ "uuid": "2e6e943e-f8ae-4a0d-b414-27acb24d9860",
+ "title": "HomePage",
+ "fullFile": "/home/sunny.tyagi/Desktop/loopback4-microservice-catalog/sandbox/oauth-example/dist/__tests__/acceptance/home-page.acceptance.js",
+ "file": "/dist/__tests__/acceptance/home-page.acceptance.js",
+ "beforeHooks": [
+ {
+ "title": "\"before all\" hook: setupApplication in \"HomePage\"",
+ "fullTitle": "HomePage \"before all\" hook: setupApplication in \"HomePage\"",
+ "timedOut": false,
+ "duration": 114,
+ "state": null,
+ "speed": null,
+ "pass": false,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "({ app, client } = await (0, test_helper_1.setupApplication)());",
+ "err": {},
+ "uuid": "20293c03-b990-490e-9efc-6d354d893fd0",
+ "parentUUID": "2e6e943e-f8ae-4a0d-b414-27acb24d9860",
+ "isHook": true,
+ "skipped": false
+ }
+ ],
+ "afterHooks": [
+ {
+ "title": "\"after all\" hook in \"HomePage\"",
+ "fullTitle": "HomePage \"after all\" hook in \"HomePage\"",
+ "timedOut": false,
+ "duration": 1,
+ "state": null,
+ "speed": null,
+ "pass": false,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "await app.stop();",
+ "err": {},
+ "uuid": "2b2923de-19ba-4662-89c3-0ae694864f95",
+ "parentUUID": "2e6e943e-f8ae-4a0d-b414-27acb24d9860",
+ "isHook": true,
+ "skipped": false
+ }
+ ],
+ "tests": [
+ {
+ "title": "exposes a default home page",
+ "fullTitle": "HomePage exposes a default home page",
+ "timedOut": false,
+ "duration": 33,
+ "state": "passed",
+ "speed": "fast",
+ "pass": true,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "await client\n .get('/')\n .expect(200)\n .expect('Content-Type', /text\\/html/);",
+ "err": {},
+ "uuid": "23eb12e9-5ce9-440b-8917-cdc28b8f84fc",
+ "parentUUID": "2e6e943e-f8ae-4a0d-b414-27acb24d9860",
+ "isHook": false,
+ "skipped": false
+ },
+ {
+ "title": "exposes self-hosted explorer",
+ "fullTitle": "HomePage exposes self-hosted explorer",
+ "timedOut": false,
+ "duration": 7,
+ "state": "passed",
+ "speed": "fast",
+ "pass": true,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "await client\n .get('/explorer/')\n .expect(200)\n .expect('Content-Type', /text\\/html/)\n .expect(/LoopBack API Explorer/);",
+ "err": {},
+ "uuid": "34665c34-d600-4177-a634-d2dd8055d23a",
+ "parentUUID": "2e6e943e-f8ae-4a0d-b414-27acb24d9860",
+ "isHook": false,
+ "skipped": false
+ }
+ ],
+ "suites": [],
+ "passes": [
+ "23eb12e9-5ce9-440b-8917-cdc28b8f84fc",
+ "34665c34-d600-4177-a634-d2dd8055d23a"
+ ],
+ "failures": [],
+ "pending": [],
+ "skipped": [],
+ "duration": 40,
+ "root": false,
+ "rootEmpty": false,
+ "_timeout": 2000
+ },
+ {
+ "uuid": "22276620-3fd2-42a6-82ad-fad0f5518100",
+ "title": "PingController",
+ "fullFile": "/home/sunny.tyagi/Desktop/loopback4-microservice-catalog/sandbox/oauth-example/dist/__tests__/acceptance/ping.controller.acceptance.js",
+ "file": "/dist/__tests__/acceptance/ping.controller.acceptance.js",
+ "beforeHooks": [
+ {
+ "title": "\"before all\" hook: setupApplication in \"PingController\"",
+ "fullTitle": "PingController \"before all\" hook: setupApplication in \"PingController\"",
+ "timedOut": false,
+ "duration": 23,
+ "state": null,
+ "speed": null,
+ "pass": false,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "({ app, client } = await (0, test_helper_1.setupApplication)());",
+ "err": {},
+ "uuid": "2551e451-d66c-4bc2-a6a6-631c43077591",
+ "parentUUID": "22276620-3fd2-42a6-82ad-fad0f5518100",
+ "isHook": true,
+ "skipped": false
+ }
+ ],
+ "afterHooks": [
+ {
+ "title": "\"after all\" hook in \"PingController\"",
+ "fullTitle": "PingController \"after all\" hook in \"PingController\"",
+ "timedOut": false,
+ "duration": 0,
+ "state": null,
+ "speed": null,
+ "pass": false,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "await app.stop();",
+ "err": {},
+ "uuid": "7f785598-ae44-43e2-bd37-2060c7c4841d",
+ "parentUUID": "22276620-3fd2-42a6-82ad-fad0f5518100",
+ "isHook": true,
+ "skipped": false
+ }
+ ],
+ "tests": [
+ {
+ "title": "invokes GET /ping",
+ "fullTitle": "PingController invokes GET /ping",
+ "timedOut": false,
+ "duration": 12,
+ "state": "passed",
+ "speed": "fast",
+ "pass": true,
+ "fail": false,
+ "pending": false,
+ "context": null,
+ "code": "const res = await client.get('/ping?msg=world').expect(200);\n(0, testlab_1.expect)(res.body).to.containEql({ greeting: 'Hello from LoopBack' });",
+ "err": {},
+ "uuid": "6b35846f-7023-4ae8-a7db-a2f6a10885fe",
+ "parentUUID": "22276620-3fd2-42a6-82ad-fad0f5518100",
+ "isHook": false,
+ "skipped": false
+ }
+ ],
+ "suites": [],
+ "passes": [
+ "6b35846f-7023-4ae8-a7db-a2f6a10885fe"
+ ],
+ "failures": [],
+ "pending": [],
+ "skipped": [],
+ "duration": 12,
+ "root": false,
+ "rootEmpty": false,
+ "_timeout": 2000
+ }
+ ],
+ "passes": [],
+ "failures": [],
+ "pending": [],
+ "skipped": [],
+ "duration": 0,
+ "root": true,
+ "rootEmpty": true,
+ "_timeout": 2000
+ }
+ ],
+ "meta": {
+ "mocha": {
+ "version": "11.0.1"
+ },
+ "mochawesome": {
+ "options": {
+ "quiet": false,
+ "reportFilename": "mochawesome",
+ "saveHtml": true,
+ "saveJson": true,
+ "consoleReporter": "spec",
+ "useInlineDiffs": false,
+ "code": true
+ },
+ "version": "7.1.3"
+ },
+ "marge": {
+ "options": null,
+ "version": "6.2.0"
+ }
+ }
+}
\ No newline at end of file
diff --git a/sandbox/oauth-example/package.json b/sandbox/oauth-example/package.json
index df15b94e0e..babe5094d8 100644
--- a/sandbox/oauth-example/package.json
+++ b/sandbox/oauth-example/package.json
@@ -1,16 +1,16 @@
{
- "name": "@sourceloop/oauth-example-api",
- "version": "0.5.13",
- "description": "oauth example.",
+ "name": "o-auth",
+ "version": "0.0.1",
+ "description": "auth",
"keywords": [
- "loopback-application",
+ "loopback-microservice",
"loopback"
],
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"engines": {
- "node": "18 || 20"
+ "node": ">=18"
},
"scripts": {
"build": "lb-tsc",
@@ -23,28 +23,34 @@
"eslint": "eslint --report-unused-disable-directives .",
"eslint:fix": "npm run eslint -- --fix",
"pretest": "npm run rebuild",
- "test": "echo 'No Tests'",
- "posttest": "npm run lint",
- "test:dev": "lb-mocha --allow-console-logs dist/__tests__/**/*.js && npm run posttest",
- "docker:build": "docker build -t auth-service .",
- "docker:run": "docker run -p 3000:3000 -d auth-service",
+ "test": "lb-mocha --allow-console-logs \"dist/__tests__\"",
+ "test:dev": "lb-mocha --allow-console-logs dist/__tests__/**/*.js",
+ "docker:build": "DOCKER_BUILDKIT=1 sudo docker build --build-arg NR_ENABLED=$NR_ENABLED_VALUE --build-arg FROM_FOLDER=services --build-arg SERVICE_NAME=authentication-service -t $IMAGE_REPO_NAME/$npm_package_name:$npm_package_version ../../. -f ./Dockerfile",
+ "docker:run": "docker run -p 3000:3000 -d auth",
+ "symlink-resolver": "symlink-resolver",
+ "resolve-links": "npm run symlink-resolver build ./node_modules/@local",
"premigrate": "npm run build",
"migrate": "node ./dist/migrate",
"preopenapi-spec": "npm run build",
"openapi-spec": "node ./dist/openapi-spec",
- "prestart": "npm run rebuild",
- "start": "node -r source-map-support/register .",
+ "prestart": "npm run clean && npm run openapi-spec",
+ "start": "node -r ./dist/opentelemetry-registry.js -r source-map-support/register .",
+ "dev": "nodemon --watch src -e ts --exec \"npm run start\"",
"clean": "lb-clean dist *.tsbuildinfo .eslintcache",
"rebuild": "npm run clean && npm run build",
- "db:migrate": "./node_modules/db-migrate/bin/db-migrate up --config './migrations/database.json'",
- "db:migrate:down": "./node_modules/db-migrate/bin/db-migrate down --config './migrations/database.json'",
- "db:migrate:reset": "./node_modules/db-migrate/bin/db-migrate reset --config './migrations/database.json'"
+ "docker:push": " docker push $IMAGE_REPO_NAME/$npm_package_name:$npm_package_version",
+ "docker:build:dev": "DOCKER_BUILDKIT=1 sudo docker build --build-arg NR_ENABLED=$NR_ENABLED_VALUE --build-arg FROM_FOLDER=services --build-arg SERVICE_NAME=authentication-service -t $IMAGE_REPO_NAME/$npm_package_name:$npm_package_version ../../. -f ./Dockerfile",
+ "docker:push:dev": " docker push $IMAGE_REPO_NAME/$npm_package_name:$npm_package_version",
+ "coverage": "nyc npm run test",
+ "db:migrate": "../../node_modules/db-migrate/bin/db-migrate up --config './migrations/database.json'",
+ "db:migrate:down": "../../node_modules/db-migrate/bin/db-migrate down --config './migrations/database.json'",
+ "db:migrate:reset": "../../node_modules/db-migrate/bin/db-migrate reset --config './migrations/database.json'"
},
"repository": {
"type": "git",
"url": ""
},
- "author": "Ankur ",
+ "author": "Tyagi-Sunny",
"license": "MIT",
"files": [
"README.md",
@@ -59,23 +65,40 @@
"@loopback/rest": "^14.0.9",
"@loopback/rest-explorer": "^7.0.9",
"@loopback/service-proxy": "^7.0.9",
- "@sourceloop/authentication-service": "^20.0.2",
- "bcrypt": "^5.0.1",
+ "@loopback/openapi-v3": "^10.0.9",
+ "@loopback/context": "^7.0.9",
+ "@sourceloop/core": "^15.0.2",
+ "loopback4-authentication": "^12.1.1",
+ "loopback4-authorization": "^7.0.3",
+ "swagger-stats": "^0.99.5",
+ "@opentelemetry/exporter-jaeger": "^1.15.0",
+ "@opentelemetry/sdk-trace-node": "^1.15.0",
+ "@opentelemetry/plugin-dns": "^0.15.0",
+ "@opentelemetry/plugin-http": "^0.18.2",
+ "@opentelemetry/plugin-https": "^0.18.2",
+ "@opentelemetry/plugin-pg": "^0.15.0",
+ "@opentelemetry/plugin-pg-pool": "^0.15.0",
+ "@opentelemetry/sdk-trace-base": "^1.15.0",
"db-migrate": "^1.0.0-beta.21",
"db-migrate-pg": "^1.3.0",
+ "symlink-resolver": "0.2.1",
"dotenv": "^16.4.5",
"dotenv-extended": "^2.9.0",
"loopback-connector-postgresql": "^7.1.8",
- "tslib": "^2.6.2"
+ "loopback-connector-kv-redis": "^4.0.0",
+ "tslib": "^2.6.2",
+ "@sourceloop/authentication-service": "^20.0.2"
},
"devDependencies": {
"@loopback/build": "^11.0.8",
- "@loopback/eslint-config": "^15.0.4",
+ "source-map-support": "^0.5.21",
+ "nodemon": "^2.0.21",
+ "nyc": "^15.1.0",
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
"@loopback/testlab": "^7.0.8",
- "@types/bcrypt": "^5.0.0",
"@types/node": "^20.12.7",
+ "@loopback/eslint-config": "^15.0.4",
"eslint": "^8.57.0",
- "source-map-support": "^0.5.21",
"typescript": "^5.4.5"
}
-}
+}
\ No newline at end of file
diff --git a/sandbox/oauth-example/public/index.html b/sandbox/oauth-example/public/index.html
index 3e9f36f599..6ddfab83e2 100644
--- a/sandbox/oauth-example/public/index.html
+++ b/sandbox/oauth-example/public/index.html
@@ -1,7 +1,7 @@
- oauth example
+ auth
@@ -80,18 +80,22 @@
-
auth-service
+
auth
Version 1.0.0
-
-
+
+
+
diff --git a/sandbox/oauth-example/src/__tests__/acceptance/home-page.acceptance.ts b/sandbox/oauth-example/src/__tests__/acceptance/home-page.acceptance.ts
index 1ffdf417f0..e56145a78c 100644
--- a/sandbox/oauth-example/src/__tests__/acceptance/home-page.acceptance.ts
+++ b/sandbox/oauth-example/src/__tests__/acceptance/home-page.acceptance.ts
@@ -1,13 +1,9 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {Client} from '@loopback/testlab';
-import {AuthServiceApplication} from '../..';
+import {AuthApplication} from '../..';
import {setupApplication} from './test-helper';
describe('HomePage', () => {
- let app: AuthServiceApplication;
+ let app: AuthApplication;
let client: Client;
before('setupApplication', async () => {
diff --git a/sandbox/oauth-example/src/__tests__/acceptance/ping.controller.acceptance.ts b/sandbox/oauth-example/src/__tests__/acceptance/ping.controller.acceptance.ts
index 9f31316af9..5353fb9b88 100644
--- a/sandbox/oauth-example/src/__tests__/acceptance/ping.controller.acceptance.ts
+++ b/sandbox/oauth-example/src/__tests__/acceptance/ping.controller.acceptance.ts
@@ -1,13 +1,9 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {Client, expect} from '@loopback/testlab';
-import {AuthServiceApplication} from '../..';
+import {AuthApplication} from '../..';
import {setupApplication} from './test-helper';
describe('PingController', () => {
- let app: AuthServiceApplication;
+ let app: AuthApplication;
let client: Client;
before('setupApplication', async () => {
diff --git a/sandbox/oauth-example/src/__tests__/acceptance/test-helper.ts b/sandbox/oauth-example/src/__tests__/acceptance/test-helper.ts
index be0b911a79..59af3661c4 100644
--- a/sandbox/oauth-example/src/__tests__/acceptance/test-helper.ts
+++ b/sandbox/oauth-example/src/__tests__/acceptance/test-helper.ts
@@ -1,13 +1,9 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {
Client,
createRestAppClient,
givenHttpServerConfig,
} from '@loopback/testlab';
-import {AuthServiceApplication} from '../..';
+import {AuthApplication} from '../..';
export async function setupApplication(): Promise {
const restConfig = givenHttpServerConfig({
@@ -17,11 +13,22 @@ export async function setupApplication(): Promise {
// host: process.env.HOST,
// port: +process.env.PORT,
});
+ setUpEnv();
- const app = new AuthServiceApplication({
+ const app = new AuthApplication({
rest: restConfig,
});
+ app.bind('datasources.config.auth').to({
+ name: 'auth',
+ connector: 'memory',
+ });
+
+ app.bind(`datasources.config.${process.env.REDIS_NAME}`).to({
+ name: process.env.REDIS_NAME,
+ connector: 'kv-memory',
+ });
+
await app.boot();
await app.start();
@@ -30,7 +37,15 @@ export async function setupApplication(): Promise {
return {app, client};
}
+function setUpEnv() {
+ process.env.NODE_ENV = 'test';
+ process.env.ENABLE_TRACING = '0';
+ process.env.ENABLE_OBF = '0';
+ process.env.REDIS_NAME = 'redis';
+ process.env.HOST = '127.0.0.1';
+}
+
export interface AppWithClient {
- app: AuthServiceApplication;
+ app: AuthApplication;
client: Client;
}
diff --git a/sandbox/oauth-example/src/application.ts b/sandbox/oauth-example/src/application.ts
index 7b716c523e..3c4250854a 100644
--- a/sandbox/oauth-example/src/application.ts
+++ b/sandbox/oauth-example/src/application.ts
@@ -1,7 +1,3 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {BootMixin} from '@loopback/boot';
import {ApplicationConfig} from '@loopback/core';
import {RepositoryMixin} from '@loopback/repository';
@@ -13,70 +9,109 @@ import {
import {ServiceMixin} from '@loopback/service-proxy';
import {
AuthenticationServiceComponent,
+ AuthServiceBindings,
SignUpBindings,
} from '@sourceloop/authentication-service';
-import {Strategies} from 'loopback4-authentication';
-import {SamlStrategyFactoryProvider} from 'loopback4-authentication/SAML';
+import {
+ BearerVerifierBindings,
+ BearerVerifierComponent,
+ BearerVerifierConfig,
+ BearerVerifierType,
+ SECURITY_SCHEME_SPEC,
+ ServiceSequence,
+ SFCoreBindings,
+} from '@sourceloop/core';
+import * as dotenv from 'dotenv';
+import * as dotenvExt from 'dotenv-extended';
+import {AuthenticationComponent, Strategies} from 'loopback4-authentication';
import {GoogleAuthStrategyFactoryProvider} from 'loopback4-authentication/passport-google-oauth2';
-import {LocalPasswordStrategyFactoryProvider} from 'loopback4-authentication/passport-local';
-import path from 'path';
import {
- AzureAdSignupProvider,
- FacebookOauth2SignupProvider,
- GoogleOauth2SignupProvider,
- SamlVerifyProvider,
-} from './providers';
-import {SamlSignupProvider} from './providers/saml-signup.provider';
-import {MySequence} from './sequence';
+ AuthorizationBindings,
+ AuthorizationComponent,
+} from 'loopback4-authorization';
+import path from 'path';
+import * as openapi from './openapi.json';
+import {GoogleOauth2SignupProvider} from './providers';
export {ApplicationConfig};
-export class AuthServiceApplication extends BootMixin(
+export class AuthApplication extends BootMixin(
ServiceMixin(RepositoryMixin(RestApplication)),
) {
constructor(options: ApplicationConfig = {}) {
+ const port = 3000;
+ dotenv.config();
+ dotenvExt.load({
+ schema: '.env.example',
+ errorOnMissing: process.env.NODE_ENV !== 'test',
+ includeProcessEnv: true,
+ });
+ options.rest = options.rest ?? {};
+ options.rest.basePath = process.env.BASE_PATH ?? '';
+ options.rest.port = +(process.env.PORT ?? port);
+ options.rest.host = process.env.HOST;
+ options.rest.openApiSpec = {
+ endpointMapping: {
+ [`${options.rest.basePath}/openapi.json`]: {
+ version: '3.0.0',
+ format: 'json',
+ },
+ },
+ };
+
super(options);
- // Set up the custom sequence
- this.sequence(MySequence);
+ // To check if monitoring is enabled from env or not
+ const enableObf = !!+(process.env.ENABLE_OBF ?? 0);
+ // To check if authorization is enabled for swagger stats or not
+ const authentication = !!(
+ process.env.SWAGGER_USER && process.env.SWAGGER_PASSWORD
+ );
+ const obj = {
+ enableObf,
+ obfPath: process.env.OBF_PATH ?? '/obf',
+ openapiSpec: openapi,
+ authentication: authentication,
+ swaggerUsername: process.env.SWAGGER_USER,
+ swaggerPassword: process.env.SWAGGER_PASSWORD,
+ };
+ this.bind(SFCoreBindings.config).to(obj);
- // Set up default home page
- this.static('/', path.join(__dirname, '../public'));
+ // Set up the custom sequence
+ this.sequence(ServiceSequence);
- // Customize @loopback/rest-explorer configuration here
- this.configure(RestExplorerBindings.COMPONENT).to({
- path: '/explorer',
+ // Add authentication component
+ this.component(AuthenticationComponent);
+ this.bind(AuthServiceBindings.Config).to({
+ useSymmetricEncryption: true,
});
- this.component(RestExplorerComponent);
-
this.component(AuthenticationServiceComponent);
-
- this.bind(Strategies.Passport.LOCAL_STRATEGY_FACTORY.key).toProvider(
- LocalPasswordStrategyFactoryProvider,
- );
-
this.bind(SignUpBindings.GOOGLE_SIGN_UP_PROVIDER).toProvider(
GoogleOauth2SignupProvider,
);
- this.bind(
- Strategies.Passport.GOOGLE_OAUTH2_STRATEGY_FACTORY.key,
- ).toProvider(GoogleAuthStrategyFactoryProvider);
- this.bind(SignUpBindings.FACEBOOK_SIGN_UP_PROVIDER).toProvider(
- FacebookOauth2SignupProvider,
- );
- this.bind(SignUpBindings.AZURE_AD_SIGN_UP_PROVIDER).toProvider(
- AzureAdSignupProvider,
+ this.bind(Strategies.Passport.GOOGLE_OAUTH2_STRATEGY_FACTORY).toProvider(
+ GoogleAuthStrategyFactoryProvider,
);
+ // Add bearer verifier component
+ this.bind(BearerVerifierBindings.Config).to({
+ type: BearerVerifierType.service,
+ } as BearerVerifierConfig);
+ this.component(BearerVerifierComponent);
+ // Add authorization component
+ this.bind(AuthorizationBindings.CONFIG).to({
+ allowAlwaysPaths: ['/explorer', '/openapi.json'],
+ });
+ this.component(AuthorizationComponent);
- this.bind(SignUpBindings.SAML_SIGN_UP_PROVIDER).toProvider(
- SamlSignupProvider,
- );
+ // Set up default home page
+ this.static('/', path.join(__dirname, '../public'));
- this.bind(Strategies.Passport.SAML_VERIFIER).toProvider(SamlVerifyProvider);
+ // Customize @loopback/rest-explorer configuration here
+ this.configure(RestExplorerBindings.COMPONENT).to({
+ path: '/explorer',
+ });
- this.bind(Strategies.Passport.SAML_STRATEGY_FACTORY.key).toProvider(
- SamlStrategyFactoryProvider,
- );
+ this.component(RestExplorerComponent);
this.projectRoot = __dirname;
// Customize @loopback/boot Booter Conventions here
@@ -88,5 +123,18 @@ export class AuthServiceApplication extends BootMixin(
nested: true,
},
};
+
+ this.api({
+ openapi: '3.0.0',
+ info: {
+ title: 'auth',
+ version: '1.0.0',
+ },
+ paths: {},
+ components: {
+ securitySchemes: SECURITY_SCHEME_SPEC,
+ },
+ servers: [{url: '/'}],
+ });
}
}
diff --git a/sandbox/oauth-example/src/controllers/home-page.controller.ts b/sandbox/oauth-example/src/controllers/home-page.controller.ts
new file mode 100644
index 0000000000..4e6f52513c
--- /dev/null
+++ b/sandbox/oauth-example/src/controllers/home-page.controller.ts
@@ -0,0 +1,39 @@
+import {get} from '@loopback/openapi-v3';
+import * as fs from 'fs';
+import * as path from 'path';
+import {inject} from '@loopback/context';
+import {RestBindings, Response} from '@loopback/rest';
+import {authorize} from 'loopback4-authorization';
+import {STATUS_CODE} from '@sourceloop/core';
+
+export class HomePageController {
+ private readonly html: string;
+ constructor(
+ @inject(RestBindings.Http.RESPONSE)
+ private readonly response: Response,
+ ) {
+ this.html = fs.readFileSync(
+ path.join(__dirname, '../../public/index.html'),
+ 'utf-8',
+ );
+ // Replace base path placeholder from env
+ this.html = this.html.replace(
+ /\$\{basePath\}/g,
+ process.env.BASE_PATH ?? '',
+ );
+ }
+
+ @authorize({permissions: ['*']})
+ @get('/', {
+ responses: {
+ [STATUS_CODE.OK]: {
+ description: 'Home Page',
+ content: {'text/html': {schema: {type: 'string'}}},
+ },
+ },
+ })
+ homePage() {
+ this.response.status(STATUS_CODE.OK).contentType('html').send(this.html);
+ return this.response;
+ }
+}
diff --git a/sandbox/oauth-example/src/controllers/index.ts b/sandbox/oauth-example/src/controllers/index.ts
index 76abc8e2f1..d20736dff8 100644
--- a/sandbox/oauth-example/src/controllers/index.ts
+++ b/sandbox/oauth-example/src/controllers/index.ts
@@ -1,5 +1,2 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
export * from './ping.controller';
+export * from './home-page.controller';
diff --git a/sandbox/oauth-example/src/controllers/ping.controller.ts b/sandbox/oauth-example/src/controllers/ping.controller.ts
index 65cf734a32..56b0d46398 100644
--- a/sandbox/oauth-example/src/controllers/ping.controller.ts
+++ b/sandbox/oauth-example/src/controllers/ping.controller.ts
@@ -1,20 +1,11 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {inject} from '@loopback/core';
-import {
- get,
- Request,
- response,
- ResponseObject,
- RestBindings,
-} from '@loopback/rest';
+import {Request, RestBindings, get, ResponseObject} from '@loopback/rest';
+import {authorize} from 'loopback4-authorization';
+import {STATUS_CODE} from '@sourceloop/core';
/**
* OpenAPI response for ping()
*/
-const statusCode = 200;
const PING_RESPONSE: ResponseObject = {
description: 'Ping Response',
content: {
@@ -48,8 +39,12 @@ export class PingController {
) {}
// Map to `GET /ping`
- @get('/ping')
- @response(statusCode, PING_RESPONSE)
+ @authorize({permissions: ['*']})
+ @get('/ping', {
+ responses: {
+ [STATUS_CODE.OK]: PING_RESPONSE,
+ },
+ })
ping(): object {
// Reply with a greeting, the current time, the url, and request headers
return {
diff --git a/sandbox/oauth-example/src/datasources/db.datasource.ts b/sandbox/oauth-example/src/datasources/auth.datasource.ts
similarity index 57%
rename from sandbox/oauth-example/src/datasources/db.datasource.ts
rename to sandbox/oauth-example/src/datasources/auth.datasource.ts
index b92709075d..5a88844fb5 100644
--- a/sandbox/oauth-example/src/datasources/db.datasource.ts
+++ b/sandbox/oauth-example/src/datasources/auth.datasource.ts
@@ -1,20 +1,20 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
import {juggler} from '@loopback/repository';
import {AuthDbSourceName} from '@sourceloop/authentication-service';
+const DEFAULT_MAX_CONNECTIONS = 25;
+const DEFAULT_DB_IDLE_TIMEOUT_MILLIS = 60000;
+const DEFAULT_DB_CONNECTION_TIMEOUT_MILLIS = 2000;
+
const config = {
- name: AuthDbSourceName,
+ name: 'auth',
connector: 'postgresql',
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
+ schema: process.env.DB_SCHEMA,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
- schema: process.env.DB_SCHEMA,
};
// Observe application's life cycle to disconnect the datasource when
@@ -22,17 +22,33 @@ const config = {
// gracefully. The `stop()` method is inherited from `juggler.DataSource`.
// Learn more at https://loopback.io/doc/en/lb4/Life-cycle.html
@lifeCycleObserver('datasource')
-export class DbDataSource
+export class AuthDataSource
extends juggler.DataSource
implements LifeCycleObserver
{
static readonly dataSourceName = AuthDbSourceName;
+
static readonly defaultConfig = config;
constructor(
- @inject('datasources.config.db', {optional: true})
+ @inject('datasources.config.auth', {optional: true})
dsConfig: object = config,
) {
+ if (!!+(process.env.ENABLE_DB_CONNECTION_POOLING ?? 0)) {
+ const dbPool = {
+ max: +(process.env.DB_MAX_CONNECTIONS ?? DEFAULT_MAX_CONNECTIONS),
+ idleTimeoutMillis: +(
+ process.env.DB_IDLE_TIMEOUT_MILLIS ?? DEFAULT_DB_IDLE_TIMEOUT_MILLIS
+ ),
+ connectionTimeoutMillis: +(
+ process.env.DB_CONNECTION_TIMEOUT_MILLIS ??
+ DEFAULT_DB_CONNECTION_TIMEOUT_MILLIS
+ ),
+ };
+
+ dsConfig = {...dsConfig, ...dbPool};
+ }
+
super(dsConfig);
}
}
diff --git a/sandbox/oauth-example/src/datasources/index.ts b/sandbox/oauth-example/src/datasources/index.ts
index 0a6f13b851..d3aaddf849 100644
--- a/sandbox/oauth-example/src/datasources/index.ts
+++ b/sandbox/oauth-example/src/datasources/index.ts
@@ -1,6 +1,2 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-export * from './db.datasource';
+export * from './auth.datasource';
export * from './redis.datasource';
diff --git a/sandbox/oauth-example/src/datasources/redis.datasource.ts b/sandbox/oauth-example/src/datasources/redis.datasource.ts
index 9c05cc16c1..f590d836e5 100644
--- a/sandbox/oauth-example/src/datasources/redis.datasource.ts
+++ b/sandbox/oauth-example/src/datasources/redis.datasource.ts
@@ -1,19 +1,35 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
-import {juggler} from '@loopback/repository';
+import {AnyObject, juggler} from '@loopback/repository';
import {AuthCacheSourceName} from '@sourceloop/authentication-service';
+import {readFileSync} from 'fs';
const config = {
- name: AuthCacheSourceName,
+ name: process.env.REDIS_NAME,
connector: 'kv-redis',
- url: '',
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD,
- database: process.env.REDIS_DATABASE,
+ db: process.env.REDIS_DATABASE,
+ url: process.env.REDIS_URL,
+ tls:
+ +process.env.REDIS_TLS_ENABLED! ||
+ (process.env.REDIS_TLS_CERT
+ ? {
+ ca: readFileSync(process.env.REDIS_TLS_CERT),
+ }
+ : undefined),
+ sentinels:
+ +process.env.REDIS_HAS_SENTINELS! && process.env.REDIS_SENTINELS
+ ? JSON.parse(process.env.REDIS_SENTINELS)
+ : undefined,
+ sentinelPassword:
+ +process.env.REDIS_HAS_SENTINELS! && process.env.REDIS_SENTINEL_PASSWORD
+ ? process.env.REDIS_SENTINEL_PASSWORD
+ : undefined,
+ role:
+ +process.env.REDIS_HAS_SENTINELS! && process.env.REDIS_SENTINEL_ROLE
+ ? process.env.REDIS_SENTINEL_ROLE
+ : undefined,
};
// Observe application's life cycle to disconnect the datasource when
@@ -29,9 +45,21 @@ export class RedisDataSource
static readonly defaultConfig = config;
constructor(
- @inject('datasources.config.redis', {optional: true})
- dsConfig: object = config,
+ @inject(`datasources.config.${process.env.REDIS_NAME}`, {optional: true})
+ dsConfig: AnyObject = config,
) {
+ if (
+ +process.env.REDIS_HAS_SENTINELS! &&
+ !!process.env.REDIS_SENTINEL_HOST &&
+ !!process.env.REDIS_SENTINEL_PORT
+ ) {
+ dsConfig.sentinels = [
+ {
+ host: process.env.REDIS_SENTINEL_HOST,
+ port: +process.env.REDIS_SENTINEL_PORT,
+ },
+ ];
+ }
super(dsConfig);
}
}
diff --git a/sandbox/oauth-example/src/index.ts b/sandbox/oauth-example/src/index.ts
index dd03ead610..592aa9d4fa 100644
--- a/sandbox/oauth-example/src/index.ts
+++ b/sandbox/oauth-example/src/index.ts
@@ -1,16 +1,11 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import * as dotenv from 'dotenv';
-import {ApplicationConfig, AuthServiceApplication} from './application';
+import {ApplicationConfig, AuthApplication} from './application';
+
export * from './application';
-dotenv.config();
-const port = 3000;
+const PORT = 3000;
export async function main(options: ApplicationConfig = {}) {
- const app = new AuthServiceApplication(options);
+ const app = new AuthApplication(options);
await app.boot();
await app.start();
@@ -25,7 +20,7 @@ if (require.main === module) {
// Run the application
const config = {
rest: {
- port: +(process.env.PORT ?? port),
+ port: +(process.env.PORT ?? PORT),
host: process.env.HOST,
// The `gracePeriodForClose` provides a graceful close for http/https
// servers with keep-alive clients. The default value is `Infinity`
diff --git a/sandbox/oauth-example/src/migrate.ts b/sandbox/oauth-example/src/migrate.ts
deleted file mode 100644
index 384c4e0d35..0000000000
--- a/sandbox/oauth-example/src/migrate.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {AuthServiceApplication} from './application';
-
-export async function migrate(args: string[]) {
- const existingSchema = args.includes('--rebuild') ? 'drop' : 'alter';
- console.log('Migrating schemas (%s existing schema)', existingSchema); //NOSONAR
-
- const app = new AuthServiceApplication();
- await app.boot();
- await app.migrateSchema({existingSchema});
-
- // Connectors usually keep a pool of opened connections,
- // this keeps the process running even after all work is done.
- // We need to exit explicitly.
- process.exit(0);
-}
-
-migrate(process.argv).catch(err => {
- console.error('Cannot migrate database schema', err); //NOSONAR
- process.exit(1);
-});
diff --git a/sandbox/oauth-example/src/models/README.md b/sandbox/oauth-example/src/models/README.md
new file mode 100644
index 0000000000..f5ea972116
--- /dev/null
+++ b/sandbox/oauth-example/src/models/README.md
@@ -0,0 +1,3 @@
+# Models
+
+This directory contains code for models provided by this app.
diff --git a/sandbox/oauth-example/src/openapi-spec.ts b/sandbox/oauth-example/src/openapi-spec.ts
index 8d0b7b4aae..a157c4a819 100644
--- a/sandbox/oauth-example/src/openapi-spec.ts
+++ b/sandbox/oauth-example/src/openapi-spec.ts
@@ -1,29 +1,28 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
import {ApplicationConfig} from '@loopback/core';
-import {AuthServiceApplication} from './application';
+import {AuthApplication} from './application';
-const port = 3000;
-const two = 2;
+const ARGV_INDEX = 2;
+const PORT_NUMBER = 3000;
/**
* Export the OpenAPI spec from the application
*/
async function exportOpenApiSpec(): Promise {
const config: ApplicationConfig = {
rest: {
- port: +(process.env.PORT ?? port),
+ port: +(process.env.PORT ?? PORT_NUMBER),
host: process.env.HOST ?? 'localhost',
},
};
- const outFile = process.argv[two] ?? '';
- const app = new AuthServiceApplication(config);
+ const outFile = process.argv[ARGV_INDEX] ?? './src/openapi.json';
+ const app = new AuthApplication(config);
await app.boot();
await app.exportOpenApiSpec(outFile);
}
-exportOpenApiSpec().catch(err => {
- console.error('Fail to export OpenAPI spec from the application.', err); //NOSONAR
- process.exit(1);
-});
+exportOpenApiSpec()
+ .then(() => {
+ process.exit(0);
+ })
+ .catch(err => {
+ process.exit(1);
+ });
diff --git a/sandbox/oauth-example/src/openapi.json b/sandbox/oauth-example/src/openapi.json
new file mode 100644
index 0000000000..2b15663ddf
--- /dev/null
+++ b/sandbox/oauth-example/src/openapi.json
@@ -0,0 +1,3036 @@
+{
+ "openapi": "3.0.0",
+ "info": {
+ "title": "auth",
+ "version": "1.0.0",
+ "description": "auth",
+ "contact": {
+ "name": "Tyagi-Sunny",
+ "email": "sunny.tyagi@sourcefuse.com"
+ }
+ },
+ "paths": {
+ "/.well-known/openid-configuration": {
+ "get": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "getConfig",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To get the openid configuration",
+ "responses": {
+ "200": {
+ "description": "OpenId Configuration",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "IdentityServerController.getConfig"
+ }
+ },
+ "/active-users/{range}": {
+ "get": {
+ "x-controller-name": "LoginActivityController",
+ "x-operation-name": "getActiveUsers",
+ "tags": [
+ "LoginActivityController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "LoginActivity model instance",
+ "content": {
+ "application/json": {
+ "schema": {}
+ }
+ }
+ }
+ },
+ "description": "\n\n| Permissions |\n| ------- |\n| ViewLoginActivity |\n",
+ "parameters": [
+ {
+ "name": "range",
+ "in": "path",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "startDate",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ {
+ "name": "endDate",
+ "in": "query",
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ {
+ "name": "filter",
+ "in": "query",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ }
+ }
+ ],
+ "operationId": "LoginActivityController.getActiveUsers"
+ }
+ },
+ "/auth/apple-oauth-redirect": {
+ "get": {
+ "x-controller-name": "AppleLoginController",
+ "x-operation-name": "appleCallback",
+ "tags": [
+ "AppleLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Apple Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "AppleLoginController.appleCallback"
+ }
+ },
+ "/auth/auth0": {
+ "post": {
+ "x-controller-name": "Auth0LoginController",
+ "x-operation-name": "postLoginViaAuth0",
+ "tags": [
+ "Auth0LoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for auth0 based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "Auth0LoginController.postLoginViaAuth0"
+ },
+ "get": {
+ "x-controller-name": "Auth0LoginController",
+ "x-operation-name": "loginViaAuth0",
+ "tags": [
+ "Auth0LoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for auth0 based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "client_id",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "client_secret",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "Auth0LoginController.loginViaAuth0"
+ }
+ },
+ "/auth/auth0-auth-redirect": {
+ "get": {
+ "x-controller-name": "Auth0LoginController",
+ "x-operation-name": "auth0Callback",
+ "tags": [
+ "Auth0LoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "Auth0LoginController.auth0Callback"
+ }
+ },
+ "/auth/azure": {
+ "post": {
+ "x-controller-name": "AzureLoginController",
+ "x-operation-name": "postLoginViaAzure",
+ "tags": [
+ "AzureLoginController"
+ ],
+ "description": "POST Call for azure based login",
+ "responses": {
+ "200": {
+ "description": "Azure Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "AzureLoginController.postLoginViaAzure"
+ },
+ "get": {
+ "x-controller-name": "AzureLoginController",
+ "x-operation-name": "getLoginViaAzure",
+ "tags": [
+ "AzureLoginController"
+ ],
+ "description": "POST Call for azure based login",
+ "responses": {
+ "200": {
+ "description": "Azure Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "client_id",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "client_secret",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "AzureLoginController.getLoginViaAzure"
+ }
+ },
+ "/auth/azure-oauth-redirect": {
+ "get": {
+ "x-controller-name": "AzureLoginController",
+ "x-operation-name": "azureCallback",
+ "tags": [
+ "AzureLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Azure Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "session_state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "AzureLoginController.azureCallback"
+ }
+ },
+ "/auth/change-password": {
+ "patch": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "resetPassword",
+ "tags": [
+ "LoginController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "If User password successfully changed."
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ResetPasswordPartial"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.resetPassword"
+ }
+ },
+ "/auth/check-qr-code": {
+ "get": {
+ "x-controller-name": "OtpController",
+ "x-operation-name": "checkQr",
+ "tags": [
+ "OtpController"
+ ],
+ "description": "Returns isGenerated:true if secret_key already exist",
+ "responses": {
+ "200": {
+ "description": "secret_key already exists",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "code",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "clientId",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "OtpController.checkQr"
+ }
+ },
+ "/auth/cognito": {
+ "post": {
+ "x-controller-name": "CognitoLoginController",
+ "x-operation-name": "postLoginViaCognito",
+ "tags": [
+ "CognitoLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for Cognito based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "CognitoLoginController.postLoginViaCognito"
+ },
+ "get": {
+ "x-controller-name": "CognitoLoginController",
+ "x-operation-name": "loginViaCognito",
+ "tags": [
+ "CognitoLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Cognito Token Response (Deprecated: Possible security issue if secret is passed via query params, please use the post endpoint)",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "client_id",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "client_secret",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "CognitoLoginController.loginViaCognito"
+ }
+ },
+ "/auth/cognito-auth-redirect": {
+ "get": {
+ "x-controller-name": "CognitoLoginController",
+ "x-operation-name": "cognitoCallback",
+ "tags": [
+ "CognitoLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Cognito Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "CognitoLoginController.cognitoCallback"
+ }
+ },
+ "/auth/create-qr-code": {
+ "post": {
+ "x-controller-name": "OtpController",
+ "x-operation-name": "createQr",
+ "tags": [
+ "OtpController"
+ ],
+ "description": "Generates a new qrCode for Authenticator App",
+ "responses": {
+ "200": {
+ "description": "qrCode that you can use to generate codes in Authenticator App",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthTokenRequest"
+ }
+ }
+ }
+ },
+ "operationId": "OtpController.createQr"
+ }
+ },
+ "/auth/facebook": {
+ "post": {
+ "x-controller-name": "FacebookLoginController",
+ "x-operation-name": "postLoginViaFacebook",
+ "tags": [
+ "FacebookLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for Facebook based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "FacebookLoginController.postLoginViaFacebook"
+ }
+ },
+ "/auth/facebook-auth-redirect": {
+ "get": {
+ "x-controller-name": "FacebookLoginController",
+ "x-operation-name": "facebookCallback",
+ "tags": [
+ "FacebookLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Facebook Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "FacebookLoginController.facebookCallback"
+ }
+ },
+ "/auth/forget-password": {
+ "post": {
+ "x-controller-name": "ForgetPasswordController",
+ "x-operation-name": "forgetPassword",
+ "tags": [
+ "ForgetPasswordController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Success Response."
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ForgetPasswordDto"
+ }
+ }
+ }
+ },
+ "operationId": "ForgetPasswordController.forgetPassword"
+ }
+ },
+ "/auth/google": {
+ "post": {
+ "x-controller-name": "GoogleLoginController",
+ "x-operation-name": "postLoginViaGoogle",
+ "tags": [
+ "GoogleLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for Google based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "GoogleLoginController.postLoginViaGoogle"
+ },
+ "get": {
+ "x-controller-name": "GoogleLoginController",
+ "x-operation-name": "loginViaGoogle",
+ "tags": [
+ "GoogleLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Google Token Response,\n (Deprecated: Possible security issue if secret is passed via query params,\n please use the post endpoint)",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "client_id",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "client_secret",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "GoogleLoginController.loginViaGoogle"
+ }
+ },
+ "/auth/google-auth-redirect": {
+ "get": {
+ "x-controller-name": "GoogleLoginController",
+ "x-operation-name": "googleCallback",
+ "tags": [
+ "GoogleLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Google Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "GoogleLoginController.googleCallback"
+ }
+ },
+ "/auth/instagram": {
+ "post": {
+ "x-controller-name": "InstagramLoginController",
+ "x-operation-name": "postLoginViaInstagram",
+ "tags": [
+ "InstagramLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for Instagram based login",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "InstagramLoginController.postLoginViaInstagram"
+ }
+ },
+ "/auth/instagram-auth-redirect": {
+ "get": {
+ "x-controller-name": "InstagramLoginController",
+ "x-operation-name": "instagramCallback",
+ "tags": [
+ "InstagramLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Instagram Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "InstagramLoginController.instagramCallback"
+ }
+ },
+ "/auth/keycloak": {
+ "post": {
+ "x-controller-name": "KeycloakLoginController",
+ "x-operation-name": "postLoginViaKeycloak",
+ "tags": [
+ "KeycloakLoginController"
+ ],
+ "description": "POST Call for keycloak based login",
+ "responses": {
+ "200": {
+ "description": "Keycloak Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "KeycloakLoginController.postLoginViaKeycloak"
+ },
+ "get": {
+ "x-controller-name": "KeycloakLoginController",
+ "x-operation-name": "loginViaKeycloak",
+ "tags": [
+ "KeycloakLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Keycloak Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "deprecated": true,
+ "parameters": [
+ {
+ "name": "client_id",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "client_secret",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "KeycloakLoginController.loginViaKeycloak"
+ }
+ },
+ "/auth/keycloak-auth-redirect": {
+ "get": {
+ "x-controller-name": "KeycloakLoginController",
+ "x-operation-name": "keycloakCallback",
+ "tags": [
+ "KeycloakLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Keycloak Redirect Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "code",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "state",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "operationId": "KeycloakLoginController.keycloakCallback"
+ }
+ },
+ "/auth/login": {
+ "post": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "login",
+ "tags": [
+ "LoginController"
+ ],
+ "description": "Gets you the code that will be used for getting token (webapps)",
+ "responses": {
+ "200": {
+ "description": "Auth Code that you can use to generate access and refresh tokens using the POST /auth/token API",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LoginRequest"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.login"
+ }
+ },
+ "/auth/login-token": {
+ "post": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "loginWithClientUser",
+ "tags": [
+ "LoginController"
+ ],
+ "description": "Gets you refresh token and access token in one hit. (mobile app)",
+ "responses": {
+ "200": {
+ "description": "Token Response Model",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "deprecated": true,
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LoginRequest"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.loginWithClientUser"
+ }
+ },
+ "/auth/me": {
+ "get": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "me",
+ "tags": [
+ "LoginController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To get the user details",
+ "responses": {
+ "200": {
+ "description": "User Object",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "LoginController.me"
+ }
+ },
+ "/auth/oauth-apple": {
+ "post": {
+ "x-controller-name": "AppleLoginController",
+ "x-operation-name": "postLoginViaApple",
+ "tags": [
+ "AppleLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "POST Call for Apple based login",
+ "content": {}
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "AppleLoginController.postLoginViaApple"
+ }
+ },
+ "/auth/reset-password": {
+ "patch": {
+ "x-controller-name": "ForgetPasswordController",
+ "x-operation-name": "resetPassword",
+ "tags": [
+ "ForgetPasswordController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "If User password successfully changed."
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ResetPasswordWithClient"
+ }
+ }
+ }
+ },
+ "operationId": "ForgetPasswordController.resetPassword"
+ }
+ },
+ "/auth/saml": {
+ "post": {
+ "x-controller-name": "SamlLoginController",
+ "x-operation-name": "postLoginViaSaml",
+ "tags": [
+ "SamlLoginController"
+ ],
+ "description": "POST Call for saml based login",
+ "responses": {
+ "200": {
+ "description": "Saml Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientAuthRequest"
+ }
+ }
+ }
+ },
+ "operationId": "SamlLoginController.postLoginViaSaml"
+ }
+ },
+ "/auth/saml-redirect": {
+ "post": {
+ "x-controller-name": "SamlLoginController",
+ "x-operation-name": "oktaSamlCallback",
+ "tags": [
+ "SamlLoginController"
+ ],
+ "responses": {
+ "200": {
+ "description": "okta auth callback",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "client",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "SamlLoginController.oktaSamlCallback"
+ }
+ },
+ "/auth/send-otp": {
+ "post": {
+ "x-controller-name": "OtpController",
+ "x-operation-name": "sendOtp",
+ "tags": [
+ "OtpController"
+ ],
+ "description": "Sends OTP",
+ "responses": {
+ "200": {
+ "description": "Sends otp to user",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/OtpSendRequest"
+ }
+ }
+ }
+ },
+ "operationId": "OtpController.sendOtp"
+ }
+ },
+ "/auth/sign-up/create-token": {
+ "post": {
+ "x-controller-name": "SignupRequestController",
+ "x-operation-name": "requestSignup",
+ "tags": [
+ "SignupRequestController"
+ ],
+ "responses": {
+ "204": {
+ "description": "Sucess Response."
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SignupRequestDto"
+ }
+ }
+ }
+ },
+ "operationId": "SignupRequestController.requestSignup"
+ }
+ },
+ "/auth/sign-up/create-user": {
+ "post": {
+ "x-controller-name": "SignupRequestController",
+ "x-operation-name": "signupWithToken",
+ "tags": [
+ "SignupRequestController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Sucess Response.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LocalUserProfileDto"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "description": "",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LocalUserProfileDto"
+ }
+ }
+ }
+ },
+ "operationId": "SignupRequestController.signupWithToken"
+ }
+ },
+ "/auth/sign-up/verify-token": {
+ "get": {
+ "x-controller-name": "SignupRequestController",
+ "x-operation-name": "verifyInviteToken",
+ "tags": [
+ "SignupRequestController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Sucess Response."
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "description": "",
+ "operationId": "SignupRequestController.verifyInviteToken"
+ }
+ },
+ "/auth/switch-token": {
+ "post": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "switchToken",
+ "tags": [
+ "LoginController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To switch the access-token",
+ "responses": {
+ "200": {
+ "description": "Switch access token with the tenant id provided.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthRefreshTokenRequest"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.switchToken"
+ }
+ },
+ "/auth/token": {
+ "post": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "getToken",
+ "tags": [
+ "LoginController"
+ ],
+ "description": "Send the code received from the POST /auth/login api and get refresh token and access token (webapps)",
+ "responses": {
+ "200": {
+ "description": "Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthTokenRequest"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.getToken"
+ }
+ },
+ "/auth/token-refresh": {
+ "post": {
+ "x-controller-name": "LoginController",
+ "x-operation-name": "exchangeToken",
+ "tags": [
+ "LoginController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "Gets you a new access and refresh token once your access token is expired",
+ "responses": {
+ "200": {
+ "description": "New Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "device_id",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthRefreshTokenRequest"
+ }
+ }
+ }
+ },
+ "operationId": "LoginController.exchangeToken"
+ }
+ },
+ "/auth/verify-otp": {
+ "post": {
+ "x-controller-name": "OtpController",
+ "x-operation-name": "verifyOtp",
+ "tags": [
+ "OtpController"
+ ],
+ "description": "Gets you the code that will be used for getting token (webapps)",
+ "responses": {
+ "200": {
+ "description": "Auth Code that you can use to generate access and refresh tokens using the POST /auth/token API",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/OtpLoginRequest"
+ }
+ }
+ }
+ },
+ "operationId": "OtpController.verifyOtp"
+ }
+ },
+ "/auth/verify-reset-password-link": {
+ "get": {
+ "x-controller-name": "ForgetPasswordController",
+ "x-operation-name": "verifyResetPasswordLink",
+ "tags": [
+ "ForgetPasswordController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Check if Token Is Valid and not Expired."
+ }
+ },
+ "description": "",
+ "parameters": [
+ {
+ "name": "token",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "operationId": "ForgetPasswordController.verifyResetPasswordLink"
+ }
+ },
+ "/cognito/logout": {
+ "post": {
+ "x-controller-name": "LogoutController",
+ "x-operation-name": "cognitoLogout",
+ "tags": [
+ "LogoutController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "This API will log out the user from application as well as cognito",
+ "responses": {
+ "200": {
+ "description": "Success Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SuccessResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ },
+ "description": "This is the access token which is required to authenticate user."
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshTokenRequestPartial"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "LogoutController.cognitoLogout"
+ }
+ },
+ "/connect/endsession": {
+ "post": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "logout",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To logout",
+ "responses": {
+ "200": {
+ "description": "Success Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SuccessResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ },
+ "description": "This is the access token which is required to authenticate user."
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthRefreshTokenRequestPartial"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "IdentityServerController.logout"
+ }
+ },
+ "/connect/generate-keys": {
+ "post": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "generateKeys",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "description": "Generate the set of public and private keys",
+ "responses": {
+ "200": {
+ "description": "JWKS Keys"
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "IdentityServerController.generateKeys"
+ }
+ },
+ "/connect/get-keys": {
+ "get": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "getKeys",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "description": "Get the public keys",
+ "responses": {
+ "200": {
+ "description": "JWKS Keys"
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "IdentityServerController.getKeys"
+ }
+ },
+ "/connect/rotate-keys": {
+ "post": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "rotateKeys",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "description": "Generate the set of public and private keys",
+ "responses": {
+ "200": {
+ "description": "JWKS Keys"
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "IdentityServerController.rotateKeys"
+ }
+ },
+ "/connect/token": {
+ "post": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "getToken",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "description": "Send the code received from the POST /auth/login api and get refresh token and access token (webapps)",
+ "responses": {
+ "200": {
+ "description": "Token Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthTokenRequest"
+ }
+ }
+ }
+ },
+ "operationId": "IdentityServerController.getToken"
+ }
+ },
+ "/connect/userinfo": {
+ "get": {
+ "x-controller-name": "IdentityServerController",
+ "x-operation-name": "me",
+ "tags": [
+ "IdentityServerController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To get the user details",
+ "responses": {
+ "200": {
+ "description": "User Object",
+ "content": {}
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "operationId": "IdentityServerController.me"
+ }
+ },
+ "/google/logout": {
+ "post": {
+ "x-controller-name": "LogoutController",
+ "x-operation-name": "googleLogout",
+ "tags": [
+ "LogoutController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "This API will log out the user from application as well as google",
+ "responses": {
+ "200": {
+ "description": "Success Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SuccessResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ },
+ "description": "This is the access token which is required to authenticate user."
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshTokenRequestPartial"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "LogoutController.googleLogout"
+ }
+ },
+ "/keycloak/logout": {
+ "post": {
+ "x-controller-name": "LogoutController",
+ "x-operation-name": "keycloakLogout",
+ "tags": [
+ "LogoutController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "This API will log out the user from application as well as keycloak",
+ "responses": {
+ "200": {
+ "description": "Success Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SuccessResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ },
+ "description": "This is the access token which is required to authenticate user."
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshTokenRequestPartial"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "LogoutController.keycloakLogout"
+ }
+ },
+ "/login-activity/count": {
+ "get": {
+ "x-controller-name": "LoginActivityController",
+ "x-operation-name": "count",
+ "tags": [
+ "LoginActivityController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "LoginActivity model count",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/loopback.Count"
+ }
+ }
+ }
+ }
+ },
+ "description": "\n\n| Permissions |\n| ------- |\n| ViewLoginActivity |\n",
+ "parameters": [
+ {
+ "name": "where",
+ "in": "query",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "title": "login_activity.WhereFilter",
+ "additionalProperties": true,
+ "x-typescript-type": "@loopback/repository#Where"
+ }
+ }
+ }
+ }
+ ],
+ "operationId": "LoginActivityController.count"
+ }
+ },
+ "/login-activity/{id}": {
+ "get": {
+ "x-controller-name": "LoginActivityController",
+ "x-operation-name": "findById",
+ "tags": [
+ "LoginActivityController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "LoginActivity model instance",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/LoginActivityWithRelations"
+ }
+ }
+ }
+ }
+ },
+ "description": "\n\n| Permissions |\n| ------- |\n| ViewLoginActivity |\n",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "filter",
+ "in": "query",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/login_activity.Filter"
+ }
+ }
+ }
+ }
+ ],
+ "operationId": "LoginActivityController.findById"
+ }
+ },
+ "/login-activity": {
+ "get": {
+ "x-controller-name": "LoginActivityController",
+ "x-operation-name": "find",
+ "tags": [
+ "LoginActivityController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Array of LoginActivity model instances",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/LoginActivityWithRelations"
+ }
+ }
+ }
+ }
+ }
+ },
+ "description": "\n\n| Permissions |\n| ------- |\n| ViewLoginActivity |\n",
+ "parameters": [
+ {
+ "name": "filter",
+ "in": "query",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/login_activity.Filter"
+ }
+ }
+ }
+ }
+ ],
+ "operationId": "LoginActivityController.find"
+ }
+ },
+ "/logout": {
+ "post": {
+ "x-controller-name": "LogoutController",
+ "x-operation-name": "logout",
+ "tags": [
+ "LogoutController"
+ ],
+ "security": [
+ {
+ "HTTPBearer": []
+ }
+ ],
+ "description": "To logout",
+ "responses": {
+ "200": {
+ "description": "Success Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SuccessResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "The syntax of the request entity is incorrect."
+ },
+ "401": {
+ "description": "Invalid Credentials."
+ },
+ "404": {
+ "description": "The entity requested does not exist."
+ },
+ "422": {
+ "description": "The syntax of the request entity is incorrect"
+ }
+ },
+ "parameters": [
+ {
+ "name": "Authorization",
+ "in": "header",
+ "schema": {
+ "type": "string"
+ },
+ "description": "This is the access token which is required to authenticate user."
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RefreshTokenRequestPartial"
+ }
+ }
+ },
+ "x-parameter-index": 1
+ },
+ "operationId": "LogoutController.logout"
+ }
+ },
+ "/ping": {
+ "get": {
+ "x-controller-name": "PingController",
+ "x-operation-name": "ping",
+ "tags": [
+ "PingController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Ping Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PingResponse"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "operationId": "PingController.ping"
+ }
+ },
+ "/": {
+ "get": {
+ "x-controller-name": "HomePageController",
+ "x-operation-name": "homePage",
+ "tags": [
+ "HomePageController"
+ ],
+ "responses": {
+ "200": {
+ "description": "Home Page",
+ "content": {
+ "text/html": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "description": "",
+ "operationId": "HomePageController.homePage"
+ }
+ }
+ },
+ "components": {
+ "securitySchemes": {
+ "HTTPBearer": {
+ "type": "http",
+ "scheme": "bearer",
+ "bearerFormat": "JWT"
+ }
+ },
+ "schemas": {
+ "LoginRequest": {
+ "title": "LoginRequest",
+ "type": "object",
+ "description": "This is the signature for login request.",
+ "properties": {
+ "client_id": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "client_secret": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "username": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "password": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ }
+ },
+ "required": [
+ "client_id",
+ "username",
+ "password"
+ ],
+ "additionalProperties": false
+ },
+ "TokenResponse": {
+ "title": "TokenResponse",
+ "type": "object",
+ "description": "This is signature for successful token response.",
+ "properties": {
+ "accessToken": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "refreshToken": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "expires": {
+ "type": "number"
+ },
+ "pubnubToken": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "accessToken",
+ "refreshToken",
+ "expires"
+ ],
+ "additionalProperties": false
+ },
+ "AuthTokenRequest": {
+ "title": "AuthTokenRequest",
+ "type": "object",
+ "description": "This is the signature for requesting the accessToken and refreshToken.",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "clientId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "clientId"
+ ],
+ "additionalProperties": false
+ },
+ "AuthRefreshTokenRequest": {
+ "title": "AuthRefreshTokenRequest",
+ "type": "object",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ },
+ "tenantId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "refreshToken"
+ ],
+ "additionalProperties": false
+ },
+ "ResetPasswordPartial": {
+ "title": "ResetPasswordPartial",
+ "type": "object",
+ "description": "This is a signature for reset password. (tsType: Partial, schemaOptions: { partial: true })",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "password": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "oldPassword": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ResetPassword": {
+ "title": "ResetPassword",
+ "type": "object",
+ "description": "This is a signature for reset password.",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "password": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "oldPassword": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ }
+ },
+ "required": [
+ "refreshToken",
+ "username",
+ "password"
+ ],
+ "additionalProperties": false
+ },
+ "ClientAuthRequest": {
+ "title": "ClientAuthRequest",
+ "type": "object",
+ "description": "This is signature for client authentication request.",
+ "properties": {
+ "client_id": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "client_secret": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ }
+ },
+ "required": [
+ "client_id",
+ "client_secret"
+ ],
+ "additionalProperties": false
+ },
+ "SuccessResponse": {
+ "title": "SuccessResponse",
+ "type": "object",
+ "properties": {
+ "success": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": true
+ },
+ "RefreshTokenRequestPartial": {
+ "title": "RefreshTokenRequestPartial",
+ "type": "object",
+ "description": "(tsType: Partial, schemaOptions: { partial: true })",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "x-typescript-type": "Partial"
+ },
+ "RefreshTokenRequest": {
+ "title": "RefreshTokenRequest",
+ "type": "object",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "refreshToken"
+ ],
+ "additionalProperties": false
+ },
+ "OtpSendRequest": {
+ "title": "OtpSendRequest",
+ "type": "object",
+ "description": "This is the signature for OTP login request.",
+ "properties": {
+ "client_id": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "client_secret": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "key": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ }
+ },
+ "required": [
+ "client_id",
+ "client_secret",
+ "key"
+ ],
+ "additionalProperties": false
+ },
+ "OtpLoginRequest": {
+ "title": "OtpLoginRequest",
+ "type": "object",
+ "description": "This is the signature for OTP login request.",
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "otp": {
+ "type": "string",
+ "description": "This property is supposed to be a string and is a required field"
+ },
+ "clientId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "otp"
+ ],
+ "additionalProperties": false
+ },
+ "AuthUser": {
+ "title": "AuthUser",
+ "type": "object",
+ "description": "This is the signature for authenticated user which holds permissions and role.",
+ "properties": {
+ "deleted": {
+ "type": "boolean"
+ },
+ "deletedOn": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "deletedBy": {
+ "type": "string",
+ "nullable": true
+ },
+ "createdOn": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "modifiedOn": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "modifiedBy": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "firstName": {
+ "type": "string"
+ },
+ "lastName": {
+ "type": "string"
+ },
+ "middleName": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "phone": {
+ "type": "string",
+ "pattern": "^\\+?[1-9]\\d{1,14}$"
+ },
+ "authClientIds": {
+ "type": "string"
+ },
+ "lastLogin": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "photoUrl": {
+ "type": "string"
+ },
+ "designation": {
+ "type": "string"
+ },
+ "dob": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "gender": {
+ "type": "string",
+ "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.",
+ "enum": [
+ "M",
+ "F",
+ "O"
+ ]
+ },
+ "defaultTenantId": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "role": {
+ "type": "string"
+ },
+ "externalAuthToken": {
+ "type": "string"
+ },
+ "deviceInfo": {
+ "type": "object",
+ "description": "This property consists of two optional fields.\n 1. userAgent\n 2. deviceId "
+ },
+ "age": {
+ "type": "number"
+ },
+ "externalRefreshToken": {
+ "type": "string"
+ },
+ "authClientId": {
+ "type": "number"
+ },
+ "userPreferences": {
+ "type": "object"
+ },
+ "tenantId": {
+ "type": "string"
+ },
+ "userTenantId": {
+ "type": "string"
+ },
+ "passwordExpiryTime": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "number",
+ "enum": [
+ 1,
+ 2,
+ 3,
+ 0,
+ 4
+ ]
+ }
+ },
+ "required": [
+ "firstName",
+ "username",
+ "role"
+ ],
+ "additionalProperties": false
+ },
+ "Function": {},
+ "ForgetPasswordDto": {
+ "title": "ForgetPasswordDto",
+ "type": "object",
+ "properties": {
+ "username": {
+ "type": "string"
+ },
+ "client_id": {
+ "type": "string"
+ },
+ "client_secret": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "username",
+ "client_id",
+ "client_secret"
+ ],
+ "additionalProperties": false
+ },
+ "AuthClient": {
+ "title": "AuthClient",
+ "type": "object",
+ "properties": {
+ "deleted": {
+ "type": "boolean"
+ },
+ "deletedOn": {
+ "type": "string",
+ "format": "date-time",
+ "nullable": true
+ },
+ "deletedBy": {
+ "type": "string",
+ "nullable": true
+ },
+ "createdOn": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "modifiedOn": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "createdBy": {
+ "type": "string"
+ },
+ "modifiedBy": {
+ "type": "string"
+ },
+ "id": {
+ "type": "number"
+ },
+ "clientId": {
+ "type": "string"
+ },
+ "clientSecret": {
+ "type": "string"
+ },
+ "secret": {
+ "type": "string",
+ "description": "Value can be a string or a private key."
+ },
+ "redirectUrl": {
+ "type": "string"
+ },
+ "accessTokenExpiration": {
+ "type": "number"
+ },
+ "refreshTokenExpiration": {
+ "type": "number"
+ },
+ "authCodeExpiration": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "clientId",
+ "clientSecret",
+ "secret",
+ "accessTokenExpiration",
+ "refreshTokenExpiration",
+ "authCodeExpiration"
+ ],
+ "additionalProperties": false
+ },
+ "ResetPasswordWithClient": {
+ "title": "ResetPasswordWithClient",
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ },
+ "client_id": {
+ "type": "string"
+ },
+ "client_secret": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "token",
+ "password",
+ "client_id",
+ "client_secret"
+ ],
+ "additionalProperties": false
+ },
+ "SignupRequestDto": {
+ "title": "SignupRequestDto",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object"
+ }
+ },
+ "required": [
+ "email"
+ ],
+ "additionalProperties": false
+ },
+ "LocalUserProfileDto": {
+ "title": "LocalUserProfileDto",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "email",
+ "password"
+ ],
+ "additionalProperties": true
+ },
+ "SignupRequest": {
+ "title": "SignupRequest",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "expiry": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "email"
+ ],
+ "additionalProperties": false
+ },
+ "LoginActivityWithRelations": {
+ "title": "LoginActivityWithRelations",
+ "type": "object",
+ "description": "This is to maintain the daily login activity. (tsType: LoginActivityWithRelations, schemaOptions: { includeRelations: true })",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "actor": {
+ "type": "string"
+ },
+ "tenantId": {
+ "type": "string"
+ },
+ "loginTime": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "tokenPayload": {
+ "type": "string"
+ },
+ "loginType": {
+ "type": "string"
+ },
+ "deviceInfo": {
+ "type": "string"
+ },
+ "ipAddress": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Date": {},
+ "ActiveUsersFilter": {
+ "title": "ActiveUsersFilter",
+ "type": "object",
+ "properties": {
+ "inclusion": {
+ "type": "boolean"
+ },
+ "userIdentity": {
+ "type": "string"
+ },
+ "userIdentifier": {
+ "type": "object"
+ }
+ },
+ "required": [
+ "inclusion",
+ "userIdentity",
+ "userIdentifier"
+ ],
+ "additionalProperties": false
+ },
+ "AuthRefreshTokenRequestPartial": {
+ "title": "AuthRefreshTokenRequestPartial",
+ "type": "object",
+ "description": "(tsType: Partial, schemaOptions: { partial: true })",
+ "properties": {
+ "refreshToken": {
+ "type": "string"
+ },
+ "tenantId": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "x-typescript-type": "Partial"
+ },
+ "loopback.Count": {
+ "type": "object",
+ "title": "loopback.Count",
+ "x-typescript-type": "@loopback/repository#Count",
+ "properties": {
+ "count": {
+ "type": "number"
+ }
+ }
+ },
+ "login_activity.Filter": {
+ "type": "object",
+ "title": "login_activity.Filter",
+ "properties": {
+ "offset": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "limit": {
+ "type": "integer",
+ "minimum": 1,
+ "example": 100
+ },
+ "skip": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "order": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ ]
+ },
+ "where": {
+ "title": "login_activity.WhereFilter",
+ "type": "object",
+ "additionalProperties": true
+ },
+ "fields": {
+ "oneOf": [
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "boolean"
+ },
+ "actor": {
+ "type": "boolean"
+ },
+ "tenantId": {
+ "type": "boolean"
+ },
+ "loginTime": {
+ "type": "boolean"
+ },
+ "tokenPayload": {
+ "type": "boolean"
+ },
+ "loginType": {
+ "type": "boolean"
+ },
+ "deviceInfo": {
+ "type": "boolean"
+ },
+ "ipAddress": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "id",
+ "actor",
+ "tenantId",
+ "loginTime",
+ "tokenPayload",
+ "loginType",
+ "deviceInfo",
+ "ipAddress"
+ ],
+ "example": "id"
+ },
+ "uniqueItems": true
+ }
+ ],
+ "title": "login_activity.Fields"
+ }
+ },
+ "additionalProperties": false,
+ "x-typescript-type": "@loopback/repository#Filter"
+ },
+ "PingResponse": {
+ "type": "object",
+ "title": "PingResponse",
+ "properties": {
+ "greeting": {
+ "type": "string"
+ },
+ "date": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "headers": {
+ "type": "object",
+ "properties": {
+ "Content-Type": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": true
+ }
+ }
+ }
+ }
+ },
+ "servers": [
+ {
+ "url": "/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sandbox/oauth-example/src/opentelemetry-registry.ts b/sandbox/oauth-example/src/opentelemetry-registry.ts
new file mode 100644
index 0000000000..02aef44196
--- /dev/null
+++ b/sandbox/oauth-example/src/opentelemetry-registry.ts
@@ -0,0 +1,31 @@
+import {JaegerExporter} from '@opentelemetry/exporter-jaeger';
+import {NodeTracerProvider} from '@opentelemetry/sdk-trace-node';
+import {
+ BatchSpanProcessor,
+ ConsoleSpanExporter,
+} from '@opentelemetry/sdk-trace-base';
+import * as dotenv from 'dotenv';
+import * as dotenvExt from 'dotenv-extended';
+
+dotenv.config();
+dotenvExt.load({
+ schema: '.env.example',
+ errorOnMissing: true,
+ includeProcessEnv: true,
+});
+
+if (!!+(process.env.ENABLE_TRACING ?? 0)) {
+ const provider = new NodeTracerProvider();
+ const option = {
+ serviceName: process.env.SERVICE_NAME ?? '',
+ tags: [],
+ // You can use the default UDPSender
+ host: process.env.OPENTELEMETRY_HOST ?? '',
+ port: process.env.OPENTELEMETRY_PORT ? +process.env.OPENTELEMETRY_PORT : 0,
+ };
+ // Configure span processor to send spans to the exporter
+ const exporter = new JaegerExporter(option);
+ provider.addSpanProcessor(new BatchSpanProcessor(exporter));
+ provider.addSpanProcessor(new BatchSpanProcessor(new ConsoleSpanExporter()));
+ provider.register();
+}
diff --git a/sandbox/oauth-example/src/providers/azure-ad-signup.provider.ts b/sandbox/oauth-example/src/providers/azure-ad-signup.provider.ts
deleted file mode 100644
index bdc726083c..0000000000
--- a/sandbox/oauth-example/src/providers/azure-ad-signup.provider.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {Provider} from '@loopback/context';
-import {repository} from '@loopback/repository';
-import {HttpErrors} from '@loopback/rest';
-import {
- AuthClientRepository,
- AzureAdSignUpFn,
- User,
- UserRelations,
-} from '@sourceloop/authentication-service';
-import {
- RoleRepository,
- TenantRepository,
- UserRepository,
-} from '../repositories';
-
-export class AzureAdSignupProvider implements Provider {
- constructor(
- @repository(RoleRepository)
- private readonly roleRepo: RoleRepository,
- @repository(TenantRepository)
- private readonly tenantRepo: TenantRepository,
- @repository(AuthClientRepository)
- private readonly authClientRepo: AuthClientRepository,
- @repository(UserRepository)
- private readonly userRepo: UserRepository,
- ) {}
-
- value(): AzureAdSignUpFn {
- return async profile => {
- const [tenant, role, client] = await Promise.all([
- this.tenantRepo.findOne({
- where: {
- key: 'master',
- },
- }),
- this.roleRepo.findOne({
- where: {
- roleType: 0,
- },
- }),
- this.authClientRepo.findOne({
- where: {
- clientId: 'test_client_id',
- },
- }),
- ]);
-
- // check if user exist
-
- const userExists = await this.userRepo.findOne({
- where: {
- or: [{username: profile.upn}, {email: profile.upn}],
- },
- });
- if (userExists) {
- throw new HttpErrors.BadRequest('User already exists');
- }
-
- const user = await this.userRepo.createWithoutPassword({
- firstName: profile.name!.givenName,
- lastName: profile.name!.familyName,
- username: profile.upn,
- email: profile.upn,
- defaultTenantId: tenant?.id,
- authClientIds: `{${client?.id}}`,
- });
-
- await this.userRepo.credentials(user.id).create({
- userId: user.id,
- authProvider: 'azure',
- authId: profile.oid,
- });
-
- await this.userRepo.userTenants(user.id).create({
- userId: user.id,
- tenantId: tenant?.id,
- roleId: role?.id,
- });
- return user as User & UserRelations;
- };
- }
-}
diff --git a/sandbox/oauth-example/src/providers/facebook-oauth2-signup.provider.ts b/sandbox/oauth-example/src/providers/facebook-oauth2-signup.provider.ts
deleted file mode 100644
index 36b1b61e33..0000000000
--- a/sandbox/oauth-example/src/providers/facebook-oauth2-signup.provider.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {Provider} from '@loopback/context';
-import {repository} from '@loopback/repository';
-import {HttpErrors} from '@loopback/rest';
-import {
- AuthClientRepository,
- FacebookSignUpFn,
- User,
- UserRelations,
-} from '@sourceloop/authentication-service';
-import {
- RoleRepository,
- TenantRepository,
- UserRepository,
-} from '../repositories';
-
-export class FacebookOauth2SignupProvider
- implements Provider
-{
- constructor(
- @repository(RoleRepository)
- private readonly roleRepo: RoleRepository,
- @repository(TenantRepository)
- private readonly tenantRepo: TenantRepository,
- @repository(AuthClientRepository)
- private readonly authClientRepo: AuthClientRepository,
- @repository(UserRepository)
- private readonly userRepo: UserRepository,
- ) {}
-
- value(): FacebookSignUpFn {
- return async profile => {
- const [tenant, role, client] = await Promise.all([
- this.tenantRepo.findOne({
- where: {
- key: 'master',
- },
- }),
- this.roleRepo.findOne({
- where: {
- roleType: 0,
- },
- }),
- this.authClientRepo.findOne({
- where: {
- clientId: 'test_client_id',
- },
- }),
- ]);
-
- // check if user exist
-
- const userExists = await this.userRepo.findOne({
- where: {
- or: [{username: profile._json.email}, {email: profile._json.email}],
- },
- });
- if (userExists) {
- throw new HttpErrors.BadRequest('User already exists');
- }
-
- const user = await this.userRepo.createWithoutPassword({
- firstName: profile.name!.givenName ?? profile.displayName,
- lastName: profile.name!.familyName,
- username: profile._json.email ?? profile.displayName,
- email: profile._json.email,
- defaultTenantId: tenant?.id,
- authClientIds: `{${client?.id}}`,
- });
-
- await this.userRepo.credentials(user.id).create({
- userId: user.id,
- authProvider: 'facebook',
- authId: profile.id,
- });
-
- await this.userRepo.userTenants(user.id).create({
- userId: user.id,
- tenantId: tenant?.id,
- roleId: role?.id,
- });
- return user as User & UserRelations;
- };
- }
-}
diff --git a/sandbox/oauth-example/src/providers/google-oauth2-signup.provider.ts b/sandbox/oauth-example/src/providers/google-oauth2-signup.provider.ts
index 4542318deb..af742264a3 100644
--- a/sandbox/oauth-example/src/providers/google-oauth2-signup.provider.ts
+++ b/sandbox/oauth-example/src/providers/google-oauth2-signup.provider.ts
@@ -1,4 +1,4 @@
-// Copyright (c) 2023 Sourcefuse Technologies
+// Copyright (c) 2022 Sourcefuse Technologies
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
@@ -8,14 +8,12 @@ import {HttpErrors} from '@loopback/rest';
import {
AuthClientRepository,
GoogleSignUpFn,
- User,
- UserRelations,
-} from '@sourceloop/authentication-service';
-import {
RoleRepository,
TenantRepository,
+ User,
+ UserRelations,
UserRepository,
-} from '../repositories';
+} from '@sourceloop/authentication-service';
export class GoogleOauth2SignupProvider implements Provider {
constructor(
@@ -61,8 +59,8 @@ export class GoogleOauth2SignupProvider implements Provider {
}
const user = await this.userRepo.createWithoutPassword({
- firstName: profile.name!.givenName,
- lastName: profile.name!.familyName,
+ firstName: profile.name?.givenName ?? '',
+ lastName: profile.name?.familyName ?? '',
username: profile._json.email,
email: profile._json.email,
defaultTenantId: tenant?.id,
@@ -80,7 +78,7 @@ export class GoogleOauth2SignupProvider implements Provider {
tenantId: tenant?.id,
roleId: role?.id,
});
- return user as User & UserRelations;
+ return user as User & UserRelations; // NOSONAR
};
}
}
diff --git a/sandbox/oauth-example/src/providers/index.ts b/sandbox/oauth-example/src/providers/index.ts
index e450690a57..befaf40a1e 100644
--- a/sandbox/oauth-example/src/providers/index.ts
+++ b/sandbox/oauth-example/src/providers/index.ts
@@ -1,9 +1 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-export * from './azure-ad-signup.provider';
-export * from './facebook-oauth2-signup.provider';
export * from './google-oauth2-signup.provider';
-export * from './saml-signup.provider';
-export * from './saml-verify.provider';
diff --git a/sandbox/oauth-example/src/providers/saml-signup.provider.ts b/sandbox/oauth-example/src/providers/saml-signup.provider.ts
deleted file mode 100644
index 5d38998cd4..0000000000
--- a/sandbox/oauth-example/src/providers/saml-signup.provider.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-import {inject, Provider} from '@loopback/context';
-import {repository} from '@loopback/repository';
-import {HttpErrors} from '@loopback/rest';
-import {
- AuthClient,
- AuthClientRepository,
- SamlSignUpFn,
- TenantRepository,
- User,
- UserCredentialsRepository,
- UserRelations,
- UserRepository,
-} from '@sourceloop/authentication-service';
-import {AuthenticationBindings} from 'loopback4-authentication';
-import {RoleRepository} from '../repositories';
-
-export class SamlSignupProvider implements Provider {
- constructor(
- @repository(UserRepository)
- public userRepository: UserRepository,
- @repository(TenantRepository)
- public tenantRepository: TenantRepository,
- @repository(UserCredentialsRepository)
- public userCredsRepository: UserCredentialsRepository,
- @repository(RoleRepository)
- private readonly roleRepo: RoleRepository,
- @repository(TenantRepository)
- private readonly tenantRepo: TenantRepository,
- @repository(UserRepository)
- private readonly userRepo: UserRepository,
- @repository(AuthClientRepository)
- private readonly authClientRepo: AuthClientRepository,
- @inject(AuthenticationBindings.CURRENT_CLIENT)
- private readonly client: AuthClient | undefined,
- ) {}
-
- value(): SamlSignUpFn {
- return async profile => {
- // Find 1st tenant associated with this client_id
- const [tenant, role, client] = await Promise.all([
- this.tenantRepo.findOne({
- where: {
- key: 'master',
- },
- }),
- this.roleRepo.findOne({
- where: {
- roleType: 0,
- },
- }),
- this.authClientRepo.findOne({
- where: {
- clientId: 'test_client_id',
- },
- }),
- ]);
-
- const userExists = await this.userRepo.findOne({
- where: {
- or: [{username: profile.email}, {email: profile.email}],
- },
- });
- if (userExists) {
- throw new HttpErrors.BadRequest('User already exists');
- }
- const user = await this.userRepo.createWithoutPassword({
- username: profile.email,
- firstName: String(profile.first_name),
- lastName: String(profile.last_name),
- email: profile.email,
- defaultTenantId: tenant?.id,
- authClientIds: `{${client?.id}}`,
- });
-
- await this.userRepo.credentials(user.id).create({
- userId: user.id,
- authProvider: 'saml',
- authId: profile.ID,
- });
-
- await this.userRepo.userTenants(user.id).create({
- userId: user.id,
- tenantId: tenant?.id,
- roleId: role?.id,
- });
- return user as User & UserRelations; // NOSONAR
- };
- }
-}
diff --git a/sandbox/oauth-example/src/providers/saml-verify.provider.ts b/sandbox/oauth-example/src/providers/saml-verify.provider.ts
deleted file mode 100644
index 89901a54e0..0000000000
--- a/sandbox/oauth-example/src/providers/saml-verify.provider.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import {inject, Provider} from '@loopback/context';
-import {repository} from '@loopback/repository';
-import {HttpErrors, Request} from '@loopback/rest';
-import * as samlStrategy from '@node-saml/passport-saml';
-import {
- AuthUser,
- SamlSignUpFn,
- SignUpBindings,
- UserCredentialsRepository,
- UserRepository,
-} from '@sourceloop/authentication-service';
-import {AuthErrorKeys, VerifyFunction} from 'loopback4-authentication';
-
-export class SamlVerifyProvider implements Provider {
- constructor(
- @repository(UserRepository)
- public userRepository: UserRepository,
- @repository(UserCredentialsRepository)
- public userCredsRepository: UserCredentialsRepository,
- @inject(SignUpBindings.SAML_SIGN_UP_PROVIDER)
- private readonly signupProvider: SamlSignUpFn,
- ) {}
-
- value(): VerifyFunction.SamlFn {
- return async (
- profile: samlStrategy.Profile,
- cb: samlStrategy.VerifiedCallback,
- req?: Request,
- ) => {
- const user = await this.signupProvider(profile);
- if (user == null) {
- throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
- }
- // Just to check if userCreds has entry for this user for this provider
- const creds = await this.userCredsRepository.findOne({
- where: {
- userId: user.id,
- authProvider: 'saml',
- },
- });
- if (
- !creds ||
- creds.authProvider !== 'saml' ||
- creds.authId !== profile.ID
- ) {
- throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
- }
-
- const authUser: AuthUser = new AuthUser(user);
- authUser.permissions = [];
- return authUser;
- };
- }
-}
diff --git a/sandbox/oauth-example/src/repositories/README.md b/sandbox/oauth-example/src/repositories/README.md
deleted file mode 100644
index 08638a7878..0000000000
--- a/sandbox/oauth-example/src/repositories/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Repositories
-
-This directory contains code for repositories provided by this app.
diff --git a/sandbox/oauth-example/src/repositories/index.ts b/sandbox/oauth-example/src/repositories/index.ts
deleted file mode 100644
index 01467df1a8..0000000000
--- a/sandbox/oauth-example/src/repositories/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-export * from './role.repository';
-export * from './tenant.repository';
-export * from './user.repository';
diff --git a/sandbox/oauth-example/src/repositories/role.repository.ts b/sandbox/oauth-example/src/repositories/role.repository.ts
deleted file mode 100644
index 50563bea76..0000000000
--- a/sandbox/oauth-example/src/repositories/role.repository.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {inject} from '@loopback/core';
-import {juggler} from '@loopback/repository';
-import {DefaultSoftCrudRepository} from '@sourceloop/core';
-import {AuthDbSourceName, Role} from '@sourceloop/authentication-service';
-
-export class RoleRepository extends DefaultSoftCrudRepository<
- Role,
- typeof Role.prototype.id
-> {
- constructor(
- @inject(`datasources.${AuthDbSourceName}`)
- dataSource: juggler.DataSource,
- ) {
- super(Role, dataSource);
- }
-}
diff --git a/sandbox/oauth-example/src/repositories/tenant.repository.ts b/sandbox/oauth-example/src/repositories/tenant.repository.ts
deleted file mode 100644
index 0e13056fb6..0000000000
--- a/sandbox/oauth-example/src/repositories/tenant.repository.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {Getter, inject} from '@loopback/core';
-import {
- HasManyRepositoryFactory,
- juggler,
- repository,
-} from '@loopback/repository';
-import {DefaultSoftCrudRepository} from '@sourceloop/core';
-import {
- AuthDbSourceName,
- Tenant,
- TenantConfig,
- TenantConfigRepository,
-} from '@sourceloop/authentication-service';
-
-export class TenantRepository extends DefaultSoftCrudRepository<
- Tenant,
- typeof Tenant.prototype.id
-> {
- public readonly tenantConfigs: HasManyRepositoryFactory<
- TenantConfig,
- typeof Tenant.prototype.id
- >;
-
- constructor(
- @inject(`datasources.${AuthDbSourceName}`) dataSource: juggler.DataSource,
- @repository.getter('TenantConfigRepository')
- protected tenantConfigRepositoryGetter: Getter,
- ) {
- super(Tenant, dataSource);
- this.tenantConfigs = this.createHasManyRepositoryFactoryFor(
- 'tenantConfigs',
- tenantConfigRepositoryGetter,
- );
- this.registerInclusionResolver(
- 'tenantConfigs',
- this.tenantConfigs.inclusionResolver,
- );
- }
-}
diff --git a/sandbox/oauth-example/src/repositories/user.repository.ts b/sandbox/oauth-example/src/repositories/user.repository.ts
deleted file mode 100644
index edb6c28e41..0000000000
--- a/sandbox/oauth-example/src/repositories/user.repository.ts
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {Getter, inject} from '@loopback/core';
-import {
- BelongsToAccessor,
- DataObject,
- HasManyRepositoryFactory,
- HasOneRepositoryFactory,
- Options,
- juggler,
- repository,
-} from '@loopback/repository';
-import {HttpErrors} from '@loopback/rest';
-import {
- AuthDbSourceName,
- OtpRepository,
- Tenant,
- TenantRepository,
- User,
- UserCredentials,
- UserCredentialsRepository,
- UserRelations,
- UserTenant,
- UserTenantRepository,
-} from '@sourceloop/authentication-service';
-import {
- AuthProvider,
- AuthenticateErrorKeys,
- DefaultSoftCrudRepository,
- ILogger,
- LOGGER,
- UserStatus,
-} from '@sourceloop/core';
-import * as bcrypt from 'bcrypt';
-import {AuthErrorKeys} from 'loopback4-authentication';
-
-const saltRounds = 10;
-
-export class UserRepository extends DefaultSoftCrudRepository<
- User,
- typeof User.prototype.id,
- UserRelations
-> {
- public readonly credentials: HasOneRepositoryFactory<
- UserCredentials,
- typeof User.prototype.id
- >;
- public readonly tenant: BelongsToAccessor;
-
- public readonly userTenants: HasManyRepositoryFactory<
- UserTenant,
- typeof User.prototype.id
- >;
-
- constructor(
- @inject(`datasources.${AuthDbSourceName}`)
- dataSource: juggler.DataSource,
- @repository.getter(UserCredentialsRepository)
- getUserCredsRepository: Getter,
- @repository.getter(OtpRepository)
- public getOtpRepository: Getter,
- @repository.getter('TenantRepository')
- protected tenantRepositoryGetter: Getter,
- @repository.getter('UserTenantRepository')
- protected userTenantRepositoryGetter: Getter,
- @inject(LOGGER.LOGGER_INJECT) private readonly logger: ILogger,
- ) {
- super(User, dataSource);
- this.userTenants = this.createHasManyRepositoryFactoryFor(
- 'userTenants',
- userTenantRepositoryGetter,
- );
- this.registerInclusionResolver(
- 'userTenants',
- this.userTenants.inclusionResolver,
- );
- this.tenant = this.createBelongsToAccessorFor(
- 'defaultTenant',
- tenantRepositoryGetter,
- );
- this.registerInclusionResolver(
- 'defaultTenant',
- this.tenant.inclusionResolver,
- );
-
- this.credentials = this.createHasOneRepositoryFactoryFor(
- 'credentials',
- getUserCredsRepository,
- );
- this.registerInclusionResolver(
- 'credentials',
- this.credentials.inclusionResolver,
- );
- }
-
- async create(entity: DataObject, options?: Options): Promise {
- const user = await super.create(entity, options);
- try {
- // Add temporary password for first time
- const password = (await bcrypt.hash(
- process.env.USER_TEMP_PASSWORD as string,
- saltRounds,
- )) as string;
- const creds = new UserCredentials({
- authProvider: 'internal',
- password,
- });
- await this.credentials(user.id).create(creds);
- } catch (err) {
- throw new HttpErrors.UnprocessableEntity('Error while hashing password');
- }
- return user;
- }
-
- async createWithoutPassword(
- entity: DataObject,
- options?: Options,
- ): Promise {
- return super.create(entity, options);
- }
-
- async verifyPassword(username: string, password: string): Promise {
- const user = await super.findOne({
- where: {username: username.toLowerCase()},
- });
- const creds = user && (await this.credentials(user.id).get());
- if (!user || user.deleted) {
- throw new HttpErrors.Unauthorized(AuthenticateErrorKeys.UserDoesNotExist);
- } else if (
- !creds?.password ||
- creds.authProvider !== AuthProvider.INTERNAL ||
- !(await bcrypt.compare(password, creds.password))
- ) {
- this.logger.error('User creds not found in DB or is invalid');
- throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
- } else {
- return user;
- }
- }
-
- async updatePassword(
- username: string,
- password: string,
- newPassword: string,
- ): Promise {
- const user = await super.findOne({where: {username}});
- const creds = user && (await this.credentials(user.id).get());
- // eslint-disable-next-line
- if (!user || user.deleted || !creds?.password) {
- throw new HttpErrors.Unauthorized(AuthenticateErrorKeys.UserDoesNotExist);
- } else if (creds.authProvider !== AuthProvider.INTERNAL) {
- throw new HttpErrors.BadRequest(
- AuthenticateErrorKeys.PasswordCannotBeChanged,
- );
- } else if (!(await bcrypt.compare(password, creds.password))) {
- throw new HttpErrors.Unauthorized(AuthErrorKeys.WrongPassword);
- } else if (await bcrypt.compare(newPassword, creds.password)) {
- throw new HttpErrors.Unauthorized(
- 'Password cannot be same as previous password!',
- );
- } else {
- // Do nothing
- }
- await this.credentials(user.id).patch({
- password: await bcrypt.hash(newPassword, saltRounds),
- });
- return user;
- }
-
- async changePassword(
- username: string,
- newPassword: string,
- oldPassword?: string,
- ): Promise {
- const user = await super.findOne({where: {username}});
- const creds = user && (await this.credentials(user.id).get());
-
- if (oldPassword) {
- // This method considers old password as OTP
- const otp = await (await this.getOtpRepository()).get(username);
- if (!otp || otp.otp !== oldPassword) {
- throw new HttpErrors.Unauthorized(AuthErrorKeys.WrongPassword);
- }
- }
-
- if (creds?.authProvider !== AuthProvider.INTERNAL) {
- throw new HttpErrors.Unauthorized(
- AuthenticateErrorKeys.PasswordCannotBeChanged,
- );
- }
- // eslint-disable-next-line
- if (!user || user.deleted || !creds?.password) {
- throw new HttpErrors.Unauthorized(AuthenticateErrorKeys.UserDoesNotExist);
- } else if (await bcrypt.compare(newPassword, creds.password)) {
- throw new HttpErrors.Unauthorized(
- 'Password cannot be same as previous password!',
- );
- } else {
- // DO nothing
- }
- await this.credentials(user.id).patch({
- password: await bcrypt.hash(newPassword, saltRounds),
- });
- return user;
- }
-
- async updateLastLogin(userId: string): Promise {
- await super.updateById(
- userId,
- {
- lastLogin: Date.now(),
- },
- {
- currentUser: {id: userId},
- },
- );
- }
-
- async firstTimeUser(userId: string): Promise {
- const user = await super.findOne({
- where: {
- id: userId,
- },
- });
-
- if (!user) {
- throw new HttpErrors.NotFound(AuthenticateErrorKeys.UserDoesNotExist);
- }
-
- const userTenant = await (
- await this.userTenantRepositoryGetter()
- ).findOne({
- where: {
- userId,
- tenantId: user.defaultTenantId,
- status: {
- inq: [UserStatus.REGISTERED, UserStatus.PASSWORD_CHANGE_NEEDED],
- },
- },
- });
- return !!userTenant;
- }
-}
diff --git a/sandbox/oauth-example/src/sequence.ts b/sandbox/oauth-example/src/sequence.ts
deleted file mode 100644
index b97f09e3c0..0000000000
--- a/sandbox/oauth-example/src/sequence.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2023 Sourcefuse Technologies
-//
-// This software is released under the MIT License.
-// https://opensource.org/licenses/MIT
-import {MiddlewareSequence} from '@loopback/rest';
-
-export class MySequence extends MiddlewareSequence {}
diff --git a/sandbox/oauth-example/tsconfig.json b/sandbox/oauth-example/tsconfig.json
index c7b8e49eac..a195dc8af1 100644
--- a/sandbox/oauth-example/tsconfig.json
+++ b/sandbox/oauth-example/tsconfig.json
@@ -3,7 +3,14 @@
"extends": "@loopback/build/config/tsconfig.common.json",
"compilerOptions": {
"outDir": "dist",
- "rootDir": "src"
+ "rootDir": "src",
+ "composite": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true
},
- "include": ["src"]
-}
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.json"
+ ],
+ "references": []
+}
\ No newline at end of file