diff --git a/.autorestic.yml b/.autorestic.yml
new file mode 100644
index 0000000..3aeae5f
--- /dev/null
+++ b/.autorestic.yml
@@ -0,0 +1,11 @@
+
+locations:
+ home:
+ from: /path/to/your/home
+ to:
+ - backup1
+
+backends:
+ backup1:
+ type: local
+ path: /path/to/your/backup/repo
diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..aa45599
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presents" ["@babel/present-env"]
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index b02a1ff..af75943 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,2 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
+facebook-tutorial/
node_modules
-dist
-dist-ssr
-*.local
-package-lock.json
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/.idx/$PROFILE b/.idx/$PROFILE
new file mode 100644
index 0000000..f706987
--- /dev/null
+++ b/.idx/$PROFILE
@@ -0,0 +1,6 @@
+echo "function yarn { corepack yarn `$args }" >> $PROFILE
+echo "function yarnpkg { corepack yarnpkg `$args }" >> $PROFILE
+echo "function pnpm { corepack pnpm `$args }" >> $PROFILE
+echo "function pnpx { corepack pnpx `$args }" >> $PROFILE
+echo "function npm { corepack npm `$args }" >> $PROFILE
+echo "function npx { corepack npx `$args }" >> $PROFILE
\ No newline at end of file
diff --git a/.idx/.babelrc.json b/.idx/.babelrc.json
new file mode 100644
index 0000000..92e4ea8
--- /dev/null
+++ b/.idx/.babelrc.json
@@ -0,0 +1,5 @@
+{
+ "presets": [...],
+ "plugins": [...]
+ }
+{ "extends": "../../.babelrc" }
\ No newline at end of file
diff --git a/.idx/.browserslistrc b/.idx/.browserslistrc
new file mode 100644
index 0000000..bd9fb77
--- /dev/null
+++ b/.idx/.browserslistrc
@@ -0,0 +1,2 @@
+> 0.25%
+not dead
\ No newline at end of file
diff --git a/.idx/.gitignore b/.idx/.gitignore
new file mode 100644
index 0000000..cd5d2a9
--- /dev/null
+++ b/.idx/.gitignore
@@ -0,0 +1,26 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+package-lock.json
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+.env
\ No newline at end of file
diff --git a/.idx/App.css b/.idx/App.css
new file mode 100644
index 0000000..6e02476
--- /dev/null
+++ b/.idx/App.css
@@ -0,0 +1,52 @@
+@import "tailwindcss";
+/* Removed invalid JavaScript code */
+@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap');
+#root {
+ min-width: 320px;
+ max-width: 1600px;
+}
+/* Removed invalid selector */
+
+ body {
+ margin: 0;
+ font-family: "Montserrat";
+ }
+
+ h1, section, footer {
+ padding: 2rem;
+ }
+
+ .light {
+ background: red;
+ color: rgb(0, 24, 164);
+ }
+
+ .dark {
+ background: rgb(0, 24, 164);
+ color: aquamarine;
+ }
+
+ button {
+ padding: 18px;
+ border-radius: 30px;
+ border: 0;
+ background: black;
+ color: white;
+ font-size: 16px;
+ font-weight: bold;
+ font-family: "Montserrat";
+ }
+
+ select {
+ border: none;
+ border-radius: 4px;
+ color: rgb(0, 24, 164);
+ font-size: 16px;
+ font-weight: 600;
+ height: 40px;
+ font-family: 'Montserrat';
+ padding: 0 20px;
+ cursor: pointer;
+ }
+/* Removed invalid JSX code */
+
diff --git a/.idx/App.js b/.idx/App.js
new file mode 100644
index 0000000..c6e518e
--- /dev/null
+++ b/.idx/App.js
@@ -0,0 +1,15 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import { styled } from '@mui/material/styles';
+
+const CustomizedSlider = styled(Slider)`
+ color: #20b2aa;
+
+ :hover {
+ color: #2e8b57;
+ }
+`;
+
+export default function StyledComponents() {
+ return ;
+}
\ No newline at end of file
diff --git a/.idx/App.jsx b/.idx/App.jsx
new file mode 100644
index 0000000..3b78d3f
--- /dev/null
+++ b/.idx/App.jsx
@@ -0,0 +1,13 @@
+// Removed unused import
+// import { useCountTodo } from './todo.jsx';
+// import { useTodo } from './todo.jsx/useTodo';
+// Removed unused import
+// Removed unused import
+import "./App.css";
+export const App = () => {
+ return (
+
Todo App
+ )
+}
+// Removed unused import
+export default App
\ No newline at end of file
diff --git a/.idx/CssModulesSlider.js b/.idx/CssModulesSlider.js
new file mode 100644
index 0000000..4c09047
--- /dev/null
+++ b/.idx/CssModulesSlider.js
@@ -0,0 +1,39 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import * as React from 'react';
+import { StyledEngineProvider } from '@mui/material/styles';
+import * as React from 'react';
+import { CacheProvider } from '@emotion/react';
+import createCache from '@emotion/cache';
+
+const cache = createCache({
+ key: 'css',
+ prepend: true,
+});
+
+export default function CssModulesPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+
+export default function GlobalCssPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+// webpack, Parcel or else will inject the CSS into the page
+import styles from './CssModulesSlider.module.css';
+
+export default function CssModulesSlider() {
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/.idx/CssModulesSlider.module.css b/.idx/CssModulesSlider.module.css
new file mode 100644
index 0000000..e738f7e
--- /dev/null
+++ b/.idx/CssModulesSlider.module.css
@@ -0,0 +1,8 @@
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
+
diff --git a/.idx/CssModulesSliderCustumPseudoClasses.js b/.idx/CssModulesSliderCustumPseudoClasses.js
new file mode 100644
index 0000000..5d68147
--- /dev/null
+++ b/.idx/CssModulesSliderCustumPseudoClasses.js
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import List from '@mui/material/List';
+import ListItem from '@mui/material/ListItem';
+import ListItemText from '@mui/material/ListItemText';
+import styles from './MyList.module.css';
+
+export default function MyList() {
+ return (
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/.idx/CssModulesSliderDeep1.js b/.idx/CssModulesSliderDeep1.js
new file mode 100644
index 0000000..47a81c5
--- /dev/null
+++ b/.idx/CssModulesSliderDeep1.js
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+// webpack, Parcel or else will inject the CSS into the page
+import styles from './CssModulesSliderDeep1.module.css';
+
+export default function CssModulesSliderDeep1() {
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/.idx/CssModulesSliderDeep1.module.css b/.idx/CssModulesSliderDeep1.module.css
new file mode 100644
index 0000000..0539a7c
--- /dev/null
+++ b/.idx/CssModulesSliderDeep1.module.css
@@ -0,0 +1,11 @@
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
+
+ .slider :global(.MuiSlider-thumb) {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/CssModulesSliderDeep2.js b/.idx/CssModulesSliderDeep2.js
new file mode 100644
index 0000000..e1cf6b1
--- /dev/null
+++ b/.idx/CssModulesSliderDeep2.js
@@ -0,0 +1,17 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+// webpack, Parcel or else will inject the CSS into the page
+import styles from './CssModulesSliderDeep2.module.css';
+
+export default function CssModulesSliderDeep2() {
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/.idx/CssModulesSliderDeep2.module.css b/.idx/CssModulesSliderDeep2.module.css
new file mode 100644
index 0000000..27f2d54
--- /dev/null
+++ b/.idx/CssModulesSliderDeep2.module.css
@@ -0,0 +1,11 @@
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
+
+ .slider .thumb {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/Emotioncss.tsx b/.idx/Emotioncss.tsx
new file mode 100644
index 0000000..40116b0
--- /dev/null
+++ b/.idx/Emotioncss.tsx
@@ -0,0 +1,23 @@
+/* eslint-disable react/react-in-jsx-scope -- Unaware of jsxImportSource */
+/** @jsxImportSource @emotion/react */
+import { css } from '@emotion/react';
+import Slider from '@mui/material/Slider';
+import Box from '@mui/material/Box';
+
+export default function EmotionCSS() {
+ return (
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/.idx/Global b/.idx/Global
new file mode 100644
index 0000000..e69de29
diff --git a/.idx/GlobalCssSlider.css b/.idx/GlobalCssSlider.css
new file mode 100644
index 0000000..75916d9
--- /dev/null
+++ b/.idx/GlobalCssSlider.css
@@ -0,0 +1,40 @@
+import * as React from 'react';
+import { CacheProvider } from '@emotion/react';
+import createCache from '@emotion/cache';
+
+const cache = createCache({
+ key: 'css',
+ prepend: true,
+});
+
+export default function GlobalCssPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+import * as React from 'react';
+import { StyledEngineProvider } from '@mui/material/styles';
+
+export default function GlobalCssPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import './GlobalCssSlider.css';
+
+export default function GlobalCssSlider() {
+ return ;
+}
+.MuiSlider-root {
+ color: #20b2aa;
+ }
+
+ .MuiSlider-root:hover {
+ color: #2e8b57;
+ }
\ No newline at end of file
diff --git a/.idx/GlobalCssSliderDeep.css b/.idx/GlobalCssSliderDeep.css
new file mode 100644
index 0000000..1e00131
--- /dev/null
+++ b/.idx/GlobalCssSliderDeep.css
@@ -0,0 +1,11 @@
+MuiSlider-root {
+ color: #20b2aa;
+ }
+
+ .MuiSlider-root:hover {
+ color: #2e8b57;
+ }
+
+ .MuiSlider-root .MuiSlider-thumb {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/GlobalCssSliderDeep.js b/.idx/GlobalCssSliderDeep.js
new file mode 100644
index 0000000..1e00131
--- /dev/null
+++ b/.idx/GlobalCssSliderDeep.js
@@ -0,0 +1,11 @@
+MuiSlider-root {
+ color: #20b2aa;
+ }
+
+ .MuiSlider-root:hover {
+ color: #2e8b57;
+ }
+
+ .MuiSlider-root .MuiSlider-thumb {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/MyLIst.module.css b/.idx/MyLIst.module.css
new file mode 100644
index 0000000..6293533
--- /dev/null
+++ b/.idx/MyLIst.module.css
@@ -0,0 +1,10 @@
+.myListItem {
+ padding: 10px;
+ border-bottom: 1px solid #ccc;
+ }
+
+ /* Combine global state class with a locally scoped class */
+ :global(.Mui-selected).myListItem {
+ background-color: #1976d2;
+ color: white;
+ }
\ No newline at end of file
diff --git a/.idx/PlainCssSlider.css b/.idx/PlainCssSlider.css
new file mode 100644
index 0000000..9e18afd
--- /dev/null
+++ b/.idx/PlainCssSlider.css
@@ -0,0 +1,45 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import './PlainCssSlider.css';
+import * as React from 'react';
+import { StyledEngineProvider } from '@mui/material/styles';
+import * as React from 'react';
+import { CacheProvider } from '@emotion/react';
+import createCache from '@emotion/cache';
+
+const cache = createCache({
+ key: 'css',
+ prepend: true,
+});
+
+export default function PlainCssPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+
+export default function GlobalCssPriority() {
+ return (
+
+ {/* Your component tree. Now you can override Material UI's styles. */}
+
+ );
+}
+
+export default function PlainCssSlider() {
+ return (
+
+
+
+
+ );
+}
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
\ No newline at end of file
diff --git a/.idx/PlainCssSliderDeep1.css b/.idx/PlainCssSliderDeep1.css
new file mode 100644
index 0000000..92ab031
--- /dev/null
+++ b/.idx/PlainCssSliderDeep1.css
@@ -0,0 +1,23 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import './PlainCssSliderDeep1.css';
+
+export default function PlainCssSliderDeep1() {
+ return (
+
+
+
+
+ );
+}
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
+
+ .slider .MuiSlider-thumb {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/PlainCssSliderDeep2.css b/.idx/PlainCssSliderDeep2.css
new file mode 100644
index 0000000..4167c20
--- /dev/null
+++ b/.idx/PlainCssSliderDeep2.css
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import Slider from '@mui/material/Slider';
+import './PlainCssSliderDeep2.css';
+
+export default function PlainCssSliderDeep2() {
+ return (
+
+
+
+
+ );
+}
+.slider {
+ color: #20b2aa;
+ }
+
+ .slider:hover {
+ color: #2e8b57;
+ }
+
+ .slider .thumb {
+ border-radius: 1px;
+ }
\ No newline at end of file
diff --git a/.idx/SideBar.js b/.idx/SideBar.js
new file mode 100644
index 0000000..6d50b0b
--- /dev/null
+++ b/.idx/SideBar.js
@@ -0,0 +1,37 @@
+import { BsPlus, BsFillLIghtningFill, BsGearFill } from react-icons/fa';
+import { FaFire, FaPoo} from 'react-icons/fa';
+const SideBar = () => {
+ return {
+
+ flex flex-col">
+ bg-gray-900 text-white shadow-lg">
+ A
+ B
+ C
+
+ E
+
+ }}
+
+ }/>
+
+ };
+};
+const SideBarIcon = ({icon,text='tooltip'})=> ();
+
+{icon}
+
+
+};
+
+constSideBar =()=> {
+ return(
+
+ )
+}
+export default SideBar
\ No newline at end of file
diff --git a/.idx/StyledComponentsDeep.tsx b/.idx/StyledComponentsDeep.tsx
new file mode 100644
index 0000000..ab8e1a4
--- /dev/null
+++ b/.idx/StyledComponentsDeep.tsx
@@ -0,0 +1,81 @@
+import * as React from 'react';
+import { styled } from '@mui/material/styles';
+import Slider from '@mui/material/Slider';
+import Box from '@mui/material/Box';
+import * as React from 'react';
+import { styled } from '@mui/material/styles';
+import Slider from '@mui/material/Slider';
+import * as React from 'react';
+import { styled } from '@mui/material/styles';
+import Button from '@mui/material/Button';
+import Tooltip from '@mui/material/Tooltip';
+
+const StyledTooltip = styled(({ className, ...props }) => (
+
+))`
+ & .MuiTooltip-tooltip {
+ background: navy;
+ }
+`;
+
+const CustomizedSlider = styled((props) => (
+
+))`
+ color: #20b2aa;
+
+ :hover {
+ color: #2e8b57;
+ }
+
+ & .thumb {
+ border-radius: 1px;
+ }
+`;
+
+export default function StyledComponentsDeep2() {
+ return (
+
+
+
+
+ );
+}
+
+const CustomizedSlider = styled(Slider)`
+ color: #20b2aa;
+
+ :hover {
+ color: #2e8b57;
+ }
+
+ & .MuiSlider-thumb {
+ border-radius: 1px;
+ }
+`;
+
+export default function StyledComponentsDeep() {
+ return (
+
+
+
+
+ );
+}
+const CustomizedSlider = styled(Slider)(
+ ({ theme }) => `
+ color: ${theme.palette.primary.main};
+
+ :hover {
+ color: ${darken(theme.palette.primary.main, 0.2)};
+ }
+ `,
+ );
+
+
+
+
+
+
+ Styled tooltip
+
+
\ No newline at end of file
diff --git a/.idx/[ b/.idx/[
new file mode 100644
index 0000000..e69de29
diff --git a/.idx/a.js b/.idx/a.js
new file mode 100644
index 0000000..9c730bc
--- /dev/null
+++ b/.idx/a.js
@@ -0,0 +1,4 @@
+var a = new Promise();
+import "core-js/modules/es.promise";
+var a = new Promise();
+var a = new Promise();
\ No newline at end of file
diff --git a/.idx/app b/.idx/app
new file mode 100644
index 0000000..e69de29
diff --git a/.idx/app.js b/.idx/app.js
new file mode 100644
index 0000000..713ac44
--- /dev/null
+++ b/.idx/app.js
@@ -0,0 +1,59 @@
+require('dotenv').config();
+
+var createError = require('http-errors');
+var express = require('express');
+var path = require('path');
+var cookieParser = require('cookie-parser');
+var logger = require('morgan');
+var session = require('express-session');
+var passport = require('passport');
+var SQLiteStore = require('connect-sqlite3')(session);
+var indexRouter = require('./routes/index');
+var authRouter = require('./routes/auth');
+
+var app = express();
+
+app.locals.pluralize = require('pluralize');
+
+// view engine setup
+app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'ejs');
+
+app.use(logger('dev'));
+app.use(express.json());
+app.use(express.urlencoded({ extended: false }));
+app.use(cookieParser());
+app.use(express.static(path.join(__dirname, 'public')));
+app.use(express.static(path.join(__dirname, 'public')));
+app.use(session({
+ secret: 'keyboard cat',
+ resave: false,
+ saveUninitialized: false,
+ store: new SQLiteStore({ db: 'sessions.db', dir: './var/db' })
+}));
+app.use('/', indexRouter);
+app.use('/', authRouter);
+app.use(session({
+ secret: 'keyboard cat',
+ resave: false,
+ saveUninitialized: false,
+ store: new SQLiteStore({ db: 'sessions.db', dir: './var/db' })
+}));
+app.use(passport.authenticate('session'));
+// catch 404 and forward to error handler
+app.use(function(req, res, next) {
+ next(createError(404));
+});
+
+// error handler
+app.use(function(err, req, res, next) {
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
+
+ // render the error page
+ res.status(err.status || 500);
+ res.render('error');
+});
+
+module.exports = app;
\ No newline at end of file
diff --git a/.idx/b.js b/.idx/b.js
new file mode 100644
index 0000000..a8ebb50
--- /dev/null
+++ b/.idx/b.js
@@ -0,0 +1,4 @@
+var b = new Map();
+import "core-js/modules/es.map";
+var b = new Map();
+var b = new Map();
\ No newline at end of file
diff --git a/.idx/babel-plugin.js b/.idx/babel-plugin.js
new file mode 100644
index 0000000..cc075a8
--- /dev/null
+++ b/.idx/babel-plugin.js
@@ -0,0 +1,28 @@
+/ a naive plugin replace `a.b` to `a != null && a.b`
+module.exports = api => {
+ const targets = api.targets();
+ // The targets have native optional chaining support
+ // if `transform-optional-chaining` is _not_ required
+ const optionalChainingSupported = !isRequired(
+ "transform-optional-chaining",
+ targets
+ );
+ const visited = new WeakSet();
+ return {
+ visitor: {
+ MemberExpression(path) {
+ if (path.matchesPattern("a.b")) {
+ if (visited.has(path.node)) return;
+ visited.add(path.node);
+ if (optionalChainingSupported) {
+ // When optional chaining is supported,
+ // output `a?.b` instead of `a != null && a.b`
+ path.replaceWith(api.templates`a?.b`);
+ } else {
+ path.replaceWith(api.templates`a != null && ${path.node}`);
+ }
+ }
+ },
+ },
+ };
+ };
\ No newline at end of file
diff --git a/.idx/babel.config.json b/.idx/babel.config.json
new file mode 100644
index 0000000..3ea6414
--- /dev/null
+++ b/.idx/babel.config.json
@@ -0,0 +1,398 @@
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "targets": {
+ "edge": "17",
+ "firefox": "60",
+ "chrome": "67",
+ "safari": "11.1"
+ },
+ "useBuiltIns": "usage",
+ "corejs": "3.6.5"
+ }
+ ]
+ ]
+ }
+const presets = [
+ [
+ "@babel/preset-env",
+ {
+ targets: {
+ edge: "17",
+ firefox: "60",
+ chrome: "67",
+ safari: "11.1",
+ },
+ useBuiltIns: "usage",
+ corejs: "3.6.4",
+ },
+ ],
+ ];
+
+ module.exports = { presets };
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "targets": {
+ "edge": "17",
+ "firefox": "60",
+ "chrome": "67",
+ "safari": "11.1"
+ }
+ }
+ ]
+ ]
+ }
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "targets": {
+ "edge": "17",
+ "firefox": "60",
+ "chrome": "67",
+ "safari": "11.1"
+ },
+ "useBuiltIns": "usage"
+ }
+ ]
+ ]
+ }
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "targets": {
+ "edge": "17",
+ "firefox": "60",
+ "chrome": "67",
+ "safari": "11.1"
+ },
+ "useBuiltIns": "entry"
+ }
+ ]
+ ]
+ }
+{
+ "presets": [...],
+ "plugins": [...]
+ }
+module.exports = function (api) {
+ api.cache(true);
+
+ const presets = [ ... ];
+ const plugins = [ ... ];
+
+ return {
+ presets,
+ plugins
+ };
+ }
+babel.config.js
+module.exports = function (api) {
+ api.cache(true);
+
+ const presets = [ ... ];
+ const plugins = [ ... ];
+
+ if (process.env["ENV"] === "prod") {
+ plugins.push(...);
+ }
+
+ return {
+ presets,
+ plugins
+ };
+}
+module.exports = {
+ presets: ["@babel/env"], // "@babel/preset-env"
+ plugins: ["@babel/transform-arrow-functions"], // same as "@babel/plugin-transform-arrow-functions"
+ };
+{
+ "plugins": ["@babel/plugin-transform-runtime"]
+ }
+module.exports = function(api) {
+ return {};
+ };
+{
+ "targets": "> 0.25%, not dead"
+ }
+{
+ "targets": {
+ "chrome": "58",
+ "ie": "11"
+ }
+ }
+{
+ "presets": ["@babel/preset-env"]
+ }
+{
+ "targets": "defaults"
+ }
+{
+ // Resolve to "Chrome 61+, FF60+, Safari 11+"
+ "targets": {
+ "esmodules": "intersect", // Chrome 61+, FF 60+, Safari 10.1+
+ "browsers": "chrome 58, firefox 60, safari 11"
+ }
+ }
+{
+ "targets": "node 12" // not recommended
+ }
+{
+ "targets": "node 12.0"
+ }
+{
+ "targets": {
+ "deno": "1.9"
+ }
+ }
+{
+ "assumptions": {
+ "iterableIsArray": true
+ },
+ "presets": ["@babel/preset-env"]
+ }
+{
+ "plugins": ["babel-plugin-myPlugin", "@babel/plugin-transform-runtime"]
+ }
+{
+ "plugins": ["./node_modules/asdf/plugin"]
+ }
+{
+ "plugins": ["transform-decorators-legacy", "transform-class-properties"]
+ }
+{
+ "presets": ["@babel/preset-env", "@babel/preset-react"]
+ }
+{
+ "plugins": ["pluginA", ["pluginA"], ["pluginA", {}]]
+ }
+{
+ "plugins": [
+ [
+ "transform-async-to-module-method",
+ {
+ "module": "bluebird",
+ "method": "coroutine"
+ }
+ ]
+ ]
+ }
+{
+ "presets": [
+ [
+ "env",
+ {
+ "loose": true,
+ "modules": false
+ }
+ ]
+ ]
+ }
+{
+ "targets": ">0.5%",
+ "assumptions": {
+ "noDocumentAll": true,
+ "noClassCalls": true
+ },
+ "presets": ["@babel/preset-env"]
+ }
+{
+ "presets": ["babel-preset-myPreset", "@babel/preset-env"]
+ }
+{
+ "presets": ["./myProject/myPreset"]
+ }
+{
+ "presets": ["a", "b", "c"]
+ }
+{
+ "presets": [
+ "presetA", // bare string
+ ["presetA"], // wrapped in array
+ ["presetA", {}] // 2nd argument is an empty options object
+ ]
+}
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "loose": true,
+ "modules": false
+ }
+ ]
+ ]
+ }
+{
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "useBuiltIns": "entry",
+ "corejs": "3.22"
+ }
+ ]
+ ]
+ }
+{
+ "plugins": ["@babel/plugin-transform-explicit-resource-management"]
+ }
+{
+ "plugins": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex"]
+ }
+{
+ "plugins": ["@babel/plugin-transform-json-modules"]
+ }
+{
+ "plugins": ["@babel/plugin-transform-regexp-modifiers"]
+ }
+{
+ "plugins": ["@babel/plugin-syntax-import-attributes"]
+ }
+ {
+ "plugins": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key"]
+ }
+ {
+ "plugins": ["@babel/plugin-bugfix-safari-class-field-initializer-scope"]
+ }
+ {
+ "plugins": ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression"]
+ }
+ {
+ "plugins": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining"]
+ }
+ {
+ "presets": ["@babel/preset-react"]
+ }
+ {
+ "presets": [
+ [
+ "@babel/preset-react",
+ {
+ "pragma": "dom", // default pragma is React.createElement (only in classic runtime)
+ "pragmaFrag": "DomFrag", // default is React.Fragment (only in classic runtime)
+ "throwIfNamespace": false, // defaults to true
+ "runtime": "classic" // defaults to classic
+ // "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)
+ }
+ ]
+ ]
+ }
+ babel.config.js
+module.exports = {
+ presets: [
+ [
+ "@babel/preset-react",
+ {
+ development: process.env.BABEL_ENV === "development",
+ },
+ ],
+ ],
+};
+{
+ "presets": ["@babel/preset-react"],
+ "env": {
+ "development": {
+ "presets": [["@babel/preset-react", { "development": true }]]
+ }
+ }
+ }
+ {
+ "plugins": ["@babel/plugin-transform-react-jsx"]
+ }
+ {
+ "plugins": [
+ [
+ "@babel/plugin-transform-react-jsx",
+ {
+ "throwIfNamespace": false, // defaults to true
+ "runtime": "automatic", // defaults to classic
+ "importSource": "custom-jsx-library" // defaults to react
+ }
+ ]
+ ]
+ }
+ {
+ "plugins": ["@babel/plugin-transform-react-jsx-development"]
+ }
+ {
+ "plugins": [
+ [
+ "@babel/plugin-transform-react-jsx-development",
+ {
+ "throwIfNamespace": false, // defaults to true
+ "runtime": "automatic", // defaults to classic
+ "importSource": "custom-jsx-library" // defaults to react
+ }
+ ]
+ ]
+ }
+ {
+ "presets": ["@babel/preset-typescript"]
+ }
+ {
+ "presets": ["@babel/preset-react"],
+ "overrides": [{
+ "test": "*.vue",
+ "presets": [
+ ["@babel/preset-typescript"], { "ignoreExtensions": true }
+ ]
+ }]
+ }
+ {
+ "presets": [
+ ["@babel/preset-typescript", {
+ "rewriteImportExtensions": true
+ }]
+ ]
+ }
+ {
+ "plugins": ["@babel/plugin-transform-typescript"]
+ }
+ {
+ "presets": ["@babel/preset-flow"]
+ }
+ {
+ "plugins": ["@babel/plugin-transform-flow-strip-types"]
+ }
+ {
+ "plugins": ["@babel/plugin-transform-runtime"]
+ }
+ {
+ "plugins": [
+ [
+ "@babel/plugin-transform-runtime",
+ {
+ "absoluteRuntime": false,
+ "corejs": false,
+ "helpers": true,
+ "regenerator": true,
+ "version": "7.0.0-beta.0"
+ }
+ ]
+ ]
+ }
+ {
+ "plugins": [
+ ["@babel/plugin-transform-runtime", {
+ "version": "^7.24.0"
+ }]
+ ]
+ }
+ module.exports = api => {
+ const targets = api.targets();
+ // The targets have native optional chaining support
+ // if `transform-optional-chaining` is _not_ required
+ const optionalChainingSupported = !isRequired(
+ "transform-optional-chaining",
+ targets
+ );
+ };
\ No newline at end of file
diff --git a/.idx/backend/db.js b/.idx/backend/db.js
new file mode 100644
index 0000000..de6def9
--- /dev/null
+++ b/.idx/backend/db.js
@@ -0,0 +1,3537 @@
+import mongoose from 'mongoose';
+const { Schema } = mongoose;
+const blogSchema = new Schema({
+ title: String, // String is shorthand for {type: String}
+ author: String,
+ body: String,
+ comments: [{ body: String, date: Date }],
+ date: { type: Date, default: Date.now },
+ hidden: Boolean,
+ meta: {
+ votes: Number,
+ favs: Number
+ }
+});
+// getting-started.js
+const mongoose = require('mongoose');
+
+main().catch(err => console.log(err));
+
+async function main() {
+ await mongoose.connect('mongodb://127.0.0.1:27017/test');
+
+ // use `await mongoose.connect('mongodb://user:password@127.0.0.1:27017/test');` if your database has auth enabled
+}
+const kittySchema = new mongoose.Schema({
+ name: String
+ });
+ const Kitten = mongoose.model('Kitten', kittySchema);
+ const silence = new Kitten({ name: 'Silence' });
+console.log(silence.name); // 'Silence'
+// NOTE: methods must be added to the schema before compiling it with mongoose.model()
+kittySchema.methods.speak = function speak() {
+ const greeting = this.name
+ ? 'Meow name is ' + this.name
+ : 'I don\'t have a name';
+ console.log(greeting);
+ };
+
+ const Kitten = mongoose.model('Kitten', kittySchema);
+ const fluffy = new Kitten({ name: 'fluffy' });
+fluffy.speak(); // "Meow name is fluffy"
+await fluffy.save();
+fluffy.speak();
+const kittens = await Kitten.find();
+console.log(kittens);
+await Kitten.find({ name: /^fluff/ });
+
+const Blog = mongoose.model('Blog', blogSchema);
+// ready to go!
+const schema = new Schema();
+
+schema.path('_id'); // ObjectId { ... }
+const Model = mongoose.model('Test', schema);
+
+const doc = new Model();
+doc._id instanceof mongoose.Types.ObjectId; // true
+const schema = new Schema({
+ _id: Number // <-- overwrite Mongoose's default `_id`
+ });
+ const Model = mongoose.model('Test', schema);
+
+ const doc = new Model();
+ await doc.save(); // Throws "document must have an _id before saving"
+
+ doc._id = 1;
+ await doc.save(); // works
+ const nestedSchema = new Schema(
+ { name: String },
+ { _id: false } // <-- disable `_id`
+ );
+ const schema = new Schema({
+ subdoc: nestedSchema,
+ docArray: [nestedSchema]
+ });
+ const Test = mongoose.model('Test', schema);
+
+ // Neither `subdoc` nor `docArray.0` will have an `_id`
+ await Test.create({
+ subdoc: { name: 'test 1' },
+ docArray: [{ name: 'test 2' }]
+ });
+ // define a schema
+const animalSchema = new Schema({ name: String, type: String },
+ {
+ // Assign a function to the "methods" object of our animalSchema through schema options.
+ // By following this approach, there is no need to create a separate TS type to define the type of the instance functions.
+ methods: {
+ findSimilarTypes(cb) {
+ return mongoose.model('Animal').find({ type: this.type }, cb);
+ }
+ }
+ });
+ const Animal = mongoose.model('Animal', animalSchema);
+const dog = new Animal({ type: 'dog' });
+
+dog.findSimilarTypes((err, dogs) => {
+ console.log(dogs); // woof
+});
+// define a schema
+const animalSchema = new Schema({ name: String, type: String },
+ {
+ // Assign a function to the "statics" object of our animalSchema through schema options.
+ // By following this approach, there is no need to create a separate TS type to define the type of the statics functions.
+ statics: {
+ findByName(name) {
+ return this.find({ name: new RegExp(name, 'i') });
+ }
+ }
+ });
+
+ // Or, Assign a function to the "statics" object of our animalSchema
+ animalSchema.statics.findByName = function(name) {
+ return this.find({ name: new RegExp(name, 'i') });
+ };
+ // Or, equivalently, you can call `animalSchema.static()`.
+ animalSchema.static('findByBreed', function(breed) { return this.find({ breed }); });
+
+ const Animal = mongoose.model('Animal', animalSchema);
+ let animals = await Animal.findByName('fido');
+ animals = animals.concat(await Animal.findByBreed('Poodle'));
+ // define a schema
+const animalSchema = new Schema({ name: String, type: String },
+ {
+ // Assign a function to the "query" object of our animalSchema through schema options.
+ // By following this approach, there is no need to create a separate TS type to define the type of the query functions.
+ query: {
+ byName(name) {
+ return this.where({ name: new RegExp(name, 'i') });
+ }
+ }
+ });
+
+ // Or, Assign a function to the "query" object of our animalSchema
+ animalSchema.query.byName = function(name) {
+ return this.where({ name: new RegExp(name, 'i') });
+ };
+
+ const Animal = mongoose.model('Animal', animalSchema);
+
+ Animal.find().byName('fido').exec((err, animals) => {
+ console.log(animals);
+ });
+
+ Animal.findOne().byName('fido').exec((err, animal) => {
+ console.log(animal);
+ });
+ Indexes
+ const animalSchema = new Schema({
+ name: String,
+ type: String,
+ tags: { type: [String], index: true } // path level
+ });
+
+ animalSchema.index({ name: 1, type: -1 }); // schema level
+ mongoose.connect('mongodb://user:pass@127.0.0.1:port/database', { autoIndex: false });
+// or
+mongoose.createConnection('mongodb://user:pass@127.0.0.1:port/database', { autoIndex: false });
+// or
+mongoose.set('autoIndex', false);
+// or
+animalSchema.set('autoIndex', false);
+// or
+new Schema({ /* ... */ }, { autoIndex: false });
+// Will cause an error because mongodb has an _id index by default that
+// is not sparse
+animalSchema.index({ _id: 1 }, { sparse: true });
+const Animal = mongoose.model('Animal', animalSchema);
+
+Animal.on('index', error => {
+ // "_id index cannot be sparse"
+ console.log(error.message);
+});
+// define a schema
+const personSchema = new Schema({
+ name: {
+ first: String,
+ last: String
+ }
+ });
+
+ // compile our model
+ const Person = mongoose.model('Person', personSchema);
+
+ // create a document
+ const axl = new Person({
+ name: { first: 'Axl', last: 'Rose' }
+ });
+ console.log(axl.name.first + ' ' + axl.name.last); // Axl Rose
+ // That can be done either by adding it to schema options:
+const personSchema = new Schema({
+ name: {
+ first: String,
+ last: String
+ }
+ }, {
+ virtuals: {
+ fullName: {
+ get() {
+ return this.name.first + ' ' + this.name.last;
+ }
+ }
+ }
+ });
+
+ // Or by using the virtual method as following:
+ personSchema.virtual('fullName').get(function() {
+ return this.name.first + ' ' + this.name.last;
+ });
+ console.log(axl.fullName); // Axl Rose
+ // Convert `doc` to a POJO, with virtuals attached
+doc.toObject({ virtuals: true });
+
+// Equivalent:
+doc.toJSON({ virtuals: true });
+// Explicitly add virtuals to `JSON.stringify()` output
+JSON.stringify(doc.toObject({ virtuals: true }));
+
+// Or, to automatically attach virtuals to `JSON.stringify()` output:
+const personSchema = new Schema({
+ name: {
+ first: String,
+ last: String
+ }
+}, {
+ toJSON: { virtuals: true } // <-- include virtuals in `JSON.stringify()`
+});
+// Again that can be done either by adding it to schema options:
+const personSchema = new Schema({
+ name: {
+ first: String,
+ last: String
+ }
+ }, {
+ virtuals: {
+ fullName: {
+ get() {
+ return this.name.first + ' ' + this.name.last;
+ },
+ set(v) {
+ this.name.first = v.substr(0, v.indexOf(' '));
+ this.name.last = v.substr(v.indexOf(' ') + 1);
+ }
+ }
+ }
+ });
+
+ // Or by using the virtual method as following:
+ personSchema.virtual('fullName').
+ get(function() {
+ return this.name.first + ' ' + this.name.last;
+ }).
+ set(function(v) {
+ this.name.first = v.substr(0, v.indexOf(' '));
+ this.name.last = v.substr(v.indexOf(' ') + 1);
+ });
+
+ axl.fullName = 'William Rose'; // Now `axl.name.first` is "William"
+ const personSchema = new Schema({
+ n: {
+ type: String,
+ // Now accessing `name` will get you the value of `n`, and setting `name` will set the value of `n`
+ alias: 'name'
+ }
+ });
+
+ // Setting `name` will propagate to `n`
+ const person = new Person({ name: 'Val' });
+ console.log(person); // { n: 'Val' }
+ console.log(person.toObject({ virtuals: true })); // { n: 'Val', name: 'Val' }
+ console.log(person.name); // "Val"
+
+ person.name = 'Not Val';
+ console.log(person); // { n: 'Not Val' }
+ const childSchema = new Schema({
+ n: {
+ type: String,
+ alias: 'name'
+ }
+ }, { _id: false });
+
+ const parentSchema = new Schema({
+ // If in a child schema, alias doesn't need to include the full nested path
+ c: childSchema,
+ name: {
+ f: {
+ type: String,
+ // Alias needs to include the full nested path if declared inline
+ alias: 'name.first'
+ }
+ }
+ });
+ new Schema({ /* ... */ }, options);
+
+// or
+
+const schema = new Schema({ /* ... */ });
+schema.set(option, value);
+const schema = new Schema({ /* ... */ }, { autoIndex: false });
+const Clock = mongoose.model('Clock', schema);
+Clock.ensureIndexes(callback);
+const schema = new Schema({ name: String }, {
+ autoCreate: false,
+ capped: { size: 1024 }
+ });
+ const Test = mongoose.model('Test', schema);
+
+ // No-op if collection already exists, even if the collection is not capped.
+ // This means that `capped` won't be applied if the 'tests' collection already exists.
+ await Test.createCollection();
+ const schema = new Schema({ /* ... */ }, { bufferCommands: false });
+ mongoose.set('bufferCommands', true);
+// Schema option below overrides the above, if the schema option is set.
+const schema = new Schema({ /* ... */ }, { bufferCommands: false });
+// If an operation is buffered for more than 1 second, throw an error.
+const schema = new Schema({ /* ... */ }, { bufferTimeoutMS: 1000 });
+new Schema({ /* ... */ }, { capped: 1024 });
+new Schema({ /* ... */ }, { capped: { size: 1024, max: 1000, autoIndexId: true } });
+const dataSchema = new Schema({ /* ... */ }, { collection: 'data' });
+const baseSchema = new Schema({}, { discriminatorKey: 'type' });
+const BaseModel = mongoose.model('Test', baseSchema);
+
+const personSchema = new Schema({ name: String });
+const PersonModel = BaseModel.discriminator('Person', personSchema);
+
+const doc = new PersonModel({ name: 'James T. Kirk' });
+// Without `discriminatorKey`, Mongoose would store the discriminator
+// key in `__t` instead of `type`
+doc.type; // 'Person'
+const childSchema1 = Schema({
+ name: { type: String, index: true }
+ });
+
+ const childSchema2 = Schema({
+ name: { type: String, index: true }
+ }, { excludeIndexes: true });
+
+ // Mongoose will create an index on `child1.name`, but **not** `child2.name`, because `excludeIndexes`
+ // is true on `childSchema2`
+ const User = new Schema({
+ name: { type: String, index: true },
+ child1: childSchema1,
+ child2: childSchema2
+ });
+ // default behavior
+const schema = new Schema({ name: String });
+const Page = mongoose.model('Page', schema);
+const p = new Page({ name: 'mongodb.org' });
+console.log(p.id); // '50341373e894ad16347efe01'
+
+// disabled id
+const schema = new Schema({ name: String }, { id: false });
+const Page = mongoose.model('Page', schema);
+const p = new Page({ name: 'mongodb.org' });
+console.log(p.id); // undefined
+// default behavior
+const schema = new Schema({ name: String });
+const Page = mongoose.model('Page', schema);
+const p = new Page({ name: 'mongodb.org' });
+console.log(p); // { _id: '50341373e894ad16347efe01', name: 'mongodb.org' }
+
+// disabled _id
+const childSchema = new Schema({ name: String }, { _id: false });
+const parentSchema = new Schema({ children: [childSchema] });
+
+const Model = mongoose.model('Model', parentSchema);
+
+Model.create({ children: [{ name: 'Luke' }] }, (error, doc) => {
+ // doc.children[0]._id will be undefined
+});
+const schema = new Schema({ name: String, inventory: {} });
+const Character = mongoose.model('Character', schema);
+
+// will store `inventory` field if it is not empty
+const frodo = new Character({ name: 'Frodo', inventory: { ringOfPower: 1 } });
+await frodo.save();
+let doc = await Character.findOne({ name: 'Frodo' }).lean();
+doc.inventory; // { ringOfPower: 1 }
+
+// will not store `inventory` field if it is empty
+const sam = new Character({ name: 'Sam', inventory: {} });
+await sam.save();
+doc = await Character.findOne({ name: 'Sam' }).lean();
+doc.inventory; // undefined
+const schema = new Schema({ name: String, inventory: {} }, { minimize: false });
+const Character = mongoose.model('Character', schema);
+
+// will store `inventory` if empty
+const sam = new Character({ name: 'Sam', inventory: {} });
+await sam.save();
+doc = await Character.findOne({ name: 'Sam' }).lean();
+doc.inventory; // {}
+const sam = new Character({ name: 'Sam', inventory: {} });
+sam.$isEmpty('inventory'); // true
+
+sam.inventory.barrowBlade = 1;
+sam.$isEmpty('inventory'); // false
+const schema = new Schema({ /* ... */ }, { read: 'primary' }); // also aliased as 'p'
+const schema = new Schema({ /* ... */ }, { read: 'primaryPreferred' }); // aliased as 'pp'
+const schema = new Schema({ /* ... */ }, { read: 'secondary' }); // aliased as 's'
+const schema = new Schema({ /* ... */ }, { read: 'secondaryPreferred' }); // aliased as 'sp'
+const schema = new Schema({ /* ... */ }, { read: 'nearest' }); // aliased as 'n'
+// pings the replset members periodically to track network latency
+const options = { replset: { strategy: 'ping' } };
+mongoose.connect(uri, options);
+
+const schema = new Schema({ /* ... */ }, { read: ['nearest', { disk: 'ssd' }] });
+mongoose.model('JellyBean', schema);
+const schema = new Schema({ name: String }, {
+ writeConcern: {
+ w: 'majority',
+ j: true,
+ wtimeout: 1000
+ }
+ });
+ new Schema({ /* ... */ }, { shardKey: { tag: 1, name: 1 } });
+ const thingSchema = new Schema({ /* ... */ })
+const Thing = mongoose.model('Thing', thingSchema);
+const thing = new Thing({ iAmNotInTheSchema: true });
+thing.save(); // iAmNotInTheSchema is not saved to the db
+
+// set to false..
+const thingSchema = new Schema({ /* ... */ }, { strict: false });
+const thing = new Thing({ iAmNotInTheSchema: true });
+thing.save(); // iAmNotInTheSchema is now saved to the db!!
+const thingSchema = new Schema({ /* ... */ });
+const Thing = mongoose.model('Thing', thingSchema);
+const thing = new Thing;
+thing.set('iAmNotInTheSchema', true);
+thing.save(); // iAmNotInTheSchema is not saved to the db
+const Thing = mongoose.model('Thing');
+const thing = new Thing(doc, true); // enables strict mode
+const thing = new Thing(doc, false); // disables strict mode
+const thingSchema = new Schema({ /* ... */ });
+const Thing = mongoose.model('Thing', thingSchema);
+const thing = new Thing;
+thing.iAmNotInTheSchema = true;
+thing.save(); // iAmNotInTheSchema is never saved to the db
+const mySchema = new Schema({ field: Number }, { strict: true });
+const MyModel = mongoose.model('Test', mySchema);
+// Mongoose will filter out `notInSchema: 1` because `strict: true`, meaning this query will return
+// _all_ documents in the 'tests' collection
+MyModel.find({ notInSchema: 1 });
+// Mongoose will strip out `notInSchema` from the update if `strict` is
+// not `false`
+MyModel.updateMany({}, { $set: { notInSchema: 1 } });
+const mySchema = new Schema({ field: Number }, {
+ strict: true,
+ strictQuery: false // Turn off strict mode for query filters
+ });
+ const MyModel = mongoose.model('Test', mySchema);
+ // Mongoose will not strip out `notInSchema: 1` because `strictQuery` is false
+ MyModel.find({ notInSchema: 1 });
+ // Do this instead:
+const docs = await MyModel.find({ name: req.query.name, age: req.query.age }).setOptions({ sanitizeFilter: true });
+// Set `strictQuery` to `true` to omit unknown fields in queries.
+mongoose.set('strictQuery', true);
+const schema = new Schema({ name: String });
+schema.path('name').get(function(v) {
+ return v + ' is my name';
+});
+schema.set('toJSON', { getters: true, virtuals: false });
+const M = mongoose.model('Person', schema);
+const m = new M({ name: 'Max Headroom' });
+console.log(m.toObject()); // { _id: 504e0cd7dd992d9be2f20b6f, name: 'Max Headroom' }
+console.log(m.toJSON()); // { _id: 504e0cd7dd992d9be2f20b6f, name: 'Max Headroom is my name' }
+// since we know toJSON is called whenever a js object is stringified:
+console.log(JSON.stringify(m)); // { "_id": "504e0cd7dd992d9be2f20b6f", "name": "Max Headroom is my name" }
+const schema = new Schema({ name: String });
+schema.path('name').get(function(v) {
+ return v + ' is my name';
+});
+schema.set('toObject', { getters: true });
+const M = mongoose.model('Person', schema);
+const m = new M({ name: 'Max Headroom' });
+console.log(m); // { _id: 504e0cd7dd992d9be2f20b6f, name: 'Max Headroom is my name' }
+// Mongoose interprets this as 'loc is a String'
+const schema = new Schema({ loc: { type: String, coordinates: [Number] } });
+const schema = new Schema({
+ // Mongoose interprets this as 'loc is an object with 2 keys, type and coordinates'
+ loc: { type: String, coordinates: [Number] },
+ // Mongoose interprets this as 'name is a String'
+ name: { $type: String }
+ }, { typeKey: '$type' }); // A '$type' key means this object is a type declaration
+ const schema = new Schema({ name: String });
+schema.set('validateBeforeSave', false);
+schema.path('name').validate(function(value) {
+ return value != null;
+});
+const M = mongoose.model('Person', schema);
+const m = new M({ name: null });
+m.validate(function(err) {
+ console.log(err); // Will tell you that null is not allowed.
+});
+m.save(); // Succeeds despite being invalid
+const schema = new Schema({ name: 'string' });
+const Thing = mongoose.model('Thing', schema);
+const thing = new Thing({ name: 'mongoose v3' });
+await thing.save(); // { __v: 0, name: 'mongoose v3' }
+
+// customized versionKey
+new Schema({ /* ... */ }, { versionKey: '_somethingElse' })
+const Thing = mongoose.model('Thing', schema);
+const thing = new Thing({ name: 'mongoose v3' });
+thing.save(); // { _somethingElse: 0, name: 'mongoose v3' }
+// 2 copies of the same document
+const doc1 = await Model.findOne({ _id });
+const doc2 = await Model.findOne({ _id });
+
+// Delete first 3 comments from `doc1`
+doc1.comments.splice(0, 3);
+await doc1.save();
+
+// The below `save()` will throw a VersionError, because you're trying to
+// modify the comment at index 1, and the above `splice()` removed that
+// comment.
+doc2.set('comments.1.body', 'new comment');
+await doc2.save();
+new Schema({ /* ... */ }, { versionKey: false });
+const Thing = mongoose.model('Thing', schema);
+const thing = new Thing({ name: 'no versioning please' });
+thing.save(); // { name: 'no versioning please' }
+schema.pre('findOneAndUpdate', function() {
+ const update = this.getUpdate();
+ if (update.__v != null) {
+ delete update.__v;
+ }
+ const keys = ['$set', '$setOnInsert'];
+ for (const key of keys) {
+ if (update[key] != null && update[key].__v != null) {
+ delete update[key].__v;
+ if (Object.keys(update[key]).length === 0) {
+ delete update[key];
+ }
+ }
+ }
+ update.$inc = update.$inc || {};
+ update.$inc.__v = 1;
+ });
+ async function markApproved(id) {
+ const house = await House.findOne({ _id });
+ if (house.photos.length < 2) {
+ throw new Error('House must have at least two photos!');
+ }
+
+ house.status = 'APPROVED';
+ await house.save();
+ }
+ const house = await House.findOne({ _id });
+if (house.photos.length < 2) {
+ throw new Error('House must have at least two photos!');
+}
+
+const house2 = await House.findOne({ _id });
+house2.photos = [];
+await house2.save();
+
+// Marks the house as 'APPROVED' even though it has 0 photos!
+house.status = 'APPROVED';
+await house.save();
+const House = mongoose.model('House', Schema({
+ status: String,
+ photos: [String]
+ }, { optimisticConcurrency: true }));
+
+ const house = await House.findOne({ _id });
+ if (house.photos.length < 2) {
+ throw new Error('House must have at least two photos!');
+ }
+
+ const house2 = await House.findOne({ _id });
+ house2.photos = [];
+ await house2.save();
+
+ // Throws 'VersionError: No matching document found for id "..." version 0'
+ house.status = 'APPROVED';
+ await house.save();
+ const schema = new Schema({
+ name: String
+ }, { collation: { locale: 'en_US', strength: 1 } });
+
+ const MyModel = db.model('MyModel', schema);
+
+ MyModel.create([{ name: 'val' }, { name: 'Val' }]).
+ then(() => {
+ return MyModel.find({ name: 'val' });
+ }).
+ then((docs) => {
+ // `docs` will contain both docs, because `strength: 1` means
+ // MongoDB will ignore case when matching.
+ });
+ const schema = Schema({ name: String, timestamp: Date, metadata: Object }, {
+ timeseries: {
+ timeField: 'timestamp',
+ metaField: 'metadata',
+ granularity: 'hours'
+ },
+ autoCreate: false,
+ expireAfterSeconds: 86400
+ });
+
+ // `Test` collection will be a timeseries collection
+ const Test = db.model('Test', schema);
+ new Schema({ /* ... */ }, { skipVersioning: { dontVersionMe: true } });
+thing.dontVersionMe.push('hey');
+thing.save(); // version is not incremented
+const thingSchema = new Schema({ /* ... */ }, { timestamps: { createdAt: 'created_at' } });
+const Thing = mongoose.model('Thing', thingSchema);
+const thing = new Thing();
+await thing.save(); // `created_at` & `updatedAt` will be included
+
+// With updates, Mongoose will add `updatedAt` to `$set`
+await Thing.updateOne({}, { $set: { name: 'Test' } });
+
+// If you set upsert: true, Mongoose will add `created_at` to `$setOnInsert` as well
+await Thing.findOneAndUpdate({}, { $set: { name: 'Test2' } });
+
+// Mongoose also adds timestamps to bulkWrite() operations
+// See https://mongoosejs.com/docs/api/model.html#model_Model-bulkWrite
+await Thing.bulkWrite([
+ {
+ insertOne: {
+ document: {
+ name: 'Jean-Luc Picard',
+ ship: 'USS Stargazer'
+ // Mongoose will add `created_at` and `updatedAt`
+ }
+ }
+ },
+ {
+ updateOne: {
+ filter: { name: 'Jean-Luc Picard' },
+ update: {
+ $set: {
+ ship: 'USS Enterprise'
+ // Mongoose will add `updatedAt`
+ }
+ }
+ }
+ }
+]);
+const schema = Schema({
+ createdAt: Number,
+ updatedAt: Number,
+ name: String
+ }, {
+ // Make Mongoose use Unix time (seconds since Jan 1, 1970)
+ timestamps: { currentTime: () => Math.floor(Date.now() / 1000) }
+ });
+ // Add a `meta` property to all schemas
+mongoose.plugin(function myPlugin(schema) {
+ schema.add({ meta: {} });
+ });
+ const schema1 = new Schema({
+ name: String
+ }, { pluginTags: ['useMetaPlugin'] });
+
+ const schema2 = new Schema({
+ name: String
+ });
+ / Add a `meta` property to all schemas
+mongoose.plugin(function myPlugin(schema) {
+ schema.add({ meta: {} });
+}, { tags: ['useMetaPlugin'] });
+const bookSchema = new Schema({
+ title: 'String',
+ author: { type: 'ObjectId', ref: 'Person' }
+ });
+ const Book = mongoose.model('Book', bookSchema);
+
+ // By default, Mongoose will add `author` to the below `select()`.
+ await Book.find().select('title').populate('author');
+
+ // In other words, the below query is equivalent to the above
+ await Book.find().select('title author').populate('author');
+ const bookSchema = new Schema({
+ title: 'String',
+ author: { type: 'ObjectId', ref: 'Person' }
+ }, { selectPopulatedPaths: false });
+ const Book = mongoose.model('Book', bookSchema);
+
+ // Because `selectPopulatedPaths` is false, the below doc will **not**
+ // contain an `author` property.
+ const doc = await Book.findOne().select('title').populate('author');
+ const childSchema = new Schema({ name: { type: String, required: true } });
+const parentSchema = new Schema({ child: childSchema });
+
+const Parent = mongoose.model('Parent', parentSchema);
+
+// Will contain an error for both 'child.name' _and_ 'child'
+new Parent({ child: {} }).validateSync().errors;
+const childSchema = new Schema({
+ name: { type: String, required: true }
+ }, { storeSubdocValidationError: false }); // <-- set on the child schema
+ const parentSchema = new Schema({ child: childSchema });
+
+ const Parent = mongoose.model('Parent', parentSchema);
+
+ // Will only contain an error for 'child.name'
+ new Parent({ child: {} }).validateSync().errors;
+ const schema = new Schema({ name: String }, {
+ autoCreate: false,
+ collectionOptions: {
+ capped: true,
+ max: 1000
+ }
+ });
+ const Test = mongoose.model('Test', schema);
+
+ // Equivalent to `createCollection({ capped: true, max: 1000 })`
+ await Test.createCollection();
+ const schema = new Schema({ name: String }, { autoSearchIndex: true });
+schema.searchIndex({
+ name: 'my-index',
+ definition: { mappings: { dynamic: true } }
+});
+// Will automatically attempt to create the `my-index` search index.
+const Test = mongoose.model('Test', schema);
+const eventSchema = new mongoose.Schema(
+ { name: String },
+ {
+ readConcern: { level: 'available' } // <-- set default readConcern for all queries
+ }
+ );
+ class MyClass {
+ myMethod() { return 42; }
+ static myStatic() { return 42; }
+ get myVirtual() { return 42; }
+ }
+
+ const schema = new mongoose.Schema();
+ schema.loadClass(MyClass);
+
+ console.log(schema.methods); // { myMethod: [Function: myMethod] }
+ console.log(schema.statics); // { myStatic: [Function: myStatic] }
+ console.log(schema.virtuals); // { myVirtual: VirtualType { ... } }
+ const schema = new Schema({ name: String });
+schema.path('name') instanceof mongoose.SchemaType; // true
+schema.path('name') instanceof mongoose.Schema.Types.String; // true
+schema.path('name').instance; // 'String'
+const schema = new Schema({
+ name: String,
+ binary: Buffer,
+ living: Boolean,
+ updated: { type: Date, default: Date.now },
+ age: { type: Number, min: 18, max: 65 },
+ mixed: Schema.Types.Mixed,
+ _someId: Schema.Types.ObjectId,
+ decimal: Schema.Types.Decimal128,
+ double: Schema.Types.Double,
+ int32bit: Schema.Types.Int32,
+ array: [],
+ ofString: [String],
+ ofNumber: [Number],
+ ofDates: [Date],
+ ofBuffer: [Buffer],
+ ofBoolean: [Boolean],
+ ofMixed: [Schema.Types.Mixed],
+ ofObjectId: [Schema.Types.ObjectId],
+ ofArrays: [[]],
+ ofArrayOfNumbers: [[Number]],
+ nested: {
+ stuff: { type: String, lowercase: true, trim: true }
+ },
+ map: Map,
+ mapOfString: {
+ type: Map,
+ of: String
+ }
+ });
+
+ // example use
+
+ const Thing = mongoose.model('Thing', schema);
+
+ const m = new Thing;
+ m.name = 'Statue of Liberty';
+ m.age = 125;
+ m.updated = new Date;
+ m.binary = Buffer.alloc(0);
+ m.living = false;
+ m.mixed = { any: { thing: 'i want' } };
+ m.markModified('mixed');
+ m._someId = new mongoose.Types.ObjectId;
+ m.array.push(1);
+ m.ofString.push('strings!');
+ m.ofNumber.unshift(1, 2, 3, 4);
+ m.ofDates.addToSet(new Date);
+ m.ofBuffer.pop();
+ m.ofMixed = [1, [], 'three', { four: 5 }];
+ m.nested.stuff = 'good';
+ m.map = new Map([['key', 'value']]);
+ m.save(callback);
+ // 3 string SchemaTypes: 'name', 'nested.firstName', 'nested.lastName'
+const schema = new Schema({
+ name: { type: String },
+ nested: {
+ firstName: { type: String },
+ lastName: { type: String }
+ }
+ });
+ const holdingSchema = new Schema({
+ // You might expect `asset` to be an object that has 2 properties,
+ // but unfortunately `type` is special in Mongoose so mongoose
+ // interprets this schema to mean that `asset` is a string
+ asset: {
+ type: String,
+ ticker: String
+ }
+ });
+ const holdingSchema = new Schema({
+ asset: {
+ // Workaround to make sure Mongoose knows `asset` is an object
+ // and `asset.type` is a string, rather than thinking `asset`
+ // is a string.
+ type: { type: String },
+ ticker: String
+ }
+ });
+ const schema1 = new Schema({
+ test: String // `test` is a path of type String
+ });
+
+ const schema2 = new Schema({
+ // The `test` object contains the "SchemaType options"
+ test: { type: String } // `test` is a path of type string
+ });
+ const schema2 = new Schema({
+ test: {
+ type: String,
+ lowercase: true // Always convert `test` to lowercase
+ }
+ });
+ const numberSchema = new Schema({
+ integerOnly: {
+ type: Number,
+ get: v => Math.round(v),
+ set: v => Math.round(v),
+ alias: 'i'
+ }
+ });
+
+ const Number = mongoose.model('Number', numberSchema);
+
+ const doc = new Number();
+ doc.integerOnly = 2.001;
+ doc.integerOnly; // 2
+ doc.i; // 2
+ doc.i = 3.001;
+ doc.integerOnly; // 3
+ doc.i; // 3
+ const schema2 = new Schema({
+ test: {
+ type: String,
+ index: true,
+ unique: true // Unique index. If you specify `unique: true`
+ // specifying `index: true` is optional if you do `unique: true`
+ }
+ });
+ const schema1 = new Schema({ name: String }); // name will be cast to string
+const schema2 = new Schema({ name: 'String' }); // Equivalent
+
+const Person = mongoose.model('Person', schema2);
+new Person({ name: 42 }).name; // "42" as a string
+new Person({ name: { toString: () => 42 } }).name; // "42" as a string
+
+// "undefined", will get a cast error if you `save()` this document
+new Person({ name: { foo: 42 } }).name;
+const schema1 = new Schema({ age: Number }); // age will be cast to a Number
+const schema2 = new Schema({ age: 'Number' }); // Equivalent
+
+const Car = mongoose.model('Car', schema2);
+new Car({ age: '15' }).age; // 15 as a Number
+new Car({ age: true }).age; // 1 as a Number
+new Car({ age: false }).age; // 0 as a Number
+new Car({ age: { valueOf: () => 83 } }).age; // 83 as a Number
+const Assignment = mongoose.model('Assignment', { dueDate: Date });
+const doc = await Assignment.findOne();
+doc.dueDate.setMonth(3);
+await doc.save(); // THIS DOES NOT SAVE YOUR CHANGE
+
+doc.markModified('dueDate');
+await doc.save(); // works
+const schema1 = new Schema({ binData: Buffer }); // binData will be cast to a Buffer
+const schema2 = new Schema({ binData: 'Buffer' }); // Equivalent
+
+const Data = mongoose.model('Data', schema2);
+const file1 = new Data({ binData: 'test'}); // {"type":"Buffer","data":[116,101,115,116]}
+const file2 = new Data({ binData: 72987 }); // {"type":"Buffer","data":[27]}
+const file4 = new Data({ binData: { type: 'Buffer', data: [1, 2, 3]}}); // {"type":"Buffer","data":[1,2,3]}
+const Any = new Schema({ any: {} });
+const Any = new Schema({ any: Object });
+const Any = new Schema({ any: Schema.Types.Mixed });
+const Any = new Schema({ any: mongoose.Mixed });
+person.anything = { x: [3, 4, { y: 'changed' }] };
+person.markModified('anything');
+person.save(); // Mongoose will save changes to `anything`.
+const mongoose = require('mongoose');
+const carSchema = new mongoose.Schema({ driver: mongoose.ObjectId });
+const Car = mongoose.model('Car', carSchema);
+
+const car = new Car();
+car.driver = new mongoose.Types.ObjectId();
+
+typeof car.driver; // 'object'
+car.driver instanceof mongoose.Types.ObjectId; // true
+
+car.driver.toString(); // Something like "5e1a0651741b255ddda996c4"
+const M = mongoose.model('Test', new Schema({ b: Boolean }));
+console.log(new M({ b: 'nay' }).b); // undefined
+
+// Set { false, 'false', 0, '0', 'no' }
+console.log(mongoose.Schema.Types.Boolean.convertToFalse);
+
+mongoose.Schema.Types.Boolean.convertToFalse.add('nay');
+console.log(new M({ b: 'nay' }).b); // false
+const ToySchema = new Schema({ name: String });
+const ToyBoxSchema = new Schema({
+ toys: [ToySchema],
+ buffers: [Buffer],
+ strings: [String],
+ numbers: [Number]
+ // ... etc
+});
+const ToyBox = mongoose.model('ToyBox', ToyBoxSchema);
+console.log((new ToyBox()).toys); // []
+const ToyBoxSchema = new Schema({
+ toys: {
+ type: [ToySchema],
+ default: undefined
+ }
+ });
+ const Empty1 = new Schema({ any: [] });
+const Empty2 = new Schema({ any: Array });
+const Empty3 = new Schema({ any: [Schema.Types.Mixed] });
+const Empty4 = new Schema({ any: [{}] });
+const userSchema = new Schema({
+ // `socialMediaHandles` is a map whose values are strings. A map's
+ // keys are always strings. You specify the type of values using `of`.
+ socialMediaHandles: {
+ type: Map,
+ of: String
+ }
+ });
+
+ const User = mongoose.model('User', userSchema);
+ // Map { 'github' => 'vkarpov15', 'twitter' => '@code_barbarian' }
+ console.log(new User({
+ socialMediaHandles: {
+ github: 'vkarpov15',
+ twitter: '@code_barbarian'
+ }
+ }).socialMediaHandles);
+ const user = new User({
+ socialMediaHandles: {}
+ });
+
+ // Good
+ user.socialMediaHandles.set('github', 'vkarpov15');
+ // Works too
+ user.set('socialMediaHandles.twitter', '@code_barbarian');
+ // Bad, the `myspace` property will **not** get saved
+ user.socialMediaHandles.myspace = 'fail';
+
+ // 'vkarpov15'
+ console.log(user.socialMediaHandles.get('github'));
+ // '@code_barbarian'
+ console.log(user.get('socialMediaHandles.twitter'));
+ // undefined
+ user.socialMediaHandles.github;
+
+ // Will only save the 'github' and 'twitter' properties
+ user.save();
+ const userSchema = new Schema({
+ socialMediaHandles: {
+ type: Map,
+ of: new Schema({
+ handle: String,
+ oauth: {
+ type: ObjectId,
+ ref: 'OAuth'
+ }
+ })
+ }
+ });
+ const User = mongoose.model('User', userSchema);
+ const user = await User.findOne().populate('socialMediaHandles.$*.oauth');
+ const authorSchema = new Schema({
+ _id: Schema.Types.UUID, // Can also do `_id: 'UUID'`
+ name: String
+ });
+
+ const Author = mongoose.model('Author', authorSchema);
+
+ const bookSchema = new Schema({
+ authorId: { type: Schema.Types.UUID, ref: 'Author' }
+ });
+ const Book = mongoose.model('Book', bookSchema);
+
+ const author = new Author({ name: 'Martin Fowler' });
+ console.log(typeof author._id); // 'string'
+ console.log(author.toObject()._id instanceof mongoose.mongo.BSON.Binary); // true
+
+ const book = new Book({ authorId: '09190f70-3d30-11e5-8814-0f4df9a59c41' });
+ const { randomUUID } = require('crypto');
+
+const schema = new mongoose.Schema({
+ docId: {
+ type: 'UUID',
+ default: () => randomUUID()
+ }
+});
+const questionSchema = new Schema({
+ answer: BigInt
+ });
+ const Question = mongoose.model('Question', questionSchema);
+
+ const question = new Question({ answer: 42n });
+ typeof question.answer; // 'bigint'
+ const temperatureSchema = new Schema({
+ celsius: Double
+ });
+ const Temperature = mongoose.model('Temperature', temperatureSchema);
+
+ const temperature = new Temperature({ celsius: 1339 });
+ temperature.celsius instanceof bson.Double; // true
+ new Temperature({ celsius: '1.2e12' }).celsius; // 15 as a Double
+new Temperature({ celsius: true }).celsius; // 1 as a Double
+new Temperature({ celsius: false }).celsius; // 0 as a Double
+new Temperature({ celsius: { valueOf: () => 83.0033 } }).celsius; // 83 as a Double
+new Temperature({ celsius: '' }).celsius; // null
+const studentSchema = new Schema({
+ id: Int32
+ });
+ const Student = mongoose.model('Student', studentSchema);
+
+ const student = new Student({ id: 1339 });
+ typeof student.id; // 'number'
+ new Student({ id: '15' }).id; // 15 as a Int32
+new Student({ id: true }).id; // 1 as a Int32
+new Student({ id: false }).id; // 0 as a Int32
+new Student({ id: { valueOf: () => 83 } }).id; // 83 as a Int32
+new Student({ id: '' }).id; // null as a Int32
+const root = 'https://s3.amazonaws.com/mybucket';
+
+const userSchema = new Schema({
+ name: String,
+ picture: {
+ type: String,
+ get: v => `${root}${v}`
+ }
+});
+
+const User = mongoose.model('User', userSchema);
+
+const doc = new User({ name: 'Val', picture: '/123.png' });
+doc.picture; // 'https://s3.amazonaws.com/mybucket/123.png'
+doc.toObject({ getters: false }).picture; // '/123.png'
+const schema = new Schema({
+ arr: [{ url: String }]
+ });
+
+ const root = 'https://s3.amazonaws.com/mybucket';
+
+ // Bad, don't do this!
+ schema.path('arr').get(v => {
+ return v.map(el => Object.assign(el, { url: root + el.url }));
+ });
+
+ // Later
+ doc.arr.push({ key: String });
+ doc.arr[0]; // 'undefined' because every `doc.arr` creates a new array!
+ const schema = new Schema({
+ arr: [{ url: String }]
+ });
+
+ const root = 'https://s3.amazonaws.com/mybucket';
+
+ // Good, do this instead of declaring a getter on `arr`
+ schema.path('arr.0.url').get(v => `${root}${v}`);
+ const subSchema = new mongoose.Schema({
+ // some schema definition here
+ });
+
+ const schema = new mongoose.Schema({
+ data: {
+ type: subSchema,
+ default: {}
+ }
+ });
+ const sampleSchema = new Schema({ name: { type: String, required: true } });
+console.log(sampleSchema.path('name'));
+// Output looks like:
+/**
+ * SchemaString {
+ * enumValues: [],
+ * regExp: null,
+ * path: 'name',
+ * instance: 'String',
+ * validators: ...
+ */
+mongoose.connect('mongodb://127.0.0.1:27017/myapp');
+const MyModel = mongoose.model('Test', new Schema({ name: String }));
+// Works
+await MyModel.findOne();
+const MyModel = mongoose.model('Test', new Schema({ name: String }));
+const promise = MyModel.findOne();
+
+setTimeout(function() {
+ mongoose.connect('mongodb://127.0.0.1:27017/myapp');
+}, 60000);
+
+// Will just hang until mongoose successfully connects
+await promise;
+mongoose.set('bufferCommands', false);
+const schema = new Schema({
+ name: String
+ }, {
+ capped: { size: 1024 },
+ bufferCommands: false,
+ autoCreate: false // disable `autoCreate` since `bufferCommands` is false
+ });
+
+ const Model = mongoose.model('Test', schema);
+ // Explicitly create the collection before using it
+ // so the collection is capped.
+ await Model.createCollection();
+ mongoose.connect('mongodb://127.0.0.1:27017/test').
+ catch(error => handleError(error));
+
+// Or:
+try {
+ await mongoose.connect('mongodb://127.0.0.1:27017/test');
+} catch (error) {
+ handleError(error);
+}
+mongoose.connection.on('error', err => {
+ logError(err);
+ });
+ mongoose.connect(uri, options);
+ // Throws an error "getaddrinfo ENOTFOUND doesnt.exist" after 30 seconds
+await mongoose.connect('mongodb://doesnt.exist:27017/test');
+mongoose.connect(uri, {
+ serverSelectionTimeoutMS: 5000
+ });
+
+// Prints "Failed 0", "Failed 1", "Failed 2" and then throws an
+// error. Exits after approximately 15 seconds.
+for (let i = 0; i < 3; ++i) {
+ try {
+ await mongoose.connect('mongodb://doesnt.exist:27017/test', {
+ serverSelectionTimeoutMS
+ });
+ break;
+ } catch (err) {
+ console.log('Failed', i);
+ if (i >= 2) {
+ throw err;
+ }
+ }
+ }
+ mongoose.connect(uri, options, function(error) {
+ // Check error in initial connection. There is no 2nd param to the callback.
+ });
+
+ // Or using promises
+ mongoose.connect(uri, options).then(
+ () => { /** ready to use. The `mongoose.connect()` promise resolves to mongoose instance. */ },
+ err => { /** handle initial connection error */ }
+ );
+ mongoose.connect('mongodb://127.0.0.1:27017/test?socketTimeoutMS=1000&bufferCommands=false&authSource=otherdb');
+// The above is equivalent to:
+mongoose.connect('mongodb://127.0.0.1:27017/test', {
+ socketTimeoutMS: 1000
+ // Note that mongoose will **not** pull `bufferCommands` from the query string
+});
+mongoose.connection.on('connected', () => console.log('connected'));
+mongoose.connection.on('open', () => console.log('open'));
+mongoose.connection.on('disconnected', () => console.log('disconnected'));
+mongoose.connection.on('reconnected', () => console.log('reconnected'));
+mongoose.connection.on('disconnecting', () => console.log('disconnecting'));
+mongoose.connection.on('close', () => console.log('close'));
+
+mongoose.connect('mongodb://127.0.0.1:27017/mongoose_test');
+const conn = mongoose.createConnection('mongodb://127.0.0.1:27017/mongoose_test');
+
+conn.on('connected', () => console.log('connected'));
+conn.on('open', () => console.log('open'));
+conn.on('disconnected', () => console.log('disconnected'));
+conn.on('reconnected', () => console.log('reconnected'));
+conn.on('disconnecting', () => console.log('disconnecting'));
+conn.on('close', () => console.log('close'));
+mongoose.connect('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]' [, options]);
+mongoose.connect('mongodb://user:pw@host1.com:27017,host2.com:27017,host3.com:27017/testdb');
+mongoose.connect('mongodb://host1:port1/?replicaSet=rsName');
+mongoose.connect(uri, {
+ serverSelectionTimeoutMS: 5000 // Timeout after 5s instead of 30s
+ });
+ const mongoose = require('mongoose');
+
+const uri = 'mongodb+srv://username:badpw@cluster0-OMITTED.mongodb.net/' +
+ 'test?retryWrites=true&w=majority';
+// Prints "MongoServerError: bad auth Authentication failed."
+mongoose.connect(uri, {
+ serverSelectionTimeoutMS: 5000
+}).catch(err => console.log(err.reason));
+// Can get this error even if your connection string doesn't include
+// `localhost` if `rs.conf()` reports that one replica set member has
+// `localhost` as its host name.
+MongooseServerSelectionError: connect ECONNREFUSED localhost:27017
+if (err.name === 'MongooseServerSelectionError') {
+ // Contains a Map describing the state of your replica set. For example:
+ // Map(1) {
+ // 'localhost:27017' => ServerDescription {
+ // address: 'localhost:27017',
+ // type: 'Unknown',
+ // ...
+ // }
+ // }
+ console.log(err.r
+ // Connect to 2 mongos servers
+mongoose.connect('mongodb://mongosA:27501,mongosB:27501', cb);
+const conn = mongoose.createConnection('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', options);
+const UserModel = conn.model('User', userSchema);
+// `asPromise()` returns a promise that resolves to the connection
+// once the connection succeeds, or rejects if connection failed.
+const conn = await mongoose.createConnection(connectionString).asPromise();
+const userSchema = new Schema({ name: String, email: String });
+
+// The alternative to the export model pattern is the export schema pattern.
+module.exports = userSchema;
+
+// Because if you export a model as shown below, the model will be scoped
+// to Mongoose's default connection.
+// module.exports = mongoose.model('User', userSchema);
+const mongoose = require('mongoose');
+
+module.exports = function connectionFactory() {
+ const conn = mongoose.createConnection(process.env.MONGODB_URI);
+
+ conn.model('User', require('../schemas/user'));
+ conn.model('PageView', require('../schemas/pageView'));
+
+ return conn;
+};
+// connections/index.js
+const mongoose = require('mongoose');
+
+const conn = mongoose.createConnection(process.env.MONGODB_URI);
+conn.model('User', require('../schemas/user'));
+
+module.exports = conn;
+// With object options
+mongoose.createConnection(uri, { maxPoolSize: 10 });
+
+// With connection string options
+const uri = 'mongodb://127.0.0.1:27017/test?maxPoolSize=10';
+mongoose.createConnection(uri);
+const express = require('express');
+const mongoose = require('mongoose');
+
+mongoose.connect('mongodb://127.0.0.1:27017/main');
+mongoose.set('debug', true);
+
+mongoose.model('User', mongoose.Schema({ name: String }));
+
+const app = express();
+
+app.get('/users/:tenantId', function(req, res) {
+ const db = mongoose.connection.useDb(`tenant_${req.params.tenantId}`, {
+ // `useCache` tells Mongoose to cache connections by database name, so
+ // `mongoose.connection.useDb('foo', { useCache: true })` returns the
+ // same reference each time.
+ useCache: true
+ });
+ // Need to register models every time a new connection is created
+ if (!db.models['User']) {
+ db.model('User', mongoose.Schema({ name: String }));
+ }
+ console.log('Find users from', db.name);
+ db.model('User').find().
+ then(users => res.json({ users })).
+ catch(err => res.status(500).json({ message: err.message }));
+});
+
+app.listen(3000);
+const express = require('express');
+const mongoose = require('mongoose');
+
+const tenantIdToConnection = {};
+
+const app = express();
+
+app.get('/users/:tenantId', function(req, res) {
+ let initialConnection = Promise.resolve();
+ const { tenantId } = req.params;
+ if (!tenantIdToConnection[tenantId]) {
+ tenantIdToConnection[tenantId] = mongoose.createConnection(`mongodb://127.0.0.1:27017/tenant_${tenantId}`);
+ tenantIdToConnection[tenantId].model('User', mongoose.Schema({ name: String }));
+ initialConnection = tenantIdToConnection[tenantId].asPromise();
+ }
+ const db = tenantIdToConnection[tenantId];
+ initialConnection.
+ then(() => db.model('User').find()).
+ then(users => res.json({ users })).
+ catch(err => res.status(500).json({ message: err.message }));
+});
+
+app.listen(3000);
+const schema = new mongoose.Schema({ name: String, size: String });
+const Tank = mongoose.model('Tank', schema);
+const Tank = mongoose.model('Tank', yourSchema);
+
+const small = new Tank({ size: 'small' });
+await small.save();
+
+// or
+
+await Tank.create({ size: 'small' });
+
+// or, for inserting large batches of documents
+await Tank.insertMany([{ size: 'small' }]);
+await mongoose.connect('mongodb://127.0.0.1/gettingstarted');
+const connection = mongoose.createConnection('mongodb://127.0.0.1:27017/test');
+const Tank = connection.model('Tank', yourSchema);
+await Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec();
+await Tank.deleteOne({ size: 'large' });
+// Updated at most one doc, `res.nModified` contains the number
+// of docs that MongoDB updated
+await Tank.updateOne({ size: 'large' }, { name: 'T-90' });
+async function run() {
+ // Create a new mongoose model
+ const personSchema = new mongoose.Schema({
+ name: String
+ });
+ const Person = mongoose.model('Person', personSchema);
+
+ // Create a change stream. The 'change' event gets emitted when there's a
+ // change in the database
+ Person.watch().
+ on('change', data => console.log(new Date(), data));
+
+ // Insert a doc, will trigger the change stream handler above
+ console.log(new Date(), 'Inserting doc');
+ await Person.create({ name: 'Axl Rose' });
+ }
+ // Make sure to disable `autoCreate` and `autoIndex` for Views,
+// because you want to create the collection manually.
+const userSchema = new Schema({
+ name: String,
+ email: String,
+ roles: [String]
+ }, { autoCreate: false, autoIndex: false });
+ const User = mongoose.model('User', userSchema);
+
+ const RedactedUser = mongoose.model('RedactedUser', userSchema);
+
+ // First, create the User model's underlying collection...
+ await User.createCollection();
+ // Then create the `RedactedUser` model's underlying collection
+ // as a View.
+ await RedactedUser.createCollection({
+ viewOn: 'users', // Set `viewOn` to the collection name, **not** model name.
+ pipeline: [
+ {
+ $set: {
+ name: { $concat: [{ $substr: ['$name', 0, 3] }, '...'] },
+ email: { $concat: [{ $substr: ['$email', 0, 3] }, '...'] }
+ }
+ }
+ ]
+ });
+
+ await User.create([
+ { name: 'John Smith', email: 'john.smith@gmail.com', roles: ['user'] },
+ { name: 'Bill James', email: 'bill@acme.co', roles: ['user', 'admin'] }
+ ]);
+
+ // [{ _id: ..., name: 'Bil...', email: 'bil...', roles: ['user', 'admin'] }]
+ console.log(await RedactedUser.find({ roles: 'admin' }));
+ const MyModel = mongoose.model('Test', new Schema({ name: String }));
+const doc = new MyModel();
+
+doc instanceof MyModel; // true
+doc instanceof mongoose.Model; // true
+doc instanceof mongoose.Document; // true
+const doc = await MyModel.findOne();
+
+doc instanceof MyModel; // true
+doc instanceof mongoose.Model; // true
+doc instanceof mongoose.Document; // true
+doc.name = 'foo';
+
+// Mongoose sends an `updateOne({ _id: doc._id }, { $set: { name: 'foo' } })`
+// to MongoDB.
+await doc.save();
+doc.save().then(savedDoc => {
+ savedDoc === doc; // true
+ });
+ const doc = await MyModel.findOne();
+
+// Delete the document so Mongoose won't be able to save changes
+await MyModel.deleteOne({ _id: doc._id });
+
+doc.name = 'foo';
+await doc.save(); // Throws DocumentNotFoundError
+const schema = new Schema({
+ nested: {
+ subdoc: new Schema({
+ name: String
+ })
+ }
+ });
+ const TestModel = mongoose.model('Test', schema);
+
+ const doc = new TestModel();
+ doc.set('nested.subdoc.name', 'John Smith');
+ doc.nested.subdoc.name; // 'John Smith'
+ const doc2 = new TestModel();
+
+doc2.get('nested.subdoc.name'); // undefined
+doc2.nested?.subdoc?.name; // undefined
+
+doc2.set('nested.subdoc.name', 'Will Smith');
+doc2.get('nested.subdoc.name'); // 'Will Smith'
+// The following works fine
+const doc3 = new TestModel();
+doc3.nested.subdoc ??= {};
+doc3.nested.subdoc.name = 'John Smythe';
+
+// The following does **NOT** work.
+// Do not use the following pattern with Mongoose documents.
+const doc4 = new TestModel();
+(doc4.nested.subdoc ??= {}).name = 'Charlie Smith';
+doc.nested.subdoc; // Empty object
+doc.nested.subdoc.name; // undefined.
+// Update all documents in the `mymodels` collection
+await MyModel.updateMany({}, { $set: { name: 'foo' } });
+const schema = new Schema({ name: String, age: { type: Number, min: 0 } });
+const Person = mongoose.model('Person', schema);
+
+const p = new Person({ name: 'foo', age: 'bar' });
+// Cast to Number failed for value "bar" at path "age"
+await p.validate();
+
+const p2 = new Person({ name: 'foo', age: -1 });
+// Path `age` (-1) is less than minimum allowed value (0).
+await p2.validate();
+// Cast to number failed for value "bar" at path "age"
+await Person.updateOne({}, { age: 'bar' });
+
+// Path `age` (-1) is less than minimum allowed value (0).
+await Person.updateOne({}, { age: -1 }, { runValidators: true });
+const doc = await Person.findOne({ _id });
+
+// Sets `name` and unsets all other properties
+doc.overwrite({ name: 'Jean-Luc Picard' });
+await doc.save();
+// Sets `name` and unsets all other properties
+await Person.replaceOne({ _id }, { name: 'Jean-Luc Picard' });
+const childSchema = new Schema({ name: 'string' });
+
+const parentSchema = new Schema({
+ // Array of subdocuments
+ children: [childSchema],
+ // Single nested subdocuments
+ child: childSchema
+});
+const childSchema = new Schema({ name: 'string' });
+const Child = mongoose.model('Child', childSchema);
+
+const parentSchema = new Schema({
+ child: {
+ type: mongoose.ObjectId,
+ ref: 'Child'
+ }
+});
+const Parent = mongoose.model('Parent', parentSchema);
+
+const doc = await Parent.findOne().populate('child');
+// NOT a subdocument. `doc.child` is a separate top-level document.
+doc.child;
+const Parent = mongoose.model('Parent', parentSchema);
+const parent = new Parent({ children: [{ name: 'Matt' }, { name: 'Sarah' }] });
+parent.children[0].name = 'Matthew';
+
+// `parent.children[0].save()` is a no-op, it triggers middleware but
+// does **not** actually save the subdocument. You need to save the parent
+// doc.
+await parent.save();
+childSchema.pre('save', function(next) {
+ if ('invalid' == this.name) {
+ return next(new Error('#sadpanda'));
+ }
+ next();
+ });
+
+ const parent = new Parent({ children: [{ name: 'invalid' }] });
+ try {
+ await parent.save();
+ } catch (err) {
+ err.message; // '#sadpanda'
+ }
+ // Below code will print out 1-4 in order
+const childSchema = new mongoose.Schema({ name: 'string' });
+
+childSchema.pre('validate', function(next) {
+ console.log('2');
+ next();
+});
+
+childSchema.pre('save', function(next) {
+ console.log('3');
+ next();
+});
+
+const parentSchema = new mongoose.Schema({
+ child: childSchema
+});
+
+parentSchema.pre('validate', function(next) {
+ console.log('1');
+ next();
+});
+
+parentSchema.pre('save', function(next) {
+ console.log('4');
+ next();
+});
+// Subdocument
+const subdocumentSchema = new mongoose.Schema({
+ child: new mongoose.Schema({ name: String, age: Number })
+ });
+ const Subdoc = mongoose.model('Subdoc', subdocumentSchema);
+
+ // Nested path
+ const nestedSchema = new mongoose.Schema({
+ child: { name: String, age: Number }
+ });
+ const Nested = mongoose.model('Nested', nestedSchema);
+ const doc1 = new Subdoc({});
+doc1.child === undefined; // true
+doc1.child.name = 'test'; // Throws TypeError: cannot read property...
+
+const doc2 = new Nested({});
+doc2.child === undefined; // false
+console.log(doc2.child); // Prints 'MongooseDocument { undefined }'
+doc2.child.name = 'test'; // Works
+const subdocumentSchema = new mongoose.Schema({
+ child: new mongoose.Schema({
+ name: String,
+ age: {
+ type: Number,
+ default: 0
+ }
+ })
+ });
+ const Subdoc = mongoose.model('Subdoc', subdocumentSchema);
+
+ // Note that the `age` default has no effect, because `child`
+ // is `undefined`.
+ const doc = new Subdoc();
+ doc.child; // undefined
+ doc.child = {};
+// Mongoose applies the `age` default:
+doc.child.age; // 0
+const childSchema = new mongoose.Schema({
+ name: String,
+ age: {
+ type: Number,
+ default: 0
+ }
+ });
+ const subdocumentSchema = new mongoose.Schema({
+ child: {
+ type: childSchema,
+ default: () => ({})
+ }
+ });
+ const Subdoc = mongoose.model('Subdoc', subdocumentSchema);
+
+ // Note that Mongoose sets `age` to its default value 0, because
+ // `child` defaults to an empty object and Mongoose applies
+ // defaults to that empty object.
+ const doc = new Subdoc();
+ doc.child; // { age: 0 }
+ const doc = parent.children.id(_id);
+ const Parent = mongoose.model('Parent');
+const parent = new Parent();
+
+// create a comment
+parent.children.push({ name: 'Liesl' });
+const subdoc = parent.children[0];
+console.log(subdoc); // { _id: '501d86090d371bab2c0341c5', name: 'Liesl' }
+subdoc.isNew; // true
+
+await parent.save();
+console.log('Success!');
+const newdoc = parent.children.create({ name: 'Aaron' });
+// Equivalent to `parent.children.pull(_id)`
+parent.children.id(_id).deleteOne();
+// Equivalent to `parent.child = null`
+parent.child.deleteOne();
+
+await parent.save();
+console.log('the subdocs were removed');
+const schema = new Schema({
+ docArr: [{ name: String }],
+ singleNested: new Schema({ name: String })
+ });
+ const Model = mongoose.model('Test', schema);
+
+ const doc = new Model({
+ docArr: [{ name: 'foo' }],
+ singleNested: { name: 'bar' }
+ });
+
+ doc.singleNested.parent() === doc; // true
+ doc.docArr[0].parent() === doc; // true
+ const schema = new Schema({
+ level1: new Schema({
+ level2: new Schema({
+ test: String
+ })
+ })
+ });
+ const Model = mongoose.model('Test', schema);
+
+ const doc = new Model({ level1: { level2: 'test' } });
+
+ doc.level1.level2.parent() === doc; // false
+ doc.level1.level2.parent() === doc.level1; // true
+ doc.level1.level2.ownerDocument() === doc; // true
+ const parentSchema = new Schema({
+ children: [{ name: 'string' }]
+ });
+ // Equivalent
+ const parentSchema = new Schema({
+ children: [new Schema({ name: 'string' })]
+ });
+
+ const Person = mongoose.model('Person', yourSchema);
+
+// find each person with a last name matching 'Ghost', selecting the `name` and `occupation` fields
+const person = await Person.findOne({ 'name.last': 'Ghost' }, 'name occupation');
+// Prints "Space Ghost is a talk show host".
+console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation);
+// find each person with a last name matching 'Ghost'
+const query = Person.findOne({ 'name.last': 'Ghost' });
+
+// selecting the `name` and `occupation` fields
+query.select('name occupation');
+
+// execute the query at a later time
+const person = await query.exec();
+// Prints "Space Ghost is a talk show host."
+console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation);
+// With a JSON doc
+await Person.
+ find({
+ occupation: /host/,
+ 'name.last': 'Ghost',
+ age: { $gt: 17, $lt: 66 },
+ likes: { $in: ['vaporizing', 'talking'] }
+ }).
+ limit(10).
+ sort({ occupation: -1 }).
+ select({ name: 1, occupation: 1 }).
+ exec();
+
+// Using query builder
+await Person.
+ find({ occupation: /host/ }).
+ where('name.last').equals('Ghost').
+ where('age').gt(17).lt(66).
+ where('likes').in(['vaporizing', 'talking']).
+ limit(10).
+ sort('-occupation').
+ select('name occupation').
+ exec();
+ const q = MyModel.updateMany({}, { isDeleted: true });
+
+await q.then(() => console.log('Update 2'));
+// Throws "Query was already executed: Test.updateMany({}, { isDeleted: true })"
+await q.then(() => console.log('Update 3'));
+const cursor = Person.find({ occupation: /host/ }).cursor();
+
+for (let doc = await cursor.next(); doc != null; doc = await cursor.next()) {
+ console.log(doc); // Prints documents one at a time
+ for await (const doc of Person.find()) {
+ console.log(doc); // Prints documents one at a time
+ }
+ // MongoDB won't automatically close this cursor after 10 minutes.
+const cursor = Person.find().cursor().addCursorFlag('noCursorTimeout', true);
+const docs = await Person.aggregate([{ $match: { 'name.last': 'Ghost' } }]);
+const docs = await Person.aggregate([{ $match: { 'name.last': 'Ghost' } }]);
+
+docs[0] instanceof mongoose.Document; // false
+const doc = await Person.findOne();
+
+const idString = doc._id.toString();
+
+// Finds the `Person`, because Mongoose casts `idString` to an ObjectId
+const queryRes = await Person.findOne({ _id: idString });
+
+// Does **not** find the `Person`, because Mongoose doesn't cast aggregation
+// pipelines.
+const aggRes = await Person.aggregate([{ $match: { _id: idString } }]);
+const personSchema = new mongoose.Schema({
+ age: Number
+});
+
+const Person = mongoose.model('Person', personSchema);
+for (let i = 0; i < 10; i++) {
+ await Person.create({ age: i });
+}
+
+await Person.find().sort({ age: -1 }); // returns age starting from 10 as the first entry
+await Person.find().sort({ age: 1 }); // returns age starting from 0 as the first entry
+const personSchema = new mongoose.Schema({
+ age: Number,
+ name: String,
+ weight: Number
+});
+
+const Person = mongoose.model('Person', personSchema);
+const iterations = 5;
+for (let i = 0; i < iterations; i++) {
+ await Person.create({
+ age: Math.abs(2 - i),
+ name: 'Test' + i,
+ weight: Math.floor(Math.random() * 100) + 1
+ });
+}
+
+await Person.find().sort({ age: 1, weight: -1 }); // returns age starting from 0, but while keeping that order will then sort by weight.
+[
+ {
+ _id: new ObjectId('63a335a6b9b6a7bfc186cb37'),
+ age: 0,
+ name: 'Test2',
+ weight: 67,
+ __v: 0
+ },
+ {
+ _id: new ObjectId('63a335a6b9b6a7bfc186cb35'),
+ age: 1,
+ name: 'Test1',
+ weight: 99,
+ __v: 0
+ },
+ {
+ _id: new ObjectId('63a335a6b9b6a7bfc186cb39'),
+ age: 1,
+ name: 'Test3',
+ weight: 73,
+ __v: 0
+ },
+ {
+ _id: new ObjectId('63a335a6b9b6a7bfc186cb33'),
+ age: 2,
+ name: 'Test0',
+ weight: 65,
+ __v: 0
+ },
+ {
+ _id: new ObjectId('63a335a6b9b6a7bfc186cb3b'),
+ age: 2,
+ name: 'Test4',
+ weight: 62,
+ __v: 0
+ }
+];
+const schema = new Schema({
+ name: {
+ type: String,
+ required: true
+ }
+});
+const Cat = db.model('Cat', schema);
+
+// This cat has no name :(
+const cat = new Cat();
+
+let error;
+try {
+ await cat.save();
+} catch (err) {
+ error = err;
+}
+
+assert.equal(error.errors['name'].message,
+ 'Path `name` is required.');
+
+error = cat.validateSync();
+assert.equal(error.errors['name'].message,
+ 'Path `name` is required.');
+ const breakfastSchema = new Schema({
+ eggs: {
+ type: Number,
+ min: [6, 'Too few eggs'],
+ max: 12
+ },
+ bacon: {
+ type: Number,
+ required: [true, 'Why no bacon?']
+ },
+ drink: {
+ type: String,
+ enum: ['Coffee', 'Tea'],
+ required: function() {
+ return this.bacon > 3;
+ }
+ }
+ });
+ const Breakfast = db.model('Breakfast', breakfastSchema);
+
+ const badBreakfast = new Breakfast({
+ eggs: 2,
+ bacon: 0,
+ drink: 'Milk'
+ });
+ let error = badBreakfast.validateSync();
+ assert.equal(error.errors['eggs'].message,
+ 'Too few eggs');
+ assert.ok(!error.errors['bacon']);
+ assert.equal(error.errors['drink'].message,
+ '`Milk` is not a valid enum value for path `drink`.');
+
+ badBreakfast.bacon = 5;
+ badBreakfast.drink = null;
+
+ error = badBreakfast.validateSync();
+ assert.equal(error.errors['drink'].message, 'Path `drink` is required.');
+
+ badBreakfast.bacon = null;
+ error = badBreakfast.validateSync();
+ assert.equal(error.errors['bacon'].message, 'Why no bacon?');
+ const breakfastSchema = new Schema({
+ eggs: {
+ type: Number,
+ min: [6, 'Must be at least 6, got {VALUE}'],
+ max: 12
+ },
+ drink: {
+ type: String,
+ enum: {
+ values: ['Coffee', 'Tea'],
+ message: '{VALUE} is not supported'
+ }
+ }
+ });
+ const Breakfast = db.model('Breakfast', breakfastSchema);
+
+ const badBreakfast = new Breakfast({
+ eggs: 2,
+ drink: 'Milk'
+ });
+ const error = badBreakfast.validateSync();
+ assert.equal(error.errors['eggs'].message,
+ 'Must be at least 6, got 2');
+ assert.equal(error.errors['drink'].message, 'Milk is not supported');
+ const uniqueUsernameSchema = new Schema({
+ username: {
+ type: String,
+ unique: true
+ }
+ });
+ const U1 = db.model('U1', uniqueUsernameSchema);
+ const U2 = db.model('U2', uniqueUsernameSchema);
+
+ const dup = [{ username: 'Val' }, { username: 'Val' }];
+ // Race condition! This may save successfully, depending on whether
+ // MongoDB built the index before writing the 2 docs.
+ U1.create(dup).
+ then(() => {
+ }).
+ catch(err => {
+ });
+
+ // You need to wait for Mongoose to finish building the `unique`
+ // index before writing. You only need to build indexes once for
+ // a given collection, so you normally don't need to do this
+ // in production. But, if you drop the database between tests,
+ // you will need to use `init()` to wait for the index build to finish.
+ U2.init().
+ then(() => U2.create(dup)).
+ catch(error => {
+ // `U2.create()` will error, but will *not* be a mongoose validation error, it will be
+ // a duplicate key error.
+ // See: https://masteringjs.io/tutorials/mongoose/e11000-duplicate-key
+ assert.ok(error);
+ assert.ok(!error.errors);
+ assert.ok(error.message.indexOf('duplicate key error') !== -1);
+ });
+ const userSchema = new Schema({
+ phone: {
+ type: String,
+ validate: {
+ validator: function(v) {
+ return /\d{3}-\d{3}-\d{4}/.test(v);
+ },
+ message: props => `${props.value} is not a valid phone number!`
+ },
+ required: [true, 'User phone number required']
+ }
+ });
+
+ const User = db.model('user', userSchema);
+ const user = new User();
+ let error;
+
+ user.phone = '555.0123';
+ error = user.validateSync();
+ assert.equal(error.errors['phone'].message,
+ '555.0123 is not a valid phone number!');
+
+ user.phone = '';
+ error = user.validateSync();
+ assert.equal(error.errors['phone'].message,
+ 'User phone number required');
+
+ user.phone = '201-555-0123';
+ // Validation succeeds! Phone number is defined
+ // and fits `DDD-DDD-DDDD`
+ error = user.validateSync();
+ assert.equal(error, null);
+ const userSchema = new Schema({
+ name: {
+ type: String,
+ // You can also make a validator async by returning a promise.
+ validate: () => Promise.reject(new Error('Oops!'))
+ },
+ email: {
+ type: String,
+ // There are two ways for an promise-based async validator to fail:
+ // 1) If the promise rejects, Mongoose assumes the validator failed with the given error.
+ // 2) If the promise resolves to `false`, Mongoose assumes the validator failed and creates an error with the given `message`.
+ validate: {
+ validator: () => Promise.resolve(false),
+ message: 'Email validation failed'
+ }
+ }
+ });
+
+ const User = db.model('User', userSchema);
+ const user = new User();
+
+ user.email = 'test@test.co';
+ user.name = 'test';
+
+ let error;
+ try {
+ await user.validate();
+ } catch (err) {
+ error = err;
+ }
+ assert.ok(error);
+ assert.equal(error.errors['name'].message, 'Oops!');
+ assert.equal(error.errors['email'].message, 'Email validation failed');
+ const toySchema = new Schema({
+ color: String,
+ name: String
+ });
+
+ const validator = function(value) {
+ return /red|white|gold/i.test(value);
+ };
+ toySchema.path('color').validate(validator,
+ 'Color `{VALUE}` not valid', 'Invalid color');
+ toySchema.path('name').validate(function(v) {
+ if (v !== 'Turbo Man') {
+ throw new Error('Need to get a Turbo Man for Christmas');
+ }
+ return true;
+ }, 'Name `{VALUE}` is not valid');
+
+ const Toy = db.model('Toy', toySchema);
+
+ const toy = new Toy({ color: 'Green', name: 'Power Ranger' });
+
+ let error;
+ try {
+ await toy.save();
+ } catch (err) {
+ error = err;
+ }
+
+ // `error` is a ValidationError object
+ // `error.errors.color` is a ValidatorError object
+ assert.equal(error.errors.color.message, 'Color `Green` not valid');
+ assert.equal(error.errors.color.kind, 'Invalid color');
+ assert.equal(error.errors.color.path, 'color');
+ assert.equal(error.errors.color.value, 'Green');
+
+ // If your validator throws an exception, mongoose will use the error
+ // message. If your validator returns `false`,
+ // mongoose will use the 'Name `Power Ranger` is not valid' message.
+ assert.equal(error.errors.name.message,
+ 'Need to get a Turbo Man for Christmas');
+ assert.equal(error.errors.name.value, 'Power Ranger');
+ // If your validator threw an error, the `reason` property will contain
+ // the original error thrown, including the original stack trace.
+ assert.equal(error.errors.name.reason.message,
+ 'Need to get a Turbo Man for Christmas');
+
+ assert.equal(error.name, 'ValidationError');
+ const vehicleSchema = new mongoose.Schema({
+ numWheels: { type: Number, max: 18 }
+ });
+ const Vehicle = db.model('Vehicle', vehicleSchema);
+
+ const doc = new Vehicle({ numWheels: 'not a number' });
+ const err = doc.validateSync();
+
+ err.errors['numWheels'].name; // 'CastError'
+ // 'Cast to Number failed for value "not a number" at path "numWheels"'
+ err.errors['numWheels'].message;
+ const vehicleSchema = new mongoose.Schema({
+ numWheels: { type: Number, max: 18 }
+ });
+ const Vehicle = db.model('Vehicle', vehicleSchema);
+
+ const doc = new Vehicle({ numWheels: 'not a number' });
+ const err = doc.validateSync();
+
+ err.errors['numWheels'].name; // 'CastError'
+ // 'Cast to Number failed for value "not a number" at path "numWheels"'
+ err.errors['numWheels'].message;
+ const vehicleSchema = new mongoose.Schema({
+ numWheels: {
+ type: Number,
+ cast: [null, (value, path, model, kind) => `"${value}" is not a number`]
+ }
+ });
+ const Vehicle = db.model('Vehicle', vehicleSchema);
+
+ const doc = new Vehicle({ numWheels: 'pie' });
+ const err = doc.validateSync();
+
+ err.errors['numWheels'].name; // 'CastError'
+ // "pie" is not a number
+ err.errors['numWheels'].message;
+ // Add a custom validator to all strings
+mongoose.Schema.Types.String.set('validate', v => v == null || v > 0);
+
+const userSchema = new Schema({
+ name: String,
+ email: String
+});
+const User = db.model('User', userSchema);
+
+const user = new User({ name: '', email: '' });
+
+const err = await user.validate().then(() => null, err => err);
+err.errors['name']; // ValidatorError
+err.errors['email']; // ValidatorError
+let personSchema = new Schema({
+ name: {
+ first: String,
+ last: String
+ }
+});
+
+assert.throws(function() {
+ // This throws an error, because 'name' isn't a full fledged path
+ personSchema.path('name').required(true);
+}, /Cannot.*'required'/);
+
+// To make a nested object required, use a single nested schema
+const nameSchema = new Schema({
+ first: String,
+ last: String
+});
+
+personSchema = new Schema({
+ name: {
+ type: nameSchema,
+ required: true
+ }
+});
+
+const Person = db.model('Person', personSchema);
+
+const person = new Person();
+const error = person.validateSync();
+assert.ok(error.errors['name']);
+const toySchema = new Schema({
+ color: String,
+ name: String
+});
+
+const Toy = db.model('Toys', toySchema);
+
+Toy.schema.path('color').validate(function(value) {
+ return /red|green|blue/i.test(value);
+}, 'Invalid color');
+
+const opts = { runValidators: true };
+
+let error;
+try {
+ await Toy.updateOne({}, { color: 'not a color' }, opts);
+} catch (err) {
+ error = err;
+}
+
+assert.equal(error.errors.color.message, 'Invalid color');
+const toySchema = new Schema({
+ color: String,
+ name: String
+});
+
+toySchema.path('color').validate(function(value) {
+ // When running in `validate()` or `validateSync()`, the
+ // validator can access the document using `this`.
+ // When running with update validators, `this` is the Query,
+ // **not** the document being updated!
+ // Queries have a `get()` method that lets you get the
+ // updated value.
+ if (this.get('name') && this.get('name').toLowerCase().indexOf('red') !== -1) {
+ return value === 'red';
+ }
+ return true;
+});
+
+const Toy = db.model('ActionFigure', toySchema);
+
+const toy = new Toy({ color: 'green', name: 'Red Power Ranger' });
+// Validation failed: color: Validator failed for path `color` with value `green`
+let error = toy.validateSync();
+assert.ok(error.errors['color']);
+
+const update = { color: 'green', name: 'Red Power Ranger' };
+const opts = { runValidators: true };
+
+error = null;
+try {
+ await Toy.updateOne({}, update, opts);
+} catch (err) {
+ error = err;
+}
+// Validation failed: color: Validator failed for path `color` with value `green`
+assert.ok(error);
+const kittenSchema = new Schema({
+ name: { type: String, required: true },
+ age: Number
+});
+
+const Kitten = db.model('Kitten', kittenSchema);
+
+const update = { color: 'blue' };
+const opts = { runValidators: true };
+// Operation succeeds despite the fact that 'name' is not specified
+await Kitten.updateOne({}, update, opts);
+
+const unset = { $unset: { name: 1 } };
+// Operation fails because 'name' is required
+const err = await Kitten.updateOne({}, unset, opts).then(() => null, err => err);
+assert.ok(err);
+assert.ok(err.errors['name']);
+const testSchema = new Schema({
+ number: { type: Number, max: 0 },
+ arr: [{ message: { type: String, maxlength: 10 } }]
+});
+
+// Update validators won't check this, so you can still `$push` 2 elements
+// onto the array, so long as they don't have a `message` that's too long.
+testSchema.path('arr').validate(function(v) {
+ return v.length < 2;
+});
+
+const Test = db.model('Test', testSchema);
+
+let update = { $inc: { number: 1 } };
+const opts = { runValidators: true };
+
+// There will never be a validation error here
+await Test.updateOne({}, update, opts);
+
+// This will never error either even though the array will have at
+// least 2 elements.
+update = { $push: [{ message: 'hello' }, { message: 'world' }] };
+await Test.updateOne({}, update, opts);
+const childSchema = new mongoose.Schema({
+ name: String
+});
+
+const mainSchema = new mongoose.Schema({
+ child: [childSchema]
+});
+
+mainSchema.pre('findOneAndUpdate', function() {
+ console.log('Middleware on parent document'); // Will be executed
+});
+
+childSchema.pre('findOneAndUpdate', function() {
+ console.log('Middleware on subdocument'); // Will not be executed
+});
+const childSchema = new mongoose.Schema({
+ name: String
+});
+
+const mainSchema = new mongoose.Schema({
+ child: [childSchema]
+});
+
+mainSchema.pre('findOneAndUpdate', function() {
+ console.log('Middleware on parent document'); // Will be executed
+});
+
+childSchema.pre('findOneAndUpdate', function() {
+ console.log('Middleware on subdocument'); // Will not be executed
+});
+schema.pre('save', function() {
+ return doStuff().
+ then(() => doMoreStuff());
+});
+
+// Or, using async functions
+schema.pre('save', async function() {
+ await doStuff();
+ await doMoreStuff();
+});
+const schema = new Schema({ /* ... */ });
+schema.pre('save', function(next) {
+ if (foo()) {
+ console.log('calling next!');
+ // `return next();` will make sure the rest of this function doesn't run
+ /* return */ next();
+ }
+ // Unless you comment out the `return` above, 'after next' will print
+ console.log('after next');
+});
+schema.pre('save', function(next) {
+ const err = new Error('something went wrong');
+ // If you call `next()` with an argument, that argument is assumed to be
+ // an error.
+ next(err);
+});
+
+schema.pre('save', function() {
+ // You can also return a promise that rejects
+ return new Promise((resolve, reject) => {
+ reject(new Error('something went wrong'));
+ });
+});
+
+schema.pre('save', function() {
+ // You can also throw a synchronous error
+ throw new Error('something went wrong');
+});
+
+schema.pre('save', async function() {
+ await Promise.resolve();
+ // You can also throw an error in an `async` function
+ throw new Error('something went wrong');
+});
+
+// later...
+
+// Changes will not be persisted to MongoDB because a pre hook errored out
+myDoc.save(function(err) {
+ console.log(err.message); // something went wrong
+});
+schema.post('init', function(doc) {
+ console.log('%s has been initialized from the db', doc._id);
+});
+schema.post('validate', function(doc) {
+ console.log('%s has been validated (but not saved yet)', doc._id);
+});
+schema.post('save', function(doc) {
+ console.log('%s has been saved', doc._id);
+});
+schema.post('deleteOne', function(doc) {
+ console.log('%s has been deleted', doc._id);
+});
+// Takes 2 parameters: this is an asynchronous post hook
+schema.post('save', function(doc, next) {
+ setTimeout(function() {
+ console.log('post1');
+ // Kick off the second post hook
+ next();
+ }, 10);
+});
+
+// Will not execute until the first middleware calls `next()`
+schema.post('save', function(doc, next) {
+ console.log('post2');
+ next();
+});
+schema.post('save', async function(doc) {
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ console.log('post1');
+ // If less than 2 parameters, no need to call `next()`
+});
+
+schema.post('save', async function(doc, next) {
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ console.log('post1');
+ // If there's a `next` parameter, you need to call `next()`.
+ next();
+});
+const schema = new mongoose.Schema({ name: String });
+
+// Compile a model from the schema
+const User = mongoose.model('User', schema);
+
+// Mongoose will **not** call the middleware function, because
+// this middleware was defined after the model was compiled
+schema.pre('save', () => console.log('Hello from pre save'));
+
+const user = new User({ name: 'test' });
+user.save();
+const schema = new mongoose.Schema({ name: String });
+// Mongoose will call this middleware function, because this script adds
+// the middleware to the schema before compiling the model.
+schema.pre('save', () => console.log('Hello from pre save'));
+
+// Compile a model from the schema
+const User = mongoose.model('User', schema);
+
+const user = new User({ name: 'test' });
+user.save();
+const schema = new mongoose.Schema({ name: String });
+
+// Once you `require()` this file, you can no longer add any middleware
+// to this schema.
+module.exports = mongoose.model('User', schema);
+schema.pre('validate', function() {
+ console.log('this gets printed first');
+});
+schema.post('validate', function() {
+ console.log('this gets printed second');
+});
+schema.pre('save', function() {
+ console.log('this gets printed third');
+});
+schema.post('save', function() {
+ console.log('this gets printed fourth');
+});
+const userSchema = new Schema({ name: String, age: Number });
+userSchema.pre('findOneAndUpdate', function() {
+ console.log(this.getFilter()); // { name: 'John' }
+ console.log(this.getUpdate()); // { age: 30 }
+});
+const User = mongoose.model('User', userSchema);
+
+await User.findOneAndUpdate({ name: 'John' }, { $set: { age: 30 } });
+const userSchema = new Schema({ name: String, age: Number });
+userSchema.pre('save', function(next, options) {
+ options.validateModifiedOnly; // true
+
+ // Remember to call `next()` unless you're using an async function or returning a promise
+ next();
+});
+const User = mongoose.model('User', userSchema);
+
+const doc = new User({ name: 'John', age: 30 });
+await doc.save({ validateModifiedOnly: true });
+schema.pre('deleteOne', function() { console.log('Removing!'); });
+
+// Does **not** print "Removing!". Document middleware for `deleteOne` is not executed by default
+await doc.deleteOne();
+
+// Prints "Removing!"
+await Model.deleteOne();
+// Only document middleware
+schema.pre('deleteOne', { document: true, query: false }, function() {
+ console.log('Deleting doc!');
+});
+
+// Only query middleware. This will get called when you do `Model.deleteOne()`
+// but not `doc.deleteOne()`.
+schema.pre('deleteOne', { query: true, document: false }, function() {
+ console.log('Deleting!');
+ const schema = new mongoose.Schema({ name: String });
+schema.pre('validate', function() {
+ console.log('Document validate');
+});
+schema.pre('validate', { query: true, document: false }, function() {
+ console.log('Query validate');
+});
+const Test = mongoose.model('Test', schema);
+
+const doc = new Test({ name: 'foo' });
+
+// Prints "Document validate"
+await doc.validate();
+
+// Prints "Query validate"
+await Test.find().validate();
+schema.pre('find', function() {
+ console.log(this instanceof mongoose.Query); // true
+ this.start = Date.now();
+});
+
+schema.post('find', function(result) {
+ console.log(this instanceof mongoose.Query); // true
+ // prints returned documents
+ console.log('find() returned ' + JSON.stringify(result));
+ // prints number of milliseconds the query took
+ console.log('find() took ' + (Date.now() - this.start) + ' milliseconds');
+});
+schema.pre('updateOne', function() {
+ this.set({ updatedAt: new Date() });
+});
+schema.pre('findOneAndUpdate', async function() {
+ const docToUpdate = await this.model.findOne(this.getQuery());
+ console.log(docToUpdate); // The document that `findOneAndUpdate()` will modify
+});
+schema.pre('updateOne', { document: true, query: false }, function() {
+ console.log('Updating');
+});
+const Model = mongoose.model('Test', schema);
+
+const doc = new Model();
+await doc.updateOne({ $set: { name: 'test' } }); // Prints "Updating"
+
+// Doesn't print "Updating", because `Query#updateOne()` doesn't fire
+// document middleware.
+await Model.updateOne({}, { $set: { name: 'test' } });
+const schema = new Schema({
+ name: {
+ type: String,
+ // Will trigger a MongoServerError with code 11000 when
+ // you save a duplicate
+ unique: true
+ }
+});
+
+// Handler **must** take 3 parameters: the error that occurred, the document
+// in question, and the `next()` function
+schema.post('save', function(error, doc, next) {
+ if (error.name === 'MongoServerError' && error.code === 11000) {
+ next(new Error('There was a duplicate key error'));
+ } else {
+ next();
+ }
+});
+
+// Will trigger the `post('save')` error handler
+Person.create([{ name: 'Axl Rose' }, { name: 'Axl Rose' }]);
+// The same E11000 error can occur when you call `updateOne()`
+// This function **must** take 4 parameters.
+
+schema.post('updateOne', function(passRawResult, error, res, next) {
+ if (error.name === 'MongoServerError' && error.code === 11000) {
+ next(new Error('There was a duplicate key error'));
+ } else {
+ next(); // The `updateOne()` call will still error out.
+ }
+});
+
+const people = [{ name: 'Axl Rose' }, { name: 'Slash' }];
+await Person.create(people);
+
+// Throws "There was a duplicate key error"
+await Person.updateOne({ name: 'Slash' }, { $set: { name: 'Axl Rose' } });
+customerSchema.pre('aggregate', function() {
+ // Add a $match state to the beginning of each pipeline.
+ this.pipeline().unshift({ $match: { isDeleted: { $ne: true } } });
+});
+[require:post init hooks.*success]
+[require:post init hooks.*error]
+const mongoose = require('mongoose');
+const { Schema } = mongoose;
+
+const personSchema = Schema({
+ _id: Schema.Types.ObjectId,
+ name: String,
+ age: Number,
+ stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
+});
+
+const storySchema = Schema({
+ author: { type: Schema.Types.ObjectId, ref: 'Person' },
+ title: String,
+ fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
+});
+
+const Story = mongoose.model('Story', storySchema);
+const Person = mongoose.model('Person', personSchema);
+const author = new Person({
+ _id: new mongoose.Types.ObjectId(),
+ name: 'Ian Fleming',
+ age: 50
+});
+
+await author.save();
+
+const story1 = new Story({
+ title: 'Casino Royale',
+ author: author._id // assign the _id from the person
+});
+
+await story1.save();
+// that's it!
+const story = await Story.
+ findOne({ title: 'Casino Royale' }).
+ populate('author').
+ exec();
+// prints "The author is Ian Fleming"
+console.log('The author is %s', story.author.name);
+const story = await Story.findOne({ title: 'Casino Royale' });
+story.author = author;
+console.log(story.author.name); // prints "Ian Fleming"
+const fan1 = await Person.create({ name: 'Sean' });
+await Story.updateOne({ title: 'Casino Royale' }, { $push: { fans: { $each: [fan1._id] } } });
+
+const story = await Story.findOne({ title: 'Casino Royale' }).populate('fans');
+story.fans[0].name; // 'Sean'
+
+const fan2 = await Person.create({ name: 'George' });
+story.fans.push(fan2);
+story.fans[1].name; // 'George'
+
+story.fans.push({ name: 'Roger' });
+story.fans[2].name; // 'Roger'
+const fan4 = await Person.create({ name: 'Timothy' });
+story.fans.push(fan4._id); // Push the `_id`, not the full document
+
+story.fans[0].name; // undefined, `fans[0]` is now an ObjectId
+story.fans[0].toString() === fan1._id.toString(); // true
+story.populated('author'); // truthy
+
+story.depopulate('author'); // Make `author` not populated anymore
+story.populated('author'); // undefined
+story.populated('author'); // truthy
+story.author._id; // ObjectId
+
+story.depopulate('author'); // Make `author` not populated anymore
+story.populated('author'); // undefined
+
+story.author instanceof ObjectId; // true
+story.author._id; // ObjectId, because Mongoose adds a special getter
+await Person.deleteMany({ name: 'Ian Fleming' });
+
+const story = await Story.findOne({ title: 'Casino Royale' }).populate('author');
+story.author; // `null'
+const storySchema = Schema({
+ authors: [{ type: Schema.Types.ObjectId, ref: 'Person' }],
+ title: String
+});
+
+// Later
+
+const story = await Story.findOne({ title: 'Casino Royale' }).populate('authors');
+story.authors; // `[]`
+const story = await Story.
+ findOne({ title: /casino royale/i }).
+ populate('author', 'name').
+ exec(); // only return the Persons name
+// prints "The author is Ian Fleming"
+console.log('The author is %s', story.author.name);
+// prints "The authors age is null"
+console.log('The authors age is %s', story.author.age);
+await Story.
+ find({ /* ... */ }).
+ populate('fans').
+ populate('author').
+ exec();
+ // The 2nd `populate()` call below overwrites the first because they
+// both populate 'fans'.
+await Story.
+find().
+populate({ path: 'fans', select: 'name' }).
+populate({ path: 'fans', select: 'email' });
+// The above is equivalent to:
+await Story.find().populate({ path: 'fans', select: 'email' });
+await Story.
+ find().
+ populate({
+ path: 'fans',
+ match: { age: { $gte: 21 } },
+ // Explicitly exclude `_id`, see http://bit.ly/2aEfTdB
+ select: 'name -_id'
+ }).
+ exec();
+ const story = await Story.
+ findOne({ title: 'Casino Royale' }).
+ populate({ path: 'author', match: { name: { $ne: 'Ian Fleming' } } }).
+ exec();
+story.author; // `null`
+const story = await Story.
+ findOne({ 'author.name': 'Ian Fleming' }).
+ populate('author').
+ exec();
+story; // null
+const story = await Story.
+ findOne({ 'author.name': 'Ian Fleming' }).
+ populate('author').
+ exec();
+story; // null
+const stories = await Story.find().populate({
+ path: 'fans',
+ options: { limit: 2 }
+});
+
+stories[0].name; // 'Casino Royale'
+stories[0].fans.length; // 2
+
+// 2nd story has 0 fans!
+stories[1].name; // 'Live and Let Die'
+stories[1].fans.length; // 0
+const stories = await Story.find().populate({
+ path: 'fans',
+ // Special option that tells Mongoose to execute a separate query
+ // for each `story` to make sure we get 2 fans for each story.
+ perDocumentLimit: 2
+});
+
+stories[0].name; // 'Casino Royale'
+stories[0].fans.length; // 2
+
+stories[1].name; // 'Live and Let Die'
+stories[1].fans.length; // 2
+await story1.save();
+
+author.stories.push(story1);
+await author.save();
+const person = await Person.
+ findOne({ name: 'Ian Fleming' }).
+ populate('stories').
+ exec(); // only works if we pushed refs to children
+console.log(person);
+const stories = await Story.
+ find({ author: author._id }).
+ exec();
+console.log('The stories are an array: ', stories);
+const person = await Person.findOne({ name: 'Ian Fleming' });
+
+person.populated('stories'); // null
+
+// Call the `populate()` method on a document to populate a path.
+await person.populate('stories');
+
+person.populated('stories'); // Array of ObjectIds
+person.stories[0].name; // 'Casino Royale'
+await person.populate(['stories', 'fans']);
+person.populated('fans'); // Array of ObjectIds
+const userSchema = new Schema({
+ name: String,
+ friends: [{ type: ObjectId, ref: 'User' }]
+});
+const userSchema = new Schema({
+ name: String,
+ friends: [{ type: ObjectId, ref: 'User' }]
+});
+const db1 = mongoose.createConnection('mongodb://127.0.0.1:27000/db1');
+const db2 = mongoose.createConnection('mongodb://127.0.0.1:27001/db2');
+
+const conversationSchema = new Schema({ numMessages: Number });
+const Conversation = db2.model('Conversation', conversationSchema);
+
+const eventSchema = new Schema({
+ name: String,
+ conversation: {
+ type: ObjectId,
+ ref: Conversation // `ref` is a **Model class**, not a string
+ }
+});
+const Event = db1.model('Event', eventSchema);
+// Works
+const events = await Event.
+ find().
+ populate('conversation');
+ const events = await Event.
+ find().
+ // The `model` option specifies the model to use for populating.
+ populate({ path: 'conversation', model: Conversation });
+ const commentSchema = new Schema({
+ body: { type: String, required: true },
+ doc: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ // Instead of a hardcoded model name in `ref`, `refPath` means Mongoose
+ // will look at the `docModel` property to find the right model.
+ refPath: 'docModel'
+ },
+ docModel: {
+ type: String,
+ required: true,
+ enum: ['BlogPost', 'Product']
+ }
+ });
+
+ const Product = mongoose.model('Product', new Schema({ name: String }));
+ const BlogPost = mongoose.model('BlogPost', new Schema({ title: String }));
+ const Comment = mongoose.model('Comment', commentSchema);
+ const book = await Product.create({ name: 'The Count of Monte Cristo' });
+const post = await BlogPost.create({ title: 'Top 10 French Novels' });
+
+const commentOnBook = await Comment.create({
+ body: 'Great read',
+ doc: book._id,
+ docModel: 'Product'
+});
+
+const commentOnPost = await Comment.create({
+ body: 'Very informative',
+ doc: post._id,
+ docModel: 'BlogPost'
+});
+
+// The below `populate()` works even though one comment references the
+// 'Product' collection and the other references the 'BlogPost' collection.
+const comments = await Comment.find().populate('doc').sort({ body: 1 });
+comments[0].doc.name; // "The Count of Monte Cristo"
+comments[1].doc.title; // "Top 10 French Novels"
+const commentSchema = new Schema({
+ body: { type: String, required: true },
+ product: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ ref: 'Product'
+ },
+ blogPost: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ ref: 'BlogPost'
+ }
+});
+
+// ...
+
+// The below `populate()` is equivalent to the `refPath` approach, you
+// just need to make sure you `populate()` both `product` and `blogPost`.
+const comments = await Comment.find().
+ populate('product').
+ populate('blogPost').
+ sort({ body: 1 });
+comments[0].product.name; // "The Count of Monte Cristo"
+comments[1].blogPost.title; // "Top 10 French Novels"
+const commentSchema = new Schema({
+ body: { type: String, required: true },
+ product: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ ref: 'Product'
+ },
+ blogPost: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ ref: 'BlogPost'
+ }
+});
+
+// ...
+
+// The below `populate()` is equivalent to the `refPath` approach, you
+// just need to make sure you `populate()` both `product` and `blogPost`.
+const comments = await Comment.find().
+ populate('product').
+ populate('blogPost').
+ sort({ body: 1 });
+comments[0].product.name; // "The Count of Monte Cristo"
+comments[1].blogPost.title; // "Top 10 French Novels"
+const commentSchema = new Schema({
+ body: { type: String, required: true },
+ commentType: {
+ type: String,
+ enum: ['comment', 'review']
+ },
+ entityId: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ refPath: function () {
+ return this.commentType === 'review' ? this.reviewEntityModel : this.commentEntityModel; // 'this' refers to the document being populated
+ }
+ },
+ commentEntityModel: {
+ type: String,
+ required: true,
+ enum: ['BlogPost', 'Review']
+ },
+ reviewEntityModel: {
+ type: String,
+ required: true,
+ enum: ['Vendor', 'Product']
+ }
+});
+const commentSchema = new Schema({
+ body: { type: String, required: true },
+ verifiedBuyer: Boolean
+ doc: {
+ type: Schema.Types.ObjectId,
+ required: true,
+ ref: function() {
+ return this.verifiedBuyer ? 'Product' : 'BlogPost'; // 'this' refers to the document being populated
+ }
+ },
+});
+const AuthorSchema = new Schema({
+ name: String,
+ posts: [{ type: mongoose.Schema.Types.ObjectId, ref: 'BlogPost' }]
+});
+
+const BlogPostSchema = new Schema({
+ title: String,
+ comments: [{
+ author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' },
+ content: String
+ }]
+});
+
+const Author = mongoose.model('Author', AuthorSchema, 'Author');
+const BlogPost = mongoose.model('BlogPost', BlogPostSchema, 'BlogPost');
+const AuthorSchema = new Schema({
+ name: String
+});
+
+const BlogPostSchema = new Schema({
+ title: String,
+ author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' },
+ comments: [{
+ author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' },
+ content: String
+ }]
+});
+// Specifying a virtual with a `ref` property is how you enable virtual
+// population
+AuthorSchema.virtual('posts', {
+ ref: 'BlogPost',
+ localField: '_id',
+ foreignField: 'author'
+});
+
+const Author = mongoose.model('Author', AuthorSchema, 'Author');
+const BlogPost = mongoose.model('BlogPost', BlogPostSchema, 'BlogPost');
+You can then populate() the author's posts as shown below.
+
+const author = await Author.findOne().populate('posts');
+
+author.posts[0].title; // Title of the first blog post
+const authorSchema = new Schema({ name: String }, {
+ toJSON: { virtuals: true }, // So `res.json()` and other `JSON.stringify()` functions include virtuals
+ toObject: { virtuals: true } // So `console.log()` and other functions that use `toObject()` include virtuals
+});
+let authors = await Author.
+ find({}).
+ // Won't work because the foreign field `author` is not selected
+ populate({ path: 'posts', select: 'title' }).
+ exec();
+
+authors = await Author.
+ find({}).
+ // Works, foreign field `author` is selected
+ populate({ path: 'posts', select: 'title author' }).
+ exec();
+ const PersonSchema = new Schema({
+ name: String,
+ band: String
+ });
+
+ const BandSchema = new Schema({
+ name: String
+ });
+ BandSchema.virtual('numMembers', {
+ ref: 'Person', // The model to use
+ localField: 'name', // Find people where `localField`
+ foreignField: 'band', // is equal to `foreignField`
+ count: true // And only get the number of docs
+ });
+
+ // Later
+ const doc = await Band.findOne({ name: 'Motley Crue' }).
+ populate('numMembers');
+ doc.numMembers; // 2
+ // Same example as 'Populate Virtuals' section
+AuthorSchema.virtual('posts', {
+ ref: 'BlogPost',
+ localField: '_id',
+ foreignField: 'author',
+ match: { archived: false } // match option with basic query selector
+});
+
+const Author = mongoose.model('Author', AuthorSchema, 'Author');
+const BlogPost = mongoose.model('BlogPost', BlogPostSchema, 'BlogPost');
+
+// After population
+const author = await Author.findOne().populate('posts');
+
+author.posts; // Array of not `archived` posts
+AuthorSchema.virtual('posts', {
+ ref: 'BlogPost',
+ localField: '_id',
+ foreignField: 'author',
+ // Add an additional filter `{ tags: author.favoriteTags }` to the populate query
+ // Mongoose calls the `match` function with the document being populated as the
+ // first argument.
+ match: author => ({ tags: author.favoriteTags })
+});
+// Overwrite the `match` option specified in `AuthorSchema.virtual()` for this
+// single `populate()` call.
+await Author.findOne().populate({ path: posts, match: {} });
+await Author.findOne().populate({
+ path: posts,
+ // Add `isDeleted: false` to the virtual's default `match`, so the `match`
+ // option would be `{ tags: author.favoriteTags, isDeleted: false }`
+ match: (author, virtual) => ({
+ ...virtual.options.match(author),
+ isDeleted: false
+ })
+});
+const BandSchema = new Schema({
+ name: String,
+ members: {
+ type: Map,
+ of: {
+ type: 'ObjectId',
+ ref: 'Person'
+ }
+ }
+});
+const Band = mongoose.model('Band', bandSchema);
+const person1 = new Person({ name: 'Vince Neil' });
+const person2 = new Person({ name: 'Mick Mars' });
+
+const band = new Band({
+ name: 'Motley Crue',
+ members: {
+ singer: person1._id,
+ guitarist: person2._id
+ }
+});
+const band = await Band.findOne({ name: 'Motley Crue' }).populate('members.$*');
+
+band.members.get('singer'); // { _id: ..., name: 'Vince Neil' }
+const librarySchema = new Schema({
+ name: String,
+ books: {
+ type: Map,
+ of: new Schema({
+ title: String,
+ author: {
+ type: 'ObjectId',
+ ref: 'Person'
+ }
+ })
+ }
+});
+const Library = mongoose.model('Library', librarySchema);
+const libraries = await Library.find().populate('books.$*.author');
+// Always attach `populate()` to `find()` calls
+MySchema.pre('find', function() {
+ this.populate('user');
+});
+// Always `populate()` after `find()` calls. Useful if you want to selectively populate
+// based on the docs found.
+MySchema.post('find', async function(docs) {
+ for (const doc of docs) {
+ if (doc.isPublic) {
+ await doc.populate('user');
+ }
+ }
+});
+// `populate()` after saving. Useful for sending populated data back to the client in an
+// update API endpoint
+MySchema.post('save', function(doc, next) {
+ doc.populate('user').then(function() {
+ next();
+ });
+});
+const userSchema = new Schema({
+ email: String,
+ password: String,
+ followers: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
+ following: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
+});
+
+userSchema.pre('find', function(next) {
+ this.populate('followers following');
+ next();
+});
+
+const User = mongoose.model('User', userSchema);
+userSchema.pre('find', function(next) {
+ if (this.options._recursed) {
+ return next();
+ }
+ this.populate({ path: 'followers following', options: { _recursed: true } });
+ next();
+});
+// With `transform`
+doc = await Parent.findById(doc).populate([
+ {
+ path: 'child',
+ // If `doc` is null, use the original id instead
+ transform: (doc, id) => doc == null ? id : doc
+ }
+]);
+
+doc.child; // 634d1a5744efe65ae09142f9
+doc.children; // [ 634d1a67ac15090a0ca6c0ea, { _id: 634d1a4ddb804d17d95d1c7f, name: 'Luke', __v: 0 } ]
+let doc = await Parent.create({ children: [{ name: 'Luke' }, { name: 'Leia' }] });
+
+doc = await Parent.findById(doc).populate([{
+ path: 'children',
+ transform: doc => doc == null ? null : doc.name
+}]);
+
+doc.children; // ['Luke', 'Leia']
+const internationalizedStringSchema = new Schema({
+ en: String,
+ es: String
+});
+
+const ingredientSchema = new Schema({
+ // Instead of setting `name` to just a string, set `name` to a map
+ // of language codes to strings.
+ name: {
+ type: internationalizedStringSchema,
+ // When you access `name`, pull the document's locale
+ get: function(value) {
+ return value[this.$locals.language || 'en'];
+ }
+ }
+});
+
+const recipeSchema = new Schema({
+ ingredients: [{ type: mongoose.ObjectId, ref: 'Ingredient' }]
+});
+
+const Ingredient = mongoose.model('Ingredient', ingredientSchema);
+const Recipe = mongoose.model('Recipe', recipeSchema);
+// Create some sample data
+const { _id } = await Ingredient.create({
+ name: {
+ en: 'Eggs',
+ es: 'Huevos'
+ }
+});
+await Recipe.create({ ingredients: [_id] });
+
+// Populate with setting `$locals.language` for internationalization
+const language = 'es';
+const recipes = await Recipe.find().populate({
+ path: 'ingredients',
+ transform: function(doc) {
+ doc.$locals.language = language;
+ return doc;
+ }
+});
+
+// Gets the ingredient's name in Spanish `name.es`
+recipes[0].ingredients[0].name; // 'Huevos'
+const options = { discriminatorKey: 'kind' };
+
+const eventSchema = new mongoose.Schema({ time: Date }, options);
+const Event = mongoose.model('Event', eventSchema);
+
+// ClickedLinkEvent is a special type of Event that has
+// a URL.
+const ClickedLinkEvent = Event.discriminator('ClickedLink',
+ new mongoose.Schema({ url: String }, options));
+
+// When you create a generic event, it can't have a URL field...
+const genericEvent = new Event({ time: Date.now(), url: 'google.com' });
+assert.ok(!genericEvent.url);
+
+// But a ClickedLinkEvent can
+const clickedEvent = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' });
+assert.ok(clickedEvent.url);
+const event1 = new Event({ time: Date.now() });
+const event2 = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' });
+const event3 = new SignedUpEvent({ time: Date.now(), user: 'testuser' });
+
+
+await Promise.all([event1.save(), event2.save(), event3.save()]);
+const count = await Event.countDocuments();
+assert.equal(count, 3);
+const event1 = new Event({ time: Date.now() });
+const event2 = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' });
+const event3 = new SignedUpEvent({ time: Date.now(), user: 'testuser' });
+
+assert.ok(!event1.__t);
+assert.equal(event2.__t, 'ClickedLink');
+assert.equal(event3.__t, 'SignedUp');
+let event = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' });
+await event.save();
+
+event.__t = 'SignedUp';
+// ValidationError: ClickedLink validation failed: __t: Cast to String failed for value "SignedUp" (type string) at path "__t"
+ await event.save();
+
+event = await ClickedLinkEvent.findByIdAndUpdate(event._id, { __t: 'SignedUp' }, { new: true });
+event.__t; // 'ClickedLink', update was a no-op
+let event = new ClickedLinkEvent({ time: Date.now(), url: 'google.com' });
+await event.save();
+
+event = await ClickedLinkEvent.findByIdAndUpdate(
+ event._id,
+ { __t: 'SignedUp' },
+ { overwriteDiscriminatorKey: true, new: true }
+);
+event.__t; // 'SignedUp', updated discriminator key
+const eventSchema = new Schema({ message: String },
+ { discriminatorKey: 'kind', _id: false });
+
+const batchSchema = new Schema({ events: [eventSchema] });
+
+// `batchSchema.path('events')` gets the mongoose `DocumentArray`
+// For TypeScript, use `schema.path('events')`
+const docArray = batchSchema.path('events');
+
+// The `events` array can contain 2 different types of events, a
+// 'clicked' event that requires an element id that was clicked...
+const clickedSchema = new Schema({
+ element: {
+ type: String,
+ required: true
+ }
+}, { _id: false });
+// Make sure to attach any hooks to `eventSchema` and `clickedSchema`
+// **before** calling `discriminator()`.
+const Clicked = docArray.discriminator('Clicked', clickedSchema);
+
+// ... and a 'purchased' event that requires the product that was purchased.
+const Purchased = docArray.discriminator('Purchased', new Schema({
+ product: {
+ type: String,
+ required: true
+ }
+}, { _id: false }));
+
+const Batch = db.model('EventBatch', batchSchema);
+
+// Create a new batch of events with different kinds
+const doc = await Batch.create({
+ events: [
+ { kind: 'Clicked', element: '#hero', message: 'hello' },
+ { kind: 'Purchased', product: 'action-figure-1', message: 'world' }
+ ]
+});
+
+assert.equal(doc.events.length, 2);
+
+assert.equal(doc.events[0].element, '#hero');
+assert.equal(doc.events[0].message, 'hello');
+assert.ok(doc.events[0] instanceof Clicked);
+
+assert.equal(doc.events[1].product, 'action-figure-1');
+assert.equal(doc.events[1].message, 'world');
+assert.ok(doc.events[1] instanceof Purchased);
+
+doc.events.push({ kind: 'Purchased', product: 'action-figure-2' });
+
+await doc.save();
+
+assert.equal(doc.events.length, 3);
+
+assert.equal(doc.events[2].product, 'action-figure-2');
+assert.ok(doc.events[2] instanceof Purchased);
+const shapeSchema = Schema({ name: String }, { discriminatorKey: 'kind' });
+const schema = Schema({ shape: shapeSchema });
+
+// For TypeScript, use `schema.path('shape').discriminator(...)`
+schema.path('shape').discriminator('Circle', Schema({ radius: String }));
+schema.path('shape').discriminator('Square', Schema({ side: Number }));
+
+const MyModel = mongoose.model('ShapeTest', schema);
+
+// If `kind` is set to 'Circle', then `shape` will have a `radius` property
+let doc = new MyModel({ shape: { kind: 'Circle', radius: 5 } });
+doc.shape.radius; // 5
+
+// If `kind` is set to 'Square', then `shape` will have a `side` property
+doc = new MyModel({ shape: { kind: 'Square', side: 10 } });
+doc.shape.side; // 10
+// loadedAt.js
+module.exports = function loadedAtPlugin(schema, options) {
+ schema.virtual('loadedAt').
+ get(function() { return this._loadedAt; }).
+ set(function(v) { this._loadedAt = v; });
+
+ schema.post(['find', 'findOne'], function(docs) {
+ if (!Array.isArray(docs)) {
+ docs = [docs];
+ }
+ const now = new Date();
+ for (const doc of docs) {
+ doc.loadedAt = now;
+ }
+ });
+};
+
+// game-schema.js
+const loadedAtPlugin = require('./loadedAt');
+const gameSchema = new Schema({ /* ... */ });
+gameSchema.plugin(loadedAtPlugin);
+
+// player-schema.js
+const loadedAtPlugin = require('./loadedAt');
+const playerSchema = new Schema({ /* ... */ });
+playerSchema.plugin(loadedAtPlugin);
+const mongoose = require('mongoose');
+mongoose.plugin(require('./loadedAt'));
+
+const gameSchema = new Schema({ /* ... */ });
+const playerSchema = new Schema({ /* ... */ });
+// `loadedAtPlugin` gets attached to both schemas
+const Game = mongoose.model('Game', gameSchema);
+const Player = mongoose.model('Player', playerSchema);
+// loadedAt.js
+module.exports = function loadedAtPlugin(schema, options) {
+ schema.virtual('loadedAt').
+ get(function() { return this._loadedAt; }).
+ set(function(v) { this._loadedAt = v; });
+
+ schema.post(['find', 'findOne'], function(docs) {
+ if (!Array.isArray(docs)) {
+ docs = [docs];
+ }
+ const now = new Date();
+ for (const doc of docs) {
+ doc.loadedAt = now;
+ }
+ });
+};
+
+// game-schema.js
+const loadedAtPlugin = require('./loadedAt');
+const gameSchema = new Schema({ /* ... */ });
+const Game = mongoose.model('Game', gameSchema);
+
+// `find()` and `findOne()` hooks from `loadedAtPlugin()` won't get applied
+// because `mongoose.model()` was already called!
+gameSchema.plugin(loadedAtPlugin);
+const userSchema = new Schema({ name: String }, { timestamps: true });
+const User = mongoose.model('User', userSchema);
+
+let doc = await User.create({ name: 'test' });
+
+console.log(doc.createdAt); // 2022-02-26T16:37:48.244Z
+console.log(doc.updatedAt); // 2022-02-26T16:37:48.244Z
+
+doc.name = 'test2';
+await doc.save();
+console.log(doc.createdAt); // 2022-02-26T16:37:48.244Z
+console.log(doc.updatedAt); // 2022-02-26T16:37:48.307Z
+
+doc = await User.findOneAndUpdate({ _id: doc._id }, { name: 'test3' }, { new: true });
+console.log(doc.createdAt); // 2022-02-26T16:37:48.244Z
+console.log(doc.updatedAt); // 2022-02-26T16:37:48.366Z
+let doc = await User.create({ name: 'test' });
+
+console.log(doc.createdAt); // 2022-02-26T17:08:13.930Z
+console.log(doc.updatedAt); // 2022-02-26T17:08:13.930Z
+
+doc.name = 'test2';
+doc.createdAt = new Date(0);
+doc.updatedAt = new Date(0);
+await doc.save();
+
+// Mongoose blocked changing `createdAt` and set its own `updatedAt`, ignoring
+// the attempt to manually set them.
+console.log(doc.createdAt); // 2022-02-26T17:08:13.930Z
+console.log(doc.updatedAt); // 2022-02-26T17:08:13.991Z
+
+// Mongoose also blocks changing `createdAt` and sets its own `updatedAt`
+// on `findOneAndUpdate()`, `updateMany()`, and other query operations
+// **except** `replaceOne()` and `findOneAndReplace()`.
+doc = await User.findOneAndUpdate(
+ { _id: doc._id },
+ { name: 'test3', createdAt: new Date(0), updatedAt: new Date(0) },
+ { new: true }
+);
+console.log(doc.createdAt); // 2022-02-26T17:08:13.930Z
+console.log(doc.updatedAt); // 2022-02-26T17:08:14.008Z
+// `findOneAndReplace()` and `replaceOne()` without timestamps specified in `replacement`
+// sets `createdAt` and `updatedAt` to current time.
+doc = await User.findOneAndReplace(
+ { _id: doc._id },
+ { name: 'test3' },
+ { new: true }
+);
+console.log(doc.createdAt); // 2022-02-26T17:08:14.008Z
+console.log(doc.updatedAt); // 2022-02-26T17:08:14.008Z
+
+// `findOneAndReplace()` and `replaceOne()` with timestamps specified in `replacement`
+// sets `createdAt` and `updatedAt` to the values in `replacement`.
+doc = await User.findOneAndReplace(
+ { _id: doc._id },
+ {
+ name: 'test3',
+ createdAt: new Date('2022-06-01'),
+ updatedAt: new Date('2022-06-01')
+ },
+ { new: true }
+);
+console.log(doc.createdAt); // 2022-06-01T00:00:00.000Z
+console.log(doc.updatedAt); // 2022-06-01T00:00:00.000Z
+const userSchema = new Schema({ name: String }, {
+ timestamps: {
+ createdAt: 'created_at', // Use `created_at` to store the created date
+ updatedAt: 'updated_at' // and `updated_at` to store the last updated date
+ }
+});
+let doc = await User.create({ name: 'test' });
+
+console.log(doc.createdAt); // 2022-02-26T23:28:54.264Z
+console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z
+
+doc.name = 'test2';
+
+// Setting `timestamps: false` tells Mongoose to skip updating `updatedAt` on this `save()`
+await doc.save({ timestamps: false });
+console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z
+
+// Similarly, setting `timestamps: false` on a query tells Mongoose to skip updating
+// `updatedAt`.
+doc = await User.findOneAndUpdate({ _id: doc._id }, { name: 'test3' }, {
+ new: true,
+ timestamps: false
+});
+console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z
+
+// Below is how you can disable timestamps on a `bulkWrite()`
+await User.bulkWrite([{
+ updateOne: {
+ filter: { _id: doc._id },
+ update: { name: 'test4' },
+ timestamps: false
+ }
+}]);
+doc = await User.findOne({ _id: doc._id });
+console.log(doc.updatedAt); // 2022-02-26T23:28:54.264Z
+const doc = new User({ name: 'test' });
+
+// Tell Mongoose to set `createdAt`, but skip `updatedAt`.
+await doc.save({ timestamps: { createdAt: true, updatedAt: false } });
+console.log(doc.createdAt); // 2022-02-26T23:32:12.478Z
+console.log(doc.updatedAt); // undefined
+let doc = await User.create({ name: 'test' });
+
+// To update `updatedAt`, do a `findOneAndUpdate()` with `timestamps: false` and
+// `updatedAt` set to the value you want
+doc = await User.findOneAndUpdate({ _id: doc._id }, { updatedAt: new Date(0) }, {
+ new: true,
+ timestamps: false
+});
+console.log(doc.updatedAt); // 1970-01-01T00:00:00.000Z
+
+// To update `createdAt`, you also need to set `strict: false` because `createdAt`
+// is immutable
+doc = await User.findOneAndUpdate({ _id: doc._id }, { createdAt: new Date(0) }, {
+ new: true,
+ timestamps: false,
+ strict: false
+});
+console.log(doc.createdAt); // 1970-01-01T00:00:00.000Z
+const roleSchema = new Schema({ value: String }, { timestamps: true });
+const userSchema = new Schema({ name: String, roles: [roleSchema] });
+
+const doc = await User.create({ name: 'test', roles: [{ value: 'admin' }] });
+console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.836Z
+console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.836Z
+
+// Overwriting the subdocument also overwrites `createdAt` and `updatedAt`
+doc.roles[0] = { value: 'root' };
+await doc.save();
+console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.902Z
+console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.902Z
+
+// But updating the subdocument preserves `createdAt` and updates `updatedAt`
+doc.roles[0].value = 'admin';
+await doc.save();
+console.log(doc.roles[0].createdAt); // 2022-02-27T00:22:53.902Z
+console.log(doc.roles[0].updatedAt); // 2022-02-27T00:22:53.909Z
+mongoose.set('debug', true);
+
+const userSchema = new Schema({
+ name: String
+}, { timestamps: true });
+const User = mongoose.model('User', userSchema);
+
+await User.findOneAndUpdate({}, { name: 'test' });
+await User.findOneAndUpdate({}, { $setOnInsert: { updatedAt: new Date() } }, {
+ timestamps: { createdAt: true, updatedAt: false }
+});
+const createdAt = new Date('2011-06-01');
+// Update a document's `createdAt` to a custom value.
+// Normally Mongoose would prevent doing this because `createdAt` is immutable.
+await Model.updateOne({ _id: doc._id }, { createdAt }, { overwriteImmutable: true, timestamps: false });
+
+doc = await Model.collection.findOne({ _id: doc._id });
+doc.createdAt.valueOf() === createdAt.valueOf(); // true
+// Using Mongoose's default connection
+const session = await mongoose.startSession();
+
+// Using custom connection
+const db = await mongoose.createConnection(mongodbUri).asPromise();
+const session = await db.startSession();
+let session = null;
+return Customer.createCollection().
+ then(() => Customer.startSession()).
+ // The `withTransaction()` function's first parameter is a function
+ // that returns a promise.
+ then(_session => {
+ session = _session;
+ return session.withTransaction(() => {
+ return Customer.create([{ name: 'Test' }], { session: session });
+ });
+ }).
+ then(() => Customer.countDocuments()).
+ then(count => assert.strictEqual(count, 1)).
+ then(() => session.endSession());
+ const doc = new Person({ name: 'Will Riker' });
+
+await db.transaction(async function setRank(session) {
+ doc.name = 'Captain';
+ await doc.save({ session });
+ doc.isNew; // false
+
+ // Throw an error to abort the transaction
+ throw new Error('Oops!');
+}, { readPreference: 'primary' }).catch(() => {});
+
+// true, `transaction()` reset the document's state because the
+// transaction was aborted.
+doc.isNew;
+const User = db.model('User', new Schema({ name: String }));
+
+let session = null;
+return User.createCollection().
+ then(() => db.startSession()).
+ then(_session => {
+ session = _session;
+ return User.create({ name: 'foo' });
+ }).
+ then(() => {
+ session.startTransaction();
+ return User.findOne({ name: 'foo' }).session(session);
+ }).
+ then(user => {
+ // Getter/setter for the session associated with this document.
+ assert.ok(user.$session());
+ user.name = 'bar';
+ // By default, `save()` uses the associated session
+ return user.save();
+ }).
+ then(() => User.findOne({ name: 'bar' })).
+ // Won't find the doc because `save()` is part of an uncommitted transaction
+ then(doc => assert.ok(!doc)).
+ then(() => session.commitTransaction()).
+ then(() => session.endSession()).
+ then(() => User.findOne({ name: 'bar' })).
+ then(doc => assert.ok(doc));
+ const Event = db.model('Event', new Schema({ createdAt: Date }), 'Event');
+
+let session = null;
+return Event.createCollection().
+ then(() => db.startSession()).
+ then(_session => {
+ session = _session;
+ session.startTransaction();
+ return Event.insertMany([
+ { createdAt: new Date('2018-06-01') },
+ { createdAt: new Date('2018-06-02') },
+ { createdAt: new Date('2017-06-01') },
+ { createdAt: new Date('2017-05-31') }
+ ], { session: session });
+ }).
+ then(() => Event.aggregate([
+ {
+ $group: {
+ _id: {
+ month: { $month: '$createdAt' },
+ year: { $year: '$createdAt' }
+ },
+ count: { $sum: 1 }
+ }
+ },
+ { $sort: { count: -1, '_id.year': -1, '_id.month': -1 } }
+ ]).session(session)).
+ then(res => assert.deepEqual(res, [
+ { _id: { month: 6, year: 2018 }, count: 2 },
+ { _id: { month: 6, year: 2017 }, count: 1 },
+ { _id: { month: 5, year: 2017 }, count: 1 }
+ ])).
+ then(() => session.commitTransaction()).
+ then(() => session.endSession());
+ mongoose.set('transactionAsyncLocalStorage', true);
+
+const Test = mongoose.model('Test', mongoose.Schema({ name: String }));
+
+const doc = new Test({ name: 'test' });
+
+// Save a new doc in a transaction that aborts
+await connection.transaction(async() => {
+ await doc.save(); // Notice no session here
+ throw new Error('Oops');
+}).catch(() => {});
+
+// false, `save()` was rolled back
+await Test.exists({ _id: doc._id });
+const Customer = db.model('Customer', new Schema({ name: String }));
+
+let session = null;
+return Customer.createCollection().
+ then(() => db.startSession()).
+ then(_session => {
+ session = _session;
+ // Start a transaction
+ session.startTransaction();
+ // This `create()` is part of the transaction because of the `session`
+ // option.
+ return Customer.create([{ name: 'Test' }], { session: session });
+ }).
+ // Transactions execute in isolation, so unless you pass a `session`
+ // to `findOne()` you won't see the document until the transaction
+ // is committed.
+ then(() => Customer.findOne({ name: 'Test' })).
+ then(doc => assert.ok(!doc)).
+ // This `findOne()` will return the doc, because passing the `session`
+ // means this `findOne()` will run as part of the transaction.
+ then(() => Customer.findOne({ name: 'Test' }).session(session)).
+ then(doc => assert.ok(doc)).
+ // Once the transaction is committed, the write operation becomes
+ // visible outside of the transaction.
+ then(() => session.commitTransaction()).
+ then(() => Customer.findOne({ name: 'Test' })).
+ then(doc => assert.ok(doc)).
+ then(() => session.endSession());
+ let session = null;
+return Customer.createCollection().
+ then(() => Customer.startSession()).
+ then(_session => {
+ session = _session;
+ session.startTransaction();
+ return Customer.create([{ name: 'Test' }], { session: session });
+ }).
+ then(() => Customer.create([{ name: 'Test2' }], { session: session })).
+ then(() => session.abortTransaction()).
+ then(() => Customer.countDocuments()).
+ then(count => assert.strictEqual(count, 0)).
+ then(() => session.endSession());
\ No newline at end of file
diff --git a/.idx/backend/package.json b/.idx/backend/package.json
new file mode 100644
index 0000000..c286fdf
--- /dev/null
+++ b/.idx/backend/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "todo",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "main": "server.js",
+ "scripts": {
+ "build": "vite build",
+ "lint": "eslint . --ext js,jsx,ts,tsx",
+ "preview": "vite preview",
+ "dev": "nodemon server.js --exec babel-node",
+ "test": "jest"
+ },
+ "author": "Code-lab-web",
+ "license": "(ISC OR GPL-3.0)",
+ "dependencies": {
+ "@emotion/react": "^11.14.0",
+ "@emotion/styled": "^11.14.1",
+ "@fontsource/roboto": "^5.2.6",
+ "@mui/icons-material": "^7.2.0",
+ "@mui/material": "^7.2.0",
+ "bcrypt": "^6.0.0",
+ "connect-sqlite3": "^0.9.16",
+ "cors": "^2.8.5",
+ "dotenv": "^16.5.0",
+ "express": "^5.1.0",
+ "express-session": "^1.18.2",
+ "global": "^4.4.0",
+ "jsonwebtoken": "^9.0.2",
+ "localforage": "^1.10.0",
+ "match-sorter": "^8.1.0",
+ "passport": "^0.7.0",
+ "passport-facebook": "^3.0.0",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "react-router-dom": "^7.9.1",
+ "sort-by": "^0.0.2",
+ "state": "0.2.0",
+ "styled-components": "^6.1.19",
+ "zustand": "^5.0.8"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.8.3",
+ "@babel/node": "^7.8.3",
+ "@babel/preset-env": "^7.8.3",
+ "@types/react": "^19.0.10",
+ "@vitejs/plugin-react": "^4.3.4",
+ "eslint": "^9.21.0",
+ "eslint-plugin-react-hooks": "^5.1.0",
+ "eslint-plugin-react-refresh": "^0.4.19",
+ "globals": "^15.15.0",
+ "jest": "^30.1.3",
+ "nodemon": "^3.1.10",
+ "vite": "^6.3.6"
+ }
+}
diff --git a/.idx/backend/server.js b/.idx/backend/server.js
new file mode 100644
index 0000000..6725196
--- /dev/null
+++ b/.idx/backend/server.js
@@ -0,0 +1,86 @@
+import express from 'express'
+import bodyParser from 'body-parser'
+import cors from 'cors'
+import crypto from 'crypto'
+// import mongoose from 'mongoose'
+import bcrypt from 'bcrypt-nodejs'
+import dotenv from 'dotenv'
+// import { MongoMemoryServer } from 'mongodb-memory-server'
+
+dotenv.config()
+
+// const userSchema = new mongoose.Schema({
+// name: {
+// type: String,
+// unique: true,
+// required: true
+// },
+// email: {
+// type: String,
+// unique: true,
+// required: true
+// },
+// password:{
+// type:String,
+// required:true
+// },
+// accessToken:{
+// type:String,
+// default: () => crypto.randomBytes(128).toString('hex')
+// }
+// });
+
+// const User = mongoose.model("User", userSchema);
+
+const port = process.env.PORT || 8080;
+const app = express();
+
+const authenticateUser = async (req, res, next) => {
+ // const user = await User.findOne({accessToken: req.header('Authorization')});
+ // if(user){
+ // req.user = user;
+ // next();
+ // } else {
+ // res.status(401).json({loggedOut:true});
+ // }
+ next();
+};
+
+app.use(cors());
+app.use(bodyParser.json());
+
+app.get('/', (req, res) => {
+ res.send('Hello Member');
+});
+
+app.post('/users', async (req, res) => {
+ res.status(201).json({
+ success: true,
+ message: "User created",
+ id: 1,
+ accessToken: "mock-access-token",
+ });
+ });
+
+app.post('/sessions', async (req, res) => {
+ res.json({userId: 1, accessToken: "mock-access-token"});
+});
+
+app.get("/secrets", authenticateUser);
+app.get("/secrets", (req, res) => {
+ res.json({ secret: 'This is a super secret message' });
+});
+
+const startServer = async () => {
+ // const mongoServer = await MongoMemoryServer.create();
+ // const mongoUrl = mongoServer.getUri();
+
+ // mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });
+ // mongoose.Promise = Promise;
+
+ app.listen(port, () => {
+ console.log(`Server running on http://localhost:${port}`);
+ });
+}
+
+startServer();
diff --git a/.idx/cli.spec.ts b/.idx/cli.spec.ts
new file mode 100644
index 0000000..433cb86
--- /dev/null
+++ b/.idx/cli.spec.ts
@@ -0,0 +1,154 @@
+import fs from 'fs'
+import path from 'node:path'
+import type { SyncOptions, SyncResult } from 'execa'
+import { execaCommandSync } from 'execa'
+import { afterEach, beforeAll, expect, test } from 'vitest'
+
+const CLI_PATH = path.join(__dirname, '..')
+
+const projectName = 'test-app'
+const genPath = path.join(__dirname, projectName)
+const genPathWithSubfolder = path.join(__dirname, 'subfolder', projectName)
+
+const run = (
+ args: string[],
+ options?: SO,
+): SyncResult => {
+ return execaCommandSync(`node ${CLI_PATH} ${args.join(' ')}`, options)
+}
+
+// Helper to create a non-empty directory
+const createNonEmptyDir = (overrideFolder?: string) => {
+ // Create the temporary directory
+ const newNonEmptyFolder = overrideFolder || genPath
+ fs.mkdirSync(newNonEmptyFolder, { recursive: true })
+
+ // Create a package.json file
+ const pkgJson = path.join(newNonEmptyFolder, 'package.json')
+ fs.writeFileSync(pkgJson, '{ "foo": "bar" }')
+}
+
+// Vue 3 starter template
+const templateFiles = fs
+ .readdirSync(path.join(CLI_PATH, 'template-vue'))
+ // _gitignore is renamed to .gitignore
+ .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath))
+ .sort()
+
+// React starter template
+const templateFilesReact = fs
+ .readdirSync(path.join(CLI_PATH, 'template-react'))
+ // _gitignore is renamed to .gitignore
+ .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath))
+ .sort()
+
+const clearAnyPreviousFolders = () => {
+ if (fs.existsSync(genPath)) {
+ fs.rmSync(genPath, { recursive: true, force: true })
+ }
+ if (fs.existsSync(genPathWithSubfolder)) {
+ fs.rmSync(genPathWithSubfolder, { recursive: true, force: true })
+ }
+}
+
+beforeAll(() => clearAnyPreviousFolders())
+afterEach(() => clearAnyPreviousFolders())
+
+test('prompts for the project name if none supplied', () => {
+ const { stdout } = run([])
+ expect(stdout).toContain('Project name:')
+})
+
+test('prompts for the framework if none supplied when target dir is current directory', () => {
+ fs.mkdirSync(genPath, { recursive: true })
+ const { stdout } = run(['.'], { cwd: genPath })
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework if none supplied', () => {
+ const { stdout } = run([projectName])
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework on not supplying a value for --template', () => {
+ const { stdout } = run([projectName, '--template'])
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework on supplying an invalid template', () => {
+ const { stdout } = run([projectName, '--template', 'unknown'])
+ expect(stdout).toContain(
+ `"unknown" isn't a valid template. Please choose from below:`,
+ )
+})
+
+test('asks to overwrite non-empty target directory', () => {
+ createNonEmptyDir()
+ const { stdout } = run([projectName], { cwd: __dirname })
+ expect(stdout).toContain(`Target directory "${projectName}" is not empty.`)
+})
+
+test('asks to overwrite non-empty target directory with subfolder', () => {
+ createNonEmptyDir(genPathWithSubfolder)
+ const { stdout } = run([`subfolder/${projectName}`], { cwd: __dirname })
+ expect(stdout).toContain(
+ `Target directory "subfolder/${projectName}" is not empty.`,
+ )
+})
+
+test('asks to overwrite non-empty current directory', () => {
+ createNonEmptyDir()
+ const { stdout } = run(['.'], { cwd: genPath })
+ expect(stdout).toContain(`Current directory is not empty.`)
+})
+
+test('successfully scaffolds a project based on vue starter template', () => {
+ const { stdout } = run([projectName, '--template', 'vue'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPath).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPath}`)
+ expect(templateFiles).toEqual(generatedFiles)
+})
+
+test('successfully scaffolds a project with subfolder based on react starter template', () => {
+ const { stdout } = run([`subfolder/${projectName}`, '--template', 'react'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPathWithSubfolder).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPathWithSubfolder}`)
+ expect(templateFilesReact).toEqual(generatedFiles)
+})
+
+test('works with the -t alias', () => {
+ const { stdout } = run([projectName, '-t', 'vue'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPath).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPath}`)
+ expect(templateFiles).toEqual(generatedFiles)
+})
+
+test('accepts command line override for --overwrite', () => {
+ createNonEmptyDir()
+ const { stdout } = run(['.', '--overwrite', 'ignore'], { cwd: genPath })
+ expect(stdout).not.toContain(`Current directory is not empty.`)
+})
+
+test('return help usage how to use create-vite', () => {
+ const { stdout } = run(['--help'], { cwd: __dirname })
+ const message = 'Usage: create-vite [OPTION]... [DIRECTORY]'
+ expect(stdout).toContain(message)
+})
+
+test('return help usage how to use create-vite with -h alias', () => {
+ const { stdout } = run(['--h'], { cwd: __dirname })
+ const message = 'Usage: create-vite [OPTION]... [DIRECTORY]'
+ expect(stdout).toContain(message)
+})
\ No newline at end of file
diff --git a/.idx/collect-await-expression.plugin.js b/.idx/collect-await-expression.plugin.js
new file mode 100644
index 0000000..9c29cb8
--- /dev/null
+++ b/.idx/collect-await-expression.plugin.js
@@ -0,0 +1,25 @@
+module.exports = (api) => {
+ const { types: t, traverse } = api;
+ return {
+ name: "collect-await",
+ visitor: {
+ Function(path) {
+ if (path.node.async) {
+ const awaitExpressions = [];
+ // Get a list of related await expressions within the async function body
+ path.traverse(traverse.visitors.merge([
+ environmentVisitor,
+ {
+ AwaitExpression(path) {
+ awaitExpressions.push(path);
+ },
+ ArrowFunctionExpression(path) {
+ path.skip();
+ },
+ }
+ ]))
+ }
+ }
+ }
+ }
+ }
\ No newline at end of file
diff --git a/.idx/dev.nix b/.idx/dev.nix
new file mode 100644
index 0000000..b292c16
--- /dev/null
+++ b/.idx/dev.nix
@@ -0,0 +1,14 @@
+
+ jsonpkgs: with pkgs; [
+ nodejs_20
+ nodePackages.pnpm
+ pkgs.python311Packages
+ pkgs.busybox
+ gcc
+ gnumake
+ pkg-config
+ autoconf
+ automake
+ libtool
+ pkgs.nox
+ ]
diff --git a/.idx/eslint.config.js b/.idx/eslint.config.js
new file mode 100644
index 0000000..6a10b2c
--- /dev/null
+++ b/.idx/eslint.config.js
@@ -0,0 +1,120 @@
+import babelParser from "@babel/eslint-parser";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParser,
+ },
+ },
+]);
+import babelParser from "@babel/eslint-parser";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParser,
+ parserOptions: {
+ requireConfigFile: false,
+ babelOptions: {
+ babelrc: false,
+ configFile: false,
+ // your babel options
+ presets: ["@babel/preset-env"],
+ },
+ },
+ },
+ },
+]);
+import babelParser from "@babel/eslint-parser";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParser,
+ parserOptions: {
+ requireConfigFile: false,
+ babelOptions: {
+ babelrc: false,
+ configFile: "path/to/babel.config.js",
+ },
+ },
+ },
+ },
+]);
+import babelParserExperimentalWorker from "@babel/eslint-parser/experimental-worker";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParserExperimentalWorker,
+ parserOptions: {
+ requireConfigFile: false,
+ babelOptions: {
+ babelrc: false,
+ configFile: "path/to/babel.config.mjs",
+ },
+ },
+ },
+ },
+]);
+import babelParser from "@babel/eslint-parser";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["files/transformed/by/babel/*.js"],
+ languageOptions: {
+ parser: babelParser,
+ },
+ },
+]);
+import babelParser from "@babel/eslint-parser";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParser,
+ parserOptions: {
+ babelOptions: {
+ rootMode: "upward",
+ },
+ },
+ },
+ },
+]);
+import babelParser from "@babel/eslint-parser";
+import babelPlugin from "@babel/eslint-plugin";
+import { defineConfig } from "eslint/config";
+
+export default defineConfig([
+ {
+ files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ parser: babelParser,
+ },
+ plugins: {
+ babel: babelPlugin
+ },
+ rules: {
+ "new-cap": "off",
+ "no-undef": "off",
+ "no-unused-expressions": "off",
+ "object-curly-spacing": "off",
+
+ "babel/new-cap": "error",
+ "babel/no-undef": "error",
+ "babel/no-unused-expressions": "error",
+ "babel/object-curly-spacing": "error"
+ }
+ },
+]);
\ No newline at end of file
diff --git a/.idx/input.js b/.idx/input.js
new file mode 100644
index 0000000..984bedc
--- /dev/null
+++ b/.idx/input.js
@@ -0,0 +1,51 @@
+using handlerSync = openSync();
+await using handlerAsync = await openAsync();
+import data from "./data.json" with { type: "json" };
+// matches Aa and aa
+const regex = /(?i:a)a/
+// matches aa, a\naa, etc. but not a\na
+const regex = /(?m:^a)a/
+// matches \na and aa, but not \n\n
+const regex = /(?s:.)./
+// replace this expression to `globalThis.foo = "top"`
+this.foo = "top";
+
+() => {
+ // replace
+ this.foo = "top"
+}
+function Foo() {
+ // don't replace
+ this.foo = "inner";
+ }
+
+ class Bar {
+ method() {
+ // don't replace
+ this.foo = "inner";
+ }
+ }
+ class Bar {
+ // replace
+ [this.foo = "outer"]() {
+ // don't replace
+ this.foo = "inner";
+ }
+ }
+ {
+ "type": "ClassMethod", // skipped
+ "key": { "type": "AssignmentExpression" }, // [this.foo = "outer"]
+ "body": { "type": "BlockStatement" }, // { this.foo = "inner"; }
+ "params": [], // should visit too if there are any
+ "computed": true
+ }
+ class Bar {
+ // replace
+ [this.foo = "outer"] =
+ // don't replace
+ this.foo
+ }
+ class Foo {
+ // replaced to `@globalThis.log`
+ @(this.log) foo = 1;
+ }
\ No newline at end of file
diff --git a/.idx/input.jsx b/.idx/input.jsx
new file mode 100644
index 0000000..4e8d2ed
--- /dev/null
+++ b/.idx/input.jsx
@@ -0,0 +1,6 @@
+const profile = (
+
+
+
{[user.firstName, user.lastName].join(" ")}
+
+ );
\ No newline at end of file
diff --git a/.idx/jest.config.js b/.idx/jest.config.js
new file mode 100644
index 0000000..37dc7e9
--- /dev/null
+++ b/.idx/jest.config.js
@@ -0,0 +1,3 @@
+"transform": {
+ "^.+\\.jsx?$": "./path/to/wrapper.js"
+},
\ No newline at end of file
diff --git a/.idx/mission.js b/.idx/mission.js
new file mode 100644
index 0000000..3147fee
--- /dev/null
+++ b/.idx/mission.js
@@ -0,0 +1,62 @@
+// mission.js
+
+// Function to define a mission
+function createMission(title, description, dueDate) {
+ return {
+ title: title,
+ description: description,
+ dueDate: dueDate,
+ completed: false,
+ };
+}
+
+// Function to mark a mission as completed
+// Duplicate function removed
+
+// Example usage
+const mission1 = createMission(
+ "Chef",
+ "Prepare a delicious meal",
+ "2025-12-31"
+);
+
+console.log("Before completing:", mission1);
+completeMission(mission1);
+console.log("After completing:", mission1);
+
+export { createMission, completeMission };
+
+function completeMission(mission) {
+ mission.completed = true;
+}
+
+// Example usage
+const MISSION2 = createMission(
+ "Housekeeping",
+ "Clean the residence",
+ "2025-12-31"
+);
+
+const MISSION3 = createMission(
+ "purchasing/hr",
+ "",
+ "2025-12-31"
+);
+
+const MISSION4 = createMission(
+ "Nanny",
+ "Take care of the children",
+ "2025-12-31"
+);
+
+const UNUSED_MISSION5 = createMission(
+ "Gardening",
+ "Maintain the garden",
+ "2025-12-31"
+);
+
+const MISSION6 = createMission(
+ "Chef",
+ "Prepare a delicious meal",
+ "2025-12-31"
+);
diff --git a/.idx/my-babel-plugin.js b/.idx/my-babel-plugin.js
new file mode 100644
index 0000000..c998d14
--- /dev/null
+++ b/.idx/my-babel-plugin.js
@@ -0,0 +1,38 @@
+{
+ "chrome": "60",
+ "opera": "47",
+ "edge": "79",
+ "firefox": "55",
+ "safari": "11.1",
+ "node": "8.3",
+ "deno": "1",
+ "ios": "11.3",
+ "samsung": "8",
+ "opera_mobile": "44",
+ "electron": "2.0"
+}
+import { isRequired } from "@babel/helper-compilation-targets";
+
+module.exports = api => {
+ // Check if the targets have native object-rest-spread support
+ const objectRestSpreadSupported = !isRequired(
+ "transform-object-rest-spread",
+ api.targets()
+ );
+};
+import {
+ isIdentifierName,
+ isIdentifierStart,
+ isIdentifierChar,
+ isReservedWord,
+ isStrictBindOnlyReservedWord,
+ isStrictBindReservedWord,
+ isStrictReservedWord,
+ isKeyword,
+ } from "@babel/helper-validator-identifier";
+ import environmentVisitor, {
+ requeueComputedKeyAndDecorators
+ } from "@babel/helper-environment-visitor";
+ if (path.isMethod()) {
+ requeueComputedKeyAndDecorators(path)
+ }
\ No newline at end of file
diff --git a/.idx/node/assert.js b/.idx/node/assert.js
new file mode 100644
index 0000000..71dbc60
--- /dev/null
+++ b/.idx/node/assert.js
@@ -0,0 +1,176 @@
+'use strict';
+const {
+ ArrayPrototypeForEach,
+ ArrayPrototypeMap,
+ ArrayPrototypePush,
+ FunctionPrototypeBind,
+ ObjectEntries,
+ String,
+ Symbol,
+} = primordials;
+
+const {
+ ERR_INVALID_ARG_VALUE,
+ ERR_WASI_ALREADY_STARTED,
+} = require('internal/errors').codes;
+const {
+ emitExperimentalWarning,
+ kEmptyObject,
+} = require('internal/util');
+const {
+ validateArray,
+ validateBoolean,
+ validateFunction,
+ validateInt32,
+ validateObject,
+ validateString,
+ validateUndefined,
+} = require('internal/validators');
+const kExitCode = Symbol('kExitCode');
+const kSetMemory = Symbol('kSetMemory');
+const kStarted = Symbol('kStarted');
+const kInstance = Symbol('kInstance');
+const kBindingName = Symbol('kBindingName');
+
+emitExperimentalWarning('WASI');
+
+class WASI {
+ constructor(options = kEmptyObject) {
+ validateObject(options, 'options');
+
+ let _WASI;
+ validateString(options.version, 'options.version');
+ switch (options.version) {
+ case 'unstable':
+ ({ WASI: _WASI } = internalBinding('wasi'));
+ this[kBindingName] = 'wasi_unstable';
+ break;
+ case 'preview1':
+ ({ WASI: _WASI } = internalBinding('wasi'));
+ this[kBindingName] = 'wasi_snapshot_preview1';
+ break;
+ // When adding support for additional wasi versions add case here
+ default:
+ throw new ERR_INVALID_ARG_VALUE('options.version',
+ options.version,
+ 'unsupported WASI version');
+ }
+
+ if (options.args !== undefined)
+ validateArray(options.args, 'options.args');
+ const args = ArrayPrototypeMap(options.args || [], String);
+
+ const env = [];
+ if (options.env !== undefined) {
+ validateObject(options.env, 'options.env');
+ ArrayPrototypeForEach(
+ ObjectEntries(options.env),
+ ({ 0: key, 1: value }) => {
+ if (value !== undefined)
+ ArrayPrototypePush(env, `${key}=${value}`);
+ });
+ }
+
+ const preopens = [];
+ if (options.preopens !== undefined) {
+ validateObject(options.preopens, 'options.preopens');
+ ArrayPrototypeForEach(
+ ObjectEntries(options.preopens),
+ ({ 0: key, 1: value }) =>
+ ArrayPrototypePush(preopens, String(key), String(value)),
+ );
+ }
+
+ const { stdin = 0, stdout = 1, stderr = 2 } = options;
+ validateInt32(stdin, 'options.stdin', 0);
+ validateInt32(stdout, 'options.stdout', 0);
+ validateInt32(stderr, 'options.stderr', 0);
+ const stdio = [stdin, stdout, stderr];
+
+ const wrap = new _WASI(args, env, preopens, stdio);
+
+ for (const prop in wrap) {
+ wrap[prop] = FunctionPrototypeBind(wrap[prop], wrap);
+ }
+
+ let returnOnExit = true;
+ if (options.returnOnExit !== undefined) {
+ validateBoolean(options.returnOnExit, 'options.returnOnExit');
+ returnOnExit = options.returnOnExit;
+ }
+ if (returnOnExit)
+ wrap.proc_exit = FunctionPrototypeBind(wasiReturnOnProcExit, this);
+
+ this[kSetMemory] = wrap._setMemory;
+ delete wrap._setMemory;
+ this.wasiImport = wrap;
+ this[kStarted] = false;
+ this[kExitCode] = 0;
+ this[kInstance] = undefined;
+ }
+
+ finalizeBindings(instance, {
+ memory = instance?.exports?.memory,
+ } = {}) {
+ if (this[kStarted]) {
+ throw new ERR_WASI_ALREADY_STARTED();
+ }
+
+ validateObject(instance, 'instance');
+ validateObject(instance.exports, 'instance.exports');
+
+ this[kSetMemory](memory);
+
+ this[kInstance] = instance;
+ this[kStarted] = true;
+ }
+
+ // Must not export _initialize, must export _start
+ start(instance) {
+ this.finalizeBindings(instance);
+
+ const { _start, _initialize } = this[kInstance].exports;
+
+ validateFunction(_start, 'instance.exports._start');
+ validateUndefined(_initialize, 'instance.exports._initialize');
+
+ try {
+ _start();
+ } catch (err) {
+ if (err !== kExitCode) {
+ throw err;
+ }
+ }
+
+ return this[kExitCode];
+ }
+
+ // Must not export _start, may optionally export _initialize
+ initialize(instance) {
+ this.finalizeBindings(instance);
+
+ const { _start, _initialize } = this[kInstance].exports;
+
+ validateUndefined(_start, 'instance.exports._start');
+ if (_initialize !== undefined) {
+ validateFunction(_initialize, 'instance.exports._initialize');
+ _initialize();
+ }
+ }
+
+ getImportObject() {
+ return { [this[kBindingName]]: this.wasiImport };
+ }
+}
+
+module.exports = { WASI };
+
+
+function wasiReturnOnProcExit(rval) {
+ // If __wasi_proc_exit() does not terminate the process, an assertion is
+ // triggered in the wasm runtime. Node can sidestep the assertion and return
+ // an exit code by recording the exit code, and throwing a JavaScript
+ // exception that WebAssembly cannot catch.
+ this[kExitCode] = rval;
+ throw kExitCode;
+}
\ No newline at end of file
diff --git a/.idx/node/async_hooks.js b/.idx/node/async_hooks.js
new file mode 100644
index 0000000..8c57bc6
--- /dev/null
+++ b/.idx/node/async_hooks.js
@@ -0,0 +1,296 @@
+'use strict';
+
+const {
+ ArrayPrototypeIncludes,
+ ArrayPrototypeIndexOf,
+ ArrayPrototypePush,
+ ArrayPrototypeSplice,
+ ArrayPrototypeUnshift,
+ FunctionPrototypeBind,
+ NumberIsSafeInteger,
+ ObjectDefineProperties,
+ ObjectFreeze,
+ ReflectApply,
+ Symbol,
+} = primordials;
+
+const {
+ ERR_ASYNC_CALLBACK,
+ ERR_ASYNC_TYPE,
+ ERR_INVALID_ASYNC_ID,
+} = require('internal/errors').codes;
+const {
+ deprecate,
+ kEmptyObject,
+} = require('internal/util');
+const {
+ validateFunction,
+ validateString,
+} = require('internal/validators');
+const internal_async_hooks = require('internal/async_hooks');
+
+const AsyncContextFrame = require('internal/async_context_frame');
+
+// Get functions
+// For userland AsyncResources, make sure to emit a destroy event when the
+// resource gets gced.
+const { registerDestroyHook, kNoPromiseHook } = internal_async_hooks;
+const {
+ asyncWrap,
+ executionAsyncId,
+ triggerAsyncId,
+ // Private API
+ hasAsyncIdStack,
+ getHookArrays,
+ enableHooks,
+ disableHooks,
+ updatePromiseHookMode,
+ executionAsyncResource,
+ // Internal Embedder API
+ newAsyncId,
+ getDefaultTriggerAsyncId,
+ emitInit,
+ emitBefore,
+ emitAfter,
+ emitDestroy,
+ enabledHooksExist,
+ initHooksExist,
+ destroyHooksExist,
+} = internal_async_hooks;
+
+// Get symbols
+const {
+ async_id_symbol, trigger_async_id_symbol,
+ init_symbol, before_symbol, after_symbol, destroy_symbol,
+ promise_resolve_symbol,
+} = internal_async_hooks.symbols;
+
+// Get constants
+const {
+ kInit, kBefore, kAfter, kDestroy, kTotals, kPromiseResolve,
+} = internal_async_hooks.constants;
+
+// Listener API //
+
+class AsyncHook {
+ constructor({ init, before, after, destroy, promiseResolve }) {
+ if (init !== undefined && typeof init !== 'function')
+ throw new ERR_ASYNC_CALLBACK('hook.init');
+ if (before !== undefined && typeof before !== 'function')
+ throw new ERR_ASYNC_CALLBACK('hook.before');
+ if (after !== undefined && typeof after !== 'function')
+ throw new ERR_ASYNC_CALLBACK('hook.after');
+ if (destroy !== undefined && typeof destroy !== 'function')
+ throw new ERR_ASYNC_CALLBACK('hook.destroy');
+ if (promiseResolve !== undefined && typeof promiseResolve !== 'function')
+ throw new ERR_ASYNC_CALLBACK('hook.promiseResolve');
+
+ this[init_symbol] = init;
+ this[before_symbol] = before;
+ this[after_symbol] = after;
+ this[destroy_symbol] = destroy;
+ this[promise_resolve_symbol] = promiseResolve;
+ this[kNoPromiseHook] = false;
+ }
+
+ enable() {
+ // The set of callbacks for a hook should be the same regardless of whether
+ // enable()/disable() are run during their execution. The following
+ // references are reassigned to the tmp arrays if a hook is currently being
+ // processed.
+ const { 0: hooks_array, 1: hook_fields } = getHookArrays();
+
+ // Each hook is only allowed to be added once.
+ if (ArrayPrototypeIncludes(hooks_array, this))
+ return this;
+
+ const prev_kTotals = hook_fields[kTotals];
+
+ // createHook() has already enforced that the callbacks are all functions,
+ // so here simply increment the count of whether each callbacks exists or
+ // not.
+ hook_fields[kTotals] = hook_fields[kInit] += +!!this[init_symbol];
+ hook_fields[kTotals] += hook_fields[kBefore] += +!!this[before_symbol];
+ hook_fields[kTotals] += hook_fields[kAfter] += +!!this[after_symbol];
+ hook_fields[kTotals] += hook_fields[kDestroy] += +!!this[destroy_symbol];
+ hook_fields[kTotals] +=
+ hook_fields[kPromiseResolve] += +!!this[promise_resolve_symbol];
+ ArrayPrototypePush(hooks_array, this);
+
+ if (prev_kTotals === 0 && hook_fields[kTotals] > 0) {
+ enableHooks();
+ }
+
+ if (!this[kNoPromiseHook]) {
+ updatePromiseHookMode();
+ }
+
+ return this;
+ }
+
+ disable() {
+ const { 0: hooks_array, 1: hook_fields } = getHookArrays();
+
+ const index = ArrayPrototypeIndexOf(hooks_array, this);
+ if (index === -1)
+ return this;
+
+ const prev_kTotals = hook_fields[kTotals];
+
+ hook_fields[kTotals] = hook_fields[kInit] -= +!!this[init_symbol];
+ hook_fields[kTotals] += hook_fields[kBefore] -= +!!this[before_symbol];
+ hook_fields[kTotals] += hook_fields[kAfter] -= +!!this[after_symbol];
+ hook_fields[kTotals] += hook_fields[kDestroy] -= +!!this[destroy_symbol];
+ hook_fields[kTotals] +=
+ hook_fields[kPromiseResolve] -= +!!this[promise_resolve_symbol];
+ ArrayPrototypeSplice(hooks_array, index, 1);
+
+ if (prev_kTotals > 0 && hook_fields[kTotals] === 0) {
+ disableHooks();
+ }
+
+ return this;
+ }
+}
+
+
+function createHook(fns) {
+ return new AsyncHook(fns);
+}
+
+
+// Embedder API //
+
+const destroyedSymbol = Symbol('destroyed');
+const contextFrameSymbol = Symbol('context_frame');
+
+class AsyncResource {
+ constructor(type, opts = kEmptyObject) {
+ validateString(type, 'type');
+
+ let triggerAsyncId = opts;
+ let requireManualDestroy = false;
+ if (typeof opts !== 'number') {
+ triggerAsyncId = opts.triggerAsyncId === undefined ?
+ getDefaultTriggerAsyncId() : opts.triggerAsyncId;
+ requireManualDestroy = !!opts.requireManualDestroy;
+ }
+
+ // Unlike emitInitScript, AsyncResource doesn't supports null as the
+ // triggerAsyncId.
+ if (!NumberIsSafeInteger(triggerAsyncId) || triggerAsyncId < -1) {
+ throw new ERR_INVALID_ASYNC_ID('triggerAsyncId', triggerAsyncId);
+ }
+
+ this[contextFrameSymbol] = AsyncContextFrame.current();
+
+ const asyncId = newAsyncId();
+ this[async_id_symbol] = asyncId;
+ this[trigger_async_id_symbol] = triggerAsyncId;
+
+ if (initHooksExist()) {
+ if (enabledHooksExist() && type.length === 0) {
+ throw new ERR_ASYNC_TYPE(type);
+ }
+
+ emitInit(asyncId, type, triggerAsyncId, this);
+ }
+
+ if (!requireManualDestroy && destroyHooksExist()) {
+ // This prop name (destroyed) has to be synchronized with C++
+ const destroyed = { destroyed: false };
+ this[destroyedSymbol] = destroyed;
+ registerDestroyHook(this, asyncId, destroyed);
+ }
+ }
+
+ runInAsyncScope(fn, thisArg, ...args) {
+ const asyncId = this[async_id_symbol];
+ emitBefore(asyncId, this[trigger_async_id_symbol], this);
+
+ const contextFrame = this[contextFrameSymbol];
+ const prior = AsyncContextFrame.exchange(contextFrame);
+ try {
+ return ReflectApply(fn, thisArg, args);
+ } finally {
+ AsyncContextFrame.set(prior);
+ if (hasAsyncIdStack())
+ emitAfter(asyncId);
+ }
+ }
+
+ emitDestroy() {
+ if (this[destroyedSymbol] !== undefined) {
+ this[destroyedSymbol].destroyed = true;
+ }
+ emitDestroy(this[async_id_symbol]);
+ return this;
+ }
+
+ asyncId() {
+ return this[async_id_symbol];
+ }
+
+ triggerAsyncId() {
+ return this[trigger_async_id_symbol];
+ }
+
+ bind(fn, thisArg) {
+ validateFunction(fn, 'fn');
+ let bound;
+ if (thisArg === undefined) {
+ const resource = this;
+ bound = function(...args) {
+ ArrayPrototypeUnshift(args, fn, this);
+ return ReflectApply(resource.runInAsyncScope, resource, args);
+ };
+ } else {
+ bound = FunctionPrototypeBind(this.runInAsyncScope, this, fn, thisArg);
+ }
+ let self = this;
+ ObjectDefineProperties(bound, {
+ 'length': {
+ __proto__: null,
+ configurable: true,
+ enumerable: false,
+ value: fn.length,
+ writable: false,
+ },
+ 'asyncResource': {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get: deprecate(function() {
+ return self;
+ }, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
+ set: deprecate(function(val) {
+ self = val;
+ }, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
+ },
+ });
+ return bound;
+ }
+
+ static bind(fn, type, thisArg) {
+ type ||= fn.name;
+ return (new AsyncResource(type || 'bound-anonymous-fn')).bind(fn, thisArg);
+ }
+}
+
+// Placing all exports down here because the exported classes won't export
+// otherwise.
+module.exports = {
+ // Public API
+ get AsyncLocalStorage() {
+ return AsyncContextFrame.enabled ?
+ require('internal/async_local_storage/async_context_frame') :
+ require('internal/async_local_storage/async_hooks');
+ },
+ createHook,
+ executionAsyncId,
+ triggerAsyncId,
+ executionAsyncResource,
+ asyncWrapProviders: ObjectFreeze({ __proto__: null, ...asyncWrap.Providers }),
+ // Embedder API
+ AsyncResource,
+};
\ No newline at end of file
diff --git a/.idx/node/buffer.js b/.idx/node/buffer.js
new file mode 100644
index 0000000..06bfebc
--- /dev/null
+++ b/.idx/node/buffer.js
@@ -0,0 +1,1365 @@
+'use strict';
+
+const {
+ Array,
+ ArrayBufferIsView,
+ ArrayIsArray,
+ ArrayPrototypeForEach,
+ MathFloor,
+ MathMin,
+ MathTrunc,
+ NumberIsInteger,
+ NumberIsNaN,
+ NumberMAX_SAFE_INTEGER,
+ NumberMIN_SAFE_INTEGER,
+ ObjectDefineProperties,
+ ObjectDefineProperty,
+ ObjectPrototypeHasOwnProperty,
+ ObjectSetPrototypeOf,
+ RegExpPrototypeSymbolReplace,
+ StringPrototypeCharCodeAt,
+ StringPrototypeSlice,
+ StringPrototypeToLowerCase,
+ StringPrototypeTrim,
+ SymbolSpecies,
+ SymbolToPrimitive,
+ TypedArrayPrototypeFill,
+ TypedArrayPrototypeGetBuffer,
+ TypedArrayPrototypeGetByteLength,
+ TypedArrayPrototypeGetByteOffset,
+ TypedArrayPrototypeGetLength,
+ TypedArrayPrototypeSet,
+ TypedArrayPrototypeSlice,
+ Uint8Array,
+ Uint8ArrayPrototype,
+} = primordials;
+
+const {
+ byteLengthUtf8,
+ compare: _compare,
+ compareOffset,
+ copy: _copy,
+ fill: bindingFill,
+ isAscii: bindingIsAscii,
+ isUtf8: bindingIsUtf8,
+ indexOfBuffer,
+ indexOfNumber,
+ indexOfString,
+ swap16: _swap16,
+ swap32: _swap32,
+ swap64: _swap64,
+ kMaxLength,
+ kStringMaxLength,
+ atob: _atob,
+ btoa: _btoa,
+} = internalBinding('buffer');
+const {
+ constants: {
+ ALL_PROPERTIES,
+ ONLY_ENUMERABLE,
+ },
+ getOwnNonIndexProperties,
+ isInsideNodeModules,
+} = internalBinding('util');
+const {
+ customInspectSymbol,
+ lazyDOMException,
+ normalizeEncoding,
+ kIsEncodingSymbol,
+ defineLazyProperties,
+ encodingsMap,
+ deprecate,
+} = require('internal/util');
+const {
+ isAnyArrayBuffer,
+ isArrayBufferView,
+ isUint8Array,
+ isTypedArray,
+} = require('internal/util/types');
+const {
+ inspect: utilInspect,
+} = require('internal/util/inspect');
+
+const {
+ codes: {
+ ERR_BUFFER_OUT_OF_BOUNDS,
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_ARG_VALUE,
+ ERR_INVALID_BUFFER_SIZE,
+ ERR_MISSING_ARGS,
+ ERR_OUT_OF_RANGE,
+ ERR_UNKNOWN_ENCODING,
+ },
+ genericNodeError,
+} = require('internal/errors');
+const {
+ validateArray,
+ validateBuffer,
+ validateInteger,
+ validateNumber,
+ validateString,
+} = require('internal/validators');
+// Provide validateInteger() but with kMaxLength as the default maximum value.
+const validateOffset = (value, name, min = 0, max = kMaxLength) =>
+ validateInteger(value, name, min, max);
+
+const {
+ FastBuffer,
+ markAsUntransferable,
+ addBufferPrototypeMethods,
+ createUnsafeBuffer,
+} = require('internal/buffer');
+
+FastBuffer.prototype.constructor = Buffer;
+Buffer.prototype = FastBuffer.prototype;
+addBufferPrototypeMethods(Buffer.prototype);
+
+const constants = ObjectDefineProperties({}, {
+ MAX_LENGTH: {
+ __proto__: null,
+ value: kMaxLength,
+ writable: false,
+ enumerable: true,
+ },
+ MAX_STRING_LENGTH: {
+ __proto__: null,
+ value: kStringMaxLength,
+ writable: false,
+ enumerable: true,
+ },
+});
+
+Buffer.poolSize = 8 * 1024;
+let poolSize, poolOffset, allocPool, allocBuffer;
+
+function createPool() {
+ poolSize = Buffer.poolSize;
+ allocBuffer = createUnsafeBuffer(poolSize);
+ allocPool = allocBuffer.buffer;
+ markAsUntransferable(allocPool);
+ poolOffset = 0;
+}
+createPool();
+
+function alignPool() {
+ // Ensure aligned slices
+ if (poolOffset & 0x7) {
+ poolOffset |= 0x7;
+ poolOffset++;
+ }
+}
+
+let bufferWarningAlreadyEmitted = false;
+let nodeModulesCheckCounter = 0;
+const bufferWarning = 'Buffer() is deprecated due to security and usability ' +
+ 'issues. Please use the Buffer.alloc(), ' +
+ 'Buffer.allocUnsafe(), or Buffer.from() methods instead.';
+
+function showFlaggedDeprecation() {
+ if (bufferWarningAlreadyEmitted ||
+ ++nodeModulesCheckCounter > 10000 ||
+ (!require('internal/options').getOptionValue('--pending-deprecation') &&
+ isInsideNodeModules(100, true))) {
+ // We don't emit a warning, because we either:
+ // - Already did so, or
+ // - Already checked too many times whether a call is coming
+ // from node_modules and want to stop slowing down things, or
+ // - We aren't running with `--pending-deprecation` enabled,
+ // and the code is inside `node_modules`.
+ // - We found node_modules in up to the topmost 100 frames, or
+ // there are more than 100 frames and we don't want to search anymore.
+ return;
+ }
+
+ process.emitWarning(bufferWarning, 'DeprecationWarning', 'DEP0005');
+ bufferWarningAlreadyEmitted = true;
+}
+
+function toInteger(n, defaultVal) {
+ n = +n;
+ if (!NumberIsNaN(n) &&
+ n >= NumberMIN_SAFE_INTEGER &&
+ n <= NumberMAX_SAFE_INTEGER) {
+ return ((n % 1) === 0 ? n : MathFloor(n));
+ }
+ return defaultVal;
+}
+
+function copyImpl(source, target, targetStart, sourceStart, sourceEnd) {
+ if (!ArrayBufferIsView(source))
+ throw new ERR_INVALID_ARG_TYPE('source', ['Buffer', 'Uint8Array'], source);
+ if (!ArrayBufferIsView(target))
+ throw new ERR_INVALID_ARG_TYPE('target', ['Buffer', 'Uint8Array'], target);
+
+ if (targetStart === undefined) {
+ targetStart = 0;
+ } else {
+ targetStart = NumberIsInteger(targetStart) ? targetStart : toInteger(targetStart, 0);
+ if (targetStart < 0)
+ throw new ERR_OUT_OF_RANGE('targetStart', '>= 0', targetStart);
+ }
+
+ if (sourceStart === undefined) {
+ sourceStart = 0;
+ } else {
+ sourceStart = NumberIsInteger(sourceStart) ? sourceStart : toInteger(sourceStart, 0);
+ if (sourceStart < 0 || sourceStart > source.byteLength)
+ throw new ERR_OUT_OF_RANGE('sourceStart', `>= 0 && <= ${source.byteLength}`, sourceStart);
+ }
+
+ if (sourceEnd === undefined) {
+ sourceEnd = source.byteLength;
+ } else {
+ sourceEnd = NumberIsInteger(sourceEnd) ? sourceEnd : toInteger(sourceEnd, 0);
+ if (sourceEnd < 0)
+ throw new ERR_OUT_OF_RANGE('sourceEnd', '>= 0', sourceEnd);
+ }
+
+ if (targetStart >= target.byteLength || sourceStart >= sourceEnd)
+ return 0;
+
+ return _copyActual(source, target, targetStart, sourceStart, sourceEnd);
+}
+
+function _copyActual(source, target, targetStart, sourceStart, sourceEnd) {
+ if (sourceEnd - sourceStart > target.byteLength - targetStart)
+ sourceEnd = sourceStart + target.byteLength - targetStart;
+
+ let nb = sourceEnd - sourceStart;
+ const sourceLen = source.byteLength - sourceStart;
+ if (nb > sourceLen)
+ nb = sourceLen;
+
+ if (nb <= 0)
+ return 0;
+
+ _copy(source, target, targetStart, sourceStart, nb);
+
+ return nb;
+}
+
+/**
+ * The Buffer() constructor is deprecated in documentation and should not be
+ * used moving forward. Rather, developers should use one of the three new
+ * factory APIs: Buffer.from(), Buffer.allocUnsafe() or Buffer.alloc() based on
+ * their specific needs. There is no runtime deprecation because of the extent
+ * to which the Buffer constructor is used in the ecosystem currently -- a
+ * runtime deprecation would introduce too much breakage at this time. It's not
+ * likely that the Buffer constructors would ever actually be removed.
+ * Deprecation Code: DEP0005
+ * @returns {Buffer}
+ */
+function Buffer(arg, encodingOrOffset, length) {
+ showFlaggedDeprecation();
+ // Common case.
+ if (typeof arg === 'number') {
+ if (typeof encodingOrOffset === 'string') {
+ throw new ERR_INVALID_ARG_TYPE('string', 'string', arg);
+ }
+ return Buffer.alloc(arg);
+ }
+ return Buffer.from(arg, encodingOrOffset, length);
+}
+
+ObjectDefineProperty(Buffer, SymbolSpecies, {
+ __proto__: null,
+ enumerable: false,
+ configurable: true,
+ get() { return FastBuffer; },
+});
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ * @param {any} value
+ * @param {BufferEncoding|number} encodingOrOffset
+ * @param {number} [length]
+ * @returns {Buffer}
+ */
+Buffer.from = function from(value, encodingOrOffset, length) {
+ if (typeof value === 'string')
+ return fromString(value, encodingOrOffset);
+
+ if (typeof value === 'object' && value !== null) {
+ if (isAnyArrayBuffer(value))
+ return fromArrayBuffer(value, encodingOrOffset, length);
+
+ const valueOf = value.valueOf && value.valueOf();
+ if (valueOf != null &&
+ valueOf !== value &&
+ (typeof valueOf === 'string' || typeof valueOf === 'object')) {
+ return from(valueOf, encodingOrOffset, length);
+ }
+
+ const b = fromObject(value);
+ if (b)
+ return b;
+
+ if (typeof value[SymbolToPrimitive] === 'function') {
+ const primitive = value[SymbolToPrimitive]('string');
+ if (typeof primitive === 'string') {
+ return fromString(primitive, encodingOrOffset);
+ }
+ }
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'first argument',
+ ['string', 'Buffer', 'ArrayBuffer', 'Array', 'Array-like Object'],
+ value,
+ );
+};
+
+/**
+ * Creates the Buffer as a copy of the underlying ArrayBuffer of the view
+ * rather than the contents of the view.
+ * @param {TypedArray} view
+ * @param {number} [offset]
+ * @param {number} [length]
+ * @returns {Buffer}
+ */
+Buffer.copyBytesFrom = function copyBytesFrom(view, offset, length) {
+ if (!isTypedArray(view)) {
+ throw new ERR_INVALID_ARG_TYPE('view', [ 'TypedArray' ], view);
+ }
+
+ const viewLength = TypedArrayPrototypeGetLength(view);
+ if (viewLength === 0) {
+ return Buffer.alloc(0);
+ }
+
+ if (offset !== undefined || length !== undefined) {
+ if (offset !== undefined) {
+ validateInteger(offset, 'offset', 0);
+ if (offset >= viewLength) return Buffer.alloc(0);
+ } else {
+ offset = 0;
+ }
+ let end;
+ if (length !== undefined) {
+ validateInteger(length, 'length', 0);
+ end = offset + length;
+ } else {
+ end = viewLength;
+ }
+
+ view = TypedArrayPrototypeSlice(view, offset, end);
+ }
+
+ return fromArrayLike(new Uint8Array(
+ TypedArrayPrototypeGetBuffer(view),
+ TypedArrayPrototypeGetByteOffset(view),
+ TypedArrayPrototypeGetByteLength(view)));
+};
+
+// Identical to the built-in %TypedArray%.of(), but avoids using the deprecated
+// Buffer() constructor. Must use arrow function syntax to avoid automatically
+// adding a `prototype` property and making the function a constructor.
+//
+// Refs: https://tc39.github.io/ecma262/#sec-%typedarray%.of
+// Refs: https://esdiscuss.org/topic/isconstructor#content-11
+const of = (...items) => {
+ const newObj = createUnsafeBuffer(items.length);
+ for (let k = 0; k < items.length; k++)
+ newObj[k] = items[k];
+ return newObj;
+};
+Buffer.of = of;
+
+ObjectSetPrototypeOf(Buffer, Uint8Array);
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ * @returns {FastBuffer}
+ */
+Buffer.alloc = function alloc(size, fill, encoding) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ if (fill !== undefined && fill !== 0 && size > 0) {
+ const buf = createUnsafeBuffer(size);
+ return _fill(buf, fill, 0, buf.length, encoding);
+ }
+ return new FastBuffer(size);
+};
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer
+ * instance. If `--zero-fill-buffers` is set, will zero-fill the buffer.
+ * @returns {FastBuffer}
+ */
+Buffer.allocUnsafe = function allocUnsafe(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return allocate(size);
+};
+
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled
+ * Buffer instance that is not allocated off the pre-initialized pool.
+ * If `--zero-fill-buffers` is set, will zero-fill the buffer.
+ * @param {number} size
+ * @returns {FastBuffer|undefined}
+ */
+Buffer.allocUnsafeSlow = function allocUnsafeSlow(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return createUnsafeBuffer(size);
+};
+
+// If --zero-fill-buffers command line argument is set, a zero-filled
+// buffer is returned.
+function SlowBuffer(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return createUnsafeBuffer(size);
+}
+
+ObjectSetPrototypeOf(SlowBuffer.prototype, Uint8ArrayPrototype);
+ObjectSetPrototypeOf(SlowBuffer, Uint8Array);
+
+function allocate(size) {
+ if (size <= 0) {
+ return new FastBuffer();
+ }
+ if (size < (Buffer.poolSize >>> 1)) {
+ if (size > (poolSize - poolOffset))
+ createPool();
+ const b = new FastBuffer(allocPool, poolOffset, size);
+ poolOffset += size;
+ alignPool();
+ return b;
+ }
+ return createUnsafeBuffer(size);
+}
+
+function fromStringFast(string, ops) {
+ const maxLength = Buffer.poolSize >>> 1;
+
+ let length = string.length; // Min length
+
+ if (length >= maxLength)
+ return createFromString(string, ops);
+
+ length *= 4; // Max length (4 bytes per character)
+
+ if (length >= maxLength)
+ length = ops.byteLength(string); // Actual length
+
+ if (length >= maxLength)
+ return createFromString(string, ops, length);
+
+ if (length > (poolSize - poolOffset))
+ createPool();
+
+ const actual = ops.write(allocBuffer, string, poolOffset, length);
+ const b = new FastBuffer(allocPool, poolOffset, actual);
+
+ poolOffset += actual;
+ alignPool();
+ return b;
+}
+
+function createFromString(string, ops, length = ops.byteLength(string)) {
+ const buf = Buffer.allocUnsafeSlow(length);
+ const actual = ops.write(buf, string, 0, length);
+ return actual < length ? new FastBuffer(buf.buffer, 0, actual) : buf;
+}
+
+function fromString(string, encoding) {
+ let ops;
+ if (!encoding || encoding === 'utf8' || typeof encoding !== 'string') {
+ ops = encodingOps.utf8;
+ } else {
+ ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+
+ return string.length === 0 ? new FastBuffer() : fromStringFast(string, ops);
+}
+
+function fromArrayBuffer(obj, byteOffset, length) {
+ // Convert byteOffset to integer
+ if (byteOffset === undefined) {
+ byteOffset = 0;
+ } else {
+ byteOffset = +byteOffset;
+ if (NumberIsNaN(byteOffset))
+ byteOffset = 0;
+ }
+
+ const maxLength = obj.byteLength - byteOffset;
+
+ if (maxLength < 0)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('offset');
+
+ if (length !== undefined) {
+ // Convert length to non-negative integer.
+ length = +length;
+ if (length > 0) {
+ if (length > maxLength)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('length');
+ } else {
+ length = 0;
+ }
+ }
+
+ return new FastBuffer(obj, byteOffset, length);
+}
+
+function fromArrayLike(obj) {
+ if (obj.length <= 0)
+ return new FastBuffer();
+ if (obj.length < (Buffer.poolSize >>> 1)) {
+ if (obj.length > (poolSize - poolOffset))
+ createPool();
+ const b = new FastBuffer(allocPool, poolOffset, obj.length);
+ TypedArrayPrototypeSet(b, obj, 0);
+ poolOffset += obj.length;
+ alignPool();
+ return b;
+ }
+ return new FastBuffer(obj);
+}
+
+function fromObject(obj) {
+ if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) {
+ if (typeof obj.length !== 'number') {
+ return new FastBuffer();
+ }
+ return fromArrayLike(obj);
+ }
+
+ if (obj.type === 'Buffer' && ArrayIsArray(obj.data)) {
+ return fromArrayLike(obj.data);
+ }
+}
+
+// Static methods
+
+Buffer.isBuffer = function isBuffer(b) {
+ return b instanceof Buffer;
+};
+
+Buffer.compare = function compare(buf1, buf2) {
+ if (!isUint8Array(buf1)) {
+ throw new ERR_INVALID_ARG_TYPE('buf1', ['Buffer', 'Uint8Array'], buf1);
+ }
+
+ if (!isUint8Array(buf2)) {
+ throw new ERR_INVALID_ARG_TYPE('buf2', ['Buffer', 'Uint8Array'], buf2);
+ }
+
+ if (buf1 === buf2) {
+ return 0;
+ }
+
+ return _compare(buf1, buf2);
+};
+
+Buffer.isEncoding = function isEncoding(encoding) {
+ return typeof encoding === 'string' && encoding.length !== 0 &&
+ normalizeEncoding(encoding) !== undefined;
+};
+Buffer[kIsEncodingSymbol] = Buffer.isEncoding;
+
+Buffer.concat = function concat(list, length) {
+ validateArray(list, 'list');
+
+ if (list.length === 0)
+ return new FastBuffer();
+
+ if (length === undefined) {
+ length = 0;
+ for (let i = 0; i < list.length; i++) {
+ if (list[i].length) {
+ length += list[i].length;
+ }
+ }
+ } else {
+ validateOffset(length, 'length');
+ }
+
+ const buffer = Buffer.allocUnsafe(length);
+ let pos = 0;
+ for (let i = 0; i < list.length; i++) {
+ const buf = list[i];
+ if (!isUint8Array(buf)) {
+ // TODO(BridgeAR): This should not be of type ERR_INVALID_ARG_TYPE.
+ // Instead, find the proper error code for this.
+ throw new ERR_INVALID_ARG_TYPE(
+ `list[${i}]`, ['Buffer', 'Uint8Array'], list[i]);
+ }
+ pos += _copyActual(buf, buffer, pos, 0, buf.length);
+ }
+
+ // Note: `length` is always equal to `buffer.length` at this point
+ if (pos < length) {
+ // Zero-fill the remaining bytes if the specified `length` was more than
+ // the actual total length, i.e. if we have some remaining allocated bytes
+ // there were not initialized.
+ TypedArrayPrototypeFill(buffer, 0, pos, length);
+ }
+
+ return buffer;
+};
+
+function base64ByteLength(str, bytes) {
+ // Handle padding
+ if (StringPrototypeCharCodeAt(str, bytes - 1) === 0x3D)
+ bytes--;
+ if (bytes > 1 && StringPrototypeCharCodeAt(str, bytes - 1) === 0x3D)
+ bytes--;
+
+ // Base64 ratio: 3/4
+ return (bytes * 3) >>> 2;
+}
+
+const encodingOps = {
+ utf8: {
+ encoding: 'utf8',
+ encodingVal: encodingsMap.utf8,
+ byteLength: byteLengthUtf8,
+ write: (buf, string, offset, len) => buf.utf8Write(string, offset, len),
+ slice: (buf, start, end) => buf.utf8Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf8, dir),
+ },
+ ucs2: {
+ encoding: 'ucs2',
+ encodingVal: encodingsMap.utf16le,
+ byteLength: (string) => string.length * 2,
+ write: (buf, string, offset, len) => buf.ucs2Write(string, offset, len),
+ slice: (buf, start, end) => buf.ucs2Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf16le, dir),
+ },
+ utf16le: {
+ encoding: 'utf16le',
+ encodingVal: encodingsMap.utf16le,
+ byteLength: (string) => string.length * 2,
+ write: (buf, string, offset, len) => buf.ucs2Write(string, offset, len),
+ slice: (buf, start, end) => buf.ucs2Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf16le, dir),
+ },
+ latin1: {
+ encoding: 'latin1',
+ encodingVal: encodingsMap.latin1,
+ byteLength: (string) => string.length,
+ write: (buf, string, offset, len) => buf.latin1Write(string, offset, len),
+ slice: (buf, start, end) => buf.latin1Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.latin1, dir),
+ },
+ ascii: {
+ encoding: 'ascii',
+ encodingVal: encodingsMap.ascii,
+ byteLength: (string) => string.length,
+ write: (buf, string, offset, len) => buf.asciiWrite(string, offset, len),
+ slice: (buf, start, end) => buf.asciiSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.ascii),
+ byteOffset,
+ encodingsMap.ascii,
+ dir),
+ },
+ base64: {
+ encoding: 'base64',
+ encodingVal: encodingsMap.base64,
+ byteLength: (string) => base64ByteLength(string, string.length),
+ write: (buf, string, offset, len) => buf.base64Write(string, offset, len),
+ slice: (buf, start, end) => buf.base64Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.base64),
+ byteOffset,
+ encodingsMap.base64,
+ dir),
+ },
+ base64url: {
+ encoding: 'base64url',
+ encodingVal: encodingsMap.base64url,
+ byteLength: (string) => base64ByteLength(string, string.length),
+ write: (buf, string, offset, len) =>
+ buf.base64urlWrite(string, offset, len),
+ slice: (buf, start, end) => buf.base64urlSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.base64url),
+ byteOffset,
+ encodingsMap.base64url,
+ dir),
+ },
+ hex: {
+ encoding: 'hex',
+ encodingVal: encodingsMap.hex,
+ byteLength: (string) => string.length >>> 1,
+ write: (buf, string, offset, len) => buf.hexWrite(string, offset, len),
+ slice: (buf, start, end) => buf.hexSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.hex),
+ byteOffset,
+ encodingsMap.hex,
+ dir),
+ },
+};
+function getEncodingOps(encoding) {
+ encoding += '';
+ switch (encoding.length) {
+ case 4:
+ if (encoding === 'utf8') return encodingOps.utf8;
+ if (encoding === 'ucs2') return encodingOps.ucs2;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'utf8') return encodingOps.utf8;
+ if (encoding === 'ucs2') return encodingOps.ucs2;
+ break;
+ case 5:
+ if (encoding === 'utf-8') return encodingOps.utf8;
+ if (encoding === 'ascii') return encodingOps.ascii;
+ if (encoding === 'ucs-2') return encodingOps.ucs2;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'utf-8') return encodingOps.utf8;
+ if (encoding === 'ascii') return encodingOps.ascii;
+ if (encoding === 'ucs-2') return encodingOps.ucs2;
+ break;
+ case 7:
+ if (encoding === 'utf16le' ||
+ StringPrototypeToLowerCase(encoding) === 'utf16le')
+ return encodingOps.utf16le;
+ break;
+ case 8:
+ if (encoding === 'utf-16le' ||
+ StringPrototypeToLowerCase(encoding) === 'utf-16le')
+ return encodingOps.utf16le;
+ break;
+ case 6:
+ if (encoding === 'latin1' || encoding === 'binary')
+ return encodingOps.latin1;
+ if (encoding === 'base64') return encodingOps.base64;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'latin1' || encoding === 'binary')
+ return encodingOps.latin1;
+ if (encoding === 'base64') return encodingOps.base64;
+ break;
+ case 3:
+ if (encoding === 'hex' || StringPrototypeToLowerCase(encoding) === 'hex')
+ return encodingOps.hex;
+ break;
+ case 9:
+ if (encoding === 'base64url' ||
+ StringPrototypeToLowerCase(encoding) === 'base64url')
+ return encodingOps.base64url;
+ break;
+ }
+}
+
+function byteLength(string, encoding) {
+ if (typeof string !== 'string') {
+ if (isArrayBufferView(string) || isAnyArrayBuffer(string)) {
+ return string.byteLength;
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'string', ['string', 'Buffer', 'ArrayBuffer'], string,
+ );
+ }
+
+ const len = string.length;
+ if (len === 0)
+ return 0;
+
+ if (!encoding || encoding === 'utf8') {
+ return byteLengthUtf8(string);
+ }
+
+ if (encoding === 'ascii') {
+ return len;
+ }
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined) {
+ // TODO (ronag): Makes more sense to throw here.
+ // throw new ERR_UNKNOWN_ENCODING(encoding);
+ return byteLengthUtf8(string);
+ }
+
+ return ops.byteLength(string);
+}
+
+Buffer.byteLength = byteLength;
+
+// For backwards compatibility.
+ObjectDefineProperty(Buffer.prototype, 'parent', {
+ __proto__: null,
+ enumerable: true,
+ get() {
+ if (!(this instanceof Buffer))
+ return undefined;
+ return this.buffer;
+ },
+});
+ObjectDefineProperty(Buffer.prototype, 'offset', {
+ __proto__: null,
+ enumerable: true,
+ get() {
+ if (!(this instanceof Buffer))
+ return undefined;
+ return this.byteOffset;
+ },
+});
+
+Buffer.prototype.copy =
+ function copy(target, targetStart, sourceStart, sourceEnd) {
+ return copyImpl(this, target, targetStart, sourceStart, sourceEnd);
+ };
+
+// No need to verify that "buf.length <= MAX_UINT32" since it's a read-only
+// property of a typed array.
+// This behaves neither like String nor Uint8Array in that we set start/end
+// to their upper/lower bounds if the value passed is out of range.
+Buffer.prototype.toString = function toString(encoding, start, end) {
+ if (arguments.length === 0) {
+ return this.utf8Slice(0, this.length);
+ }
+
+ const len = this.length;
+
+ if (start <= 0)
+ start = 0;
+ else if (start >= len)
+ return '';
+ else
+ start = MathTrunc(start) || 0;
+
+ if (end === undefined || end > len)
+ end = len;
+ else
+ end = MathTrunc(end) || 0;
+
+ if (end <= start)
+ return '';
+
+ if (encoding === undefined)
+ return this.utf8Slice(start, end);
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+
+ return ops.slice(this, start, end);
+};
+
+Buffer.prototype.equals = function equals(otherBuffer) {
+ if (!isUint8Array(otherBuffer)) {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'otherBuffer', ['Buffer', 'Uint8Array'], otherBuffer);
+ }
+
+ if (this === otherBuffer)
+ return true;
+ const len = TypedArrayPrototypeGetByteLength(this);
+ if (len !== TypedArrayPrototypeGetByteLength(otherBuffer))
+ return false;
+
+ return len === 0 || _compare(this, otherBuffer) === 0;
+};
+
+let INSPECT_MAX_BYTES = 50;
+// Override how buffers are presented by util.inspect().
+Buffer.prototype[customInspectSymbol] = function inspect(recurseTimes, ctx) {
+ const max = INSPECT_MAX_BYTES;
+ const actualMax = MathMin(max, this.length);
+ const remaining = this.length - max;
+ let str = StringPrototypeTrim(RegExpPrototypeSymbolReplace(
+ /(.{2})/g, this.hexSlice(0, actualMax), '$1 '));
+ if (remaining > 0)
+ str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`;
+ // Inspect special properties as well, if possible.
+ if (ctx) {
+ let extras = false;
+ const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE;
+ const obj = { __proto__: null };
+ ArrayPrototypeForEach(getOwnNonIndexProperties(this, filter),
+ (key) => {
+ extras = true;
+ obj[key] = this[key];
+ });
+ if (extras) {
+ if (this.length !== 0)
+ str += ', ';
+ // '[Object: null prototype] {'.length === 26
+ // This is guarded with a test.
+ str += StringPrototypeSlice(utilInspect(obj, {
+ ...ctx,
+ breakLength: Infinity,
+ compact: true,
+ }), 27, -2);
+ }
+ }
+ let constructorName = 'Buffer';
+ try {
+ const { constructor } = this;
+ if (typeof constructor === 'function' && ObjectPrototypeHasOwnProperty(constructor, 'name')) {
+ constructorName = constructor.name;
+ }
+ } catch { /* Ignore error and use default name */ }
+ return `<${constructorName} ${str}>`;
+};
+Buffer.prototype.inspect = Buffer.prototype[customInspectSymbol];
+
+Buffer.prototype.compare = function compare(target,
+ targetStart,
+ targetEnd,
+ sourceStart,
+ sourceEnd) {
+ if (!isUint8Array(target)) {
+ throw new ERR_INVALID_ARG_TYPE('target', ['Buffer', 'Uint8Array'], target);
+ }
+ if (arguments.length === 1)
+ return _compare(this, target);
+
+ if (targetStart === undefined)
+ targetStart = 0;
+ else
+ validateOffset(targetStart, 'targetStart');
+
+ if (targetEnd === undefined)
+ targetEnd = target.length;
+ else
+ validateOffset(targetEnd, 'targetEnd', 0, target.length);
+
+ if (sourceStart === undefined)
+ sourceStart = 0;
+ else
+ validateOffset(sourceStart, 'sourceStart');
+
+ if (sourceEnd === undefined)
+ sourceEnd = this.length;
+ else
+ validateOffset(sourceEnd, 'sourceEnd', 0, this.length);
+
+ if (sourceStart >= sourceEnd)
+ return (targetStart >= targetEnd ? 0 : -1);
+ if (targetStart >= targetEnd)
+ return 1;
+
+ return compareOffset(this, target, targetStart, sourceStart, targetEnd,
+ sourceEnd);
+};
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant if val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
+ validateBuffer(buffer);
+
+ if (typeof byteOffset === 'string') {
+ encoding = byteOffset;
+ byteOffset = undefined;
+ } else if (byteOffset > 0x7fffffff) {
+ byteOffset = 0x7fffffff;
+ } else if (byteOffset < -0x80000000) {
+ byteOffset = -0x80000000;
+ }
+ // Coerce to Number. Values like null and [] become 0.
+ byteOffset = +byteOffset;
+ // If the offset is undefined, "foo", {}, coerces to NaN, search whole buffer.
+ if (NumberIsNaN(byteOffset)) {
+ byteOffset = dir ? 0 : (buffer.length || buffer.byteLength);
+ }
+ dir = !!dir; // Cast to bool.
+
+ if (typeof val === 'number')
+ return indexOfNumber(buffer, val >>> 0, byteOffset, dir);
+
+ let ops;
+ if (encoding === undefined)
+ ops = encodingOps.utf8;
+ else
+ ops = getEncodingOps(encoding);
+
+ if (typeof val === 'string') {
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ return ops.indexOf(buffer, val, byteOffset, dir);
+ }
+
+ if (isUint8Array(val)) {
+ const encodingVal =
+ (ops === undefined ? encodingsMap.utf8 : ops.encodingVal);
+ return indexOfBuffer(buffer, val, byteOffset, encodingVal, dir);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'value', ['number', 'string', 'Buffer', 'Uint8Array'], val,
+ );
+}
+
+Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
+};
+
+Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
+};
+
+Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
+ return this.indexOf(val, byteOffset, encoding) !== -1;
+};
+
+// Usage:
+// buffer.fill(number[, offset[, end]])
+// buffer.fill(buffer[, offset[, end]])
+// buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill(value, offset, end, encoding) {
+ return _fill(this, value, offset, end, encoding);
+};
+
+function _fill(buf, value, offset, end, encoding) {
+ if (typeof value === 'string') {
+ if (offset === undefined || typeof offset === 'string') {
+ encoding = offset;
+ offset = 0;
+ end = buf.length;
+ } else if (typeof end === 'string') {
+ encoding = end;
+ end = buf.length;
+ }
+
+ const normalizedEncoding = normalizeEncoding(encoding);
+ if (normalizedEncoding === undefined) {
+ validateString(encoding, 'encoding');
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+
+ if (value.length === 0) {
+ // If value === '' default to zero.
+ value = 0;
+ } else if (value.length === 1) {
+ // Fast path: If `value` fits into a single byte, use that numeric value.
+ if (normalizedEncoding === 'utf8') {
+ const code = StringPrototypeCharCodeAt(value, 0);
+ if (code < 128) {
+ value = code;
+ }
+ } else if (normalizedEncoding === 'latin1') {
+ value = StringPrototypeCharCodeAt(value, 0);
+ }
+ }
+ } else {
+ encoding = undefined;
+ }
+
+ if (offset === undefined) {
+ offset = 0;
+ end = buf.length;
+ } else {
+ validateOffset(offset, 'offset');
+ // Invalid ranges are not set to a default, so can range check early.
+ if (end === undefined) {
+ end = buf.length;
+ } else {
+ validateOffset(end, 'end', 0, buf.length);
+ }
+ if (offset >= end)
+ return buf;
+ }
+
+
+ if (typeof value === 'number') {
+ // OOB check
+ const byteLen = TypedArrayPrototypeGetByteLength(buf);
+ const fillLength = end - offset;
+ if (offset > end || fillLength + offset > byteLen)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS();
+
+ TypedArrayPrototypeFill(buf, value, offset, end);
+ } else {
+ const res = bindingFill(buf, value, offset, end, encoding);
+ if (res < 0) {
+ if (res === -1)
+ throw new ERR_INVALID_ARG_VALUE('value', value);
+ throw new ERR_BUFFER_OUT_OF_BOUNDS();
+ }
+ }
+
+ return buf;
+}
+
+Buffer.prototype.write = function write(string, offset, length, encoding) {
+ // Buffer#write(string);
+ if (offset === undefined) {
+ return this.utf8Write(string, 0, this.length);
+ }
+ // Buffer#write(string, encoding)
+ if (length === undefined && typeof offset === 'string') {
+ encoding = offset;
+ length = this.length;
+ offset = 0;
+
+ // Buffer#write(string, offset[, length][, encoding])
+ } else {
+ validateOffset(offset, 'offset', 0, this.length);
+
+ const remaining = this.length - offset;
+
+ if (length === undefined) {
+ length = remaining;
+ } else if (typeof length === 'string') {
+ encoding = length;
+ length = remaining;
+ } else {
+ validateOffset(length, 'length', 0, this.length);
+ if (length > remaining)
+ length = remaining;
+ }
+ }
+
+ if (!encoding || encoding === 'utf8')
+ return this.utf8Write(string, offset, length);
+ if (encoding === 'ascii')
+ return this.asciiWrite(string, offset, length);
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ return ops.write(this, string, offset, length);
+};
+
+Buffer.prototype.toJSON = function toJSON() {
+ if (this.length > 0) {
+ const data = new Array(this.length);
+ for (let i = 0; i < this.length; ++i)
+ data[i] = this[i];
+ return { type: 'Buffer', data };
+ }
+ return { type: 'Buffer', data: [] };
+};
+
+function adjustOffset(offset, length) {
+ // Use Math.trunc() to convert offset to an integer value that can be larger
+ // than an Int32. Hence, don't use offset | 0 or similar techniques.
+ offset = MathTrunc(offset);
+ if (offset === 0) {
+ return 0;
+ }
+ if (offset < 0) {
+ offset += length;
+ return offset > 0 ? offset : 0;
+ }
+ if (offset < length) {
+ return offset;
+ }
+ return NumberIsNaN(offset) ? 0 : length;
+}
+
+Buffer.prototype.subarray = function subarray(start, end) {
+ const srcLength = this.length;
+ start = adjustOffset(start, srcLength);
+ end = end !== undefined ? adjustOffset(end, srcLength) : srcLength;
+ const newLength = end > start ? end - start : 0;
+ return new FastBuffer(this.buffer, this.byteOffset + start, newLength);
+};
+
+Buffer.prototype.slice = function slice(start, end) {
+ return this.subarray(start, end);
+};
+
+function swap(b, n, m) {
+ const i = b[n];
+ b[n] = b[m];
+ b[m] = i;
+}
+
+Buffer.prototype.swap16 = function swap16() {
+ // For Buffer.length < 128, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 2 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('16-bits');
+ if (len < 128) {
+ for (let i = 0; i < len; i += 2)
+ swap(this, i, i + 1);
+ return this;
+ }
+ return _swap16(this);
+};
+
+Buffer.prototype.swap32 = function swap32() {
+ // For Buffer.length < 192, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 4 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('32-bits');
+ if (len < 192) {
+ for (let i = 0; i < len; i += 4) {
+ swap(this, i, i + 3);
+ swap(this, i + 1, i + 2);
+ }
+ return this;
+ }
+ return _swap32(this);
+};
+
+Buffer.prototype.swap64 = function swap64() {
+ // For Buffer.length < 192, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 8 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('64-bits');
+ if (len < 192) {
+ for (let i = 0; i < len; i += 8) {
+ swap(this, i, i + 7);
+ swap(this, i + 1, i + 6);
+ swap(this, i + 2, i + 5);
+ swap(this, i + 3, i + 4);
+ }
+ return this;
+ }
+ return _swap64(this);
+};
+
+Buffer.prototype.toLocaleString = Buffer.prototype.toString;
+
+let transcode;
+if (internalBinding('config').hasIntl) {
+ const {
+ icuErrName,
+ transcode: _transcode,
+ } = internalBinding('icu');
+
+ // Transcodes the Buffer from one encoding to another, returning a new
+ // Buffer instance.
+ transcode = function transcode(source, fromEncoding, toEncoding) {
+ if (!isUint8Array(source)) {
+ throw new ERR_INVALID_ARG_TYPE('source',
+ ['Buffer', 'Uint8Array'], source);
+ }
+ if (source.length === 0) return Buffer.alloc(0);
+
+ fromEncoding = normalizeEncoding(fromEncoding) || fromEncoding;
+ toEncoding = normalizeEncoding(toEncoding) || toEncoding;
+ const result = _transcode(source, fromEncoding, toEncoding);
+ if (typeof result !== 'number')
+ return result;
+
+ const code = icuErrName(result);
+ const err = genericNodeError(
+ `Unable to transcode Buffer [${code}]`,
+ { code: code, errno: result },
+ );
+ throw err;
+ };
+}
+
+function btoa(input) {
+ // The implementation here has not been performance optimized in any way and
+ // should not be.
+ // Refs: https://github.com/nodejs/node/pull/38433#issuecomment-828426932
+ if (arguments.length === 0) {
+ throw new ERR_MISSING_ARGS('input');
+ }
+ const result = _btoa(`${input}`);
+ if (result === -1) {
+ throw lazyDOMException('Invalid character', 'InvalidCharacterError');
+ }
+ return result;
+}
+
+function atob(input) {
+ if (arguments.length === 0) {
+ throw new ERR_MISSING_ARGS('input');
+ }
+
+ const result = _atob(`${input}`);
+
+ switch (result) {
+ case -2: // Invalid character
+ throw lazyDOMException('Invalid character', 'InvalidCharacterError');
+ case -1: // Single character remained
+ throw lazyDOMException(
+ 'The string to be decoded is not correctly encoded.',
+ 'InvalidCharacterError');
+ case -3: // Possible overflow
+ // TODO(@anonrig): Throw correct error in here.
+ throw lazyDOMException('The input causes overflow.', 'InvalidCharacterError');
+ default:
+ return result;
+ }
+}
+
+function isUtf8(input) {
+ if (isTypedArray(input) || isAnyArrayBuffer(input)) {
+ return bindingIsUtf8(input);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE('input', ['ArrayBuffer', 'Buffer', 'TypedArray'], input);
+}
+
+function isAscii(input) {
+ if (isTypedArray(input) || isAnyArrayBuffer(input)) {
+ return bindingIsAscii(input);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE('input', ['ArrayBuffer', 'Buffer', 'TypedArray'], input);
+}
+
+module.exports = {
+ Buffer,
+ SlowBuffer: deprecate(
+ SlowBuffer,
+ 'SlowBuffer() is deprecated. Please use Buffer.allocUnsafeSlow()',
+ 'DEP0030'),
+ transcode,
+ isUtf8,
+ isAscii,
+
+ // Legacy
+ kMaxLength,
+ kStringMaxLength,
+ btoa,
+ atob,
+};
+
+ObjectDefineProperties(module.exports, {
+ constants: {
+ __proto__: null,
+ configurable: false,
+ enumerable: true,
+ value: constants,
+ },
+ INSPECT_MAX_BYTES: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() { return INSPECT_MAX_BYTES; },
+ set(val) {
+ validateNumber(val, 'INSPECT_MAX_BYTES', 0);
+ INSPECT_MAX_BYTES = val;
+ },
+ },
+});
+
+defineLazyProperties(
+ module.exports,
+ 'internal/blob',
+ ['Blob', 'resolveObjectURL'],
+);
+defineLazyProperties(
+ module.exports,
+ 'internal/file',
+ ['File'],
+);
\ No newline at end of file
diff --git a/.idx/node/cluster.js b/.idx/node/cluster.js
new file mode 100644
index 0000000..6f3dc16
--- /dev/null
+++ b/.idx/node/cluster.js
@@ -0,0 +1,8 @@
+'use strict';
+
+const {
+ ObjectPrototypeHasOwnProperty: ObjectHasOwn,
+} = primordials;
+
+const childOrPrimary = ObjectHasOwn(process.env, 'NODE_UNIQUE_ID') ? 'child' : 'primary';
+module.exports = require(`internal/cluster/${childOrPrimary}`);
\ No newline at end of file
diff --git a/.idx/node/crypto.js b/.idx/node/crypto.js
new file mode 100644
index 0000000..06bfebc
--- /dev/null
+++ b/.idx/node/crypto.js
@@ -0,0 +1,1365 @@
+'use strict';
+
+const {
+ Array,
+ ArrayBufferIsView,
+ ArrayIsArray,
+ ArrayPrototypeForEach,
+ MathFloor,
+ MathMin,
+ MathTrunc,
+ NumberIsInteger,
+ NumberIsNaN,
+ NumberMAX_SAFE_INTEGER,
+ NumberMIN_SAFE_INTEGER,
+ ObjectDefineProperties,
+ ObjectDefineProperty,
+ ObjectPrototypeHasOwnProperty,
+ ObjectSetPrototypeOf,
+ RegExpPrototypeSymbolReplace,
+ StringPrototypeCharCodeAt,
+ StringPrototypeSlice,
+ StringPrototypeToLowerCase,
+ StringPrototypeTrim,
+ SymbolSpecies,
+ SymbolToPrimitive,
+ TypedArrayPrototypeFill,
+ TypedArrayPrototypeGetBuffer,
+ TypedArrayPrototypeGetByteLength,
+ TypedArrayPrototypeGetByteOffset,
+ TypedArrayPrototypeGetLength,
+ TypedArrayPrototypeSet,
+ TypedArrayPrototypeSlice,
+ Uint8Array,
+ Uint8ArrayPrototype,
+} = primordials;
+
+const {
+ byteLengthUtf8,
+ compare: _compare,
+ compareOffset,
+ copy: _copy,
+ fill: bindingFill,
+ isAscii: bindingIsAscii,
+ isUtf8: bindingIsUtf8,
+ indexOfBuffer,
+ indexOfNumber,
+ indexOfString,
+ swap16: _swap16,
+ swap32: _swap32,
+ swap64: _swap64,
+ kMaxLength,
+ kStringMaxLength,
+ atob: _atob,
+ btoa: _btoa,
+} = internalBinding('buffer');
+const {
+ constants: {
+ ALL_PROPERTIES,
+ ONLY_ENUMERABLE,
+ },
+ getOwnNonIndexProperties,
+ isInsideNodeModules,
+} = internalBinding('util');
+const {
+ customInspectSymbol,
+ lazyDOMException,
+ normalizeEncoding,
+ kIsEncodingSymbol,
+ defineLazyProperties,
+ encodingsMap,
+ deprecate,
+} = require('internal/util');
+const {
+ isAnyArrayBuffer,
+ isArrayBufferView,
+ isUint8Array,
+ isTypedArray,
+} = require('internal/util/types');
+const {
+ inspect: utilInspect,
+} = require('internal/util/inspect');
+
+const {
+ codes: {
+ ERR_BUFFER_OUT_OF_BOUNDS,
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_ARG_VALUE,
+ ERR_INVALID_BUFFER_SIZE,
+ ERR_MISSING_ARGS,
+ ERR_OUT_OF_RANGE,
+ ERR_UNKNOWN_ENCODING,
+ },
+ genericNodeError,
+} = require('internal/errors');
+const {
+ validateArray,
+ validateBuffer,
+ validateInteger,
+ validateNumber,
+ validateString,
+} = require('internal/validators');
+// Provide validateInteger() but with kMaxLength as the default maximum value.
+const validateOffset = (value, name, min = 0, max = kMaxLength) =>
+ validateInteger(value, name, min, max);
+
+const {
+ FastBuffer,
+ markAsUntransferable,
+ addBufferPrototypeMethods,
+ createUnsafeBuffer,
+} = require('internal/buffer');
+
+FastBuffer.prototype.constructor = Buffer;
+Buffer.prototype = FastBuffer.prototype;
+addBufferPrototypeMethods(Buffer.prototype);
+
+const constants = ObjectDefineProperties({}, {
+ MAX_LENGTH: {
+ __proto__: null,
+ value: kMaxLength,
+ writable: false,
+ enumerable: true,
+ },
+ MAX_STRING_LENGTH: {
+ __proto__: null,
+ value: kStringMaxLength,
+ writable: false,
+ enumerable: true,
+ },
+});
+
+Buffer.poolSize = 8 * 1024;
+let poolSize, poolOffset, allocPool, allocBuffer;
+
+function createPool() {
+ poolSize = Buffer.poolSize;
+ allocBuffer = createUnsafeBuffer(poolSize);
+ allocPool = allocBuffer.buffer;
+ markAsUntransferable(allocPool);
+ poolOffset = 0;
+}
+createPool();
+
+function alignPool() {
+ // Ensure aligned slices
+ if (poolOffset & 0x7) {
+ poolOffset |= 0x7;
+ poolOffset++;
+ }
+}
+
+let bufferWarningAlreadyEmitted = false;
+let nodeModulesCheckCounter = 0;
+const bufferWarning = 'Buffer() is deprecated due to security and usability ' +
+ 'issues. Please use the Buffer.alloc(), ' +
+ 'Buffer.allocUnsafe(), or Buffer.from() methods instead.';
+
+function showFlaggedDeprecation() {
+ if (bufferWarningAlreadyEmitted ||
+ ++nodeModulesCheckCounter > 10000 ||
+ (!require('internal/options').getOptionValue('--pending-deprecation') &&
+ isInsideNodeModules(100, true))) {
+ // We don't emit a warning, because we either:
+ // - Already did so, or
+ // - Already checked too many times whether a call is coming
+ // from node_modules and want to stop slowing down things, or
+ // - We aren't running with `--pending-deprecation` enabled,
+ // and the code is inside `node_modules`.
+ // - We found node_modules in up to the topmost 100 frames, or
+ // there are more than 100 frames and we don't want to search anymore.
+ return;
+ }
+
+ process.emitWarning(bufferWarning, 'DeprecationWarning', 'DEP0005');
+ bufferWarningAlreadyEmitted = true;
+}
+
+function toInteger(n, defaultVal) {
+ n = +n;
+ if (!NumberIsNaN(n) &&
+ n >= NumberMIN_SAFE_INTEGER &&
+ n <= NumberMAX_SAFE_INTEGER) {
+ return ((n % 1) === 0 ? n : MathFloor(n));
+ }
+ return defaultVal;
+}
+
+function copyImpl(source, target, targetStart, sourceStart, sourceEnd) {
+ if (!ArrayBufferIsView(source))
+ throw new ERR_INVALID_ARG_TYPE('source', ['Buffer', 'Uint8Array'], source);
+ if (!ArrayBufferIsView(target))
+ throw new ERR_INVALID_ARG_TYPE('target', ['Buffer', 'Uint8Array'], target);
+
+ if (targetStart === undefined) {
+ targetStart = 0;
+ } else {
+ targetStart = NumberIsInteger(targetStart) ? targetStart : toInteger(targetStart, 0);
+ if (targetStart < 0)
+ throw new ERR_OUT_OF_RANGE('targetStart', '>= 0', targetStart);
+ }
+
+ if (sourceStart === undefined) {
+ sourceStart = 0;
+ } else {
+ sourceStart = NumberIsInteger(sourceStart) ? sourceStart : toInteger(sourceStart, 0);
+ if (sourceStart < 0 || sourceStart > source.byteLength)
+ throw new ERR_OUT_OF_RANGE('sourceStart', `>= 0 && <= ${source.byteLength}`, sourceStart);
+ }
+
+ if (sourceEnd === undefined) {
+ sourceEnd = source.byteLength;
+ } else {
+ sourceEnd = NumberIsInteger(sourceEnd) ? sourceEnd : toInteger(sourceEnd, 0);
+ if (sourceEnd < 0)
+ throw new ERR_OUT_OF_RANGE('sourceEnd', '>= 0', sourceEnd);
+ }
+
+ if (targetStart >= target.byteLength || sourceStart >= sourceEnd)
+ return 0;
+
+ return _copyActual(source, target, targetStart, sourceStart, sourceEnd);
+}
+
+function _copyActual(source, target, targetStart, sourceStart, sourceEnd) {
+ if (sourceEnd - sourceStart > target.byteLength - targetStart)
+ sourceEnd = sourceStart + target.byteLength - targetStart;
+
+ let nb = sourceEnd - sourceStart;
+ const sourceLen = source.byteLength - sourceStart;
+ if (nb > sourceLen)
+ nb = sourceLen;
+
+ if (nb <= 0)
+ return 0;
+
+ _copy(source, target, targetStart, sourceStart, nb);
+
+ return nb;
+}
+
+/**
+ * The Buffer() constructor is deprecated in documentation and should not be
+ * used moving forward. Rather, developers should use one of the three new
+ * factory APIs: Buffer.from(), Buffer.allocUnsafe() or Buffer.alloc() based on
+ * their specific needs. There is no runtime deprecation because of the extent
+ * to which the Buffer constructor is used in the ecosystem currently -- a
+ * runtime deprecation would introduce too much breakage at this time. It's not
+ * likely that the Buffer constructors would ever actually be removed.
+ * Deprecation Code: DEP0005
+ * @returns {Buffer}
+ */
+function Buffer(arg, encodingOrOffset, length) {
+ showFlaggedDeprecation();
+ // Common case.
+ if (typeof arg === 'number') {
+ if (typeof encodingOrOffset === 'string') {
+ throw new ERR_INVALID_ARG_TYPE('string', 'string', arg);
+ }
+ return Buffer.alloc(arg);
+ }
+ return Buffer.from(arg, encodingOrOffset, length);
+}
+
+ObjectDefineProperty(Buffer, SymbolSpecies, {
+ __proto__: null,
+ enumerable: false,
+ configurable: true,
+ get() { return FastBuffer; },
+});
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ * @param {any} value
+ * @param {BufferEncoding|number} encodingOrOffset
+ * @param {number} [length]
+ * @returns {Buffer}
+ */
+Buffer.from = function from(value, encodingOrOffset, length) {
+ if (typeof value === 'string')
+ return fromString(value, encodingOrOffset);
+
+ if (typeof value === 'object' && value !== null) {
+ if (isAnyArrayBuffer(value))
+ return fromArrayBuffer(value, encodingOrOffset, length);
+
+ const valueOf = value.valueOf && value.valueOf();
+ if (valueOf != null &&
+ valueOf !== value &&
+ (typeof valueOf === 'string' || typeof valueOf === 'object')) {
+ return from(valueOf, encodingOrOffset, length);
+ }
+
+ const b = fromObject(value);
+ if (b)
+ return b;
+
+ if (typeof value[SymbolToPrimitive] === 'function') {
+ const primitive = value[SymbolToPrimitive]('string');
+ if (typeof primitive === 'string') {
+ return fromString(primitive, encodingOrOffset);
+ }
+ }
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'first argument',
+ ['string', 'Buffer', 'ArrayBuffer', 'Array', 'Array-like Object'],
+ value,
+ );
+};
+
+/**
+ * Creates the Buffer as a copy of the underlying ArrayBuffer of the view
+ * rather than the contents of the view.
+ * @param {TypedArray} view
+ * @param {number} [offset]
+ * @param {number} [length]
+ * @returns {Buffer}
+ */
+Buffer.copyBytesFrom = function copyBytesFrom(view, offset, length) {
+ if (!isTypedArray(view)) {
+ throw new ERR_INVALID_ARG_TYPE('view', [ 'TypedArray' ], view);
+ }
+
+ const viewLength = TypedArrayPrototypeGetLength(view);
+ if (viewLength === 0) {
+ return Buffer.alloc(0);
+ }
+
+ if (offset !== undefined || length !== undefined) {
+ if (offset !== undefined) {
+ validateInteger(offset, 'offset', 0);
+ if (offset >= viewLength) return Buffer.alloc(0);
+ } else {
+ offset = 0;
+ }
+ let end;
+ if (length !== undefined) {
+ validateInteger(length, 'length', 0);
+ end = offset + length;
+ } else {
+ end = viewLength;
+ }
+
+ view = TypedArrayPrototypeSlice(view, offset, end);
+ }
+
+ return fromArrayLike(new Uint8Array(
+ TypedArrayPrototypeGetBuffer(view),
+ TypedArrayPrototypeGetByteOffset(view),
+ TypedArrayPrototypeGetByteLength(view)));
+};
+
+// Identical to the built-in %TypedArray%.of(), but avoids using the deprecated
+// Buffer() constructor. Must use arrow function syntax to avoid automatically
+// adding a `prototype` property and making the function a constructor.
+//
+// Refs: https://tc39.github.io/ecma262/#sec-%typedarray%.of
+// Refs: https://esdiscuss.org/topic/isconstructor#content-11
+const of = (...items) => {
+ const newObj = createUnsafeBuffer(items.length);
+ for (let k = 0; k < items.length; k++)
+ newObj[k] = items[k];
+ return newObj;
+};
+Buffer.of = of;
+
+ObjectSetPrototypeOf(Buffer, Uint8Array);
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ * @returns {FastBuffer}
+ */
+Buffer.alloc = function alloc(size, fill, encoding) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ if (fill !== undefined && fill !== 0 && size > 0) {
+ const buf = createUnsafeBuffer(size);
+ return _fill(buf, fill, 0, buf.length, encoding);
+ }
+ return new FastBuffer(size);
+};
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer
+ * instance. If `--zero-fill-buffers` is set, will zero-fill the buffer.
+ * @returns {FastBuffer}
+ */
+Buffer.allocUnsafe = function allocUnsafe(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return allocate(size);
+};
+
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled
+ * Buffer instance that is not allocated off the pre-initialized pool.
+ * If `--zero-fill-buffers` is set, will zero-fill the buffer.
+ * @param {number} size
+ * @returns {FastBuffer|undefined}
+ */
+Buffer.allocUnsafeSlow = function allocUnsafeSlow(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return createUnsafeBuffer(size);
+};
+
+// If --zero-fill-buffers command line argument is set, a zero-filled
+// buffer is returned.
+function SlowBuffer(size) {
+ validateNumber(size, 'size', 0, kMaxLength);
+ return createUnsafeBuffer(size);
+}
+
+ObjectSetPrototypeOf(SlowBuffer.prototype, Uint8ArrayPrototype);
+ObjectSetPrototypeOf(SlowBuffer, Uint8Array);
+
+function allocate(size) {
+ if (size <= 0) {
+ return new FastBuffer();
+ }
+ if (size < (Buffer.poolSize >>> 1)) {
+ if (size > (poolSize - poolOffset))
+ createPool();
+ const b = new FastBuffer(allocPool, poolOffset, size);
+ poolOffset += size;
+ alignPool();
+ return b;
+ }
+ return createUnsafeBuffer(size);
+}
+
+function fromStringFast(string, ops) {
+ const maxLength = Buffer.poolSize >>> 1;
+
+ let length = string.length; // Min length
+
+ if (length >= maxLength)
+ return createFromString(string, ops);
+
+ length *= 4; // Max length (4 bytes per character)
+
+ if (length >= maxLength)
+ length = ops.byteLength(string); // Actual length
+
+ if (length >= maxLength)
+ return createFromString(string, ops, length);
+
+ if (length > (poolSize - poolOffset))
+ createPool();
+
+ const actual = ops.write(allocBuffer, string, poolOffset, length);
+ const b = new FastBuffer(allocPool, poolOffset, actual);
+
+ poolOffset += actual;
+ alignPool();
+ return b;
+}
+
+function createFromString(string, ops, length = ops.byteLength(string)) {
+ const buf = Buffer.allocUnsafeSlow(length);
+ const actual = ops.write(buf, string, 0, length);
+ return actual < length ? new FastBuffer(buf.buffer, 0, actual) : buf;
+}
+
+function fromString(string, encoding) {
+ let ops;
+ if (!encoding || encoding === 'utf8' || typeof encoding !== 'string') {
+ ops = encodingOps.utf8;
+ } else {
+ ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+
+ return string.length === 0 ? new FastBuffer() : fromStringFast(string, ops);
+}
+
+function fromArrayBuffer(obj, byteOffset, length) {
+ // Convert byteOffset to integer
+ if (byteOffset === undefined) {
+ byteOffset = 0;
+ } else {
+ byteOffset = +byteOffset;
+ if (NumberIsNaN(byteOffset))
+ byteOffset = 0;
+ }
+
+ const maxLength = obj.byteLength - byteOffset;
+
+ if (maxLength < 0)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('offset');
+
+ if (length !== undefined) {
+ // Convert length to non-negative integer.
+ length = +length;
+ if (length > 0) {
+ if (length > maxLength)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('length');
+ } else {
+ length = 0;
+ }
+ }
+
+ return new FastBuffer(obj, byteOffset, length);
+}
+
+function fromArrayLike(obj) {
+ if (obj.length <= 0)
+ return new FastBuffer();
+ if (obj.length < (Buffer.poolSize >>> 1)) {
+ if (obj.length > (poolSize - poolOffset))
+ createPool();
+ const b = new FastBuffer(allocPool, poolOffset, obj.length);
+ TypedArrayPrototypeSet(b, obj, 0);
+ poolOffset += obj.length;
+ alignPool();
+ return b;
+ }
+ return new FastBuffer(obj);
+}
+
+function fromObject(obj) {
+ if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) {
+ if (typeof obj.length !== 'number') {
+ return new FastBuffer();
+ }
+ return fromArrayLike(obj);
+ }
+
+ if (obj.type === 'Buffer' && ArrayIsArray(obj.data)) {
+ return fromArrayLike(obj.data);
+ }
+}
+
+// Static methods
+
+Buffer.isBuffer = function isBuffer(b) {
+ return b instanceof Buffer;
+};
+
+Buffer.compare = function compare(buf1, buf2) {
+ if (!isUint8Array(buf1)) {
+ throw new ERR_INVALID_ARG_TYPE('buf1', ['Buffer', 'Uint8Array'], buf1);
+ }
+
+ if (!isUint8Array(buf2)) {
+ throw new ERR_INVALID_ARG_TYPE('buf2', ['Buffer', 'Uint8Array'], buf2);
+ }
+
+ if (buf1 === buf2) {
+ return 0;
+ }
+
+ return _compare(buf1, buf2);
+};
+
+Buffer.isEncoding = function isEncoding(encoding) {
+ return typeof encoding === 'string' && encoding.length !== 0 &&
+ normalizeEncoding(encoding) !== undefined;
+};
+Buffer[kIsEncodingSymbol] = Buffer.isEncoding;
+
+Buffer.concat = function concat(list, length) {
+ validateArray(list, 'list');
+
+ if (list.length === 0)
+ return new FastBuffer();
+
+ if (length === undefined) {
+ length = 0;
+ for (let i = 0; i < list.length; i++) {
+ if (list[i].length) {
+ length += list[i].length;
+ }
+ }
+ } else {
+ validateOffset(length, 'length');
+ }
+
+ const buffer = Buffer.allocUnsafe(length);
+ let pos = 0;
+ for (let i = 0; i < list.length; i++) {
+ const buf = list[i];
+ if (!isUint8Array(buf)) {
+ // TODO(BridgeAR): This should not be of type ERR_INVALID_ARG_TYPE.
+ // Instead, find the proper error code for this.
+ throw new ERR_INVALID_ARG_TYPE(
+ `list[${i}]`, ['Buffer', 'Uint8Array'], list[i]);
+ }
+ pos += _copyActual(buf, buffer, pos, 0, buf.length);
+ }
+
+ // Note: `length` is always equal to `buffer.length` at this point
+ if (pos < length) {
+ // Zero-fill the remaining bytes if the specified `length` was more than
+ // the actual total length, i.e. if we have some remaining allocated bytes
+ // there were not initialized.
+ TypedArrayPrototypeFill(buffer, 0, pos, length);
+ }
+
+ return buffer;
+};
+
+function base64ByteLength(str, bytes) {
+ // Handle padding
+ if (StringPrototypeCharCodeAt(str, bytes - 1) === 0x3D)
+ bytes--;
+ if (bytes > 1 && StringPrototypeCharCodeAt(str, bytes - 1) === 0x3D)
+ bytes--;
+
+ // Base64 ratio: 3/4
+ return (bytes * 3) >>> 2;
+}
+
+const encodingOps = {
+ utf8: {
+ encoding: 'utf8',
+ encodingVal: encodingsMap.utf8,
+ byteLength: byteLengthUtf8,
+ write: (buf, string, offset, len) => buf.utf8Write(string, offset, len),
+ slice: (buf, start, end) => buf.utf8Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf8, dir),
+ },
+ ucs2: {
+ encoding: 'ucs2',
+ encodingVal: encodingsMap.utf16le,
+ byteLength: (string) => string.length * 2,
+ write: (buf, string, offset, len) => buf.ucs2Write(string, offset, len),
+ slice: (buf, start, end) => buf.ucs2Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf16le, dir),
+ },
+ utf16le: {
+ encoding: 'utf16le',
+ encodingVal: encodingsMap.utf16le,
+ byteLength: (string) => string.length * 2,
+ write: (buf, string, offset, len) => buf.ucs2Write(string, offset, len),
+ slice: (buf, start, end) => buf.ucs2Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.utf16le, dir),
+ },
+ latin1: {
+ encoding: 'latin1',
+ encodingVal: encodingsMap.latin1,
+ byteLength: (string) => string.length,
+ write: (buf, string, offset, len) => buf.latin1Write(string, offset, len),
+ slice: (buf, start, end) => buf.latin1Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfString(buf, val, byteOffset, encodingsMap.latin1, dir),
+ },
+ ascii: {
+ encoding: 'ascii',
+ encodingVal: encodingsMap.ascii,
+ byteLength: (string) => string.length,
+ write: (buf, string, offset, len) => buf.asciiWrite(string, offset, len),
+ slice: (buf, start, end) => buf.asciiSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.ascii),
+ byteOffset,
+ encodingsMap.ascii,
+ dir),
+ },
+ base64: {
+ encoding: 'base64',
+ encodingVal: encodingsMap.base64,
+ byteLength: (string) => base64ByteLength(string, string.length),
+ write: (buf, string, offset, len) => buf.base64Write(string, offset, len),
+ slice: (buf, start, end) => buf.base64Slice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.base64),
+ byteOffset,
+ encodingsMap.base64,
+ dir),
+ },
+ base64url: {
+ encoding: 'base64url',
+ encodingVal: encodingsMap.base64url,
+ byteLength: (string) => base64ByteLength(string, string.length),
+ write: (buf, string, offset, len) =>
+ buf.base64urlWrite(string, offset, len),
+ slice: (buf, start, end) => buf.base64urlSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.base64url),
+ byteOffset,
+ encodingsMap.base64url,
+ dir),
+ },
+ hex: {
+ encoding: 'hex',
+ encodingVal: encodingsMap.hex,
+ byteLength: (string) => string.length >>> 1,
+ write: (buf, string, offset, len) => buf.hexWrite(string, offset, len),
+ slice: (buf, start, end) => buf.hexSlice(start, end),
+ indexOf: (buf, val, byteOffset, dir) =>
+ indexOfBuffer(buf,
+ fromStringFast(val, encodingOps.hex),
+ byteOffset,
+ encodingsMap.hex,
+ dir),
+ },
+};
+function getEncodingOps(encoding) {
+ encoding += '';
+ switch (encoding.length) {
+ case 4:
+ if (encoding === 'utf8') return encodingOps.utf8;
+ if (encoding === 'ucs2') return encodingOps.ucs2;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'utf8') return encodingOps.utf8;
+ if (encoding === 'ucs2') return encodingOps.ucs2;
+ break;
+ case 5:
+ if (encoding === 'utf-8') return encodingOps.utf8;
+ if (encoding === 'ascii') return encodingOps.ascii;
+ if (encoding === 'ucs-2') return encodingOps.ucs2;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'utf-8') return encodingOps.utf8;
+ if (encoding === 'ascii') return encodingOps.ascii;
+ if (encoding === 'ucs-2') return encodingOps.ucs2;
+ break;
+ case 7:
+ if (encoding === 'utf16le' ||
+ StringPrototypeToLowerCase(encoding) === 'utf16le')
+ return encodingOps.utf16le;
+ break;
+ case 8:
+ if (encoding === 'utf-16le' ||
+ StringPrototypeToLowerCase(encoding) === 'utf-16le')
+ return encodingOps.utf16le;
+ break;
+ case 6:
+ if (encoding === 'latin1' || encoding === 'binary')
+ return encodingOps.latin1;
+ if (encoding === 'base64') return encodingOps.base64;
+ encoding = StringPrototypeToLowerCase(encoding);
+ if (encoding === 'latin1' || encoding === 'binary')
+ return encodingOps.latin1;
+ if (encoding === 'base64') return encodingOps.base64;
+ break;
+ case 3:
+ if (encoding === 'hex' || StringPrototypeToLowerCase(encoding) === 'hex')
+ return encodingOps.hex;
+ break;
+ case 9:
+ if (encoding === 'base64url' ||
+ StringPrototypeToLowerCase(encoding) === 'base64url')
+ return encodingOps.base64url;
+ break;
+ }
+}
+
+function byteLength(string, encoding) {
+ if (typeof string !== 'string') {
+ if (isArrayBufferView(string) || isAnyArrayBuffer(string)) {
+ return string.byteLength;
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'string', ['string', 'Buffer', 'ArrayBuffer'], string,
+ );
+ }
+
+ const len = string.length;
+ if (len === 0)
+ return 0;
+
+ if (!encoding || encoding === 'utf8') {
+ return byteLengthUtf8(string);
+ }
+
+ if (encoding === 'ascii') {
+ return len;
+ }
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined) {
+ // TODO (ronag): Makes more sense to throw here.
+ // throw new ERR_UNKNOWN_ENCODING(encoding);
+ return byteLengthUtf8(string);
+ }
+
+ return ops.byteLength(string);
+}
+
+Buffer.byteLength = byteLength;
+
+// For backwards compatibility.
+ObjectDefineProperty(Buffer.prototype, 'parent', {
+ __proto__: null,
+ enumerable: true,
+ get() {
+ if (!(this instanceof Buffer))
+ return undefined;
+ return this.buffer;
+ },
+});
+ObjectDefineProperty(Buffer.prototype, 'offset', {
+ __proto__: null,
+ enumerable: true,
+ get() {
+ if (!(this instanceof Buffer))
+ return undefined;
+ return this.byteOffset;
+ },
+});
+
+Buffer.prototype.copy =
+ function copy(target, targetStart, sourceStart, sourceEnd) {
+ return copyImpl(this, target, targetStart, sourceStart, sourceEnd);
+ };
+
+// No need to verify that "buf.length <= MAX_UINT32" since it's a read-only
+// property of a typed array.
+// This behaves neither like String nor Uint8Array in that we set start/end
+// to their upper/lower bounds if the value passed is out of range.
+Buffer.prototype.toString = function toString(encoding, start, end) {
+ if (arguments.length === 0) {
+ return this.utf8Slice(0, this.length);
+ }
+
+ const len = this.length;
+
+ if (start <= 0)
+ start = 0;
+ else if (start >= len)
+ return '';
+ else
+ start = MathTrunc(start) || 0;
+
+ if (end === undefined || end > len)
+ end = len;
+ else
+ end = MathTrunc(end) || 0;
+
+ if (end <= start)
+ return '';
+
+ if (encoding === undefined)
+ return this.utf8Slice(start, end);
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+
+ return ops.slice(this, start, end);
+};
+
+Buffer.prototype.equals = function equals(otherBuffer) {
+ if (!isUint8Array(otherBuffer)) {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'otherBuffer', ['Buffer', 'Uint8Array'], otherBuffer);
+ }
+
+ if (this === otherBuffer)
+ return true;
+ const len = TypedArrayPrototypeGetByteLength(this);
+ if (len !== TypedArrayPrototypeGetByteLength(otherBuffer))
+ return false;
+
+ return len === 0 || _compare(this, otherBuffer) === 0;
+};
+
+let INSPECT_MAX_BYTES = 50;
+// Override how buffers are presented by util.inspect().
+Buffer.prototype[customInspectSymbol] = function inspect(recurseTimes, ctx) {
+ const max = INSPECT_MAX_BYTES;
+ const actualMax = MathMin(max, this.length);
+ const remaining = this.length - max;
+ let str = StringPrototypeTrim(RegExpPrototypeSymbolReplace(
+ /(.{2})/g, this.hexSlice(0, actualMax), '$1 '));
+ if (remaining > 0)
+ str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`;
+ // Inspect special properties as well, if possible.
+ if (ctx) {
+ let extras = false;
+ const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE;
+ const obj = { __proto__: null };
+ ArrayPrototypeForEach(getOwnNonIndexProperties(this, filter),
+ (key) => {
+ extras = true;
+ obj[key] = this[key];
+ });
+ if (extras) {
+ if (this.length !== 0)
+ str += ', ';
+ // '[Object: null prototype] {'.length === 26
+ // This is guarded with a test.
+ str += StringPrototypeSlice(utilInspect(obj, {
+ ...ctx,
+ breakLength: Infinity,
+ compact: true,
+ }), 27, -2);
+ }
+ }
+ let constructorName = 'Buffer';
+ try {
+ const { constructor } = this;
+ if (typeof constructor === 'function' && ObjectPrototypeHasOwnProperty(constructor, 'name')) {
+ constructorName = constructor.name;
+ }
+ } catch { /* Ignore error and use default name */ }
+ return `<${constructorName} ${str}>`;
+};
+Buffer.prototype.inspect = Buffer.prototype[customInspectSymbol];
+
+Buffer.prototype.compare = function compare(target,
+ targetStart,
+ targetEnd,
+ sourceStart,
+ sourceEnd) {
+ if (!isUint8Array(target)) {
+ throw new ERR_INVALID_ARG_TYPE('target', ['Buffer', 'Uint8Array'], target);
+ }
+ if (arguments.length === 1)
+ return _compare(this, target);
+
+ if (targetStart === undefined)
+ targetStart = 0;
+ else
+ validateOffset(targetStart, 'targetStart');
+
+ if (targetEnd === undefined)
+ targetEnd = target.length;
+ else
+ validateOffset(targetEnd, 'targetEnd', 0, target.length);
+
+ if (sourceStart === undefined)
+ sourceStart = 0;
+ else
+ validateOffset(sourceStart, 'sourceStart');
+
+ if (sourceEnd === undefined)
+ sourceEnd = this.length;
+ else
+ validateOffset(sourceEnd, 'sourceEnd', 0, this.length);
+
+ if (sourceStart >= sourceEnd)
+ return (targetStart >= targetEnd ? 0 : -1);
+ if (targetStart >= targetEnd)
+ return 1;
+
+ return compareOffset(this, target, targetStart, sourceStart, targetEnd,
+ sourceEnd);
+};
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant if val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
+ validateBuffer(buffer);
+
+ if (typeof byteOffset === 'string') {
+ encoding = byteOffset;
+ byteOffset = undefined;
+ } else if (byteOffset > 0x7fffffff) {
+ byteOffset = 0x7fffffff;
+ } else if (byteOffset < -0x80000000) {
+ byteOffset = -0x80000000;
+ }
+ // Coerce to Number. Values like null and [] become 0.
+ byteOffset = +byteOffset;
+ // If the offset is undefined, "foo", {}, coerces to NaN, search whole buffer.
+ if (NumberIsNaN(byteOffset)) {
+ byteOffset = dir ? 0 : (buffer.length || buffer.byteLength);
+ }
+ dir = !!dir; // Cast to bool.
+
+ if (typeof val === 'number')
+ return indexOfNumber(buffer, val >>> 0, byteOffset, dir);
+
+ let ops;
+ if (encoding === undefined)
+ ops = encodingOps.utf8;
+ else
+ ops = getEncodingOps(encoding);
+
+ if (typeof val === 'string') {
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ return ops.indexOf(buffer, val, byteOffset, dir);
+ }
+
+ if (isUint8Array(val)) {
+ const encodingVal =
+ (ops === undefined ? encodingsMap.utf8 : ops.encodingVal);
+ return indexOfBuffer(buffer, val, byteOffset, encodingVal, dir);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE(
+ 'value', ['number', 'string', 'Buffer', 'Uint8Array'], val,
+ );
+}
+
+Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
+};
+
+Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
+};
+
+Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
+ return this.indexOf(val, byteOffset, encoding) !== -1;
+};
+
+// Usage:
+// buffer.fill(number[, offset[, end]])
+// buffer.fill(buffer[, offset[, end]])
+// buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill(value, offset, end, encoding) {
+ return _fill(this, value, offset, end, encoding);
+};
+
+function _fill(buf, value, offset, end, encoding) {
+ if (typeof value === 'string') {
+ if (offset === undefined || typeof offset === 'string') {
+ encoding = offset;
+ offset = 0;
+ end = buf.length;
+ } else if (typeof end === 'string') {
+ encoding = end;
+ end = buf.length;
+ }
+
+ const normalizedEncoding = normalizeEncoding(encoding);
+ if (normalizedEncoding === undefined) {
+ validateString(encoding, 'encoding');
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+
+ if (value.length === 0) {
+ // If value === '' default to zero.
+ value = 0;
+ } else if (value.length === 1) {
+ // Fast path: If `value` fits into a single byte, use that numeric value.
+ if (normalizedEncoding === 'utf8') {
+ const code = StringPrototypeCharCodeAt(value, 0);
+ if (code < 128) {
+ value = code;
+ }
+ } else if (normalizedEncoding === 'latin1') {
+ value = StringPrototypeCharCodeAt(value, 0);
+ }
+ }
+ } else {
+ encoding = undefined;
+ }
+
+ if (offset === undefined) {
+ offset = 0;
+ end = buf.length;
+ } else {
+ validateOffset(offset, 'offset');
+ // Invalid ranges are not set to a default, so can range check early.
+ if (end === undefined) {
+ end = buf.length;
+ } else {
+ validateOffset(end, 'end', 0, buf.length);
+ }
+ if (offset >= end)
+ return buf;
+ }
+
+
+ if (typeof value === 'number') {
+ // OOB check
+ const byteLen = TypedArrayPrototypeGetByteLength(buf);
+ const fillLength = end - offset;
+ if (offset > end || fillLength + offset > byteLen)
+ throw new ERR_BUFFER_OUT_OF_BOUNDS();
+
+ TypedArrayPrototypeFill(buf, value, offset, end);
+ } else {
+ const res = bindingFill(buf, value, offset, end, encoding);
+ if (res < 0) {
+ if (res === -1)
+ throw new ERR_INVALID_ARG_VALUE('value', value);
+ throw new ERR_BUFFER_OUT_OF_BOUNDS();
+ }
+ }
+
+ return buf;
+}
+
+Buffer.prototype.write = function write(string, offset, length, encoding) {
+ // Buffer#write(string);
+ if (offset === undefined) {
+ return this.utf8Write(string, 0, this.length);
+ }
+ // Buffer#write(string, encoding)
+ if (length === undefined && typeof offset === 'string') {
+ encoding = offset;
+ length = this.length;
+ offset = 0;
+
+ // Buffer#write(string, offset[, length][, encoding])
+ } else {
+ validateOffset(offset, 'offset', 0, this.length);
+
+ const remaining = this.length - offset;
+
+ if (length === undefined) {
+ length = remaining;
+ } else if (typeof length === 'string') {
+ encoding = length;
+ length = remaining;
+ } else {
+ validateOffset(length, 'length', 0, this.length);
+ if (length > remaining)
+ length = remaining;
+ }
+ }
+
+ if (!encoding || encoding === 'utf8')
+ return this.utf8Write(string, offset, length);
+ if (encoding === 'ascii')
+ return this.asciiWrite(string, offset, length);
+
+ const ops = getEncodingOps(encoding);
+ if (ops === undefined)
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ return ops.write(this, string, offset, length);
+};
+
+Buffer.prototype.toJSON = function toJSON() {
+ if (this.length > 0) {
+ const data = new Array(this.length);
+ for (let i = 0; i < this.length; ++i)
+ data[i] = this[i];
+ return { type: 'Buffer', data };
+ }
+ return { type: 'Buffer', data: [] };
+};
+
+function adjustOffset(offset, length) {
+ // Use Math.trunc() to convert offset to an integer value that can be larger
+ // than an Int32. Hence, don't use offset | 0 or similar techniques.
+ offset = MathTrunc(offset);
+ if (offset === 0) {
+ return 0;
+ }
+ if (offset < 0) {
+ offset += length;
+ return offset > 0 ? offset : 0;
+ }
+ if (offset < length) {
+ return offset;
+ }
+ return NumberIsNaN(offset) ? 0 : length;
+}
+
+Buffer.prototype.subarray = function subarray(start, end) {
+ const srcLength = this.length;
+ start = adjustOffset(start, srcLength);
+ end = end !== undefined ? adjustOffset(end, srcLength) : srcLength;
+ const newLength = end > start ? end - start : 0;
+ return new FastBuffer(this.buffer, this.byteOffset + start, newLength);
+};
+
+Buffer.prototype.slice = function slice(start, end) {
+ return this.subarray(start, end);
+};
+
+function swap(b, n, m) {
+ const i = b[n];
+ b[n] = b[m];
+ b[m] = i;
+}
+
+Buffer.prototype.swap16 = function swap16() {
+ // For Buffer.length < 128, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 2 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('16-bits');
+ if (len < 128) {
+ for (let i = 0; i < len; i += 2)
+ swap(this, i, i + 1);
+ return this;
+ }
+ return _swap16(this);
+};
+
+Buffer.prototype.swap32 = function swap32() {
+ // For Buffer.length < 192, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 4 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('32-bits');
+ if (len < 192) {
+ for (let i = 0; i < len; i += 4) {
+ swap(this, i, i + 3);
+ swap(this, i + 1, i + 2);
+ }
+ return this;
+ }
+ return _swap32(this);
+};
+
+Buffer.prototype.swap64 = function swap64() {
+ // For Buffer.length < 192, it's generally faster to
+ // do the swap in javascript. For larger buffers,
+ // dropping down to the native code is faster.
+ const len = this.length;
+ if (len % 8 !== 0)
+ throw new ERR_INVALID_BUFFER_SIZE('64-bits');
+ if (len < 192) {
+ for (let i = 0; i < len; i += 8) {
+ swap(this, i, i + 7);
+ swap(this, i + 1, i + 6);
+ swap(this, i + 2, i + 5);
+ swap(this, i + 3, i + 4);
+ }
+ return this;
+ }
+ return _swap64(this);
+};
+
+Buffer.prototype.toLocaleString = Buffer.prototype.toString;
+
+let transcode;
+if (internalBinding('config').hasIntl) {
+ const {
+ icuErrName,
+ transcode: _transcode,
+ } = internalBinding('icu');
+
+ // Transcodes the Buffer from one encoding to another, returning a new
+ // Buffer instance.
+ transcode = function transcode(source, fromEncoding, toEncoding) {
+ if (!isUint8Array(source)) {
+ throw new ERR_INVALID_ARG_TYPE('source',
+ ['Buffer', 'Uint8Array'], source);
+ }
+ if (source.length === 0) return Buffer.alloc(0);
+
+ fromEncoding = normalizeEncoding(fromEncoding) || fromEncoding;
+ toEncoding = normalizeEncoding(toEncoding) || toEncoding;
+ const result = _transcode(source, fromEncoding, toEncoding);
+ if (typeof result !== 'number')
+ return result;
+
+ const code = icuErrName(result);
+ const err = genericNodeError(
+ `Unable to transcode Buffer [${code}]`,
+ { code: code, errno: result },
+ );
+ throw err;
+ };
+}
+
+function btoa(input) {
+ // The implementation here has not been performance optimized in any way and
+ // should not be.
+ // Refs: https://github.com/nodejs/node/pull/38433#issuecomment-828426932
+ if (arguments.length === 0) {
+ throw new ERR_MISSING_ARGS('input');
+ }
+ const result = _btoa(`${input}`);
+ if (result === -1) {
+ throw lazyDOMException('Invalid character', 'InvalidCharacterError');
+ }
+ return result;
+}
+
+function atob(input) {
+ if (arguments.length === 0) {
+ throw new ERR_MISSING_ARGS('input');
+ }
+
+ const result = _atob(`${input}`);
+
+ switch (result) {
+ case -2: // Invalid character
+ throw lazyDOMException('Invalid character', 'InvalidCharacterError');
+ case -1: // Single character remained
+ throw lazyDOMException(
+ 'The string to be decoded is not correctly encoded.',
+ 'InvalidCharacterError');
+ case -3: // Possible overflow
+ // TODO(@anonrig): Throw correct error in here.
+ throw lazyDOMException('The input causes overflow.', 'InvalidCharacterError');
+ default:
+ return result;
+ }
+}
+
+function isUtf8(input) {
+ if (isTypedArray(input) || isAnyArrayBuffer(input)) {
+ return bindingIsUtf8(input);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE('input', ['ArrayBuffer', 'Buffer', 'TypedArray'], input);
+}
+
+function isAscii(input) {
+ if (isTypedArray(input) || isAnyArrayBuffer(input)) {
+ return bindingIsAscii(input);
+ }
+
+ throw new ERR_INVALID_ARG_TYPE('input', ['ArrayBuffer', 'Buffer', 'TypedArray'], input);
+}
+
+module.exports = {
+ Buffer,
+ SlowBuffer: deprecate(
+ SlowBuffer,
+ 'SlowBuffer() is deprecated. Please use Buffer.allocUnsafeSlow()',
+ 'DEP0030'),
+ transcode,
+ isUtf8,
+ isAscii,
+
+ // Legacy
+ kMaxLength,
+ kStringMaxLength,
+ btoa,
+ atob,
+};
+
+ObjectDefineProperties(module.exports, {
+ constants: {
+ __proto__: null,
+ configurable: false,
+ enumerable: true,
+ value: constants,
+ },
+ INSPECT_MAX_BYTES: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() { return INSPECT_MAX_BYTES; },
+ set(val) {
+ validateNumber(val, 'INSPECT_MAX_BYTES', 0);
+ INSPECT_MAX_BYTES = val;
+ },
+ },
+});
+
+defineLazyProperties(
+ module.exports,
+ 'internal/blob',
+ ['Blob', 'resolveObjectURL'],
+);
+defineLazyProperties(
+ module.exports,
+ 'internal/file',
+ ['File'],
+);
\ No newline at end of file
diff --git a/.idx/node/dfn.js b/.idx/node/dfn.js
new file mode 100644
index 0000000..29b453d
--- /dev/null
+++ b/.idx/node/dfn.js
@@ -0,0 +1,118 @@
+var dfnMapTarget = -1;
+var dfnMapDone = 0;
+var dfnMap = {};
+document.addEventListener('DOMContentLoaded', function (event) {
+ var links = [];
+ dfnMapTarget = document.links.length;
+ for (var i = 0; i < dfnMapTarget; i += 1)
+ links[i] = document.links[i];
+ var inc = 100;
+ for (var i = 0; i < dfnMapTarget; i += inc) {
+ setTimeout(function (j) {
+ for (var k = j; k < j+inc && k < dfnMapTarget; k += 1) {
+ if (links[k].href.indexOf('#') >= 0) {
+ if (links[k].className != "no-backref" &&
+ links[k].parentNode.className != "no-backref") {
+ var s = links[k].href.substr(links[k].href.indexOf('#') + 1);
+ if (!(s in dfnMap))
+ dfnMap[s] = [];
+ dfnMap[s].push(links[k]);
+ }
+ }
+ dfnMapDone += 1;
+ }
+ }, 0, i);
+ }
+ document.body.className += " dfnEnabled";
+}, false);
+
+var dfnPanel;
+var dfnUniqueId = 0;
+var dfnTimeout;
+document.addEventListener('click', dfnShow, false);
+function dfnShow(event) {
+ if (dfnTimeout) {
+ clearTimeout(dfnTimeout);
+ dfnTimeout = null;
+ }
+ if (dfnPanel) {
+ dfnPanel.parentNode.removeChild(dfnPanel);
+ dfnPanel = null;
+ }
+ if (dfnMapDone == dfnMapTarget) {
+ var node = event.target;
+ while (node && (node.nodeType != event.target.ELEMENT_NODE || node.tagName != "DFN"))
+ node = node.parentNode;
+ if (node) {
+ var panel = document.createElement('div');
+ panel.className = 'dfnPanel';
+ if (node.id) {
+ var permalinkP = document.createElement('p');
+ var permalinkA = document.createElement('a');
+ permalinkA.href = '#' + node.id;
+ permalinkA.textContent = '#' + node.id;
+ permalinkP.appendChild(permalinkA);
+ panel.appendChild(permalinkP);
+ }
+ var p = document.createElement('p');
+ panel.appendChild(p);
+ if (node.id in dfnMap || node.parentNode.id in dfnMap) {
+ p.textContent = 'Referenced in:';
+ var ul = document.createElement('ul');
+ var lastHeader;
+ var lastLi;
+ var n;
+ var sourceLinks = [];
+ if (node.id in dfnMap)
+ for (var i = 0; i < dfnMap[node.id].length; i += 1)
+ sourceLinks.push(dfnMap[node.id][i]);
+ if (node.parentNode.id in dfnMap)
+ for (var i = 0; i < dfnMap[node.parentNode.id].length; i += 1)
+ sourceLinks.push(dfnMap[node.parentNode.id][i]);
+ for (var i = 0; i < sourceLinks.length; i += 1) {
+ var link = sourceLinks[i];
+ var header = dfnGetCaption(link);
+ var a = document.createElement('a');
+ if (!link.id)
+ link.id = 'dfnReturnLink-' + dfnUniqueId++;
+ a.href = '#' + link.id;
+ if (header != lastHeader) {
+ lastHeader = header;
+ n = 1;
+ var li = document.createElement('li');
+ var cloneHeader = header.cloneNode(true);
+ while (cloneHeader.hasChildNodes())
+ if (cloneHeader.firstChild.className == 'section-link')
+ cloneHeader.removeChild(cloneHeader.firstChild);
+ else
+ a.appendChild(cloneHeader.firstChild);
+ lastLi = li;
+ li.appendChild(a);
+ ul.appendChild(li);
+ } else {
+ n += 1;
+ a.appendChild(document.createTextNode('(' + n + ')'));
+ lastLi.appendChild(document.createTextNode(' '));
+ lastLi.appendChild(a);
+ }
+ }
+ panel.appendChild(ul);
+ } else {
+ p.textContent = 'No references in this file.';
+ }
+ node.appendChild(panel);
+ dfnPanel = panel;
+ }
+ } else {
+ dfnTimeout = setTimeout(dfnShow, 250, event);
+ }
+}
+
+function dfnGetCaption(link) {
+ var node = link;
+ while (node && !(node.parentNode.tagName == "DIV" && node.parentNode.className == "section"))
+ node = node.parentNode;
+ while (node && (node.nodeType != node.ELEMENT_NODE || !node.tagName.match(/^H[1-6]$/)))
+ node = node.previousSibling;
+ return node;
+}
\ No newline at end of file
diff --git a/.idx/node/dgram.js b/.idx/node/dgram.js
new file mode 100644
index 0000000..c77ea89
--- /dev/null
+++ b/.idx/node/dgram.js
@@ -0,0 +1,1111 @@
+'use strict';
+
+const {
+ Array,
+ ArrayIsArray,
+ ArrayPrototypePush,
+ FunctionPrototypeBind,
+ FunctionPrototypeCall,
+ ObjectDefineProperty,
+ ObjectSetPrototypeOf,
+ ReflectApply,
+ SymbolAsyncDispose,
+ SymbolDispose,
+} = primordials;
+
+const {
+ ErrnoException,
+ ExceptionWithHostPort,
+ codes: {
+ ERR_BUFFER_OUT_OF_BOUNDS,
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_FD_TYPE,
+ ERR_IP_BLOCKED,
+ ERR_MISSING_ARGS,
+ ERR_SOCKET_ALREADY_BOUND,
+ ERR_SOCKET_BAD_BUFFER_SIZE,
+ ERR_SOCKET_BUFFER_SIZE,
+ ERR_SOCKET_DGRAM_IS_CONNECTED,
+ ERR_SOCKET_DGRAM_NOT_CONNECTED,
+ ERR_SOCKET_DGRAM_NOT_RUNNING,
+ },
+} = require('internal/errors');
+const {
+ kStateSymbol,
+ _createSocketHandle,
+ newHandle,
+} = require('internal/dgram');
+const { isIP } = require('internal/net');
+const {
+ isInt32,
+ validateAbortSignal,
+ validateString,
+ validateNumber,
+ validatePort,
+ validateUint32,
+} = require('internal/validators');
+const { Buffer } = require('buffer');
+const { deprecate, guessHandleType, promisify } = require('internal/util');
+const { isArrayBufferView } = require('internal/util/types');
+const EventEmitter = require('events');
+const { addAbortListener } = require('internal/events/abort_listener');
+const {
+ defaultTriggerAsyncIdScope,
+ symbols: { async_id_symbol, owner_symbol },
+} = require('internal/async_hooks');
+const { UV_UDP_REUSEADDR } = internalBinding('constants').os;
+
+const {
+ constants: { UV_UDP_IPV6ONLY, UV_UDP_REUSEPORT },
+ UDP,
+ SendWrap,
+} = internalBinding('udp_wrap');
+
+const dc = require('diagnostics_channel');
+const udpSocketChannel = dc.channel('udp.socket');
+
+const BIND_STATE_UNBOUND = 0;
+const BIND_STATE_BINDING = 1;
+const BIND_STATE_BOUND = 2;
+
+const CONNECT_STATE_DISCONNECTED = 0;
+const CONNECT_STATE_CONNECTING = 1;
+const CONNECT_STATE_CONNECTED = 2;
+
+const RECV_BUFFER = true;
+const SEND_BUFFER = false;
+
+// Lazily loaded
+let _cluster = null;
+function lazyLoadCluster() {
+ return _cluster ??= require('cluster');
+}
+let _blockList = null;
+function lazyLoadBlockList() {
+ return _blockList ??= require('internal/blocklist').BlockList;
+}
+
+function Socket(type, listener) {
+ FunctionPrototypeCall(EventEmitter, this);
+ let lookup;
+ let recvBufferSize;
+ let sendBufferSize;
+ let receiveBlockList;
+ let sendBlockList;
+
+ let options;
+ if (type !== null && typeof type === 'object') {
+ options = type;
+ type = options.type;
+ lookup = options.lookup;
+ if (options.recvBufferSize) {
+ validateUint32(options.recvBufferSize, 'options.recvBufferSize');
+ }
+ if (options.sendBufferSize) {
+ validateUint32(options.sendBufferSize, 'options.sendBufferSize');
+ }
+ recvBufferSize = options.recvBufferSize;
+ sendBufferSize = options.sendBufferSize;
+ if (options.receiveBlockList) {
+ if (!lazyLoadBlockList().isBlockList(options.receiveBlockList)) {
+ throw new ERR_INVALID_ARG_TYPE('options.receiveBlockList', 'net.BlockList', options.receiveBlockList);
+ }
+ receiveBlockList = options.receiveBlockList;
+ }
+ if (options.sendBlockList) {
+ if (!lazyLoadBlockList().isBlockList(options.sendBlockList)) {
+ throw new ERR_INVALID_ARG_TYPE('options.sendBlockList', 'net.BlockList', options.sendBlockList);
+ }
+ sendBlockList = options.sendBlockList;
+ }
+ }
+
+ const handle = newHandle(type, lookup);
+ handle[owner_symbol] = this;
+
+ this[async_id_symbol] = handle.getAsyncId();
+ this.type = type;
+
+ if (typeof listener === 'function')
+ this.on('message', listener);
+
+ this[kStateSymbol] = {
+ handle,
+ receiving: false,
+ bindState: BIND_STATE_UNBOUND,
+ connectState: CONNECT_STATE_DISCONNECTED,
+ queue: undefined,
+ reuseAddr: options?.reuseAddr, // Use UV_UDP_REUSEADDR if true.
+ reusePort: options?.reusePort,
+ ipv6Only: options?.ipv6Only,
+ recvBufferSize,
+ sendBufferSize,
+ receiveBlockList,
+ sendBlockList,
+ };
+
+ if (options?.signal !== undefined) {
+ const { signal } = options;
+ validateAbortSignal(signal, 'options.signal');
+ const onAborted = () => {
+ if (this[kStateSymbol].handle) this.close();
+ };
+ if (signal.aborted) {
+ onAborted();
+ } else {
+ const disposable = addAbortListener(signal, onAborted);
+ this.once('close', disposable[SymbolDispose]);
+ }
+ }
+ if (udpSocketChannel.hasSubscribers) {
+ udpSocketChannel.publish({
+ socket: this,
+ });
+ }
+}
+ObjectSetPrototypeOf(Socket.prototype, EventEmitter.prototype);
+ObjectSetPrototypeOf(Socket, EventEmitter);
+
+
+function createSocket(type, listener) {
+ return new Socket(type, listener);
+}
+
+
+function startListening(socket) {
+ const state = socket[kStateSymbol];
+
+ state.handle.onmessage = onMessage;
+ state.handle.onerror = onError;
+ state.handle.recvStart();
+ state.receiving = true;
+ state.bindState = BIND_STATE_BOUND;
+
+ if (state.recvBufferSize)
+ bufferSize(socket, state.recvBufferSize, RECV_BUFFER);
+
+ if (state.sendBufferSize)
+ bufferSize(socket, state.sendBufferSize, SEND_BUFFER);
+
+ socket.emit('listening');
+}
+
+function replaceHandle(self, newHandle) {
+ const state = self[kStateSymbol];
+ const oldHandle = state.handle;
+ // Sync the old handle state to new handle
+ if (!oldHandle.hasRef() && typeof newHandle.unref === 'function') {
+ newHandle.unref();
+ }
+ // Set up the handle that we got from primary.
+ newHandle.lookup = oldHandle.lookup;
+ newHandle.bind = oldHandle.bind;
+ newHandle.send = oldHandle.send;
+ newHandle[owner_symbol] = self;
+
+ // Replace the existing handle by the handle we got from primary.
+ oldHandle.close();
+ state.handle = newHandle;
+}
+
+function bufferSize(self, size, buffer) {
+ if (size >>> 0 !== size)
+ throw new ERR_SOCKET_BAD_BUFFER_SIZE();
+
+ const ctx = {};
+ const ret = self[kStateSymbol].handle.bufferSize(size, buffer, ctx);
+ if (ret === undefined) {
+ throw new ERR_SOCKET_BUFFER_SIZE(ctx);
+ }
+ return ret;
+}
+
+// Query primary process to get the server handle and utilize it.
+function bindServerHandle(self, options, errCb) {
+ const cluster = lazyLoadCluster();
+
+ const state = self[kStateSymbol];
+ cluster._getServer(self, options, (err, handle) => {
+ if (err) {
+ // Do not call callback if socket is closed
+ if (state.handle) {
+ errCb(err);
+ }
+ return;
+ }
+
+ if (!state.handle) {
+ // Handle has been closed in the mean time.
+ return handle.close();
+ }
+
+ replaceHandle(self, handle);
+ startListening(self);
+ });
+}
+
+Socket.prototype.bind = function(port_, address_ /* , callback */) {
+ let port = port_;
+
+ healthCheck(this);
+ const state = this[kStateSymbol];
+
+ if (state.bindState !== BIND_STATE_UNBOUND)
+ throw new ERR_SOCKET_ALREADY_BOUND();
+
+ state.bindState = BIND_STATE_BINDING;
+
+ const cb = arguments.length && arguments[arguments.length - 1];
+ if (typeof cb === 'function') {
+ function removeListeners() {
+ this.removeListener('error', removeListeners);
+ this.removeListener('listening', onListening);
+ }
+
+ function onListening() {
+ FunctionPrototypeCall(removeListeners, this);
+ FunctionPrototypeCall(cb, this);
+ }
+
+ this.on('error', removeListeners);
+ this.on('listening', onListening);
+ }
+
+ if (port !== null &&
+ typeof port === 'object' &&
+ typeof port.recvStart === 'function') {
+ replaceHandle(this, port);
+ startListening(this);
+ return this;
+ }
+
+ // Open an existing fd instead of creating a new one.
+ if (port !== null && typeof port === 'object' &&
+ isInt32(port.fd) && port.fd > 0) {
+ const fd = port.fd;
+ const exclusive = !!port.exclusive;
+ const state = this[kStateSymbol];
+
+ const cluster = lazyLoadCluster();
+
+ if (cluster.isWorker && !exclusive) {
+ bindServerHandle(this, {
+ address: null,
+ port: null,
+ addressType: this.type,
+ fd,
+ flags: null,
+ }, (err) => {
+ // Callback to handle error.
+ const ex = new ErrnoException(err, 'open');
+ state.bindState = BIND_STATE_UNBOUND;
+ this.emit('error', ex);
+ });
+ return this;
+ }
+
+ const type = guessHandleType(fd);
+ if (type !== 'UDP')
+ throw new ERR_INVALID_FD_TYPE(type);
+ const err = state.handle.open(fd);
+
+ if (err)
+ throw new ErrnoException(err, 'open');
+
+ startListening(this);
+ return this;
+ }
+
+ let address;
+ let exclusive;
+
+ if (port !== null && typeof port === 'object') {
+ address = port.address || '';
+ exclusive = !!port.exclusive;
+ port = port.port;
+ } else {
+ address = typeof address_ === 'function' ? '' : address_;
+ exclusive = false;
+ }
+
+ // Defaulting address for bind to all interfaces
+ if (!address) {
+ if (this.type === 'udp4')
+ address = '0.0.0.0';
+ else
+ address = '::';
+ }
+
+ // Resolve address first
+ state.handle.lookup(address, (err, ip) => {
+ if (!state.handle)
+ return; // Handle has been closed in the mean time
+
+ if (err) {
+ state.bindState = BIND_STATE_UNBOUND;
+ this.emit('error', err);
+ return;
+ }
+
+ const cluster = lazyLoadCluster();
+
+ let flags = 0;
+ if (state.reuseAddr)
+ flags |= UV_UDP_REUSEADDR;
+ if (state.ipv6Only)
+ flags |= UV_UDP_IPV6ONLY;
+ if (state.reusePort) {
+ exclusive = true;
+ flags |= UV_UDP_REUSEPORT;
+ }
+
+ if (cluster.isWorker && !exclusive) {
+ bindServerHandle(this, {
+ address: ip,
+ port: port,
+ addressType: this.type,
+ fd: -1,
+ flags: flags,
+ }, (err) => {
+ // Callback to handle error.
+ const ex = new ExceptionWithHostPort(err, 'bind', ip, port);
+ state.bindState = BIND_STATE_UNBOUND;
+ this.emit('error', ex);
+ });
+ } else {
+ const err = state.handle.bind(ip, port || 0, flags);
+ if (err) {
+ const ex = new ExceptionWithHostPort(err, 'bind', ip, port);
+ state.bindState = BIND_STATE_UNBOUND;
+ this.emit('error', ex);
+ // Todo: close?
+ return;
+ }
+
+ startListening(this);
+ }
+ });
+
+ return this;
+};
+
+Socket.prototype.connect = function(port, address, callback) {
+ port = validatePort(port, 'Port', false);
+ if (typeof address === 'function') {
+ callback = address;
+ address = '';
+ } else if (address === undefined) {
+ address = '';
+ }
+
+ validateString(address, 'address');
+
+ const state = this[kStateSymbol];
+
+ if (state.connectState !== CONNECT_STATE_DISCONNECTED)
+ throw new ERR_SOCKET_DGRAM_IS_CONNECTED();
+
+ state.connectState = CONNECT_STATE_CONNECTING;
+ if (state.bindState === BIND_STATE_UNBOUND)
+ this.bind({ port: 0, exclusive: true }, null);
+
+ if (state.bindState !== BIND_STATE_BOUND) {
+ enqueue(this, FunctionPrototypeBind(_connect, this,
+ port, address, callback));
+ return;
+ }
+
+ ReflectApply(_connect, this, [port, address, callback]);
+};
+
+
+function _connect(port, address, callback) {
+ const state = this[kStateSymbol];
+ if (callback)
+ this.once('connect', callback);
+
+ const afterDns = (ex, ip) => {
+ defaultTriggerAsyncIdScope(
+ this[async_id_symbol],
+ doConnect,
+ ex, this, ip, address, port, callback,
+ );
+ };
+
+ state.handle.lookup(address, afterDns);
+}
+
+
+function doConnect(ex, self, ip, address, port, callback) {
+ const state = self[kStateSymbol];
+ if (!state.handle)
+ return;
+ if (!ex && state.sendBlockList?.check(ip, `ipv${isIP(ip)}`)) {
+ ex = new ERR_IP_BLOCKED(ip);
+ }
+ if (!ex) {
+ const err = state.handle.connect(ip, port);
+ if (err) {
+ ex = new ExceptionWithHostPort(err, 'connect', address, port);
+ }
+ }
+
+ if (ex) {
+ state.connectState = CONNECT_STATE_DISCONNECTED;
+ return process.nextTick(() => {
+ if (callback) {
+ self.removeListener('connect', callback);
+ callback(ex);
+ } else {
+ self.emit('error', ex);
+ }
+ });
+ }
+
+ state.connectState = CONNECT_STATE_CONNECTED;
+ process.nextTick(() => self.emit('connect'));
+}
+
+
+Socket.prototype.disconnect = function() {
+ const state = this[kStateSymbol];
+ if (state.connectState !== CONNECT_STATE_CONNECTED)
+ throw new ERR_SOCKET_DGRAM_NOT_CONNECTED();
+
+ const err = state.handle.disconnect();
+ if (err)
+ throw new ErrnoException(err, 'connect');
+ else
+ state.connectState = CONNECT_STATE_DISCONNECTED;
+};
+
+
+// Thin wrapper around `send`, here for compatibility with dgram_legacy.js
+Socket.prototype.sendto = function(buffer,
+ offset,
+ length,
+ port,
+ address,
+ callback) {
+ validateNumber(offset, 'offset');
+ validateNumber(length, 'length');
+ validateNumber(port, 'port');
+ validateString(address, 'address');
+
+ this.send(buffer, offset, length, port, address, callback);
+};
+
+
+function sliceBuffer(buffer, offset, length) {
+ if (typeof buffer === 'string') {
+ buffer = Buffer.from(buffer);
+ } else if (!isArrayBufferView(buffer)) {
+ throw new ERR_INVALID_ARG_TYPE('buffer',
+ ['Buffer',
+ 'TypedArray',
+ 'DataView',
+ 'string'],
+ buffer);
+ }
+
+ offset = offset >>> 0;
+ length = length >>> 0;
+ if (offset > buffer.byteLength) {
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('offset');
+ }
+
+ if (offset + length > buffer.byteLength) {
+ throw new ERR_BUFFER_OUT_OF_BOUNDS('length');
+ }
+
+ return Buffer.from(buffer.buffer, buffer.byteOffset + offset, length);
+}
+
+
+function fixBufferList(list) {
+ const newlist = new Array(list.length);
+
+ for (let i = 0, l = list.length; i < l; i++) {
+ const buf = list[i];
+ if (typeof buf === 'string')
+ newlist[i] = Buffer.from(buf);
+ else if (Buffer.isBuffer(buf))
+ newlist[i] = buf;
+ else if (!isArrayBufferView(buf))
+ return null;
+ else
+ newlist[i] = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ }
+
+ return newlist;
+}
+
+
+function enqueue(self, toEnqueue) {
+ const state = self[kStateSymbol];
+
+ // If the send queue hasn't been initialized yet, do it, and install an
+ // event handler that flushes the send queue after binding is done.
+ if (state.queue === undefined) {
+ state.queue = [];
+ self.once(EventEmitter.errorMonitor, onListenError);
+ self.once('listening', onListenSuccess);
+ }
+ ArrayPrototypePush(state.queue, toEnqueue);
+}
+
+
+function onListenSuccess() {
+ this.removeListener(EventEmitter.errorMonitor, onListenError);
+ FunctionPrototypeCall(clearQueue, this);
+}
+
+
+function onListenError(err) {
+ this.removeListener('listening', onListenSuccess);
+ this[kStateSymbol].queue = undefined;
+}
+
+
+function clearQueue() {
+ const state = this[kStateSymbol];
+ const queue = state.queue;
+ state.queue = undefined;
+
+ // Flush the send queue.
+ for (const queueEntry of queue)
+ queueEntry();
+}
+
+// valid combinations
+// For connectionless sockets
+// send(buffer, offset, length, port, address, callback)
+// send(buffer, offset, length, port, address)
+// send(buffer, offset, length, port, callback)
+// send(buffer, offset, length, port)
+// send(bufferOrList, port, address, callback)
+// send(bufferOrList, port, address)
+// send(bufferOrList, port, callback)
+// send(bufferOrList, port)
+// For connected sockets
+// send(buffer, offset, length, callback)
+// send(buffer, offset, length)
+// send(bufferOrList, callback)
+// send(bufferOrList)
+Socket.prototype.send = function(buffer,
+ offset,
+ length,
+ port,
+ address,
+ callback) {
+
+ let list;
+ const state = this[kStateSymbol];
+ const connected = state.connectState === CONNECT_STATE_CONNECTED;
+ if (!connected) {
+ if (address || (port && typeof port !== 'function')) {
+ buffer = sliceBuffer(buffer, offset, length);
+ } else {
+ callback = port;
+ port = offset;
+ address = length;
+ }
+ } else {
+ if (typeof length === 'number') {
+ buffer = sliceBuffer(buffer, offset, length);
+ if (typeof port === 'function') {
+ callback = port;
+ port = null;
+ }
+ } else {
+ callback = offset;
+ }
+
+ if (port || address)
+ throw new ERR_SOCKET_DGRAM_IS_CONNECTED();
+ }
+
+ if (!ArrayIsArray(buffer)) {
+ if (typeof buffer === 'string') {
+ list = [ Buffer.from(buffer) ];
+ } else if (!isArrayBufferView(buffer)) {
+ throw new ERR_INVALID_ARG_TYPE('buffer',
+ ['Buffer',
+ 'TypedArray',
+ 'DataView',
+ 'string'],
+ buffer);
+ } else {
+ list = [ buffer ];
+ }
+ } else if (!(list = fixBufferList(buffer))) {
+ throw new ERR_INVALID_ARG_TYPE('buffer list arguments',
+ ['Buffer',
+ 'TypedArray',
+ 'DataView',
+ 'string'],
+ buffer);
+ }
+
+ if (!connected)
+ port = validatePort(port, 'Port', false);
+
+ // Normalize callback so it's either a function or undefined but not anything
+ // else.
+ if (typeof callback !== 'function')
+ callback = undefined;
+
+ if (typeof address === 'function') {
+ callback = address;
+ address = undefined;
+ } else if (address != null) {
+ validateString(address, 'address');
+ }
+
+ healthCheck(this);
+
+ if (state.bindState === BIND_STATE_UNBOUND)
+ this.bind({ port: 0, exclusive: true }, null);
+
+ if (list.length === 0)
+ ArrayPrototypePush(list, Buffer.alloc(0));
+
+ // If the socket hasn't been bound yet, push the outbound packet onto the
+ // send queue and send after binding is complete.
+ if (state.bindState !== BIND_STATE_BOUND) {
+ enqueue(this, FunctionPrototypeBind(this.send, this,
+ list, port, address, callback));
+ return;
+ }
+
+ const afterDns = (ex, ip) => {
+ defaultTriggerAsyncIdScope(
+ this[async_id_symbol],
+ doSend,
+ ex, this, ip, list, address, port, callback,
+ );
+ };
+
+ if (!connected) {
+ state.handle.lookup(address, afterDns);
+ } else {
+ afterDns(null, null);
+ }
+};
+
+function doSend(ex, self, ip, list, address, port, callback) {
+ const state = self[kStateSymbol];
+
+ if (ex) {
+ if (typeof callback === 'function') {
+ process.nextTick(callback, ex);
+ return;
+ }
+
+ process.nextTick(() => self.emit('error', ex));
+ return;
+ } else if (!state.handle) {
+ return;
+ }
+
+ if (ip && state.sendBlockList?.check(ip, `ipv${isIP(ip)}`)) {
+ if (callback) {
+ process.nextTick(callback, new ERR_IP_BLOCKED(ip));
+ }
+ return;
+ }
+
+ const req = new SendWrap();
+ req.list = list; // Keep reference alive.
+ req.address = address;
+ req.port = port;
+ if (callback) {
+ req.callback = callback;
+ req.oncomplete = afterSend;
+ }
+
+ let err;
+ if (port)
+ err = state.handle.send(req, list, list.length, port, ip, !!callback);
+ else
+ err = state.handle.send(req, list, list.length, !!callback);
+
+ if (err >= 1) {
+ // Synchronous finish. The return code is msg_length + 1 so that we can
+ // distinguish between synchronous success and asynchronous success.
+ if (callback)
+ process.nextTick(callback, null, err - 1);
+ return;
+ }
+
+ if (err && callback) {
+ // Don't emit as error, dgram_legacy.js compatibility
+ const ex = new ExceptionWithHostPort(err, 'send', address, port);
+ process.nextTick(callback, ex);
+ }
+}
+
+function afterSend(err, sent) {
+ if (err) {
+ err = new ExceptionWithHostPort(err, 'send', this.address, this.port);
+ } else {
+ err = null;
+ }
+
+ this.callback(err, sent);
+}
+
+Socket.prototype.close = function(callback) {
+ const state = this[kStateSymbol];
+ const queue = state.queue;
+
+ if (typeof callback === 'function')
+ this.on('close', callback);
+
+ if (queue !== undefined) {
+ ArrayPrototypePush(queue, FunctionPrototypeBind(this.close, this));
+ return this;
+ }
+
+ healthCheck(this);
+ stopReceiving(this);
+ state.handle.close();
+ state.handle = null;
+ defaultTriggerAsyncIdScope(this[async_id_symbol],
+ process.nextTick,
+ socketCloseNT,
+ this);
+
+ return this;
+};
+
+Socket.prototype[SymbolAsyncDispose] = async function() {
+ if (!this[kStateSymbol].handle) {
+ return;
+ }
+ await FunctionPrototypeCall(promisify(this.close), this);
+};
+
+
+function socketCloseNT(self) {
+ self.emit('close');
+}
+
+
+Socket.prototype.address = function() {
+ healthCheck(this);
+
+ const out = {};
+ const err = this[kStateSymbol].handle.getsockname(out);
+ if (err) {
+ throw new ErrnoException(err, 'getsockname');
+ }
+
+ return out;
+};
+
+Socket.prototype.remoteAddress = function() {
+ healthCheck(this);
+
+ const state = this[kStateSymbol];
+ if (state.connectState !== CONNECT_STATE_CONNECTED)
+ throw new ERR_SOCKET_DGRAM_NOT_CONNECTED();
+
+ const out = {};
+ const err = state.handle.getpeername(out);
+ if (err)
+ throw new ErrnoException(err, 'getpeername');
+
+ return out;
+};
+
+
+Socket.prototype.setBroadcast = function(arg) {
+ const err = this[kStateSymbol].handle.setBroadcast(arg ? 1 : 0);
+ if (err) {
+ throw new ErrnoException(err, 'setBroadcast');
+ }
+};
+
+
+Socket.prototype.setTTL = function(ttl) {
+ validateNumber(ttl, 'ttl');
+
+ const err = this[kStateSymbol].handle.setTTL(ttl);
+ if (err) {
+ throw new ErrnoException(err, 'setTTL');
+ }
+
+ return ttl;
+};
+
+
+Socket.prototype.setMulticastTTL = function(ttl) {
+ validateNumber(ttl, 'ttl');
+
+ const err = this[kStateSymbol].handle.setMulticastTTL(ttl);
+ if (err) {
+ throw new ErrnoException(err, 'setMulticastTTL');
+ }
+
+ return ttl;
+};
+
+
+Socket.prototype.setMulticastLoopback = function(arg) {
+ const err = this[kStateSymbol].handle.setMulticastLoopback(arg ? 1 : 0);
+ if (err) {
+ throw new ErrnoException(err, 'setMulticastLoopback');
+ }
+
+ return arg; // 0.4 compatibility
+};
+
+
+Socket.prototype.setMulticastInterface = function(interfaceAddress) {
+ healthCheck(this);
+ validateString(interfaceAddress, 'interfaceAddress');
+
+ const err = this[kStateSymbol].handle.setMulticastInterface(interfaceAddress);
+ if (err) {
+ throw new ErrnoException(err, 'setMulticastInterface');
+ }
+};
+
+Socket.prototype.addMembership = function(multicastAddress,
+ interfaceAddress) {
+ healthCheck(this);
+
+ if (!multicastAddress) {
+ throw new ERR_MISSING_ARGS('multicastAddress');
+ }
+
+ const { handle } = this[kStateSymbol];
+ const err = handle.addMembership(multicastAddress, interfaceAddress);
+ if (err) {
+ throw new ErrnoException(err, 'addMembership');
+ }
+};
+
+
+Socket.prototype.dropMembership = function(multicastAddress,
+ interfaceAddress) {
+ healthCheck(this);
+
+ if (!multicastAddress) {
+ throw new ERR_MISSING_ARGS('multicastAddress');
+ }
+
+ const { handle } = this[kStateSymbol];
+ const err = handle.dropMembership(multicastAddress, interfaceAddress);
+ if (err) {
+ throw new ErrnoException(err, 'dropMembership');
+ }
+};
+
+Socket.prototype.addSourceSpecificMembership = function(sourceAddress,
+ groupAddress,
+ interfaceAddress) {
+ healthCheck(this);
+
+ validateString(sourceAddress, 'sourceAddress');
+ validateString(groupAddress, 'groupAddress');
+
+ const err =
+ this[kStateSymbol].handle.addSourceSpecificMembership(sourceAddress,
+ groupAddress,
+ interfaceAddress);
+ if (err) {
+ throw new ErrnoException(err, 'addSourceSpecificMembership');
+ }
+};
+
+
+Socket.prototype.dropSourceSpecificMembership = function(sourceAddress,
+ groupAddress,
+ interfaceAddress) {
+ healthCheck(this);
+
+ validateString(sourceAddress, 'sourceAddress');
+ validateString(groupAddress, 'groupAddress');
+
+ const err =
+ this[kStateSymbol].handle.dropSourceSpecificMembership(sourceAddress,
+ groupAddress,
+ interfaceAddress);
+ if (err) {
+ throw new ErrnoException(err, 'dropSourceSpecificMembership');
+ }
+};
+
+
+function healthCheck(socket) {
+ if (!socket[kStateSymbol].handle) {
+ // Error message from dgram_legacy.js.
+ throw new ERR_SOCKET_DGRAM_NOT_RUNNING();
+ }
+}
+
+
+function stopReceiving(socket) {
+ const state = socket[kStateSymbol];
+
+ if (!state.receiving)
+ return;
+
+ state.handle.recvStop();
+ state.receiving = false;
+}
+
+
+function onMessage(nread, handle, buf, rinfo) {
+ const self = handle[owner_symbol];
+ if (nread < 0) {
+ return self.emit('error', new ErrnoException(nread, 'recvmsg'));
+ }
+ if (self[kStateSymbol]?.receiveBlockList?.check(rinfo.address,
+ rinfo.family?.toLocaleLowerCase())) {
+ return;
+ }
+ rinfo.size = buf.length; // compatibility
+ self.emit('message', buf, rinfo);
+}
+
+
+function onError(nread, handle, error) {
+ const self = handle[owner_symbol];
+ return self.emit('error', error);
+}
+
+
+Socket.prototype.ref = function() {
+ const handle = this[kStateSymbol].handle;
+
+ if (handle)
+ handle.ref();
+
+ return this;
+};
+
+
+Socket.prototype.unref = function() {
+ const handle = this[kStateSymbol].handle;
+
+ if (handle)
+ handle.unref();
+
+ return this;
+};
+
+
+Socket.prototype.setRecvBufferSize = function(size) {
+ bufferSize(this, size, RECV_BUFFER);
+};
+
+
+Socket.prototype.setSendBufferSize = function(size) {
+ bufferSize(this, size, SEND_BUFFER);
+};
+
+
+Socket.prototype.getRecvBufferSize = function() {
+ return bufferSize(this, 0, RECV_BUFFER);
+};
+
+
+Socket.prototype.getSendBufferSize = function() {
+ return bufferSize(this, 0, SEND_BUFFER);
+};
+
+Socket.prototype.getSendQueueSize = function() {
+ return this[kStateSymbol].handle.getSendQueueSize();
+};
+
+Socket.prototype.getSendQueueCount = function() {
+ return this[kStateSymbol].handle.getSendQueueCount();
+};
+
+// Deprecated private APIs.
+ObjectDefineProperty(Socket.prototype, '_handle', {
+ __proto__: null,
+ get: deprecate(function() {
+ return this[kStateSymbol].handle;
+ }, 'Socket.prototype._handle is deprecated', 'DEP0112'),
+ set: deprecate(function(val) {
+ this[kStateSymbol].handle = val;
+ }, 'Socket.prototype._handle is deprecated', 'DEP0112'),
+});
+
+
+ObjectDefineProperty(Socket.prototype, '_receiving', {
+ __proto__: null,
+ get: deprecate(function() {
+ return this[kStateSymbol].receiving;
+ }, 'Socket.prototype._receiving is deprecated', 'DEP0112'),
+ set: deprecate(function(val) {
+ this[kStateSymbol].receiving = val;
+ }, 'Socket.prototype._receiving is deprecated', 'DEP0112'),
+});
+
+
+ObjectDefineProperty(Socket.prototype, '_bindState', {
+ __proto__: null,
+ get: deprecate(function() {
+ return this[kStateSymbol].bindState;
+ }, 'Socket.prototype._bindState is deprecated', 'DEP0112'),
+ set: deprecate(function(val) {
+ this[kStateSymbol].bindState = val;
+ }, 'Socket.prototype._bindState is deprecated', 'DEP0112'),
+});
+
+
+ObjectDefineProperty(Socket.prototype, '_queue', {
+ __proto__: null,
+ get: deprecate(function() {
+ return this[kStateSymbol].queue;
+ }, 'Socket.prototype._queue is deprecated', 'DEP0112'),
+ set: deprecate(function(val) {
+ this[kStateSymbol].queue = val;
+ }, 'Socket.prototype._queue is deprecated', 'DEP0112'),
+});
+
+
+ObjectDefineProperty(Socket.prototype, '_reuseAddr', {
+ __proto__: null,
+ get: deprecate(function() {
+ return this[kStateSymbol].reuseAddr;
+ }, 'Socket.prototype._reuseAddr is deprecated', 'DEP0112'),
+ set: deprecate(function(val) {
+ this[kStateSymbol].reuseAddr = val;
+ }, 'Socket.prototype._reuseAddr is deprecated', 'DEP0112'),
+});
+
+
+Socket.prototype._healthCheck = deprecate(function() {
+ healthCheck(this);
+}, 'Socket.prototype._healthCheck() is deprecated', 'DEP0112');
+
+
+Socket.prototype._stopReceiving = deprecate(function() {
+ stopReceiving(this);
+}, 'Socket.prototype._stopReceiving() is deprecated', 'DEP0112');
+
+
+// Legacy alias on the C++ wrapper object. This is not public API, so we may
+// want to runtime-deprecate it at some point. There's no hurry, though.
+ObjectDefineProperty(UDP.prototype, 'owner', {
+ __proto__: null,
+ get() { return this[owner_symbol]; },
+ set(v) { return this[owner_symbol] = v; },
+});
+
+
+module.exports = {
+ _createSocketHandle: deprecate(
+ _createSocketHandle,
+ 'dgram._createSocketHandle() is deprecated',
+ 'DEP0112',
+ ),
+ createSocket,
+ Socket,
+};
\ No newline at end of file
diff --git a/.idx/node/hello-world.js b/.idx/node/hello-world.js
new file mode 100644
index 0000000..f7ac4e4
--- /dev/null
+++ b/.idx/node/hello-world.js
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ Todo
+
+
+
+
+
+
diff --git a/.idx/node/https.js b/.idx/node/https.js
new file mode 100644
index 0000000..05fb02f
--- /dev/null
+++ b/.idx/node/https.js
@@ -0,0 +1,660 @@
+'use strict';
+
+const {
+ ArrayPrototypeIndexOf,
+ ArrayPrototypePush,
+ ArrayPrototypeShift,
+ ArrayPrototypeSplice,
+ ArrayPrototypeUnshift,
+ FunctionPrototypeCall,
+ JSONStringify,
+ NumberParseInt,
+ ObjectAssign,
+ ObjectSetPrototypeOf,
+ ReflectApply,
+ ReflectConstruct,
+ SymbolAsyncDispose,
+} = primordials;
+
+const {
+ assertCrypto,
+ kEmptyObject,
+ promisify,
+ once,
+} = require('internal/util');
+const { ERR_PROXY_TUNNEL } = require('internal/errors').codes;
+assertCrypto();
+
+const tls = require('tls');
+const {
+ kProxyConfig,
+ checkShouldUseProxy,
+ filterEnvForProxies,
+ kWaitForProxyTunnel,
+} = require('internal/http');
+const { Agent: HttpAgent } = require('_http_agent');
+const {
+ httpServerPreClose,
+ Server: HttpServer,
+ setupConnectionsTracking,
+ storeHTTPOptions,
+ _connectionListener,
+} = require('_http_server');
+const { ClientRequest } = require('_http_client');
+let debug = require('internal/util/debuglog').debuglog('https', (fn) => {
+ debug = fn;
+});
+const net = require('net');
+const { URL, urlToHttpOptions, isURL } = require('internal/url');
+const { validateObject } = require('internal/validators');
+const { isIP } = require('internal/net');
+const assert = require('internal/assert');
+const { getOptionValue } = require('internal/options');
+
+function Server(opts, requestListener) {
+ if (!(this instanceof Server)) return new Server(opts, requestListener);
+
+ let ALPNProtocols = ['http/1.1'];
+ if (typeof opts === 'function') {
+ requestListener = opts;
+ opts = kEmptyObject;
+ } else if (opts == null) {
+ opts = kEmptyObject;
+ } else {
+ validateObject(opts, 'options');
+ // Only one of ALPNProtocols and ALPNCallback can be set, so make sure we
+ // only set a default ALPNProtocols if the caller has not set either of them
+ if (opts.ALPNProtocols || opts.ALPNCallback)
+ ALPNProtocols = undefined;
+ }
+
+ FunctionPrototypeCall(storeHTTPOptions, this, opts);
+ FunctionPrototypeCall(tls.Server, this,
+ {
+ noDelay: true,
+ ALPNProtocols,
+ ...opts,
+ },
+ _connectionListener);
+
+ this.httpAllowHalfOpen = false;
+
+ if (requestListener) {
+ this.addListener('request', requestListener);
+ }
+
+ this.addListener('tlsClientError', function addListener(err, conn) {
+ if (!this.emit('clientError', err, conn))
+ conn.destroy(err);
+ });
+
+ this.timeout = 0;
+ this.maxHeadersCount = null;
+ this.on('listening', setupConnectionsTracking);
+}
+
+ObjectSetPrototypeOf(Server.prototype, tls.Server.prototype);
+ObjectSetPrototypeOf(Server, tls.Server);
+
+Server.prototype.closeAllConnections = HttpServer.prototype.closeAllConnections;
+
+Server.prototype.closeIdleConnections = HttpServer.prototype.closeIdleConnections;
+
+Server.prototype.setTimeout = HttpServer.prototype.setTimeout;
+
+Server.prototype.close = function close() {
+ httpServerPreClose(this);
+ ReflectApply(tls.Server.prototype.close, this, arguments);
+ return this;
+};
+
+Server.prototype[SymbolAsyncDispose] = async function() {
+ await FunctionPrototypeCall(promisify(this.close), this);
+};
+
+/**
+ * Creates a new `https.Server` instance.
+ * @param {{
+ * IncomingMessage?: IncomingMessage;
+ * ServerResponse?: ServerResponse;
+ * insecureHTTPParser?: boolean;
+ * maxHeaderSize?: number;
+ * }} [opts]
+ * @param {Function} [requestListener]
+ * @returns {Server}
+ */
+function createServer(opts, requestListener) {
+ return new Server(opts, requestListener);
+}
+
+// When proxying a HTTPS request, the following needs to be done:
+// https://datatracker.ietf.org/doc/html/rfc9110#CONNECT
+// 1. Send a CONNECT request to the proxy server.
+// 2. Wait for 200 connection established response to establish the tunnel.
+// 3. Perform TLS handshake with the endpoint over the socket.
+// 4. Tunnel the request using the established connection.
+//
+// This function computes the tunnel configuration for HTTPS requests.
+// The handling of the tunnel connection is done in createConnection.
+function getTunnelConfigForProxiedHttps(agent, reqOptions) {
+ if (!agent[kProxyConfig]) {
+ return null;
+ }
+ if ((reqOptions.protocol || agent.protocol) !== 'https:') {
+ return null;
+ }
+ const shouldUseProxy = checkShouldUseProxy(agent[kProxyConfig], reqOptions);
+ debug(`getTunnelConfigForProxiedHttps should use proxy for ${reqOptions.host}:${reqOptions.port}:`, shouldUseProxy);
+ if (!shouldUseProxy) {
+ return null;
+ }
+ const { auth, href } = agent[kProxyConfig];
+ // The request is a HTTPS request, assemble the payload for establishing the tunnel.
+ const ipType = isIP(reqOptions.host);
+ // The request target must put IPv6 address in square brackets.
+ // Here reqOptions is already processed by urlToHttpOptions so we'll add them back if necessary.
+ // See https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2
+ const requestHost = ipType === 6 ? `[${reqOptions.host}]` : reqOptions.host;
+ const requestPort = reqOptions.port || agent.defaultPort;
+ const endpoint = `${requestHost}:${requestPort}`;
+ // The ClientRequest constructor should already have validated the host and the port.
+ // When the request options come from a string invalid characters would be stripped away,
+ // when it's an object ERR_INVALID_CHAR would be thrown. Here we just assert in case
+ // agent.createConnection() is called with invalid options.
+ assert(!endpoint.includes('\r'));
+ assert(!endpoint.includes('\n'));
+
+ let payload = `CONNECT ${endpoint} HTTP/1.1\r\n`;
+ // The parseProxyConfigFromEnv() method should have already validated the authorization header
+ // value.
+ if (auth) {
+ payload += `proxy-authorization: ${auth}\r\n`;
+ }
+ if (agent.keepAlive || agent.maxSockets !== Infinity) {
+ payload += 'proxy-connection: keep-alive\r\n';
+ }
+ payload += `host: ${endpoint}`;
+ payload += '\r\n\r\n';
+
+ const result = {
+ __proto__: null,
+ proxyTunnelPayload: payload,
+ requestOptions: { // Options used for the request sent after the tunnel is established.
+ __proto__: null,
+ servername: reqOptions.servername || ipType ? undefined : reqOptions.host,
+ ...reqOptions,
+ },
+ };
+ debug(`updated request for HTTPS proxy ${href} with`, result);
+ return result;
+};
+
+function establishTunnel(agent, socket, options, tunnelConfig, afterSocket) {
+ const { proxyTunnelPayload } = tunnelConfig;
+ // By default, the socket is in paused mode. Read to look for the 200
+ // connection established response.
+ function read() {
+ let chunk;
+ while ((chunk = socket.read()) !== null) {
+ if (onProxyData(chunk) !== -1) {
+ break;
+ }
+ }
+ socket.on('readable', read);
+ }
+
+ function cleanup() {
+ socket.removeListener('end', onProxyEnd);
+ socket.removeListener('error', onProxyError);
+ socket.removeListener('readable', read);
+ socket.setTimeout(0); // Clear the timeout for the tunnel establishment.
+ }
+
+ function onProxyError(err) {
+ debug('onProxyError', err);
+ cleanup();
+ afterSocket(err, socket);
+ }
+
+ // Read the headers from the chunks and check for the status code. If it fails we
+ // clean up the socket and return an error. Otherwise we establish the tunnel.
+ let buffer = '';
+ function onProxyData(chunk) {
+ const str = chunk.toString();
+ debug('onProxyData', str);
+ buffer += str;
+ const headerEndIndex = buffer.indexOf('\r\n\r\n');
+ if (headerEndIndex === -1) return headerEndIndex;
+ const statusLine = buffer.substring(0, buffer.indexOf('\r\n'));
+ const statusCode = statusLine.split(' ')[1];
+ if (statusCode !== '200') {
+ debug(`onProxyData receives ${statusCode}, cleaning up`);
+ cleanup();
+ const targetHost = proxyTunnelPayload.split('\r')[0].split(' ')[1];
+ const message = `Failed to establish tunnel to ${targetHost} via ${agent[kProxyConfig].href}: ${statusLine}`;
+ const err = new ERR_PROXY_TUNNEL(message);
+ err.statusCode = NumberParseInt(statusCode);
+ afterSocket(err, socket);
+ } else {
+ // https://datatracker.ietf.org/doc/html/rfc9110#CONNECT
+ // RFC 9110 says that it can be 2xx but in the real world, proxy clients generally only
+ // accepts 200.
+ // Proxy servers are not supposed to send anything after the headers - the payload must be
+ // be empty. So after this point we will proceed with the tunnel e.g. starting TLS handshake.
+ debug('onProxyData receives 200, establishing tunnel');
+ cleanup();
+
+ // Reuse the tunneled socket to perform the TLS handshake with the endpoint,
+ // then send the request.
+ const { requestOptions } = tunnelConfig;
+ tunnelConfig.requestOptions = null;
+ requestOptions.socket = socket;
+ let tunneldSocket;
+ const onTLSHandshakeError = (err) => {
+ debug('Propagate error event from tunneled socket to tunnel socket');
+ afterSocket(err, tunneldSocket);
+ };
+ tunneldSocket = tls.connect(requestOptions, () => {
+ debug('TLS handshake over tunnel succeeded');
+ tunneldSocket.removeListener('error', onTLSHandshakeError);
+ afterSocket(null, tunneldSocket);
+ });
+ tunneldSocket.on('free', () => {
+ debug('Propagate free event from tunneled socket to tunnel socket');
+ socket.emit('free');
+ });
+ tunneldSocket.on('error', onTLSHandshakeError);
+ }
+ return headerEndIndex;
+ }
+
+ function onProxyEnd() {
+ cleanup();
+ const err = new ERR_PROXY_TUNNEL('Connection to establish proxy tunnel ended unexpectedly');
+ afterSocket(err, socket);
+ }
+
+ const proxyTunnelTimeout = tunnelConfig.requestOptions.timeout;
+ debug('proxyTunnelTimeout', proxyTunnelTimeout, options.timeout);
+ // It may be worth a separate timeout error/event.
+ // But it also makes sense to treat the tunnel establishment timeout as
+ // a normal timeout for the request.
+ function onProxyTimeout() {
+ debug('onProxyTimeout', proxyTunnelTimeout);
+ cleanup();
+ const err = new ERR_PROXY_TUNNEL(`Connection to establish proxy tunnel timed out after ${proxyTunnelTimeout}ms`);
+ err.proxyTunnelTimeout = proxyTunnelTimeout;
+ afterSocket(err, socket);
+ }
+
+ if (proxyTunnelTimeout && proxyTunnelTimeout > 0) {
+ debug('proxy tunnel setTimeout', proxyTunnelTimeout);
+ socket.setTimeout(proxyTunnelTimeout, onProxyTimeout);
+ }
+
+ socket.on('error', onProxyError);
+ socket.on('end', onProxyEnd);
+ socket.write(proxyTunnelPayload);
+
+ read();
+}
+
+// HTTPS agents.
+// See ProxyConfig in internal/http.js for how the connection should be handled
+// when the agent is configured to use a proxy server.
+function createConnection(...args) {
+ // XXX: This signature (port, host, options) is different from all the other
+ // createConnection() methods.
+ let options, cb;
+ if (args[0] !== null && typeof args[0] === 'object') {
+ options = args[0];
+ } else if (args[1] !== null && typeof args[1] === 'object') {
+ options = { ...args[1] };
+ } else if (args[2] === null || typeof args[2] !== 'object') {
+ options = {};
+ } else {
+ options = { ...args[2] };
+ }
+ if (typeof args[0] === 'number') {
+ options.port = args[0];
+ }
+ if (typeof args[1] === 'string') {
+ options.host = args[1];
+ }
+ if (typeof args[args.length - 1] === 'function') {
+ cb = args[args.length - 1];
+ }
+
+ debug('createConnection', options);
+
+ if (options._agentKey) {
+ const session = this._getSession(options._agentKey);
+ if (session) {
+ debug('reuse session for %j', options._agentKey);
+ options = {
+ session,
+ ...options,
+ };
+ }
+ }
+
+ let socket;
+ const tunnelConfig = getTunnelConfigForProxiedHttps(this, options);
+ debug(`https createConnection should use proxy for ${options.host}:${options.port}:`, tunnelConfig);
+
+ if (!tunnelConfig) {
+ socket = tls.connect(options);
+ } else {
+ const connectOptions = {
+ ...this[kProxyConfig].proxyConnectionOptions,
+ };
+ debug('Create proxy socket', connectOptions);
+ const onError = (err) => {
+ cleanupAndPropagate(err, socket);
+ };
+ const proxyTunnelTimeout = tunnelConfig.requestOptions.timeout;
+ const onTimeout = () => {
+ const err = new ERR_PROXY_TUNNEL(`Connection to establish proxy tunnel timed out after ${proxyTunnelTimeout}ms`);
+ err.proxyTunnelTimeout = proxyTunnelTimeout;
+ cleanupAndPropagate(err, socket);
+ };
+ const cleanupAndPropagate = once((err, currentSocket) => {
+ debug('cleanupAndPropagate', err);
+ socket.removeListener('error', onError);
+ socket.removeListener('timeout', onTimeout);
+ // An error occurred during tunnel establishment, in that case just destroy the socket.
+ // and propagate the error to the callback.
+
+ // When the error comes from unexpected status code, the stream is still in good shape,
+ // in that case let req.onSocket handle the destruction instead.
+ if (err && err.code === 'ERR_PROXY_TUNNEL' && !err.statusCode) {
+ socket.destroy();
+ }
+ // This error should go to:
+ // -> oncreate in Agent.prototype.createSocket
+ // -> closure in Agent.prototype.addRequest or Agent.prototype.removeSocket
+ if (cb) {
+ cb(err, currentSocket);
+ }
+ });
+ const onProxyConnection = () => {
+ socket.removeListener('error', onError);
+ establishTunnel(this, socket, options, tunnelConfig, cleanupAndPropagate);
+ };
+ if (this[kProxyConfig].protocol === 'http:') {
+ socket = net.connect(connectOptions, onProxyConnection);
+ } else {
+ socket = tls.connect(connectOptions, onProxyConnection);
+ }
+
+ socket.on('error', onError);
+ if (proxyTunnelTimeout) {
+ socket.setTimeout(proxyTunnelTimeout, onTimeout);
+ }
+ socket[kWaitForProxyTunnel] = true;
+ }
+
+ if (options._agentKey) {
+ // Cache new session for reuse
+ socket.on('session', (session) => {
+ this._cacheSession(options._agentKey, session);
+ });
+
+ // Evict session on error
+ socket.once('close', (err) => {
+ if (err)
+ this._evictSession(options._agentKey);
+ });
+ }
+
+ return socket;
+}
+
+/**
+ * Creates a new `HttpAgent` instance.
+ * @param {{
+ * keepAlive?: boolean;
+ * keepAliveMsecs?: number;
+ * maxSockets?: number;
+ * maxTotalSockets?: number;
+ * maxFreeSockets?: number;
+ * scheduling?: string;
+ * timeout?: number;
+ * maxCachedSessions?: number;
+ * servername?: string;
+ * defaultPort?: number;
+ * protocol?: string;
+ * proxyEnv?: object;
+ * }} [options]
+ * @class
+ */
+function Agent(options) {
+ if (!(this instanceof Agent))
+ return new Agent(options);
+
+ options = { __proto__: null, ...options };
+ options.defaultPort ??= 443;
+ options.protocol ??= 'https:';
+ FunctionPrototypeCall(HttpAgent, this, options);
+
+ this.maxCachedSessions = this.options.maxCachedSessions;
+ if (this.maxCachedSessions === undefined)
+ this.maxCachedSessions = 100;
+
+ this._sessionCache = {
+ map: {},
+ list: [],
+ };
+}
+ObjectSetPrototypeOf(Agent.prototype, HttpAgent.prototype);
+ObjectSetPrototypeOf(Agent, HttpAgent);
+Agent.prototype.createConnection = createConnection;
+
+/**
+ * Gets a unique name for a set of options.
+ * @param {{
+ * host: string;
+ * port: number;
+ * localAddress: string;
+ * family: number;
+ * }} [options]
+ * @returns {string}
+ */
+Agent.prototype.getName = function getName(options = kEmptyObject) {
+ let name = FunctionPrototypeCall(HttpAgent.prototype.getName, this, options);
+
+ name += ':';
+ if (options.ca)
+ name += options.ca;
+
+ name += ':';
+ if (options.cert)
+ name += options.cert;
+
+ name += ':';
+ if (options.clientCertEngine)
+ name += options.clientCertEngine;
+
+ name += ':';
+ if (options.ciphers)
+ name += options.ciphers;
+
+ name += ':';
+ if (options.key)
+ name += options.key;
+
+ name += ':';
+ if (options.pfx)
+ name += options.pfx;
+
+ name += ':';
+ if (options.rejectUnauthorized !== undefined)
+ name += options.rejectUnauthorized;
+
+ name += ':';
+ if (options.servername && options.servername !== options.host)
+ name += options.servername;
+
+ name += ':';
+ if (options.minVersion)
+ name += options.minVersion;
+
+ name += ':';
+ if (options.maxVersion)
+ name += options.maxVersion;
+
+ name += ':';
+ if (options.secureProtocol)
+ name += options.secureProtocol;
+
+ name += ':';
+ if (options.crl)
+ name += options.crl;
+
+ name += ':';
+ if (options.honorCipherOrder !== undefined)
+ name += options.honorCipherOrder;
+
+ name += ':';
+ if (options.ecdhCurve)
+ name += options.ecdhCurve;
+
+ name += ':';
+ if (options.dhparam)
+ name += options.dhparam;
+
+ name += ':';
+ if (options.secureOptions !== undefined)
+ name += options.secureOptions;
+
+ name += ':';
+ if (options.sessionIdContext)
+ name += options.sessionIdContext;
+
+ name += ':';
+ if (options.sigalgs)
+ name += JSONStringify(options.sigalgs);
+
+ name += ':';
+ if (options.privateKeyIdentifier)
+ name += options.privateKeyIdentifier;
+
+ name += ':';
+ if (options.privateKeyEngine)
+ name += options.privateKeyEngine;
+
+ return name;
+};
+
+Agent.prototype._getSession = function _getSession(key) {
+ return this._sessionCache.map[key];
+};
+
+Agent.prototype._cacheSession = function _cacheSession(key, session) {
+ // Cache is disabled
+ if (this.maxCachedSessions === 0)
+ return;
+
+ // Fast case - update existing entry
+ if (this._sessionCache.map[key]) {
+ this._sessionCache.map[key] = session;
+ return;
+ }
+
+ // Put new entry
+ if (this._sessionCache.list.length >= this.maxCachedSessions) {
+ const oldKey = ArrayPrototypeShift(this._sessionCache.list);
+ debug('evicting %j', oldKey);
+ delete this._sessionCache.map[oldKey];
+ }
+
+ ArrayPrototypePush(this._sessionCache.list, key);
+ this._sessionCache.map[key] = session;
+};
+
+Agent.prototype._evictSession = function _evictSession(key) {
+ const index = ArrayPrototypeIndexOf(this._sessionCache.list, key);
+ if (index === -1)
+ return;
+
+ ArrayPrototypeSplice(this._sessionCache.list, index, 1);
+ delete this._sessionCache.map[key];
+};
+
+const globalAgent = new Agent({
+ keepAlive: true, scheduling: 'lifo', timeout: 5000,
+ // This normalized from both --use-env-proxy and NODE_USE_ENV_PROXY settings.
+ proxyEnv: getOptionValue('--use-env-proxy') ? filterEnvForProxies(process.env) : undefined,
+});
+
+/**
+ * Makes a request to a secure web server.
+ * @param {...any} args
+ * @returns {ClientRequest}
+ */
+function request(...args) {
+ let options = {};
+
+ if (typeof args[0] === 'string') {
+ const urlStr = ArrayPrototypeShift(args);
+ options = urlToHttpOptions(new URL(urlStr));
+ } else if (isURL(args[0])) {
+ options = urlToHttpOptions(ArrayPrototypeShift(args));
+ }
+
+ if (args[0] && typeof args[0] !== 'function') {
+ ObjectAssign(options, ArrayPrototypeShift(args));
+ }
+
+ options._defaultAgent = module.exports.globalAgent;
+ ArrayPrototypeUnshift(args, options);
+
+ return ReflectConstruct(ClientRequest, args);
+}
+
+/**
+ * Makes a GET request to a secure web server.
+ * @param {string | URL} input
+ * @param {{
+ * agent?: Agent | boolean;
+ * auth?: string;
+ * createConnection?: Function;
+ * defaultPort?: number;
+ * family?: number;
+ * headers?: object;
+ * hints?: number;
+ * host?: string;
+ * hostname?: string;
+ * insecureHTTPParser?: boolean;
+ * joinDuplicateHeaders?: boolean;
+ * localAddress?: string;
+ * localPort?: number;
+ * lookup?: Function;
+ * maxHeaderSize?: number;
+ * method?: string;
+ * path?: string;
+ * port?: number;
+ * protocol?: string;
+ * setHost?: boolean;
+ * socketPath?: string;
+ * timeout?: number;
+ * signal?: AbortSignal;
+ * uniqueHeaders?: Array;
+ * } | string | URL} [options]
+ * @param {Function} [cb]
+ * @returns {ClientRequest}
+ */
+function get(input, options, cb) {
+ const req = request(input, options, cb);
+ req.end();
+ return req;
+}
+
+module.exports = {
+ Agent,
+ globalAgent,
+ Server,
+ createServer,
+ get,
+ request,
+};
\ No newline at end of file
diff --git a/.idx/node/section-links.js b/.idx/node/section-links.js
new file mode 100644
index 0000000..b774af1
--- /dev/null
+++ b/.idx/node/section-links.js
@@ -0,0 +1,125 @@
+'use strict';
+
+const {
+ ArrayBufferIsView,
+ ObjectDefineProperties,
+ Symbol,
+ TypedArrayPrototypeSubarray,
+} = primordials;
+
+const { Buffer } = require('buffer');
+const {
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd,
+ kMissingBytes,
+ kBufferedBytes,
+ kEncodingField,
+ kSize,
+ decode,
+ flush,
+} = internalBinding('string_decoder');
+const {
+ encodingsMap,
+ normalizeEncoding,
+} = require('internal/util');
+const {
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_THIS,
+ ERR_UNKNOWN_ENCODING,
+} = require('internal/errors').codes;
+
+const kNativeDecoder = Symbol('kNativeDecoder');
+
+/**
+ * StringDecoder provides an interface for efficiently splitting a series of
+ * buffers into a series of JS strings without breaking apart multibyte
+ * characters.
+ * @param {string} [encoding]
+ */
+function StringDecoder(encoding) {
+ this.encoding = normalizeEncoding(encoding);
+ if (this.encoding === undefined) {
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+ this[kNativeDecoder] = Buffer.alloc(kSize);
+ this[kNativeDecoder][kEncodingField] = encodingsMap[this.encoding];
+}
+
+/**
+ * Returns a decoded string, omitting any incomplete multi-bytes
+ * characters at the end of the Buffer, or TypedArray, or DataView
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @returns {string}
+ * @throws {TypeError} Throws when buf is not in one of supported types
+ */
+StringDecoder.prototype.write = function write(buf) {
+ if (typeof buf === 'string')
+ return buf;
+ if (!ArrayBufferIsView(buf))
+ throw new ERR_INVALID_ARG_TYPE('buf',
+ ['Buffer', 'TypedArray', 'DataView'],
+ buf);
+ if (!this[kNativeDecoder]) {
+ throw new ERR_INVALID_THIS('StringDecoder');
+ }
+ return decode(this[kNativeDecoder], buf);
+};
+
+/**
+ * Returns any remaining input stored in the internal buffer as a string.
+ * After end() is called, the stringDecoder object can be reused for new
+ * input.
+ * @param {string | Buffer | TypedArray | DataView} [buf]
+ * @returns {string}
+ */
+StringDecoder.prototype.end = function end(buf) {
+ const ret = buf === undefined ? '' : this.write(buf);
+ if (this[kNativeDecoder][kBufferedBytes] > 0)
+ return ret + flush(this[kNativeDecoder]);
+ return ret;
+};
+
+/* Everything below this line is undocumented legacy stuff. */
+/**
+ *
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @param {number} offset
+ * @returns {string}
+ */
+StringDecoder.prototype.text = function text(buf, offset) {
+ this[kNativeDecoder][kMissingBytes] = 0;
+ this[kNativeDecoder][kBufferedBytes] = 0;
+ return this.write(buf.slice(offset));
+};
+
+ObjectDefineProperties(StringDecoder.prototype, {
+ lastChar: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return TypedArrayPrototypeSubarray(this[kNativeDecoder],
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd);
+ },
+ },
+ lastNeed: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kMissingBytes];
+ },
+ },
+ lastTotal: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kBufferedBytes] +
+ this[kNativeDecoder][kMissingBytes];
+ },
+ },
+});
+
+exports.StringDecoder = StringDecoder;
\ No newline at end of file
diff --git a/.idx/node/string_decoder.js b/.idx/node/string_decoder.js
new file mode 100644
index 0000000..b774af1
--- /dev/null
+++ b/.idx/node/string_decoder.js
@@ -0,0 +1,125 @@
+'use strict';
+
+const {
+ ArrayBufferIsView,
+ ObjectDefineProperties,
+ Symbol,
+ TypedArrayPrototypeSubarray,
+} = primordials;
+
+const { Buffer } = require('buffer');
+const {
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd,
+ kMissingBytes,
+ kBufferedBytes,
+ kEncodingField,
+ kSize,
+ decode,
+ flush,
+} = internalBinding('string_decoder');
+const {
+ encodingsMap,
+ normalizeEncoding,
+} = require('internal/util');
+const {
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_THIS,
+ ERR_UNKNOWN_ENCODING,
+} = require('internal/errors').codes;
+
+const kNativeDecoder = Symbol('kNativeDecoder');
+
+/**
+ * StringDecoder provides an interface for efficiently splitting a series of
+ * buffers into a series of JS strings without breaking apart multibyte
+ * characters.
+ * @param {string} [encoding]
+ */
+function StringDecoder(encoding) {
+ this.encoding = normalizeEncoding(encoding);
+ if (this.encoding === undefined) {
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+ this[kNativeDecoder] = Buffer.alloc(kSize);
+ this[kNativeDecoder][kEncodingField] = encodingsMap[this.encoding];
+}
+
+/**
+ * Returns a decoded string, omitting any incomplete multi-bytes
+ * characters at the end of the Buffer, or TypedArray, or DataView
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @returns {string}
+ * @throws {TypeError} Throws when buf is not in one of supported types
+ */
+StringDecoder.prototype.write = function write(buf) {
+ if (typeof buf === 'string')
+ return buf;
+ if (!ArrayBufferIsView(buf))
+ throw new ERR_INVALID_ARG_TYPE('buf',
+ ['Buffer', 'TypedArray', 'DataView'],
+ buf);
+ if (!this[kNativeDecoder]) {
+ throw new ERR_INVALID_THIS('StringDecoder');
+ }
+ return decode(this[kNativeDecoder], buf);
+};
+
+/**
+ * Returns any remaining input stored in the internal buffer as a string.
+ * After end() is called, the stringDecoder object can be reused for new
+ * input.
+ * @param {string | Buffer | TypedArray | DataView} [buf]
+ * @returns {string}
+ */
+StringDecoder.prototype.end = function end(buf) {
+ const ret = buf === undefined ? '' : this.write(buf);
+ if (this[kNativeDecoder][kBufferedBytes] > 0)
+ return ret + flush(this[kNativeDecoder]);
+ return ret;
+};
+
+/* Everything below this line is undocumented legacy stuff. */
+/**
+ *
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @param {number} offset
+ * @returns {string}
+ */
+StringDecoder.prototype.text = function text(buf, offset) {
+ this[kNativeDecoder][kMissingBytes] = 0;
+ this[kNativeDecoder][kBufferedBytes] = 0;
+ return this.write(buf.slice(offset));
+};
+
+ObjectDefineProperties(StringDecoder.prototype, {
+ lastChar: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return TypedArrayPrototypeSubarray(this[kNativeDecoder],
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd);
+ },
+ },
+ lastNeed: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kMissingBytes];
+ },
+ },
+ lastTotal: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kBufferedBytes] +
+ this[kNativeDecoder][kMissingBytes];
+ },
+ },
+});
+
+exports.StringDecoder = StringDecoder;
\ No newline at end of file
diff --git a/.idx/node/task_processor.js b/.idx/node/task_processor.js
new file mode 100644
index 0000000..b774af1
--- /dev/null
+++ b/.idx/node/task_processor.js
@@ -0,0 +1,125 @@
+'use strict';
+
+const {
+ ArrayBufferIsView,
+ ObjectDefineProperties,
+ Symbol,
+ TypedArrayPrototypeSubarray,
+} = primordials;
+
+const { Buffer } = require('buffer');
+const {
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd,
+ kMissingBytes,
+ kBufferedBytes,
+ kEncodingField,
+ kSize,
+ decode,
+ flush,
+} = internalBinding('string_decoder');
+const {
+ encodingsMap,
+ normalizeEncoding,
+} = require('internal/util');
+const {
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_THIS,
+ ERR_UNKNOWN_ENCODING,
+} = require('internal/errors').codes;
+
+const kNativeDecoder = Symbol('kNativeDecoder');
+
+/**
+ * StringDecoder provides an interface for efficiently splitting a series of
+ * buffers into a series of JS strings without breaking apart multibyte
+ * characters.
+ * @param {string} [encoding]
+ */
+function StringDecoder(encoding) {
+ this.encoding = normalizeEncoding(encoding);
+ if (this.encoding === undefined) {
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ }
+ this[kNativeDecoder] = Buffer.alloc(kSize);
+ this[kNativeDecoder][kEncodingField] = encodingsMap[this.encoding];
+}
+
+/**
+ * Returns a decoded string, omitting any incomplete multi-bytes
+ * characters at the end of the Buffer, or TypedArray, or DataView
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @returns {string}
+ * @throws {TypeError} Throws when buf is not in one of supported types
+ */
+StringDecoder.prototype.write = function write(buf) {
+ if (typeof buf === 'string')
+ return buf;
+ if (!ArrayBufferIsView(buf))
+ throw new ERR_INVALID_ARG_TYPE('buf',
+ ['Buffer', 'TypedArray', 'DataView'],
+ buf);
+ if (!this[kNativeDecoder]) {
+ throw new ERR_INVALID_THIS('StringDecoder');
+ }
+ return decode(this[kNativeDecoder], buf);
+};
+
+/**
+ * Returns any remaining input stored in the internal buffer as a string.
+ * After end() is called, the stringDecoder object can be reused for new
+ * input.
+ * @param {string | Buffer | TypedArray | DataView} [buf]
+ * @returns {string}
+ */
+StringDecoder.prototype.end = function end(buf) {
+ const ret = buf === undefined ? '' : this.write(buf);
+ if (this[kNativeDecoder][kBufferedBytes] > 0)
+ return ret + flush(this[kNativeDecoder]);
+ return ret;
+};
+
+/* Everything below this line is undocumented legacy stuff. */
+/**
+ *
+ * @param {string | Buffer | TypedArray | DataView} buf
+ * @param {number} offset
+ * @returns {string}
+ */
+StringDecoder.prototype.text = function text(buf, offset) {
+ this[kNativeDecoder][kMissingBytes] = 0;
+ this[kNativeDecoder][kBufferedBytes] = 0;
+ return this.write(buf.slice(offset));
+};
+
+ObjectDefineProperties(StringDecoder.prototype, {
+ lastChar: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return TypedArrayPrototypeSubarray(this[kNativeDecoder],
+ kIncompleteCharactersStart,
+ kIncompleteCharactersEnd);
+ },
+ },
+ lastNeed: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kMissingBytes];
+ },
+ },
+ lastTotal: {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return this[kNativeDecoder][kBufferedBytes] +
+ this[kNativeDecoder][kMissingBytes];
+ },
+ },
+});
+
+exports.StringDecoder = StringDecoder;
\ No newline at end of file
diff --git a/.idx/node/tls.js b/.idx/node/tls.js
new file mode 100644
index 0000000..6cd6b26
--- /dev/null
+++ b/.idx/node/tls.js
@@ -0,0 +1,405 @@
+'use strict';
+
+const {
+ Array,
+ ArrayIsArray,
+ // eslint-disable-next-line no-restricted-syntax
+ ArrayPrototypePush,
+ JSONParse,
+ ObjectDefineProperty,
+ ObjectFreeze,
+ StringFromCharCode,
+} = primordials;
+
+const {
+ ERR_TLS_CERT_ALTNAME_FORMAT,
+ ERR_TLS_CERT_ALTNAME_INVALID,
+ ERR_OUT_OF_RANGE,
+ ERR_INVALID_ARG_VALUE,
+ ERR_INVALID_ARG_TYPE,
+} = require('internal/errors').codes;
+const internalUtil = require('internal/util');
+internalUtil.assertCrypto();
+const {
+ isArrayBufferView,
+ isUint8Array,
+} = require('internal/util/types');
+
+const net = require('net');
+const { getOptionValue } = require('internal/options');
+const {
+ getBundledRootCertificates,
+ getExtraCACertificates,
+ getSystemCACertificates,
+ resetRootCertStore,
+ getUserRootCertificates,
+ getSSLCiphers,
+} = internalBinding('crypto');
+const { Buffer } = require('buffer');
+const { canonicalizeIP } = internalBinding('cares_wrap');
+const _tls_common = require('_tls_common');
+const _tls_wrap = require('_tls_wrap');
+const { validateString } = require('internal/validators');
+
+// Allow {CLIENT_RENEG_LIMIT} client-initiated session renegotiations
+// every {CLIENT_RENEG_WINDOW} seconds. An error event is emitted if more
+// renegotiations are seen. The settings are applied to all remote client
+// connections.
+exports.CLIENT_RENEG_LIMIT = 3;
+exports.CLIENT_RENEG_WINDOW = 600;
+
+exports.DEFAULT_CIPHERS = getOptionValue('--tls-cipher-list');
+
+exports.DEFAULT_ECDH_CURVE = 'auto';
+
+if (getOptionValue('--tls-min-v1.0'))
+ exports.DEFAULT_MIN_VERSION = 'TLSv1';
+else if (getOptionValue('--tls-min-v1.1'))
+ exports.DEFAULT_MIN_VERSION = 'TLSv1.1';
+else if (getOptionValue('--tls-min-v1.2'))
+ exports.DEFAULT_MIN_VERSION = 'TLSv1.2';
+else if (getOptionValue('--tls-min-v1.3'))
+ exports.DEFAULT_MIN_VERSION = 'TLSv1.3';
+else
+ exports.DEFAULT_MIN_VERSION = 'TLSv1.2';
+
+if (getOptionValue('--tls-max-v1.3'))
+ exports.DEFAULT_MAX_VERSION = 'TLSv1.3';
+else if (getOptionValue('--tls-max-v1.2'))
+ exports.DEFAULT_MAX_VERSION = 'TLSv1.2';
+else
+ exports.DEFAULT_MAX_VERSION = 'TLSv1.3'; // Will depend on node version.
+
+
+exports.getCiphers = internalUtil.cachedResult(
+ () => internalUtil.filterDuplicateStrings(getSSLCiphers(), true),
+);
+
+let bundledRootCertificates;
+function cacheBundledRootCertificates() {
+ bundledRootCertificates ||= ObjectFreeze(getBundledRootCertificates());
+
+ return bundledRootCertificates;
+}
+
+ObjectDefineProperty(exports, 'rootCertificates', {
+ __proto__: null,
+ configurable: false,
+ enumerable: true,
+ get: cacheBundledRootCertificates,
+});
+
+let extraCACertificates;
+function cacheExtraCACertificates() {
+ extraCACertificates ||= ObjectFreeze(getExtraCACertificates());
+
+ return extraCACertificates;
+}
+
+let systemCACertificates;
+function cacheSystemCACertificates() {
+ systemCACertificates ||= ObjectFreeze(getSystemCACertificates());
+
+ return systemCACertificates;
+}
+
+let defaultCACertificates;
+let hasResetDefaultCACertificates = false;
+
+function cacheDefaultCACertificates() {
+ if (defaultCACertificates) { return defaultCACertificates; }
+
+ if (hasResetDefaultCACertificates) {
+ defaultCACertificates = getUserRootCertificates();
+ ObjectFreeze(defaultCACertificates);
+ return defaultCACertificates;
+ }
+
+ defaultCACertificates = [];
+
+ if (!getOptionValue('--use-openssl-ca')) {
+ const bundled = cacheBundledRootCertificates();
+ for (let i = 0; i < bundled.length; ++i) {
+ ArrayPrototypePush(defaultCACertificates, bundled[i]);
+ }
+ if (getOptionValue('--use-system-ca')) {
+ const system = cacheSystemCACertificates();
+ for (let i = 0; i < system.length; ++i) {
+
+ ArrayPrototypePush(defaultCACertificates, system[i]);
+ }
+ }
+ }
+
+ if (process.env.NODE_EXTRA_CA_CERTS) {
+ const extra = cacheExtraCACertificates();
+ for (let i = 0; i < extra.length; ++i) {
+
+ ArrayPrototypePush(defaultCACertificates, extra[i]);
+ }
+ }
+
+ ObjectFreeze(defaultCACertificates);
+ return defaultCACertificates;
+}
+
+// TODO(joyeecheung): support X509Certificate output?
+function getCACertificates(type = 'default') {
+ validateString(type, 'type');
+
+ switch (type) {
+ case 'default':
+ return cacheDefaultCACertificates();
+ case 'bundled':
+ return cacheBundledRootCertificates();
+ case 'system':
+ return cacheSystemCACertificates();
+ case 'extra':
+ return cacheExtraCACertificates();
+ default:
+ throw new ERR_INVALID_ARG_VALUE('type', type);
+ }
+}
+exports.getCACertificates = getCACertificates;
+
+function setDefaultCACertificates(certs) {
+ if (!ArrayIsArray(certs)) {
+ throw new ERR_INVALID_ARG_TYPE('certs', 'Array', certs);
+ }
+
+ // Verify that all elements in the array are strings
+ for (let i = 0; i < certs.length; i++) {
+ if (typeof certs[i] !== 'string' && !isArrayBufferView(certs[i])) {
+ throw new ERR_INVALID_ARG_TYPE(
+ `certs[${i}]`, ['string', 'ArrayBufferView'], certs[i]);
+ }
+ }
+
+ resetRootCertStore(certs);
+ defaultCACertificates = undefined; // Reset the cached default certificates
+ hasResetDefaultCACertificates = true;
+}
+
+exports.setDefaultCACertificates = setDefaultCACertificates;
+
+// Convert protocols array into valid OpenSSL protocols list
+// ("\x06spdy/2\x08http/1.1\x08http/1.0")
+function convertProtocols(protocols) {
+ const lens = new Array(protocols.length);
+ const buff = Buffer.allocUnsafe(protocols.reduce((p, c, i) => {
+ const len = Buffer.byteLength(c);
+ if (len > 255) {
+ throw new ERR_OUT_OF_RANGE('The byte length of the protocol at index ' +
+ `${i} exceeds the maximum length.`, '<= 255', len, true);
+ }
+ lens[i] = len;
+ return p + 1 + len;
+ }, 0));
+
+ let offset = 0;
+ for (let i = 0, c = protocols.length; i < c; i++) {
+ buff[offset++] = lens[i];
+ buff.write(protocols[i], offset);
+ offset += lens[i];
+ }
+
+ return buff;
+}
+
+exports.convertALPNProtocols = function convertALPNProtocols(protocols, out) {
+ // If protocols is Array - translate it into buffer
+ if (ArrayIsArray(protocols)) {
+ out.ALPNProtocols = convertProtocols(protocols);
+ } else if (isUint8Array(protocols)) {
+ // Copy new buffer not to be modified by user.
+ out.ALPNProtocols = Buffer.from(protocols);
+ } else if (isArrayBufferView(protocols)) {
+ out.ALPNProtocols = Buffer.from(protocols.buffer.slice(
+ protocols.byteOffset,
+ protocols.byteOffset + protocols.byteLength,
+ ));
+ }
+};
+
+function unfqdn(host) {
+ return host.replace(/[.]$/, '');
+}
+
+// String#toLowerCase() is locale-sensitive so we use
+// a conservative version that only lowercases A-Z.
+function toLowerCase(c) {
+ return StringFromCharCode(32 + c.charCodeAt(0));
+}
+
+function splitHost(host) {
+ return unfqdn(host).replace(/[A-Z]/g, toLowerCase).split('.');
+}
+
+function check(hostParts, pattern, wildcards) {
+ // Empty strings, null, undefined, etc. never match.
+ if (!pattern)
+ return false;
+
+ const patternParts = splitHost(pattern);
+
+ if (hostParts.length !== patternParts.length)
+ return false;
+
+ // Pattern has empty components, e.g. "bad..example.com".
+ if (patternParts.includes(''))
+ return false;
+
+ // RFC 6125 allows IDNA U-labels (Unicode) in names but we have no
+ // good way to detect their encoding or normalize them so we simply
+ // reject them. Control characters and blanks are rejected as well
+ // because nothing good can come from accepting them.
+ const isBad = (s) => /[^\u0021-\u007F]/u.test(s);
+ if (patternParts.some(isBad))
+ return false;
+
+ // Check host parts from right to left first.
+ for (let i = hostParts.length - 1; i > 0; i -= 1) {
+ if (hostParts[i] !== patternParts[i])
+ return false;
+ }
+
+ const hostSubdomain = hostParts[0];
+ const patternSubdomain = patternParts[0];
+ const patternSubdomainParts = patternSubdomain.split('*', 3);
+
+ // Short-circuit when the subdomain does not contain a wildcard.
+ // RFC 6125 does not allow wildcard substitution for components
+ // containing IDNA A-labels (Punycode) so match those verbatim.
+ if (patternSubdomainParts.length === 1 ||
+ patternSubdomain.includes('xn--'))
+ return hostSubdomain === patternSubdomain;
+
+ if (!wildcards)
+ return false;
+
+ // More than one wildcard is always wrong.
+ if (patternSubdomainParts.length > 2)
+ return false;
+
+ // *.tld wildcards are not allowed.
+ if (patternParts.length <= 2)
+ return false;
+
+ const { 0: prefix, 1: suffix } = patternSubdomainParts;
+
+ if (prefix.length + suffix.length > hostSubdomain.length)
+ return false;
+
+ if (!hostSubdomain.startsWith(prefix))
+ return false;
+
+ if (!hostSubdomain.endsWith(suffix))
+ return false;
+
+ return true;
+}
+
+// This pattern is used to determine the length of escaped sequences within
+// the subject alt names string. It allows any valid JSON string literal.
+// This MUST match the JSON specification (ECMA-404 / RFC8259) exactly.
+const jsonStringPattern =
+ // eslint-disable-next-line no-control-regex
+ /^"(?:[^"\\\u0000-\u001f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*"/;
+
+function splitEscapedAltNames(altNames) {
+ const result = [];
+ let currentToken = '';
+ let offset = 0;
+ while (offset !== altNames.length) {
+ const nextSep = altNames.indexOf(',', offset);
+ const nextQuote = altNames.indexOf('"', offset);
+ if (nextQuote !== -1 && (nextSep === -1 || nextQuote < nextSep)) {
+ // There is a quote character and there is no separator before the quote.
+ currentToken += altNames.substring(offset, nextQuote);
+ const match = jsonStringPattern.exec(altNames.substring(nextQuote));
+ if (!match) {
+ throw new ERR_TLS_CERT_ALTNAME_FORMAT();
+ }
+ currentToken += JSONParse(match[0]);
+ offset = nextQuote + match[0].length;
+ } else if (nextSep !== -1) {
+ // There is a separator and no quote before it.
+ currentToken += altNames.substring(offset, nextSep);
+ result.push(currentToken);
+ currentToken = '';
+ offset = nextSep + 2;
+ } else {
+ currentToken += altNames.substring(offset);
+ offset = altNames.length;
+ }
+ }
+ result.push(currentToken);
+ return result;
+}
+
+exports.checkServerIdentity = function checkServerIdentity(hostname, cert) {
+ const subject = cert.subject;
+ const altNames = cert.subjectaltname;
+ const dnsNames = [];
+ const ips = [];
+
+ hostname = '' + hostname;
+
+ if (altNames) {
+ const splitAltNames = altNames.includes('"') ?
+ splitEscapedAltNames(altNames) :
+ altNames.split(', ');
+ splitAltNames.forEach((name) => {
+ if (name.startsWith('DNS:')) {
+ dnsNames.push(name.slice(4));
+ } else if (name.startsWith('IP Address:')) {
+ ips.push(canonicalizeIP(name.slice(11)));
+ }
+ });
+ }
+
+ let valid = false;
+ let reason = 'Unknown reason';
+
+ hostname = unfqdn(hostname); // Remove trailing dot for error messages.
+
+ if (net.isIP(hostname)) {
+ valid = ips.includes(canonicalizeIP(hostname));
+ if (!valid)
+ reason = `IP: ${hostname} is not in the cert's list: ` + ips.join(', ');
+ } else if (dnsNames.length > 0 || subject?.CN) {
+ const hostParts = splitHost(hostname);
+ const wildcard = (pattern) => check(hostParts, pattern, true);
+
+ if (dnsNames.length > 0) {
+ valid = dnsNames.some(wildcard);
+ if (!valid)
+ reason =
+ `Host: ${hostname}. is not in the cert's altnames: ${altNames}`;
+ } else {
+ // Match against Common Name only if no supported identifiers exist.
+ const cn = subject.CN;
+
+ if (ArrayIsArray(cn))
+ valid = cn.some(wildcard);
+ else if (cn)
+ valid = wildcard(cn);
+
+ if (!valid)
+ reason = `Host: ${hostname}. is not cert's CN: ${cn}`;
+ }
+ } else {
+ reason = 'Cert does not contain a DNS name';
+ }
+
+ if (!valid) {
+ return new ERR_TLS_CERT_ALTNAME_INVALID(reason, hostname, cert);
+ }
+};
+
+exports.createSecureContext = _tls_common.createSecureContext;
+exports.SecureContext = _tls_common.SecureContext;
+exports.TLSSocket = _tls_wrap.TLSSocket;
+exports.Server = _tls_wrap.Server;
+exports.createServer = _tls_wrap.createServer;
+exports.connect = _tls_wrap.connect;
\ No newline at end of file
diff --git a/.idx/node/trace_events.js b/.idx/node/trace_events.js
new file mode 100644
index 0000000..69fccaf
--- /dev/null
+++ b/.idx/node/trace_events.js
@@ -0,0 +1,75 @@
+'use strict';
+
+const {
+ ObjectAssign,
+ ObjectDefineProperty,
+} = primordials;
+
+const { test, suite, before, after, beforeEach, afterEach } = require('internal/test_runner/harness');
+const { run } = require('internal/test_runner/runner');
+
+module.exports = test;
+ObjectAssign(module.exports, {
+ after,
+ afterEach,
+ before,
+ beforeEach,
+ describe: suite,
+ it: test,
+ run,
+ suite,
+ test,
+});
+
+let lazyMock;
+
+ObjectDefineProperty(module.exports, 'mock', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ if (lazyMock === undefined) {
+ const { MockTracker } = require('internal/test_runner/mock/mock');
+
+ lazyMock = new MockTracker();
+ }
+
+ return lazyMock;
+ },
+});
+
+let lazySnapshot;
+
+ObjectDefineProperty(module.exports, 'snapshot', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ if (lazySnapshot === undefined) {
+ const {
+ setDefaultSnapshotSerializers,
+ setResolveSnapshotPath,
+ } = require('internal/test_runner/snapshot');
+
+ lazySnapshot = {
+ __proto__: null,
+ setDefaultSnapshotSerializers,
+ setResolveSnapshotPath,
+ };
+ }
+
+ return lazySnapshot;
+ },
+});
+
+ObjectDefineProperty(module.exports, 'assert', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ const { register } = require('internal/test_runner/assert');
+ const assert = { __proto__: null, register };
+ ObjectDefineProperty(module.exports, 'assert', assert);
+ return assert;
+ },
+});
\ No newline at end of file
diff --git a/.idx/node/tty.js b/.idx/node/tty.js
new file mode 100644
index 0000000..f9275fa
--- /dev/null
+++ b/.idx/node/tty.js
@@ -0,0 +1,147 @@
+'use strict';
+
+const {
+ NumberIsInteger,
+ ObjectSetPrototypeOf,
+} = primordials;
+
+const net = require('net');
+const { TTY, isTTY } = internalBinding('tty_wrap');
+const {
+ ErrnoException,
+ codes: {
+ ERR_INVALID_FD,
+ ERR_TTY_INIT_FAILED,
+ },
+} = require('internal/errors');
+const {
+ getColorDepth,
+ hasColors,
+} = require('internal/tty');
+
+// Lazy loaded for startup performance.
+let readline;
+
+function isatty(fd) {
+ return NumberIsInteger(fd) && fd >= 0 && fd <= 2147483647 &&
+ isTTY(fd);
+}
+
+function ReadStream(fd, options) {
+ if (!(this instanceof ReadStream))
+ return new ReadStream(fd, options);
+ if (fd >> 0 !== fd || fd < 0)
+ throw new ERR_INVALID_FD(fd);
+
+ const ctx = {};
+ const tty = new TTY(fd, ctx);
+ if (ctx.code !== undefined) {
+ throw new ERR_TTY_INIT_FAILED(ctx);
+ }
+
+ net.Socket.call(this, {
+ readableHighWaterMark: 0,
+ handle: tty,
+ manualStart: true,
+ ...options,
+ });
+
+ this.isRaw = false;
+ this.isTTY = true;
+}
+
+ObjectSetPrototypeOf(ReadStream.prototype, net.Socket.prototype);
+ObjectSetPrototypeOf(ReadStream, net.Socket);
+
+ReadStream.prototype.setRawMode = function(flag) {
+ flag = !!flag;
+ const err = this._handle?.setRawMode(flag);
+ if (err) {
+ this.emit('error', new ErrnoException(err, 'setRawMode'));
+ return this;
+ }
+ this.isRaw = flag;
+ return this;
+};
+
+function WriteStream(fd) {
+ if (!(this instanceof WriteStream))
+ return new WriteStream(fd);
+ if (fd >> 0 !== fd || fd < 0)
+ throw new ERR_INVALID_FD(fd);
+
+ const ctx = {};
+ const tty = new TTY(fd, ctx);
+ if (ctx.code !== undefined) {
+ throw new ERR_TTY_INIT_FAILED(ctx);
+ }
+
+ net.Socket.call(this, {
+ readableHighWaterMark: 0,
+ handle: tty,
+ manualStart: true,
+ });
+
+ // Prevents interleaved or dropped stdout/stderr output for terminals.
+ // As noted in the following reference, local TTYs tend to be quite fast and
+ // this behavior has become expected due historical functionality on OS X,
+ // even though it was originally intended to change in v1.0.2 (Libuv 1.2.1).
+ // Ref: https://github.com/nodejs/node/pull/1771#issuecomment-119351671
+ this._handle.setBlocking(true);
+
+ const winSize = [0, 0];
+ const err = this._handle.getWindowSize(winSize);
+ if (!err) {
+ this.columns = winSize[0];
+ this.rows = winSize[1];
+ }
+}
+
+ObjectSetPrototypeOf(WriteStream.prototype, net.Socket.prototype);
+ObjectSetPrototypeOf(WriteStream, net.Socket);
+
+WriteStream.prototype.isTTY = true;
+
+WriteStream.prototype.getColorDepth = getColorDepth;
+
+WriteStream.prototype.hasColors = hasColors;
+
+WriteStream.prototype._refreshSize = function() {
+ const oldCols = this.columns;
+ const oldRows = this.rows;
+ const winSize = [0, 0];
+ const err = this._handle.getWindowSize(winSize);
+ if (err) {
+ this.emit('error', new ErrnoException(err, 'getWindowSize'));
+ return;
+ }
+ const { 0: newCols, 1: newRows } = winSize;
+ if (oldCols !== newCols || oldRows !== newRows) {
+ this.columns = newCols;
+ this.rows = newRows;
+ this.emit('resize');
+ }
+};
+
+// Backwards-compat
+WriteStream.prototype.cursorTo = function(x, y, callback) {
+ if (readline === undefined) readline = require('readline');
+ return readline.cursorTo(this, x, y, callback);
+};
+WriteStream.prototype.moveCursor = function(dx, dy, callback) {
+ if (readline === undefined) readline = require('readline');
+ return readline.moveCursor(this, dx, dy, callback);
+};
+WriteStream.prototype.clearLine = function(dir, callback) {
+ if (readline === undefined) readline = require('readline');
+ return readline.clearLine(this, dir, callback);
+};
+WriteStream.prototype.clearScreenDown = function(callback) {
+ if (readline === undefined) readline = require('readline');
+ return readline.clearScreenDown(this, callback);
+};
+WriteStream.prototype.getWindowSize = function() {
+ return [this.columns, this.rows];
+};
+
+module.exports = { isatty, ReadStream, WriteStream };
\ No newline at end of file
diff --git a/.idx/node/url.js b/.idx/node/url.js
new file mode 100644
index 0000000..7e0f36e
--- /dev/null
+++ b/.idx/node/url.js
@@ -0,0 +1,1028 @@
+'use strict';
+
+const {
+ ArrayPrototypeJoin,
+ Boolean,
+ Int8Array,
+ ObjectAssign,
+ ObjectKeys,
+ StringPrototypeAt,
+ StringPrototypeCharCodeAt,
+ StringPrototypeIndexOf,
+ StringPrototypeReplaceAll,
+ StringPrototypeSlice,
+ decodeURIComponent,
+} = primordials;
+
+const { URLPattern } = internalBinding('url_pattern');
+const { toASCII } = internalBinding('encoding_binding');
+const { encodeStr, hexTable } = require('internal/querystring');
+const querystring = require('querystring');
+
+const {
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_URL,
+} = require('internal/errors').codes;
+const {
+ validateString,
+ validateObject,
+} = require('internal/validators');
+
+// This ensures setURLConstructor() is called before the native
+// URL::ToObject() method is used.
+const { spliceOne } = require('internal/util');
+const { isInsideNodeModules } = internalBinding('util');
+
+// WHATWG URL implementation provided by internal/url
+const {
+ URL,
+ URLSearchParams,
+ domainToASCII,
+ domainToUnicode,
+ fileURLToPath,
+ fileURLToPathBuffer,
+ pathToFileURL: _pathToFileURL,
+ urlToHttpOptions,
+ unsafeProtocol,
+ hostlessProtocol,
+ slashedProtocol,
+} = require('internal/url');
+
+const bindingUrl = internalBinding('url');
+
+// Original url.parse() API
+
+function Url() {
+ this.protocol = null;
+ this.slashes = null;
+ this.auth = null;
+ this.host = null;
+ this.port = null;
+ this.hostname = null;
+ this.hash = null;
+ this.search = null;
+ this.query = null;
+ this.pathname = null;
+ this.path = null;
+ this.href = null;
+}
+
+// Reference: RFC 3986, RFC 1808, RFC 2396
+
+// define these here so at least they only have to be
+// compiled once on the first module load.
+const protocolPattern = /^[a-z0-9.+-]+:/i;
+const portPattern = /:[0-9]*$/;
+const hostPattern = /^\/\/[^@/]+@[^@/]+/;
+
+// Special case for a simple path URL
+const simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/;
+
+const hostnameMaxLen = 255;
+const {
+ CHAR_SPACE,
+ CHAR_TAB,
+ CHAR_CARRIAGE_RETURN,
+ CHAR_LINE_FEED,
+ CHAR_NO_BREAK_SPACE,
+ CHAR_ZERO_WIDTH_NOBREAK_SPACE,
+ CHAR_HASH,
+ CHAR_FORWARD_SLASH,
+ CHAR_LEFT_SQUARE_BRACKET,
+ CHAR_RIGHT_SQUARE_BRACKET,
+ CHAR_LEFT_ANGLE_BRACKET,
+ CHAR_RIGHT_ANGLE_BRACKET,
+ CHAR_LEFT_CURLY_BRACKET,
+ CHAR_RIGHT_CURLY_BRACKET,
+ CHAR_QUESTION_MARK,
+ CHAR_DOUBLE_QUOTE,
+ CHAR_SINGLE_QUOTE,
+ CHAR_PERCENT,
+ CHAR_SEMICOLON,
+ CHAR_BACKWARD_SLASH,
+ CHAR_CIRCUMFLEX_ACCENT,
+ CHAR_GRAVE_ACCENT,
+ CHAR_VERTICAL_LINE,
+ CHAR_AT,
+ CHAR_COLON,
+} = require('internal/constants');
+
+let urlParseWarned = false;
+
+function urlParse(url, parseQueryString, slashesDenoteHost) {
+ if (!urlParseWarned && !isInsideNodeModules(100, true)) {
+ urlParseWarned = true;
+ process.emitWarning(
+ '`url.parse()` behavior is not standardized and prone to ' +
+ 'errors that have security implications. Use the WHATWG URL API ' +
+ 'instead. CVEs are not issued for `url.parse()` vulnerabilities.',
+ 'DeprecationWarning',
+ 'DEP0169',
+ );
+ }
+
+ if (url instanceof Url) return url;
+
+ const urlObject = new Url();
+ urlObject.parse(url, parseQueryString, slashesDenoteHost);
+ return urlObject;
+}
+
+function isIpv6Hostname(hostname) {
+ return (
+ StringPrototypeCharCodeAt(hostname, 0) === CHAR_LEFT_SQUARE_BRACKET &&
+ StringPrototypeCharCodeAt(hostname, hostname.length - 1) ===
+ CHAR_RIGHT_SQUARE_BRACKET
+ );
+}
+
+// This prevents some common spoofing bugs due to our use of IDNA toASCII. For
+// compatibility, the set of characters we use here is the *intersection* of
+// "forbidden host code point" in the WHATWG URL Standard [1] and the
+// characters in the host parsing loop in Url.prototype.parse, with the
+// following additions:
+//
+// - ':' since this could cause a "protocol spoofing" bug
+// - '@' since this could cause parts of the hostname to be confused with auth
+// - '[' and ']' since this could cause a non-IPv6 hostname to be interpreted
+// as IPv6 by isIpv6Hostname above
+//
+// [1]: https://url.spec.whatwg.org/#forbidden-host-code-point
+const forbiddenHostChars = /[\0\t\n\r #%/:<>?@[\\\]^|]/;
+// For IPv6, permit '[', ']', and ':'.
+const forbiddenHostCharsIpv6 = /[\0\t\n\r #%/<>?@\\^|]/;
+
+Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
+ validateString(url, 'url');
+
+ // Copy chrome, IE, opera backslash-handling behavior.
+ // Back slashes before the query string get converted to forward slashes
+ // See: https://code.google.com/p/chromium/issues/detail?id=25916
+ let hasHash = false;
+ let hasAt = false;
+ let start = -1;
+ let end = -1;
+ let rest = '';
+ let lastPos = 0;
+ for (let i = 0, inWs = false, split = false; i < url.length; ++i) {
+ const code = url.charCodeAt(i);
+
+ // Find first and last non-whitespace characters for trimming
+ const isWs = code < 33 ||
+ code === CHAR_NO_BREAK_SPACE ||
+ code === CHAR_ZERO_WIDTH_NOBREAK_SPACE;
+ if (start === -1) {
+ if (isWs)
+ continue;
+ lastPos = start = i;
+ } else if (inWs) {
+ if (!isWs) {
+ end = -1;
+ inWs = false;
+ }
+ } else if (isWs) {
+ end = i;
+ inWs = true;
+ }
+
+ // Only convert backslashes while we haven't seen a split character
+ if (!split) {
+ switch (code) {
+ case CHAR_AT:
+ hasAt = true;
+ break;
+ case CHAR_HASH:
+ hasHash = true;
+ // Fall through
+ case CHAR_QUESTION_MARK:
+ split = true;
+ break;
+ case CHAR_BACKWARD_SLASH:
+ if (i - lastPos > 0)
+ rest += url.slice(lastPos, i);
+ rest += '/';
+ lastPos = i + 1;
+ break;
+ }
+ } else if (!hasHash && code === CHAR_HASH) {
+ hasHash = true;
+ }
+ }
+
+ // Check if string was non-empty (including strings with only whitespace)
+ if (start !== -1) {
+ if (lastPos === start) {
+ // We didn't convert any backslashes
+
+ if (end === -1) {
+ if (start === 0)
+ rest = url;
+ else
+ rest = url.slice(start);
+ } else {
+ rest = url.slice(start, end);
+ }
+ } else if (end === -1 && lastPos < url.length) {
+ // We converted some backslashes and have only part of the entire string
+ rest += url.slice(lastPos);
+ } else if (end !== -1 && lastPos < end) {
+ // We converted some backslashes and have only part of the entire string
+ rest += url.slice(lastPos, end);
+ }
+ }
+
+ if (!slashesDenoteHost && !hasHash && !hasAt) {
+ // Try fast path regexp
+ const simplePath = simplePathPattern.exec(rest);
+ if (simplePath) {
+ this.path = rest;
+ this.href = rest;
+ this.pathname = simplePath[1];
+ if (simplePath[2]) {
+ this.search = simplePath[2];
+ if (parseQueryString) {
+ this.query = querystring.parse(this.search.slice(1));
+ } else {
+ this.query = this.search.slice(1);
+ }
+ } else if (parseQueryString) {
+ this.search = null;
+ this.query = { __proto__: null };
+ }
+ return this;
+ }
+ }
+
+ let proto = protocolPattern.exec(rest);
+ let lowerProto;
+ if (proto) {
+ proto = proto[0];
+ lowerProto = proto.toLowerCase();
+ this.protocol = lowerProto;
+ rest = rest.slice(proto.length);
+ }
+
+ // Figure out if it's got a host
+ // user@server is *always* interpreted as a hostname, and url
+ // resolution will treat //foo/bar as host=foo,path=bar because that's
+ // how the browser resolves relative URLs.
+ let slashes;
+ if (slashesDenoteHost || proto || hostPattern.test(rest)) {
+ slashes = rest.charCodeAt(0) === CHAR_FORWARD_SLASH &&
+ rest.charCodeAt(1) === CHAR_FORWARD_SLASH;
+ if (slashes && !(proto && hostlessProtocol.has(lowerProto))) {
+ rest = rest.slice(2);
+ this.slashes = true;
+ }
+ }
+
+ if (!hostlessProtocol.has(lowerProto) &&
+ (slashes || (proto && !slashedProtocol.has(proto)))) {
+
+ // there's a hostname.
+ // the first instance of /, ?, ;, or # ends the host.
+ //
+ // If there is an @ in the hostname, then non-host chars *are* allowed
+ // to the left of the last @ sign, unless some host-ending character
+ // comes *before* the @-sign.
+ // URLs are obnoxious.
+ //
+ // ex:
+ // http://a@b@c/ => user:a@b host:c
+ // http://a@b?@c => user:a host:b path:/?@c
+
+ let hostEnd = -1;
+ let atSign = -1;
+ let nonHost = -1;
+ for (let i = 0; i < rest.length; ++i) {
+ switch (rest.charCodeAt(i)) {
+ case CHAR_TAB:
+ case CHAR_LINE_FEED:
+ case CHAR_CARRIAGE_RETURN:
+ // WHATWG URL removes tabs, newlines, and carriage returns. Let's do that too.
+ rest = rest.slice(0, i) + rest.slice(i + 1);
+ i -= 1;
+ break;
+ case CHAR_SPACE:
+ case CHAR_DOUBLE_QUOTE:
+ case CHAR_PERCENT:
+ case CHAR_SINGLE_QUOTE:
+ case CHAR_SEMICOLON:
+ case CHAR_LEFT_ANGLE_BRACKET:
+ case CHAR_RIGHT_ANGLE_BRACKET:
+ case CHAR_BACKWARD_SLASH:
+ case CHAR_CIRCUMFLEX_ACCENT:
+ case CHAR_GRAVE_ACCENT:
+ case CHAR_LEFT_CURLY_BRACKET:
+ case CHAR_VERTICAL_LINE:
+ case CHAR_RIGHT_CURLY_BRACKET:
+ // Characters that are never ever allowed in a hostname from RFC 2396
+ if (nonHost === -1)
+ nonHost = i;
+ break;
+ case CHAR_HASH:
+ case CHAR_FORWARD_SLASH:
+ case CHAR_QUESTION_MARK:
+ // Find the first instance of any host-ending characters
+ if (nonHost === -1)
+ nonHost = i;
+ hostEnd = i;
+ break;
+ case CHAR_AT:
+ // At this point, either we have an explicit point where the
+ // auth portion cannot go past, or the last @ char is the decider.
+ atSign = i;
+ nonHost = -1;
+ break;
+ }
+ if (hostEnd !== -1)
+ break;
+ }
+ start = 0;
+ if (atSign !== -1) {
+ this.auth = decodeURIComponent(rest.slice(0, atSign));
+ start = atSign + 1;
+ }
+ if (nonHost === -1) {
+ this.host = rest.slice(start);
+ rest = '';
+ } else {
+ this.host = rest.slice(start, nonHost);
+ rest = rest.slice(nonHost);
+ }
+
+ // pull out port.
+ this.parseHost();
+
+ // We've indicated that there is a hostname,
+ // so even if it's empty, it has to be present.
+ if (typeof this.hostname !== 'string')
+ this.hostname = '';
+
+ const hostname = this.hostname;
+
+ // If hostname begins with [ and ends with ]
+ // assume that it's an IPv6 address.
+ const ipv6Hostname = isIpv6Hostname(hostname);
+
+ // validate a little.
+ if (!ipv6Hostname) {
+ rest = getHostname(this, rest, hostname, url);
+ }
+
+ if (this.hostname.length > hostnameMaxLen) {
+ this.hostname = '';
+ } else {
+ // Hostnames are always lower case.
+ this.hostname = this.hostname.toLowerCase();
+ }
+
+ if (this.hostname !== '') {
+ if (ipv6Hostname) {
+ if (forbiddenHostCharsIpv6.test(this.hostname)) {
+ throw new ERR_INVALID_URL(url);
+ }
+ } else {
+ // IDNA Support: Returns a punycoded representation of "domain".
+ // It only converts parts of the domain name that
+ // have non-ASCII characters, i.e. it doesn't matter if
+ // you call it with a domain that already is ASCII-only.
+ this.hostname = toASCII(this.hostname);
+
+ // Prevent two potential routes of hostname spoofing.
+ // 1. If this.hostname is empty, it must have become empty due to toASCII
+ // since we checked this.hostname above.
+ // 2. If any of forbiddenHostChars appears in this.hostname, it must have
+ // also gotten in due to toASCII. This is since getHostname would have
+ // filtered them out otherwise.
+ // Rather than trying to correct this by moving the non-host part into
+ // the pathname as we've done in getHostname, throw an exception to
+ // convey the severity of this issue.
+ if (this.hostname === '' || forbiddenHostChars.test(this.hostname)) {
+ throw new ERR_INVALID_URL(url);
+ }
+ }
+ }
+
+ const p = this.port ? ':' + this.port : '';
+ const h = this.hostname || '';
+ this.host = h + p;
+
+ // strip [ and ] from the hostname
+ // the host field still retains them, though
+ if (ipv6Hostname) {
+ this.hostname = this.hostname.slice(1, -1);
+ if (rest[0] !== '/') {
+ rest = '/' + rest;
+ }
+ }
+ }
+
+ // Now rest is set to the post-host stuff.
+ // Chop off any delim chars.
+ if (!unsafeProtocol.has(lowerProto)) {
+ // First, make 100% sure that any "autoEscape" chars get
+ // escaped, even if encodeURIComponent doesn't think they
+ // need to be.
+ rest = autoEscapeStr(rest);
+ }
+
+ let questionIdx = -1;
+ let hashIdx = -1;
+ for (let i = 0; i < rest.length; ++i) {
+ const code = rest.charCodeAt(i);
+ if (code === CHAR_HASH) {
+ this.hash = rest.slice(i);
+ hashIdx = i;
+ break;
+ } else if (code === CHAR_QUESTION_MARK && questionIdx === -1) {
+ questionIdx = i;
+ }
+ }
+
+ if (questionIdx !== -1) {
+ if (hashIdx === -1) {
+ this.search = rest.slice(questionIdx);
+ this.query = rest.slice(questionIdx + 1);
+ } else {
+ this.search = rest.slice(questionIdx, hashIdx);
+ this.query = rest.slice(questionIdx + 1, hashIdx);
+ }
+ if (parseQueryString) {
+ this.query = querystring.parse(this.query);
+ }
+ } else if (parseQueryString) {
+ // No query string, but parseQueryString still requested
+ this.search = null;
+ this.query = { __proto__: null };
+ }
+
+ const useQuestionIdx =
+ questionIdx !== -1 && (hashIdx === -1 || questionIdx < hashIdx);
+ const firstIdx = useQuestionIdx ? questionIdx : hashIdx;
+ if (firstIdx === -1) {
+ if (rest.length > 0)
+ this.pathname = rest;
+ } else if (firstIdx > 0) {
+ this.pathname = rest.slice(0, firstIdx);
+ }
+ if (slashedProtocol.has(lowerProto) &&
+ this.hostname && !this.pathname) {
+ this.pathname = '/';
+ }
+
+ // To support http.request
+ if (this.pathname || this.search) {
+ const p = this.pathname || '';
+ const s = this.search || '';
+ this.path = p + s;
+ }
+
+ // Finally, reconstruct the href based on what has been validated.
+ this.href = this.format();
+ return this;
+};
+
+let warnInvalidPort = true;
+function getHostname(self, rest, hostname, url) {
+ for (let i = 0; i < hostname.length; ++i) {
+ const code = hostname.charCodeAt(i);
+ const isValid = (code !== CHAR_FORWARD_SLASH &&
+ code !== CHAR_BACKWARD_SLASH &&
+ code !== CHAR_HASH &&
+ code !== CHAR_QUESTION_MARK &&
+ code !== CHAR_COLON);
+
+ if (!isValid) {
+ // If leftover starts with :, then it represents an invalid port.
+ // But url.parse() is lenient about it for now.
+ // Issue a warning and continue.
+ if (warnInvalidPort && code === CHAR_COLON) {
+ const detail = `The URL ${url} is invalid. Future versions of Node.js will throw an error.`;
+ process.emitWarning(detail, 'DeprecationWarning', 'DEP0170');
+ warnInvalidPort = false;
+ }
+ self.hostname = hostname.slice(0, i);
+ return `/${hostname.slice(i)}${rest}`;
+ }
+ }
+ return rest;
+}
+
+// Escaped characters. Use empty strings to fill up unused entries.
+// Using Array is faster than Object/Map
+const escapedCodes = [
+ /* 0 - 9 */ '', '', '', '', '', '', '', '', '', '%09',
+ /* 10 - 19 */ '%0A', '', '', '%0D', '', '', '', '', '', '',
+ /* 20 - 29 */ '', '', '', '', '', '', '', '', '', '',
+ /* 30 - 39 */ '', '', '%20', '', '%22', '', '', '', '', '%27',
+ /* 40 - 49 */ '', '', '', '', '', '', '', '', '', '',
+ /* 50 - 59 */ '', '', '', '', '', '', '', '', '', '',
+ /* 60 - 69 */ '%3C', '', '%3E', '', '', '', '', '', '', '',
+ /* 70 - 79 */ '', '', '', '', '', '', '', '', '', '',
+ /* 80 - 89 */ '', '', '', '', '', '', '', '', '', '',
+ /* 90 - 99 */ '', '', '%5C', '', '%5E', '', '%60', '', '', '',
+ /* 100 - 109 */ '', '', '', '', '', '', '', '', '', '',
+ /* 110 - 119 */ '', '', '', '', '', '', '', '', '', '',
+ /* 120 - 125 */ '', '', '', '%7B', '%7C', '%7D',
+];
+
+// Automatically escape all delimiters and unwise characters from RFC 2396.
+// Also escape single quotes in case of an XSS attack.
+// Return the escaped string.
+function autoEscapeStr(rest) {
+ let escaped = '';
+ let lastEscapedPos = 0;
+ for (let i = 0; i < rest.length; ++i) {
+ // `escaped` contains substring up to the last escaped character.
+ const escapedChar = escapedCodes[rest.charCodeAt(i)];
+ if (escapedChar) {
+ // Concat if there are ordinary characters in the middle.
+ if (i > lastEscapedPos)
+ escaped += rest.slice(lastEscapedPos, i);
+ escaped += escapedChar;
+ lastEscapedPos = i + 1;
+ }
+ }
+ if (lastEscapedPos === 0) // Nothing has been escaped.
+ return rest;
+
+ // There are ordinary characters at the end.
+ if (lastEscapedPos < rest.length)
+ escaped += rest.slice(lastEscapedPos);
+
+ return escaped;
+}
+
+// Format a parsed object into a url string
+function urlFormat(urlObject, options) {
+ // Ensure it's an object, and not a string url.
+ // If it's an object, this is a no-op.
+ // this way, you can call urlParse() on strings
+ // to clean up potentially wonky urls.
+ if (typeof urlObject === 'string') {
+ urlObject = urlParse(urlObject);
+ } else if (typeof urlObject !== 'object' || urlObject === null) {
+ throw new ERR_INVALID_ARG_TYPE('urlObject',
+ ['Object', 'string'], urlObject);
+ } else if (urlObject instanceof URL) {
+ let fragment = true;
+ let unicode = false;
+ let search = true;
+ let auth = true;
+
+ if (options) {
+ validateObject(options, 'options');
+
+ if (options.fragment != null) {
+ fragment = Boolean(options.fragment);
+ }
+
+ if (options.unicode != null) {
+ unicode = Boolean(options.unicode);
+ }
+
+ if (options.search != null) {
+ search = Boolean(options.search);
+ }
+
+ if (options.auth != null) {
+ auth = Boolean(options.auth);
+ }
+ }
+
+ return bindingUrl.format(urlObject.href, fragment, unicode, search, auth);
+ }
+
+ return Url.prototype.format.call(urlObject);
+}
+
+// These characters do not need escaping:
+// ! - . _ ~
+// ' ( ) * :
+// digits
+// alpha (uppercase)
+// alpha (lowercase)
+const noEscapeAuth = new Int8Array([
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 - 0x0F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x10 - 0x1F
+ 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, // 0x20 - 0x2F
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 0x30 - 0x3F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 0x4F
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 0x50 - 0x5F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6F
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, // 0x70 - 0x7F
+]);
+
+Url.prototype.format = function format() {
+ let auth = this.auth || '';
+ if (auth) {
+ auth = encodeStr(auth, noEscapeAuth, hexTable);
+ auth += '@';
+ }
+
+ let protocol = this.protocol || '';
+ if (protocol && StringPrototypeCharCodeAt(protocol, protocol.length - 1) !== 58 /* : */) {
+ protocol += ':';
+ }
+
+ let pathname = this.pathname || '';
+ let hash = this.hash || '';
+ let host = '';
+ let query = '';
+
+ if (this.host) {
+ host = auth + this.host;
+ } else if (this.hostname) {
+ host = auth + (
+ StringPrototypeIndexOf(this.hostname, ':') !== -1 && !isIpv6Hostname(this.hostname) ?
+ '[' + this.hostname + ']' :
+ this.hostname
+ );
+ if (this.port) {
+ host += ':' + this.port;
+ }
+ }
+
+ if (this.query !== null && typeof this.query === 'object') {
+ query = querystring.stringify(this.query);
+ }
+ let search = this.search || (query && ('?' + query)) || '';
+
+ if (StringPrototypeIndexOf(pathname, '#') !== -1 || StringPrototypeIndexOf(pathname, '?') !== -1) {
+ let newPathname = '';
+ let lastPos = 0;
+ const len = pathname.length;
+ for (let i = 0; i < len; i++) {
+ const code = StringPrototypeCharCodeAt(pathname, i);
+ if (code === CHAR_HASH || code === CHAR_QUESTION_MARK) {
+ if (i > lastPos) {
+ newPathname += StringPrototypeSlice(pathname, lastPos, i);
+ }
+ newPathname += (code === CHAR_HASH ? '%23' : '%3F');
+ lastPos = i + 1;
+ }
+ }
+ if (lastPos < len) {
+ newPathname += StringPrototypeSlice(pathname, lastPos);
+ }
+ pathname = newPathname;
+ }
+
+ // Only the slashedProtocols get the //. Not mailto:, xmpp:, etc.
+ // unless they had them to begin with.
+ if (this.slashes || slashedProtocol.has(protocol)) {
+ if (this.slashes || host) {
+ if (pathname && StringPrototypeCharCodeAt(pathname, 0) !== CHAR_FORWARD_SLASH)
+ pathname = '/' + pathname;
+ host = '//' + host;
+ } else if (protocol.length >= 4 &&
+ StringPrototypeCharCodeAt(protocol, 0) === 102/* f */ &&
+ StringPrototypeCharCodeAt(protocol, 1) === 105/* i */ &&
+ StringPrototypeCharCodeAt(protocol, 2) === 108/* l */ &&
+ StringPrototypeCharCodeAt(protocol, 3) === 101/* e */) {
+ host = '//';
+ }
+ }
+
+ // Escape '#' in search.
+ if (StringPrototypeIndexOf(search, '#') !== -1) {
+ search = StringPrototypeReplaceAll(search, '#', '%23');
+ }
+
+ if (hash && StringPrototypeCharCodeAt(hash, 0) !== CHAR_HASH) {
+ hash = '#' + hash;
+ }
+ if (search && StringPrototypeCharCodeAt(search, 0) !== CHAR_QUESTION_MARK) {
+ search = '?' + search;
+ }
+
+ return protocol + host + pathname + search + hash;
+};
+
+function urlResolve(source, relative) {
+ return urlParse(source, false, true).resolve(relative);
+}
+
+Url.prototype.resolve = function resolve(relative) {
+ return this.resolveObject(urlParse(relative, false, true)).format();
+};
+
+function urlResolveObject(source, relative) {
+ if (!source) return relative;
+ return urlParse(source, false, true).resolveObject(relative);
+}
+
+Url.prototype.resolveObject = function resolveObject(relative) {
+ if (typeof relative === 'string') {
+ const rel = new Url();
+ rel.parse(relative, false, true);
+ relative = rel;
+ }
+
+ const result = new Url();
+ ObjectAssign(result, this);
+
+ // Hash is always overridden, no matter what.
+ // even href="" will remove it.
+ result.hash = relative.hash;
+
+ // If the relative url is empty, then there's nothing left to do here.
+ if (relative.href === '') {
+ result.href = result.format();
+ return result;
+ }
+
+ // Hrefs like //foo/bar always cut to the protocol.
+ if (relative.slashes && !relative.protocol) {
+ // Take everything except the protocol from relative
+ const relativeWithoutProtocol = ObjectKeys(relative).reduce((acc, key) => {
+ if (key !== 'protocol') {
+ acc[key] = relative[key];
+ }
+ return acc;
+ }, {});
+ ObjectAssign(result, relativeWithoutProtocol);
+
+ // urlParse appends trailing / to urls like http://www.example.com
+ if (slashedProtocol.has(result.protocol) &&
+ result.hostname && !result.pathname) {
+ result.path = result.pathname = '/';
+ }
+
+ result.href = result.format();
+ return result;
+ }
+
+ if (relative.protocol && relative.protocol !== result.protocol) {
+ // If it's a known url protocol, then changing
+ // the protocol does weird things
+ // first, if it's not file:, then we MUST have a host,
+ // and if there was a path
+ // to begin with, then we MUST have a path.
+ // if it is file:, then the host is dropped,
+ // because that's known to be hostless.
+ // anything else is assumed to be absolute.
+ if (!slashedProtocol.has(relative.protocol)) {
+ ObjectAssign(result, relative);
+ result.href = result.format();
+ return result;
+ }
+
+ result.protocol = relative.protocol;
+ if (!relative.host &&
+ !/^file:?$/.test(relative.protocol) &&
+ !hostlessProtocol.has(relative.protocol)) {
+ const relPath = (relative.pathname || '').split('/');
+ while (relPath.length && !(relative.host = relPath.shift()));
+ relative.host ||= '';
+ relative.hostname ||= '';
+ if (relPath[0] !== '') relPath.unshift('');
+ if (relPath.length < 2) relPath.unshift('');
+ result.pathname = relPath.join('/');
+ } else {
+ result.pathname = relative.pathname;
+ }
+ result.search = relative.search;
+ result.query = relative.query;
+ result.host = relative.host || '';
+ result.auth = relative.auth;
+ result.hostname = relative.hostname || relative.host;
+ result.port = relative.port;
+ // To support http.request
+ if (result.pathname || result.search) {
+ const p = result.pathname || '';
+ const s = result.search || '';
+ result.path = p + s;
+ }
+ result.slashes ||= relative.slashes;
+ result.href = result.format();
+ return result;
+ }
+
+ const isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/');
+ const isRelAbs = (
+ relative.host || (relative.pathname && relative.pathname.charAt(0) === '/')
+ );
+ let mustEndAbs = (isRelAbs || isSourceAbs ||
+ (result.host && relative.pathname));
+ const removeAllDots = mustEndAbs;
+ let srcPath = (result.pathname && result.pathname.split('/')) || [];
+ const relPath = (relative.pathname && relative.pathname.split('/')) || [];
+ const noLeadingSlashes = result.protocol &&
+ !slashedProtocol.has(result.protocol);
+
+ // If the url is a non-slashed url, then relative
+ // links like ../.. should be able
+ // to crawl up to the hostname, as well. This is strange.
+ // result.protocol has already been set by now.
+ // Later on, put the first path part into the host field.
+ if (noLeadingSlashes) {
+ result.hostname = '';
+ result.port = null;
+ if (result.host) {
+ if (srcPath[0] === '') srcPath[0] = result.host;
+ else srcPath.unshift(result.host);
+ }
+ result.host = '';
+ if (relative.protocol) {
+ relative.hostname = null;
+ relative.port = null;
+ result.auth = null;
+ if (relative.host) {
+ if (relPath[0] === '') relPath[0] = relative.host;
+ else relPath.unshift(relative.host);
+ }
+ relative.host = null;
+ }
+ mustEndAbs &&= (relPath[0] === '' || srcPath[0] === '');
+ }
+
+ if (isRelAbs) {
+ // it's absolute.
+ if (relative.host || relative.host === '') {
+ if (result.host !== relative.host) result.auth = null;
+ result.host = relative.host;
+ result.port = relative.port;
+ }
+ if (relative.hostname || relative.hostname === '') {
+ if (result.hostname !== relative.hostname) result.auth = null;
+ result.hostname = relative.hostname;
+ }
+ result.search = relative.search;
+ result.query = relative.query;
+ srcPath = relPath;
+ // Fall through to the dot-handling below.
+ } else if (relPath.length) {
+ // it's relative
+ // throw away the existing file, and take the new path instead.
+ srcPath ||= [];
+ srcPath.pop();
+ srcPath = srcPath.concat(relPath);
+ result.search = relative.search;
+ result.query = relative.query;
+ } else if (relative.search !== null && relative.search !== undefined) {
+ // Just pull out the search.
+ // like href='?foo'.
+ // Put this after the other two cases because it simplifies the booleans
+ if (noLeadingSlashes) {
+ result.hostname = result.host = srcPath.shift();
+ // Occasionally the auth can get stuck only in host.
+ // This especially happens in cases like
+ // url.resolveObject('mailto:local1@domain1', 'local2@domain2')
+ const authInHost =
+ result.host && result.host.indexOf('@') > 0 && result.host.split('@');
+ if (authInHost) {
+ result.auth = authInHost.shift();
+ result.host = result.hostname = authInHost.shift();
+ }
+ }
+ result.search = relative.search;
+ result.query = relative.query;
+ // To support http.request
+ if (result.pathname !== null || result.search !== null) {
+ result.path = (result.pathname ? result.pathname : '') +
+ (result.search ? result.search : '');
+ }
+ result.href = result.format();
+ return result;
+ }
+
+ if (!srcPath.length) {
+ // No path at all. All other things were already handled above.
+ result.pathname = null;
+ // To support http.request
+ if (result.search) {
+ result.path = '/' + result.search;
+ } else {
+ result.path = null;
+ }
+ result.href = result.format();
+ return result;
+ }
+
+ // If a url ENDs in . or .., then it must get a trailing slash.
+ // however, if it ends in anything else non-slashy,
+ // then it must NOT get a trailing slash.
+ let last = srcPath[srcPath.length - 1];
+ const hasTrailingSlash = (
+ ((result.host || relative.host || srcPath.length > 1) &&
+ (last === '.' || last === '..')) || last === '');
+
+ // Strip single dots, resolve double dots to parent dir
+ // if the path tries to go above the root, `up` ends up > 0
+ let up = 0;
+ for (let i = srcPath.length - 1; i >= 0; i--) {
+ last = srcPath[i];
+ if (last === '.') {
+ spliceOne(srcPath, i);
+ } else if (last === '..') {
+ spliceOne(srcPath, i);
+ up++;
+ } else if (up) {
+ spliceOne(srcPath, i);
+ up--;
+ }
+ }
+
+ // If the path is allowed to go above the root, restore leading ..s
+ if (!mustEndAbs && !removeAllDots) {
+ while (up--) {
+ srcPath.unshift('..');
+ }
+ }
+
+ if (mustEndAbs && srcPath[0] !== '' &&
+ (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
+ srcPath.unshift('');
+ }
+
+ if (hasTrailingSlash && StringPrototypeAt(ArrayPrototypeJoin(srcPath, '/'), -1) !== '/') {
+ srcPath.push('');
+ }
+
+ const isAbsolute = srcPath[0] === '' ||
+ (srcPath[0] && srcPath[0].charAt(0) === '/');
+
+ // put the host back
+ if (noLeadingSlashes) {
+ result.hostname =
+ result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';
+ // Occasionally the auth can get stuck only in host.
+ // This especially happens in cases like
+ // url.resolveObject('mailto:local1@domain1', 'local2@domain2')
+ const authInHost = result.host && result.host.indexOf('@') > 0 ?
+ result.host.split('@') : false;
+ if (authInHost) {
+ result.auth = authInHost.shift();
+ result.host = result.hostname = authInHost.shift();
+ }
+ }
+
+ mustEndAbs ||= (result.host && srcPath.length);
+
+ if (mustEndAbs && !isAbsolute) {
+ srcPath.unshift('');
+ }
+
+ if (!srcPath.length) {
+ result.pathname = null;
+ result.path = null;
+ } else {
+ result.pathname = srcPath.join('/');
+ }
+
+ // To support request.http
+ if (result.pathname !== null || result.search !== null) {
+ result.path = (result.pathname ? result.pathname : '') +
+ (result.search ? result.search : '');
+ }
+ result.auth = relative.auth || result.auth;
+ result.slashes ||= relative.slashes;
+ result.href = result.format();
+ return result;
+};
+
+Url.prototype.parseHost = function parseHost() {
+ let host = this.host;
+ let port = portPattern.exec(host);
+ if (port) {
+ port = port[0];
+ if (port !== ':') {
+ this.port = port.slice(1);
+ }
+ host = host.slice(0, host.length - port.length);
+ }
+ if (host) this.hostname = host;
+};
+
+// When used internally, we are not obligated to associate TypeError with
+// this function, so non-strings can be rejected by underlying implementation.
+// Public API has to validate input and throw appropriate error.
+function pathToFileURL(path, options) {
+ validateString(path, 'path');
+
+ return _pathToFileURL(path, options);
+}
+
+module.exports = {
+ // Original API
+ Url,
+ parse: urlParse,
+ resolve: urlResolve,
+ resolveObject: urlResolveObject,
+ format: urlFormat,
+
+ // WHATWG API
+ URL,
+ URLPattern,
+ URLSearchParams,
+ domainToASCII,
+ domainToUnicode,
+
+ // Utilities
+ pathToFileURL,
+ fileURLToPath,
+ fileURLToPathBuffer,
+ urlToHttpOptions,
+};
\ No newline at end of file
diff --git a/.idx/node/util.js b/.idx/node/util.js
new file mode 100644
index 0000000..d458b0a
--- /dev/null
+++ b/.idx/node/util.js
@@ -0,0 +1,521 @@
+'use strict';
+
+const {
+ ArrayIsArray,
+ ArrayPrototypePop,
+ ArrayPrototypePush,
+ ArrayPrototypeReduce,
+ Error,
+ ErrorCaptureStackTrace,
+ FunctionPrototypeBind,
+ NumberIsSafeInteger,
+ ObjectDefineProperties,
+ ObjectDefineProperty,
+ ObjectGetOwnPropertyDescriptors,
+ ObjectKeys,
+ ObjectSetPrototypeOf,
+ ObjectValues,
+ ReflectApply,
+ RegExp,
+ RegExpPrototypeSymbolReplace,
+ StringPrototypeToWellFormed,
+} = primordials;
+
+const {
+ ErrnoException,
+ ExceptionWithHostPort,
+ codes: {
+ ERR_FALSY_VALUE_REJECTION,
+ ERR_INVALID_ARG_TYPE,
+ ERR_OUT_OF_RANGE,
+ },
+ isErrorStackTraceLimitWritable,
+} = require('internal/errors');
+const {
+ format,
+ formatWithOptions,
+ inspect,
+ stripVTControlCharacters,
+} = require('internal/util/inspect');
+const { debuglog } = require('internal/util/debuglog');
+const {
+ validateBoolean,
+ validateFunction,
+ validateNumber,
+ validateString,
+ validateOneOf,
+ validateObject,
+} = require('internal/validators');
+const {
+ isReadableStream,
+ isWritableStream,
+ isNodeStream,
+} = require('internal/streams/utils');
+const types = require('internal/util/types');
+
+let utilColors;
+function lazyUtilColors() {
+ utilColors ??= require('internal/util/colors');
+ return utilColors;
+}
+const { getOptionValue } = require('internal/options');
+
+const binding = internalBinding('util');
+
+const {
+ deprecate,
+ getLazy,
+ getSystemErrorMap,
+ getSystemErrorName: internalErrorName,
+ getSystemErrorMessage: internalErrorMessage,
+ promisify,
+ defineLazyProperties,
+} = require('internal/util');
+
+let abortController;
+
+function lazyAbortController() {
+ abortController ??= require('internal/abort_controller');
+ return abortController;
+}
+
+let internalDeepEqual;
+
+/**
+ * @param {string} [code]
+ * @returns {string}
+ */
+function escapeStyleCode(code) {
+ if (code === undefined) return '';
+ return `\u001b[${code}m`;
+}
+
+/**
+ * @param {string | string[]} format
+ * @param {string} text
+ * @param {object} [options]
+ * @param {boolean} [options.validateStream] - Whether to validate the stream.
+ * @param {Stream} [options.stream] - The stream used for validation.
+ * @returns {string}
+ */
+function styleText(format, text, { validateStream = true, stream = process.stdout } = {}) {
+ validateString(text, 'text');
+ validateBoolean(validateStream, 'options.validateStream');
+
+ let skipColorize;
+ if (validateStream) {
+ if (
+ !isReadableStream(stream) &&
+ !isWritableStream(stream) &&
+ !isNodeStream(stream)
+ ) {
+ throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream);
+ }
+
+ // If the stream is falsy or should not be colorized, set skipColorize to true
+ skipColorize = !lazyUtilColors().shouldColorize(stream);
+ }
+
+ // If the format is not an array, convert it to an array
+ const formatArray = ArrayIsArray(format) ? format : [format];
+
+ const codes = [];
+ for (const key of formatArray) {
+ if (key === 'none') continue;
+ const formatCodes = inspect.colors[key];
+ // If the format is not a valid style, throw an error
+ if (formatCodes == null) {
+ validateOneOf(key, 'format', ObjectKeys(inspect.colors));
+ }
+ if (skipColorize) continue;
+ ArrayPrototypePush(codes, formatCodes);
+ }
+
+ if (skipColorize) {
+ return text;
+ }
+
+ // Build opening codes
+ let openCodes = '';
+ for (let i = 0; i < codes.length; i++) {
+ openCodes += escapeStyleCode(codes[i][0]);
+ }
+
+ // Process the text to handle nested styles
+ let processedText;
+ if (codes.length > 0) {
+ processedText = ArrayPrototypeReduce(
+ codes,
+ (text, code) => RegExpPrototypeSymbolReplace(
+ // Find the reset code
+ new RegExp(`\\u001b\\[${code[1]}m`, 'g'),
+ text,
+ (match, offset) => {
+ // Check if there's more content after this reset
+ if (offset + match.length < text.length) {
+ if (
+ code[0] === inspect.colors.dim[0] ||
+ code[0] === inspect.colors.bold[0]
+ ) {
+ // Dim and bold are not mutually exclusive, so we need to reapply
+ return `${match}${escapeStyleCode(code[0])}`;
+ }
+ return escapeStyleCode(code[0]);
+ }
+ return match;
+ },
+ ),
+ text,
+ );
+ } else {
+ processedText = text;
+ }
+
+ // Build closing codes in reverse order
+ let closeCodes = '';
+ for (let i = codes.length - 1; i >= 0; i--) {
+ closeCodes += escapeStyleCode(codes[i][1]);
+ }
+
+ return `${openCodes}${processedText}${closeCodes}`;
+}
+
+/**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ * @param {Function} ctor Constructor function which needs to inherit the
+ * prototype.
+ * @param {Function} superCtor Constructor function to inherit prototype from.
+ * @throws {TypeError} Will error if either constructor is null, or if
+ * the super constructor lacks a prototype.
+ */
+function inherits(ctor, superCtor) {
+
+ if (ctor === undefined || ctor === null)
+ throw new ERR_INVALID_ARG_TYPE('ctor', 'Function', ctor);
+
+ if (superCtor === undefined || superCtor === null)
+ throw new ERR_INVALID_ARG_TYPE('superCtor', 'Function', superCtor);
+
+ if (superCtor.prototype === undefined) {
+ throw new ERR_INVALID_ARG_TYPE('superCtor.prototype',
+ 'Object', superCtor.prototype);
+ }
+ ObjectDefineProperty(ctor, 'super_', {
+ __proto__: null,
+ value: superCtor,
+ writable: true,
+ configurable: true,
+ });
+ ObjectSetPrototypeOf(ctor.prototype, superCtor.prototype);
+}
+
+/**
+ * @deprecated since v6.0.0
+ * @template T
+ * @template S
+ * @param {T} target
+ * @param {S} source
+ * @returns {(T & S) | null}
+ */
+function _extend(target, source) {
+ // Don't do anything if source isn't an object
+ if (source === null || typeof source !== 'object') return target;
+
+ const keys = ObjectKeys(source);
+ let i = keys.length;
+ while (i--) {
+ target[keys[i]] = source[keys[i]];
+ }
+ return target;
+}
+
+const callbackifyOnRejected = (reason, cb) => {
+ // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).
+ // Because `null` is a special error value in callbacks which means "no error
+ // occurred", we error-wrap so the callback consumer can distinguish between
+ // "the promise rejected with null" or "the promise fulfilled with undefined".
+ if (!reason) {
+ reason = new ERR_FALSY_VALUE_REJECTION.HideStackFramesError(reason);
+ ErrorCaptureStackTrace(reason, callbackifyOnRejected);
+ }
+ return cb(reason);
+};
+
+/**
+ * Converts a Promise-returning function to callback style
+ * @param {Function} original
+ * @returns {Function}
+ */
+function callbackify(original) {
+ validateFunction(original, 'original');
+
+ // We DO NOT return the promise as it gives the user a false sense that
+ // the promise is actually somehow related to the callback's execution
+ // and that the callback throwing will reject the promise.
+ function callbackified(...args) {
+ const maybeCb = ArrayPrototypePop(args);
+ validateFunction(maybeCb, 'last argument');
+ const cb = FunctionPrototypeBind(maybeCb, this);
+ // In true node style we process the callback on `nextTick` with all the
+ // implications (stack, `uncaughtException`, `async_hooks`)
+ ReflectApply(original, this, args)
+ .then((ret) => process.nextTick(cb, null, ret),
+ (rej) => process.nextTick(callbackifyOnRejected, rej, cb));
+ }
+
+ const descriptors = ObjectGetOwnPropertyDescriptors(original);
+ // It is possible to manipulate a functions `length` or `name` property. This
+ // guards against the manipulation.
+ if (typeof descriptors.length.value === 'number') {
+ descriptors.length.value++;
+ }
+ if (typeof descriptors.name.value === 'string') {
+ descriptors.name.value += 'Callbackified';
+ }
+ const propertiesValues = ObjectValues(descriptors);
+ for (let i = 0; i < propertiesValues.length; i++) {
+ // We want to use null-prototype objects to not rely on globally mutable
+ // %Object.prototype%.
+ ObjectSetPrototypeOf(propertiesValues[i], null);
+ }
+ ObjectDefineProperties(callbackified, descriptors);
+ return callbackified;
+}
+
+/**
+ * @param {number} err
+ * @returns {string}
+ */
+function getSystemErrorMessage(err) {
+ validateNumber(err, 'err');
+ if (err >= 0 || !NumberIsSafeInteger(err)) {
+ throw new ERR_OUT_OF_RANGE('err', 'a negative integer', err);
+ }
+ return internalErrorMessage(err);
+}
+
+/**
+ * @param {number} err
+ * @returns {string}
+ */
+function getSystemErrorName(err) {
+ validateNumber(err, 'err');
+ if (err >= 0 || !NumberIsSafeInteger(err)) {
+ throw new ERR_OUT_OF_RANGE('err', 'a negative integer', err);
+ }
+ return internalErrorName(err);
+}
+
+function _errnoException(...args) {
+ if (isErrorStackTraceLimitWritable()) {
+ const limit = Error.stackTraceLimit;
+ Error.stackTraceLimit = 0;
+ const e = new ErrnoException(...args);
+ Error.stackTraceLimit = limit;
+ ErrorCaptureStackTrace(e, _exceptionWithHostPort);
+ return e;
+ }
+ return new ErrnoException(...args);
+}
+
+function _exceptionWithHostPort(...args) {
+ if (isErrorStackTraceLimitWritable()) {
+ const limit = Error.stackTraceLimit;
+ Error.stackTraceLimit = 0;
+ const e = new ExceptionWithHostPort(...args);
+ Error.stackTraceLimit = limit;
+ ErrorCaptureStackTrace(e, _exceptionWithHostPort);
+ return e;
+ }
+ return new ExceptionWithHostPort(...args);
+}
+
+/**
+ * Parses the content of a `.env` file.
+ * @param {string} content
+ * @returns {Record}
+ */
+function parseEnv(content) {
+ validateString(content, 'content');
+ return binding.parseEnv(content);
+}
+
+const lazySourceMap = getLazy(() => require('internal/source_map/source_map_cache'));
+
+/**
+ * @typedef {object} CallSite // The call site
+ * @property {string} scriptName // The name of the resource that contains the
+ * script for the function for this StackFrame
+ * @property {string} functionName // The name of the function associated with this stack frame
+ * @property {number} lineNumber // The number, 1-based, of the line for the associate function call
+ * @property {number} columnNumber // The 1-based column offset on the line for the associated function call
+ */
+
+/**
+ * @param {CallSite} callSite // The call site object to reconstruct from source map
+ * @returns {CallSite | undefined} // The reconstructed call site object
+ */
+function reconstructCallSite(callSite) {
+ const { scriptName, lineNumber, columnNumber } = callSite;
+ const sourceMap = lazySourceMap().findSourceMap(scriptName);
+ if (!sourceMap) return;
+ const entry = sourceMap.findEntry(lineNumber - 1, columnNumber - 1);
+ if (!entry?.originalSource) return;
+ return {
+ __proto__: null,
+ // If the name is not found, it is an empty string to match the behavior of `util.getCallSite()`
+ functionName: entry.name ?? '',
+ scriptName: entry.originalSource,
+ lineNumber: entry.originalLine + 1,
+ column: entry.originalColumn + 1,
+ columnNumber: entry.originalColumn + 1,
+ };
+}
+
+/**
+ *
+ * The call site array to map
+ * @param {CallSite[]} callSites
+ * Array of objects with the reconstructed call site
+ * @returns {CallSite[]}
+ */
+function mapCallSite(callSites) {
+ const result = [];
+ for (let i = 0; i < callSites.length; ++i) {
+ const callSite = callSites[i];
+ const found = reconstructCallSite(callSite);
+ ArrayPrototypePush(result, found ?? callSite);
+ }
+ return result;
+}
+
+/**
+ * @typedef {object} CallSiteOptions // The call site options
+ * @property {boolean} sourceMap // Enable source map support
+ */
+
+/**
+ * Returns the callSite
+ * @param {number} frameCount
+ * @param {CallSiteOptions} options
+ * @returns {CallSite[]}
+ */
+function getCallSites(frameCount = 10, options) {
+ // If options is not provided check if frameCount is an object
+ if (options === undefined) {
+ if (typeof frameCount === 'object') {
+ // If frameCount is an object, it is the options object
+ options = frameCount;
+ validateObject(options, 'options');
+ if (options.sourceMap !== undefined) {
+ validateBoolean(options.sourceMap, 'options.sourceMap');
+ }
+ frameCount = 10;
+ } else {
+ // If options is not provided, set it to an empty object
+ options = {};
+ };
+ } else {
+ // If options is provided, validate it
+ validateObject(options, 'options');
+ if (options.sourceMap !== undefined) {
+ validateBoolean(options.sourceMap, 'options.sourceMap');
+ }
+ }
+
+ // Using kDefaultMaxCallStackSizeToCapture as reference
+ validateNumber(frameCount, 'frameCount', 1, 200);
+ // If options.sourceMaps is true or if sourceMaps are enabled but the option.sourceMaps is not set explictly to false
+ if (options.sourceMap === true || (getOptionValue('--enable-source-maps') && options.sourceMap !== false)) {
+ return mapCallSite(binding.getCallSites(frameCount));
+ }
+ return binding.getCallSites(frameCount);
+};
+
+// Keep the `exports =` so that various functions can still be monkeypatched
+module.exports = {
+ _errnoException,
+ _exceptionWithHostPort,
+ _extend: deprecate(_extend,
+ 'The `util._extend` API is deprecated. Please use Object.assign() instead.',
+ 'DEP0060'),
+ callbackify,
+ debug: debuglog,
+ debuglog,
+ deprecate,
+ format,
+ styleText,
+ formatWithOptions,
+ // Deprecated getCallSite.
+ // This API can be removed in next semver-minor release.
+ getCallSite: deprecate(getCallSites,
+ 'The `util.getCallSite` API has been renamed to `util.getCallSites()`.',
+ 'ExperimentalWarning'),
+ getCallSites,
+ getSystemErrorMap,
+ getSystemErrorName,
+ getSystemErrorMessage,
+ inherits,
+ inspect,
+ isArray: deprecate(ArrayIsArray,
+ 'The `util.isArray` API is deprecated. Please use `Array.isArray()` instead.',
+ 'DEP0044'),
+ isDeepStrictEqual(a, b, skipPrototype) {
+ if (internalDeepEqual === undefined) {
+ internalDeepEqual = require('internal/util/comparisons').isDeepStrictEqual;
+ }
+ return internalDeepEqual(a, b, skipPrototype);
+ },
+ promisify,
+ stripVTControlCharacters,
+ toUSVString(input) {
+ return StringPrototypeToWellFormed(`${input}`);
+ },
+ get transferableAbortSignal() {
+ return lazyAbortController().transferableAbortSignal;
+ },
+ get transferableAbortController() {
+ return lazyAbortController().transferableAbortController;
+ },
+ get aborted() {
+ return lazyAbortController().aborted;
+ },
+ types,
+ parseEnv,
+};
+
+defineLazyProperties(
+ module.exports,
+ 'internal/util/parse_args/parse_args',
+ ['parseArgs'],
+);
+
+defineLazyProperties(
+ module.exports,
+ 'internal/encoding',
+ ['TextDecoder', 'TextEncoder'],
+);
+
+defineLazyProperties(
+ module.exports,
+ 'internal/mime',
+ ['MIMEType', 'MIMEParams'],
+);
+
+defineLazyProperties(
+ module.exports,
+ 'internal/util/diff',
+ ['diff'],
+);
+
+defineLazyProperties(
+ module.exports,
+ 'internal/util/trace_sigint',
+ ['setTraceSigInt'],
+);
\ No newline at end of file
diff --git a/.idx/node/v8.js b/.idx/node/v8.js
new file mode 100644
index 0000000..556ab9c
--- /dev/null
+++ b/.idx/node/v8.js
@@ -0,0 +1,481 @@
+// Copyright (c) 2014, StrongLoop Inc.
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+'use strict';
+
+const {
+ Array,
+ BigInt64Array,
+ BigUint64Array,
+ DataView,
+ Error,
+ Float32Array,
+ Float64Array,
+ Int16Array,
+ Int32Array,
+ Int8Array,
+ JSONParse,
+ ObjectPrototypeToString,
+ Uint16Array,
+ Uint32Array,
+ Uint8Array,
+ Uint8ClampedArray,
+ globalThis: {
+ Float16Array,
+ },
+} = primordials;
+
+const { Buffer } = require('buffer');
+const {
+ validateString,
+ validateUint32,
+ validateOneOf,
+} = require('internal/validators');
+const {
+ Serializer,
+ Deserializer,
+} = internalBinding('serdes');
+const {
+ namespace: startupSnapshot,
+} = require('internal/v8/startup_snapshot');
+
+let profiler = {};
+if (internalBinding('config').hasInspector) {
+ profiler = internalBinding('profiler');
+}
+
+const assert = require('internal/assert');
+const { inspect } = require('internal/util/inspect');
+const { FastBuffer } = require('internal/buffer');
+const { getValidatedPath } = require('internal/fs/utils');
+const {
+ createHeapSnapshotStream,
+ triggerHeapSnapshot,
+} = internalBinding('heap_utils');
+const {
+ HeapSnapshotStream,
+ getHeapSnapshotOptions,
+ queryObjects,
+} = require('internal/heap_utils');
+const promiseHooks = require('internal/promise_hooks');
+const { getOptionValue } = require('internal/options');
+
+/**
+ * Generates a snapshot of the current V8 heap
+ * and writes it to a JSON file.
+ * @param {string} [filename]
+ * @param {{
+ * exposeInternals?: boolean,
+ * exposeNumericValues?: boolean
+ * }} [options]
+ * @returns {string}
+ */
+function writeHeapSnapshot(filename, options) {
+ if (filename !== undefined) {
+ filename = getValidatedPath(filename);
+ }
+ const optionArray = getHeapSnapshotOptions(options);
+ return triggerHeapSnapshot(filename, optionArray);
+}
+
+/**
+ * Generates a snapshot of the current V8 heap
+ * and returns a Readable Stream.
+ * @param {{
+ * exposeInternals?: boolean,
+ * exposeNumericValues?: boolean
+ * }} [options]
+ * @returns {import('./stream.js').Readable}
+ */
+function getHeapSnapshot(options) {
+ const optionArray = getHeapSnapshotOptions(options);
+ const handle = createHeapSnapshotStream(optionArray);
+ assert(handle);
+ return new HeapSnapshotStream(handle);
+}
+
+// We need to get the buffer from the binding at the callsite since
+// it's re-initialized after deserialization.
+const binding = internalBinding('v8');
+
+const {
+ cachedDataVersionTag,
+ setFlagsFromString: _setFlagsFromString,
+ isStringOneByteRepresentation: _isStringOneByteRepresentation,
+ updateHeapStatisticsBuffer,
+ updateHeapSpaceStatisticsBuffer,
+ updateHeapCodeStatisticsBuffer,
+ setHeapSnapshotNearHeapLimit: _setHeapSnapshotNearHeapLimit,
+
+ // Properties for heap statistics buffer extraction.
+ kTotalHeapSizeIndex,
+ kTotalHeapSizeExecutableIndex,
+ kTotalPhysicalSizeIndex,
+ kTotalAvailableSize,
+ kUsedHeapSizeIndex,
+ kHeapSizeLimitIndex,
+ kDoesZapGarbageIndex,
+ kMallocedMemoryIndex,
+ kPeakMallocedMemoryIndex,
+ kNumberOfNativeContextsIndex,
+ kNumberOfDetachedContextsIndex,
+ kTotalGlobalHandlesSizeIndex,
+ kUsedGlobalHandlesSizeIndex,
+ kExternalMemoryIndex,
+
+ // Properties for heap spaces statistics buffer extraction.
+ kHeapSpaces,
+ kSpaceSizeIndex,
+ kSpaceUsedSizeIndex,
+ kSpaceAvailableSizeIndex,
+ kPhysicalSpaceSizeIndex,
+
+ // Properties for heap code statistics buffer extraction.
+ kCodeAndMetadataSizeIndex,
+ kBytecodeAndMetadataSizeIndex,
+ kExternalScriptSourceSizeIndex,
+ kCPUProfilerMetaDataSizeIndex,
+
+ heapStatisticsBuffer,
+ heapCodeStatisticsBuffer,
+ heapSpaceStatisticsBuffer,
+ getCppHeapStatistics: _getCppHeapStatistics,
+ detailLevel,
+} = binding;
+
+const kNumberOfHeapSpaces = kHeapSpaces.length;
+
+/**
+ * Sets V8 command-line flags.
+ * @param {string} flags
+ * @returns {void}
+ */
+function setFlagsFromString(flags) {
+ validateString(flags, 'flags');
+ _setFlagsFromString(flags);
+}
+
+/**
+ * Return whether this string uses one byte as underlying representation or not.
+ * @param {string} content
+ * @returns {boolean}
+ */
+function isStringOneByteRepresentation(content) {
+ validateString(content, 'content');
+ return _isStringOneByteRepresentation(content);
+}
+
+
+/**
+ * Gets the current V8 heap statistics.
+ * @returns {{
+ * total_heap_size: number;
+ * total_heap_size_executable: number;
+ * total_physical_size: number;
+ * total_available_size: number;
+ * used_heap_size: number;
+ * heap_size_limit: number;
+ * malloced_memory: number;
+ * peak_malloced_memory: number;
+ * does_zap_garbage: number;
+ * number_of_native_contexts: number;
+ * number_of_detached_contexts: number;
+ * }}
+ */
+function getHeapStatistics() {
+ const buffer = heapStatisticsBuffer;
+
+ updateHeapStatisticsBuffer();
+
+ return {
+ total_heap_size: buffer[kTotalHeapSizeIndex],
+ total_heap_size_executable: buffer[kTotalHeapSizeExecutableIndex],
+ total_physical_size: buffer[kTotalPhysicalSizeIndex],
+ total_available_size: buffer[kTotalAvailableSize],
+ used_heap_size: buffer[kUsedHeapSizeIndex],
+ heap_size_limit: buffer[kHeapSizeLimitIndex],
+ malloced_memory: buffer[kMallocedMemoryIndex],
+ peak_malloced_memory: buffer[kPeakMallocedMemoryIndex],
+ does_zap_garbage: buffer[kDoesZapGarbageIndex],
+ number_of_native_contexts: buffer[kNumberOfNativeContextsIndex],
+ number_of_detached_contexts: buffer[kNumberOfDetachedContextsIndex],
+ total_global_handles_size: buffer[kTotalGlobalHandlesSizeIndex],
+ used_global_handles_size: buffer[kUsedGlobalHandlesSizeIndex],
+ external_memory: buffer[kExternalMemoryIndex],
+ };
+}
+
+/**
+ * Gets the current V8 heap space statistics.
+ * @returns {{
+ * space_name: string;
+ * space_size: number;
+ * space_used_size: number;
+ * space_available_size: number;
+ * physical_space_size: number;
+ * }[]}
+ */
+function getHeapSpaceStatistics() {
+ const heapSpaceStatistics = new Array(kNumberOfHeapSpaces);
+ const buffer = heapSpaceStatisticsBuffer;
+
+ for (let i = 0; i < kNumberOfHeapSpaces; i++) {
+ updateHeapSpaceStatisticsBuffer(i);
+ heapSpaceStatistics[i] = {
+ space_name: kHeapSpaces[i],
+ space_size: buffer[kSpaceSizeIndex],
+ space_used_size: buffer[kSpaceUsedSizeIndex],
+ space_available_size: buffer[kSpaceAvailableSizeIndex],
+ physical_space_size: buffer[kPhysicalSpaceSizeIndex],
+ };
+ }
+
+ return heapSpaceStatistics;
+}
+
+/**
+ * Gets the current V8 heap code statistics.
+ * @returns {{
+ * code_and_metadata_size: number;
+ * bytecode_and_metadata_size: number;
+ * external_script_source_size: number;
+ * cpu_profiler_metadata_size: number;
+ * }}
+ */
+function getHeapCodeStatistics() {
+ const buffer = heapCodeStatisticsBuffer;
+
+ updateHeapCodeStatisticsBuffer();
+ return {
+ code_and_metadata_size: buffer[kCodeAndMetadataSizeIndex],
+ bytecode_and_metadata_size: buffer[kBytecodeAndMetadataSizeIndex],
+ external_script_source_size: buffer[kExternalScriptSourceSizeIndex],
+ cpu_profiler_metadata_size: buffer[kCPUProfilerMetaDataSizeIndex],
+ };
+}
+
+let heapSnapshotNearHeapLimitCallbackAdded = false;
+function setHeapSnapshotNearHeapLimit(limit) {
+ validateUint32(limit, 'limit', true);
+ if (heapSnapshotNearHeapLimitCallbackAdded ||
+ getOptionValue('--heapsnapshot-near-heap-limit') > 0
+ ) {
+ return;
+ }
+ heapSnapshotNearHeapLimitCallbackAdded = true;
+ _setHeapSnapshotNearHeapLimit(limit);
+}
+
+const detailLevelDict = {
+ __proto__: null,
+ detailed: detailLevel.DETAILED,
+ brief: detailLevel.BRIEF,
+};
+
+function getCppHeapStatistics(type = 'detailed') {
+ validateOneOf(type, 'type', ['brief', 'detailed']);
+ const result = _getCppHeapStatistics(detailLevelDict[type]);
+ result.detail_level = type;
+ return result;
+}
+
+/* V8 serialization API */
+
+/* JS methods for the base objects */
+Serializer.prototype._getDataCloneError = Error;
+
+/**
+ * Reads raw bytes from the deserializer's internal buffer.
+ * @param {number} length
+ * @returns {Buffer}
+ */
+Deserializer.prototype.readRawBytes = function readRawBytes(length) {
+ const offset = this._readRawBytes(length);
+ // `this.buffer` can be a Buffer or a plain Uint8Array, so just calling
+ // `.slice()` doesn't work.
+ return new FastBuffer(this.buffer.buffer,
+ this.buffer.byteOffset + offset,
+ length);
+};
+
+function arrayBufferViewTypeToIndex(abView) {
+ const type = ObjectPrototypeToString(abView);
+ if (type === '[object Int8Array]') return 0;
+ if (type === '[object Uint8Array]') return 1;
+ if (type === '[object Uint8ClampedArray]') return 2;
+ if (type === '[object Int16Array]') return 3;
+ if (type === '[object Uint16Array]') return 4;
+ if (type === '[object Int32Array]') return 5;
+ if (type === '[object Uint32Array]') return 6;
+ if (type === '[object Float32Array]') return 7;
+ if (type === '[object Float64Array]') return 8;
+ if (type === '[object DataView]') return 9;
+ // Index 10 is FastBuffer.
+ if (type === '[object BigInt64Array]') return 11;
+ if (type === '[object BigUint64Array]') return 12;
+ if (type === '[object Float16Array]') return 13;
+ return -1;
+}
+
+function arrayBufferViewIndexToType(index) {
+ if (index === 0) return Int8Array;
+ if (index === 1) return Uint8Array;
+ if (index === 2) return Uint8ClampedArray;
+ if (index === 3) return Int16Array;
+ if (index === 4) return Uint16Array;
+ if (index === 5) return Int32Array;
+ if (index === 6) return Uint32Array;
+ if (index === 7) return Float32Array;
+ if (index === 8) return Float64Array;
+ if (index === 9) return DataView;
+ if (index === 10) return FastBuffer;
+ if (index === 11) return BigInt64Array;
+ if (index === 12) return BigUint64Array;
+ if (index === 13) return Float16Array;
+ return undefined;
+}
+
+class DefaultSerializer extends Serializer {
+ constructor() {
+ super();
+
+ this._setTreatArrayBufferViewsAsHostObjects(true);
+ }
+
+ /**
+ * Used to write some kind of host object, i.e. an
+ * object that is created by native C++ bindings.
+ * @param {object} abView
+ * @returns {void}
+ */
+ _writeHostObject(abView) {
+ // Keep track of how to handle different ArrayBufferViews. The default
+ // Serializer for Node does not use the V8 methods for serializing those
+ // objects because Node's `Buffer` objects use pooled allocation in many
+ // cases, and their underlying `ArrayBuffer`s would show up in the
+ // serialization. Because a) those may contain sensitive data and the user
+ // may not be aware of that and b) they are often much larger than the
+ // `Buffer` itself, custom serialization is applied.
+ let i = 10; // FastBuffer
+ if (abView.constructor !== Buffer) {
+ i = arrayBufferViewTypeToIndex(abView);
+ if (i === -1) {
+ throw new this._getDataCloneError(
+ `Unserializable host object: ${inspect(abView)}`);
+ }
+ }
+ this.writeUint32(i);
+ this.writeUint32(abView.byteLength);
+ this.writeRawBytes(new Uint8Array(abView.buffer,
+ abView.byteOffset,
+ abView.byteLength));
+ }
+}
+
+class DefaultDeserializer extends Deserializer {
+ /**
+ * Used to read some kind of host object, i.e. an
+ * object that is created by native C++ bindings.
+ * @returns {any}
+ */
+ _readHostObject() {
+ const typeIndex = this.readUint32();
+ const ctor = arrayBufferViewIndexToType(typeIndex);
+ const byteLength = this.readUint32();
+ const byteOffset = this._readRawBytes(byteLength);
+ const BYTES_PER_ELEMENT = ctor.BYTES_PER_ELEMENT || 1;
+
+ const offset = this.buffer.byteOffset + byteOffset;
+ if (offset % BYTES_PER_ELEMENT === 0) {
+ return new ctor(this.buffer.buffer,
+ offset,
+ byteLength / BYTES_PER_ELEMENT);
+ }
+ // Copy to an aligned buffer first.
+ const buffer_copy = Buffer.allocUnsafe(byteLength);
+ buffer_copy.set(new Uint8Array(this.buffer.buffer, this.buffer.byteOffset + byteOffset, byteLength));
+ return new ctor(buffer_copy.buffer,
+ buffer_copy.byteOffset,
+ byteLength / BYTES_PER_ELEMENT);
+ }
+}
+
+/**
+ * Uses a `DefaultSerializer` to serialize `value`
+ * into a buffer.
+ * @param {any} value
+ * @returns {Buffer}
+ */
+function serialize(value) {
+ const ser = new DefaultSerializer();
+ ser.writeHeader();
+ ser.writeValue(value);
+ return ser.releaseBuffer();
+}
+
+/**
+ * Uses a `DefaultDeserializer` with default options
+ * to read a JavaScript value from a buffer.
+ * @param {Buffer | TypedArray | DataView} buffer
+ * @returns {any}
+ */
+function deserialize(buffer) {
+ const der = new DefaultDeserializer(buffer);
+ der.readHeader();
+ return der.readValue();
+}
+
+class GCProfiler {
+ #profiler = null;
+
+ start() {
+ if (!this.#profiler) {
+ this.#profiler = new binding.GCProfiler();
+ this.#profiler.start();
+ }
+ }
+
+ stop() {
+ if (this.#profiler) {
+ const data = this.#profiler.stop();
+ this.#profiler = null;
+ return JSONParse(data);
+ }
+ }
+}
+
+module.exports = {
+ cachedDataVersionTag,
+ getHeapSnapshot,
+ getHeapStatistics,
+ getHeapSpaceStatistics,
+ getHeapCodeStatistics,
+ getCppHeapStatistics,
+ setFlagsFromString,
+ Serializer,
+ Deserializer,
+ DefaultSerializer,
+ DefaultDeserializer,
+ deserialize,
+ takeCoverage: profiler.takeCoverage,
+ stopCoverage: profiler.stopCoverage,
+ serialize,
+ writeHeapSnapshot,
+ promiseHooks,
+ queryObjects,
+ startupSnapshot,
+ setHeapSnapshotNearHeapLimit,
+ GCProfiler,
+ isStringOneByteRepresentation,
+};
\ No newline at end of file
diff --git a/.idx/node/vm.js b/.idx/node/vm.js
new file mode 100644
index 0000000..d910795
--- /dev/null
+++ b/.idx/node/vm.js
@@ -0,0 +1,1020 @@
+'use strict';
+
+const {
+ ArrayBuffer,
+ MathMax,
+ NumberIsNaN,
+ ObjectDefineProperties,
+ ObjectDefineProperty,
+ ObjectEntries,
+ ObjectFreeze,
+ ObjectKeys,
+ ObjectSetPrototypeOf,
+ ReflectApply,
+ Symbol,
+ Uint32Array,
+} = primordials;
+
+const {
+ codes: {
+ ERR_BROTLI_INVALID_PARAM,
+ ERR_BUFFER_TOO_LARGE,
+ ERR_INVALID_ARG_TYPE,
+ ERR_OUT_OF_RANGE,
+ ERR_TRAILING_JUNK_AFTER_STREAM_END,
+ ERR_ZSTD_INVALID_PARAM,
+ },
+ genericNodeError,
+} = require('internal/errors');
+const { Transform, finished } = require('stream');
+const {
+ deprecateInstantiation,
+} = require('internal/util');
+const {
+ isArrayBufferView,
+ isAnyArrayBuffer,
+ isUint8Array,
+} = require('internal/util/types');
+const binding = internalBinding('zlib');
+const { crc32: crc32Native } = binding;
+const assert = require('internal/assert');
+const {
+ Buffer,
+ kMaxLength,
+} = require('buffer');
+const { owner_symbol } = require('internal/async_hooks').symbols;
+const {
+ checkRangesOrGetDefault,
+ validateFunction,
+ validateUint32,
+ validateFiniteNumber,
+} = require('internal/validators');
+
+const kFlushFlag = Symbol('kFlushFlag');
+const kError = Symbol('kError');
+
+const constants = internalBinding('constants').zlib;
+const {
+ // Zlib flush levels
+ Z_NO_FLUSH, Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,
+ // Zlib option values
+ Z_MIN_CHUNK, Z_MIN_WINDOWBITS, Z_MAX_WINDOWBITS, Z_MIN_LEVEL, Z_MAX_LEVEL,
+ Z_MIN_MEMLEVEL, Z_MAX_MEMLEVEL, Z_DEFAULT_CHUNK, Z_DEFAULT_COMPRESSION,
+ Z_DEFAULT_STRATEGY, Z_DEFAULT_WINDOWBITS, Z_DEFAULT_MEMLEVEL, Z_FIXED,
+ // Node's compression stream modes (node_zlib_mode)
+ DEFLATE, DEFLATERAW, INFLATE, INFLATERAW, GZIP, GUNZIP, UNZIP,
+ BROTLI_DECODE, BROTLI_ENCODE,
+ ZSTD_COMPRESS, ZSTD_DECOMPRESS,
+ // Brotli operations (~flush levels)
+ BROTLI_OPERATION_PROCESS, BROTLI_OPERATION_FLUSH,
+ BROTLI_OPERATION_FINISH, BROTLI_OPERATION_EMIT_METADATA,
+ // Zstd end directives (~flush levels)
+ ZSTD_e_continue, ZSTD_e_flush, ZSTD_e_end,
+} = constants;
+
+// Translation table for return codes.
+const codes = {
+ Z_OK: constants.Z_OK,
+ Z_STREAM_END: constants.Z_STREAM_END,
+ Z_NEED_DICT: constants.Z_NEED_DICT,
+ Z_ERRNO: constants.Z_ERRNO,
+ Z_STREAM_ERROR: constants.Z_STREAM_ERROR,
+ Z_DATA_ERROR: constants.Z_DATA_ERROR,
+ Z_MEM_ERROR: constants.Z_MEM_ERROR,
+ Z_BUF_ERROR: constants.Z_BUF_ERROR,
+ Z_VERSION_ERROR: constants.Z_VERSION_ERROR,
+};
+
+for (const ckey of ObjectKeys(codes)) {
+ codes[codes[ckey]] = ckey;
+}
+
+function zlibBuffer(engine, buffer, callback) {
+ validateFunction(callback, 'callback');
+ // Streams do not support non-Uint8Array ArrayBufferViews yet. Convert it to a
+ // Buffer without copying.
+ if (isArrayBufferView(buffer) && !isUint8Array(buffer)) {
+ buffer = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);
+ } else if (isAnyArrayBuffer(buffer)) {
+ buffer = Buffer.from(buffer);
+ }
+ engine.buffers = null;
+ engine.nread = 0;
+ engine.cb = callback;
+ engine.on('data', zlibBufferOnData);
+ engine.on('error', zlibBufferOnError);
+ engine.on('end', zlibBufferOnEnd);
+ engine.end(buffer);
+}
+
+function zlibBufferOnData(chunk) {
+ if (!this.buffers) {
+ this.buffers = [chunk];
+ } else {
+ this.buffers.push(chunk);
+ }
+ this.nread += chunk.length;
+ if (this.nread > this._maxOutputLength) {
+ this.close();
+ this.removeAllListeners('end');
+ this.cb(new ERR_BUFFER_TOO_LARGE(this._maxOutputLength));
+ }
+}
+
+function zlibBufferOnError(err) {
+ this.removeAllListeners('end');
+ this.cb(err);
+}
+
+function zlibBufferOnEnd() {
+ let buf;
+ if (this.nread === 0) {
+ buf = Buffer.alloc(0);
+ } else {
+ const bufs = this.buffers;
+ buf = (bufs.length === 1 ? bufs[0] : Buffer.concat(bufs, this.nread));
+ }
+ this.close();
+ if (this._info)
+ this.cb(null, { buffer: buf, engine: this });
+ else
+ this.cb(null, buf);
+}
+
+function zlibBufferSync(engine, buffer) {
+ if (typeof buffer === 'string') {
+ buffer = Buffer.from(buffer);
+ } else if (!isArrayBufferView(buffer)) {
+ if (isAnyArrayBuffer(buffer)) {
+ buffer = Buffer.from(buffer);
+ } else {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'buffer',
+ ['string', 'Buffer', 'TypedArray', 'DataView', 'ArrayBuffer'],
+ buffer,
+ );
+ }
+ }
+ buffer = processChunkSync(engine, buffer, engine._finishFlushFlag);
+ if (engine._info)
+ return { buffer, engine };
+ return buffer;
+}
+
+function zlibOnError(message, errno, code) {
+ const self = this[owner_symbol];
+ // There is no way to cleanly recover.
+ // Continuing only obscures problems.
+
+ const error = genericNodeError(message, { errno, code });
+ error.errno = errno;
+ error.code = code;
+ self.destroy(error);
+ self[kError] = error;
+}
+
+const FLUSH_BOUND = [
+ [ Z_NO_FLUSH, Z_BLOCK ],
+ [ BROTLI_OPERATION_PROCESS, BROTLI_OPERATION_EMIT_METADATA ],
+ [ ZSTD_e_continue, ZSTD_e_end ],
+];
+const FLUSH_BOUND_IDX_NORMAL = 0;
+const FLUSH_BOUND_IDX_BROTLI = 1;
+const FLUSH_BOUND_IDX_ZSTD = 2;
+
+/**
+ * The base class for all Zlib-style streams.
+ * @class
+ */
+function ZlibBase(opts, mode, handle, { flush, finishFlush, fullFlush }) {
+ let chunkSize = Z_DEFAULT_CHUNK;
+ let maxOutputLength = kMaxLength;
+ // The ZlibBase class is not exported to user land, the mode should only be
+ // passed in by us.
+ assert(typeof mode === 'number');
+ assert(mode >= DEFLATE && mode <= ZSTD_DECOMPRESS);
+
+ let flushBoundIdx;
+ if (mode === BROTLI_ENCODE || mode === BROTLI_DECODE) {
+ flushBoundIdx = FLUSH_BOUND_IDX_BROTLI;
+ } else if (mode === ZSTD_COMPRESS || mode === ZSTD_DECOMPRESS) {
+ flushBoundIdx = FLUSH_BOUND_IDX_ZSTD;
+ } else {
+ flushBoundIdx = FLUSH_BOUND_IDX_NORMAL;
+ }
+
+ if (opts) {
+ chunkSize = opts.chunkSize;
+ if (!validateFiniteNumber(chunkSize, 'options.chunkSize')) {
+ chunkSize = Z_DEFAULT_CHUNK;
+ } else if (chunkSize < Z_MIN_CHUNK) {
+ throw new ERR_OUT_OF_RANGE('options.chunkSize',
+ `>= ${Z_MIN_CHUNK}`, chunkSize);
+ }
+
+ flush = checkRangesOrGetDefault(
+ opts.flush, 'options.flush',
+ FLUSH_BOUND[flushBoundIdx][0], FLUSH_BOUND[flushBoundIdx][1], flush);
+
+ finishFlush = checkRangesOrGetDefault(
+ opts.finishFlush, 'options.finishFlush',
+ FLUSH_BOUND[flushBoundIdx][0], FLUSH_BOUND[flushBoundIdx][1],
+ finishFlush);
+
+ maxOutputLength = checkRangesOrGetDefault(
+ opts.maxOutputLength, 'options.maxOutputLength',
+ 1, kMaxLength, kMaxLength);
+
+ if (opts.encoding || opts.objectMode || opts.writableObjectMode) {
+ opts = { ...opts };
+ opts.encoding = null;
+ opts.objectMode = false;
+ opts.writableObjectMode = false;
+ }
+ }
+
+ ReflectApply(Transform, this, [{ autoDestroy: true, ...opts }]);
+ this[kError] = null;
+ this.bytesWritten = 0;
+ this._handle = handle;
+ handle[owner_symbol] = this;
+ // Used by processCallback() and zlibOnError()
+ handle.onerror = zlibOnError;
+ this._outBuffer = Buffer.allocUnsafe(chunkSize);
+ this._outOffset = 0;
+
+ this._chunkSize = chunkSize;
+ this._defaultFlushFlag = flush;
+ this._finishFlushFlag = finishFlush;
+ this._defaultFullFlushFlag = fullFlush;
+ this._info = opts?.info;
+ this._maxOutputLength = maxOutputLength;
+
+ this._rejectGarbageAfterEnd = opts?.rejectGarbageAfterEnd === true;
+}
+ObjectSetPrototypeOf(ZlibBase.prototype, Transform.prototype);
+ObjectSetPrototypeOf(ZlibBase, Transform);
+
+ObjectDefineProperty(ZlibBase.prototype, '_closed', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return !this._handle;
+ },
+});
+
+/**
+ * @this {ZlibBase}
+ * @returns {void}
+ */
+ZlibBase.prototype.reset = function() {
+ assert(this._handle, 'zlib binding closed');
+ return this._handle.reset();
+};
+
+/**
+ * @this {ZlibBase}
+ * This is the _flush function called by the transform class,
+ * internally, when the last chunk has been written.
+ * @returns {void}
+ */
+ZlibBase.prototype._flush = function(callback) {
+ this._transform(Buffer.alloc(0), '', callback);
+};
+
+/**
+ * @this {ZlibBase}
+ * Force Transform compat behavior.
+ * @returns {void}
+ */
+ZlibBase.prototype._final = function(callback) {
+ callback();
+};
+
+// If a flush is scheduled while another flush is still pending, a way to figure
+// out which one is the "stronger" flush is needed.
+// This is currently only used to figure out which flush flag to use for the
+// last chunk.
+// Roughly, the following holds:
+// Z_NO_FLUSH < Z_BLOCK < Z_PARTIAL_FLUSH <
+// Z_SYNC_FLUSH < Z_FULL_FLUSH < Z_FINISH
+const flushiness = [];
+const kFlushFlagList = [Z_NO_FLUSH, Z_BLOCK, Z_PARTIAL_FLUSH,
+ Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH];
+for (let i = 0; i < kFlushFlagList.length; i++) {
+ flushiness[kFlushFlagList[i]] = i;
+}
+
+function maxFlush(a, b) {
+ return flushiness[a] > flushiness[b] ? a : b;
+}
+
+// Set up a list of 'special' buffers that can be written using .write()
+// from the .flush() code as a way of introducing flushing operations into the
+// write sequence.
+const kFlushBuffers = [];
+{
+ const dummyArrayBuffer = new ArrayBuffer();
+ for (const flushFlag of kFlushFlagList) {
+ kFlushBuffers[flushFlag] = Buffer.from(dummyArrayBuffer);
+ kFlushBuffers[flushFlag][kFlushFlag] = flushFlag;
+ }
+}
+
+ZlibBase.prototype.flush = function(kind, callback) {
+ if (typeof kind === 'function' || (kind === undefined && !callback)) {
+ callback = kind;
+ kind = this._defaultFullFlushFlag;
+ }
+
+ if (this.writableFinished) {
+ if (callback)
+ process.nextTick(callback);
+ } else if (this.writableEnded) {
+ if (callback)
+ this.once('end', callback);
+ } else {
+ this.write(kFlushBuffers[kind], '', callback);
+ }
+};
+
+/**
+ * @this {import('stream').Transform}
+ * @param {(err?: Error) => any} [callback]
+ */
+ZlibBase.prototype.close = function(callback) {
+ if (callback) finished(this, callback);
+ this.destroy();
+};
+
+ZlibBase.prototype._destroy = function(err, callback) {
+ _close(this);
+ callback(err);
+};
+
+ZlibBase.prototype._transform = function(chunk, encoding, cb) {
+ let flushFlag = this._defaultFlushFlag;
+ // We use a 'fake' zero-length chunk to carry information about flushes from
+ // the public API to the actual stream implementation.
+ if (typeof chunk[kFlushFlag] === 'number') {
+ flushFlag = chunk[kFlushFlag];
+ }
+
+ // For the last chunk, also apply `_finishFlushFlag`.
+ if (this.writableEnded && this.writableLength === chunk.byteLength) {
+ flushFlag = maxFlush(flushFlag, this._finishFlushFlag);
+ }
+ processChunk(this, chunk, flushFlag, cb);
+};
+
+ZlibBase.prototype._processChunk = function(chunk, flushFlag, cb) {
+ // _processChunk() is left for backwards compatibility
+ if (typeof cb === 'function')
+ processChunk(this, chunk, flushFlag, cb);
+ else
+ return processChunkSync(this, chunk, flushFlag);
+};
+
+function processChunkSync(self, chunk, flushFlag) {
+ let availInBefore = chunk.byteLength;
+ let availOutBefore = self._chunkSize - self._outOffset;
+ let inOff = 0;
+ let availOutAfter;
+ let availInAfter;
+
+ const buffers = [];
+ let nread = 0;
+ let inputRead = 0;
+ const state = self._writeState;
+ const handle = self._handle;
+ let buffer = self._outBuffer;
+ let offset = self._outOffset;
+ const chunkSize = self._chunkSize;
+
+ let error;
+ self.on('error', function onError(er) {
+ error = er;
+ });
+
+ while (true) {
+ handle.writeSync(flushFlag,
+ chunk, // in
+ inOff, // in_off
+ availInBefore, // in_len
+ buffer, // out
+ offset, // out_off
+ availOutBefore); // out_len
+ if (error)
+ throw error;
+ else if (self[kError])
+ throw self[kError];
+
+ availOutAfter = state[0];
+ availInAfter = state[1];
+
+ const inDelta = (availInBefore - availInAfter);
+ inputRead += inDelta;
+
+ const have = availOutBefore - availOutAfter;
+ if (have > 0) {
+ const out = buffer.slice(offset, offset + have);
+ offset += have;
+ buffers.push(out);
+ nread += out.byteLength;
+
+ if (nread > self._maxOutputLength) {
+ _close(self);
+ throw new ERR_BUFFER_TOO_LARGE(self._maxOutputLength);
+ }
+
+ } else {
+ assert(have === 0, 'have should not go down');
+ }
+
+ // Exhausted the output buffer, or used all the input create a new one.
+ if (availOutAfter === 0 || offset >= chunkSize) {
+ availOutBefore = chunkSize;
+ offset = 0;
+ buffer = Buffer.allocUnsafe(chunkSize);
+ }
+
+ if (availOutAfter === 0) {
+ // Not actually done. Need to reprocess.
+ // Also, update the availInBefore to the availInAfter value,
+ // so that if we have to hit it a third (fourth, etc.) time,
+ // it'll have the correct byte counts.
+ inOff += inDelta;
+ availInBefore = availInAfter;
+ } else {
+ break;
+ }
+ }
+
+ self.bytesWritten = inputRead;
+ _close(self);
+
+ if (nread === 0)
+ return Buffer.alloc(0);
+
+ return (buffers.length === 1 ? buffers[0] : Buffer.concat(buffers, nread));
+}
+
+function processChunk(self, chunk, flushFlag, cb) {
+ const handle = self._handle;
+ if (!handle) return process.nextTick(cb);
+
+ handle.buffer = chunk;
+ handle.cb = cb;
+ handle.availOutBefore = self._chunkSize - self._outOffset;
+ handle.availInBefore = chunk.byteLength;
+ handle.inOff = 0;
+ handle.flushFlag = flushFlag;
+
+ handle.write(flushFlag,
+ chunk, // in
+ 0, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ handle.availOutBefore); // out_len
+}
+
+function processCallback() {
+ // This callback's context (`this`) is the `_handle` (ZCtx) object. It is
+ // important to null out the values once they are no longer needed since
+ // `_handle` can stay in memory long after the buffer is needed.
+ const handle = this;
+ const self = this[owner_symbol];
+ const state = self._writeState;
+
+ if (self.destroyed) {
+ this.buffer = null;
+ this.cb();
+ return;
+ }
+
+ const availOutAfter = state[0];
+ const availInAfter = state[1];
+
+ const inDelta = handle.availInBefore - availInAfter;
+ self.bytesWritten += inDelta;
+
+ const have = handle.availOutBefore - availOutAfter;
+ let streamBufferIsFull = false;
+ if (have > 0) {
+ const out = self._outBuffer.slice(self._outOffset, self._outOffset + have);
+ self._outOffset += have;
+ streamBufferIsFull = !self.push(out);
+ } else {
+ assert(have === 0, 'have should not go down');
+ }
+
+ if (self.destroyed) {
+ this.cb();
+ return;
+ }
+
+ // Exhausted the output buffer, or used all the input create a new one.
+ if (availOutAfter === 0 || self._outOffset >= self._chunkSize) {
+ handle.availOutBefore = self._chunkSize;
+ self._outOffset = 0;
+ self._outBuffer = Buffer.allocUnsafe(self._chunkSize);
+ }
+
+ if (availOutAfter === 0) {
+ // Not actually done. Need to reprocess.
+ // Also, update the availInBefore to the availInAfter value,
+ // so that if we have to hit it a third (fourth, etc.) time,
+ // it'll have the correct byte counts.
+ handle.inOff += inDelta;
+ handle.availInBefore = availInAfter;
+
+
+ if (!streamBufferIsFull) {
+ this.write(handle.flushFlag,
+ this.buffer, // in
+ handle.inOff, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ self._chunkSize); // out_len
+ } else {
+ const oldRead = self._read;
+ self._read = (n) => {
+ self._read = oldRead;
+ this.write(handle.flushFlag,
+ this.buffer, // in
+ handle.inOff, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ self._chunkSize); // out_len
+ self._read(n);
+ };
+ }
+ return;
+ }
+
+ if (availInAfter > 0) {
+ // If we have more input that should be written, but we also have output
+ // space available, that means that the compression library was not
+ // interested in receiving more data, and in particular that the input
+ // stream has ended early.
+ // This applies to streams where we don't check data past the end of
+ // what was consumed; that is, everything except Gunzip/Unzip.
+
+ if (self._rejectGarbageAfterEnd) {
+ const err = new ERR_TRAILING_JUNK_AFTER_STREAM_END();
+ self.destroy(err);
+ this.cb(err);
+ return;
+ }
+
+ self.push(null);
+ }
+
+ // Finished with the chunk.
+ this.buffer = null;
+ this.cb();
+}
+
+/**
+ * @param {ZlibBase} engine
+ * @private
+ */
+function _close(engine) {
+ // Caller may invoke .close after a zlib error (which will null _handle)
+ engine._handle?.close();
+ engine._handle = null;
+}
+
+const zlibDefaultOpts = {
+ flush: Z_NO_FLUSH,
+ finishFlush: Z_FINISH,
+ fullFlush: Z_FULL_FLUSH,
+};
+// Base class for all streams actually backed by zlib and using zlib-specific
+// parameters.
+function Zlib(opts, mode) {
+ let windowBits = Z_DEFAULT_WINDOWBITS;
+ let level = Z_DEFAULT_COMPRESSION;
+ let memLevel = Z_DEFAULT_MEMLEVEL;
+ let strategy = Z_DEFAULT_STRATEGY;
+ let dictionary;
+
+ if (opts) {
+ // windowBits is special. On the compression side, 0 is an invalid value.
+ // But on the decompression side, a value of 0 for windowBits tells zlib
+ // to use the window size in the zlib header of the compressed stream.
+ if ((opts.windowBits == null || opts.windowBits === 0) &&
+ (mode === INFLATE ||
+ mode === GUNZIP ||
+ mode === UNZIP)) {
+ windowBits = 0;
+ } else {
+ // `{ windowBits: 8 }` is valid for deflate but not gzip.
+ const min = Z_MIN_WINDOWBITS + (mode === GZIP ? 1 : 0);
+ windowBits = checkRangesOrGetDefault(
+ opts.windowBits, 'options.windowBits',
+ min, Z_MAX_WINDOWBITS, Z_DEFAULT_WINDOWBITS);
+ }
+
+ level = checkRangesOrGetDefault(
+ opts.level, 'options.level',
+ Z_MIN_LEVEL, Z_MAX_LEVEL, Z_DEFAULT_COMPRESSION);
+
+ memLevel = checkRangesOrGetDefault(
+ opts.memLevel, 'options.memLevel',
+ Z_MIN_MEMLEVEL, Z_MAX_MEMLEVEL, Z_DEFAULT_MEMLEVEL);
+
+ strategy = checkRangesOrGetDefault(
+ opts.strategy, 'options.strategy',
+ Z_DEFAULT_STRATEGY, Z_FIXED, Z_DEFAULT_STRATEGY);
+
+ dictionary = opts.dictionary;
+ if (dictionary !== undefined && !isArrayBufferView(dictionary)) {
+ if (isAnyArrayBuffer(dictionary)) {
+ dictionary = Buffer.from(dictionary);
+ } else {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'options.dictionary',
+ ['Buffer', 'TypedArray', 'DataView', 'ArrayBuffer'],
+ dictionary,
+ );
+ }
+ }
+ }
+
+ const handle = new binding.Zlib(mode);
+ // Ideally, we could let ZlibBase() set up _writeState. I haven't been able
+ // to come up with a good solution that doesn't break our internal API,
+ // and with it all supported npm versions at the time of writing.
+ this._writeState = new Uint32Array(2);
+ handle.init(windowBits,
+ level,
+ memLevel,
+ strategy,
+ this._writeState,
+ processCallback,
+ dictionary);
+
+ ReflectApply(ZlibBase, this, [opts, mode, handle, zlibDefaultOpts]);
+
+ this._level = level;
+ this._strategy = strategy;
+ this._mode = mode;
+}
+ObjectSetPrototypeOf(Zlib.prototype, ZlibBase.prototype);
+ObjectSetPrototypeOf(Zlib, ZlibBase);
+
+// This callback is used by `.params()` to wait until a full flush happened
+// before adjusting the parameters. In particular, the call to the native
+// `params()` function should not happen while a write is currently in progress
+// on the threadpool.
+function paramsAfterFlushCallback(level, strategy, callback) {
+ assert(this._handle, 'zlib binding closed');
+ this._handle.params(level, strategy);
+ if (!this.destroyed) {
+ this._level = level;
+ this._strategy = strategy;
+ if (callback) callback();
+ }
+}
+
+Zlib.prototype.params = function params(level, strategy, callback) {
+ checkRangesOrGetDefault(level, 'level', Z_MIN_LEVEL, Z_MAX_LEVEL);
+ checkRangesOrGetDefault(strategy, 'strategy', Z_DEFAULT_STRATEGY, Z_FIXED);
+
+ if (this._level !== level || this._strategy !== strategy) {
+ this.flush(
+ Z_SYNC_FLUSH,
+ paramsAfterFlushCallback.bind(this, level, strategy, callback),
+ );
+ } else {
+ process.nextTick(callback);
+ }
+};
+
+// generic zlib
+// minimal 2-byte header
+function Deflate(opts) {
+ if (!(this instanceof Deflate)) {
+ return deprecateInstantiation(Deflate, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, DEFLATE]);
+}
+ObjectSetPrototypeOf(Deflate.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Deflate, Zlib);
+
+function Inflate(opts) {
+ if (!(this instanceof Inflate)) {
+ return deprecateInstantiation(Inflate, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, INFLATE]);
+}
+ObjectSetPrototypeOf(Inflate.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Inflate, Zlib);
+
+function Gzip(opts) {
+ if (!(this instanceof Gzip)) {
+ return deprecateInstantiation(Gzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, GZIP]);
+}
+ObjectSetPrototypeOf(Gzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Gzip, Zlib);
+
+function Gunzip(opts) {
+ if (!(this instanceof Gunzip)) {
+ return deprecateInstantiation(Gunzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, GUNZIP]);
+}
+ObjectSetPrototypeOf(Gunzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Gunzip, Zlib);
+
+function DeflateRaw(opts) {
+ if (opts && opts.windowBits === 8) opts.windowBits = 9;
+ if (!(this instanceof DeflateRaw)) {
+ return deprecateInstantiation(DeflateRaw, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, DEFLATERAW]);
+}
+ObjectSetPrototypeOf(DeflateRaw.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(DeflateRaw, Zlib);
+
+function InflateRaw(opts) {
+ if (!(this instanceof InflateRaw)) {
+ return deprecateInstantiation(InflateRaw, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, INFLATERAW]);
+}
+ObjectSetPrototypeOf(InflateRaw.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(InflateRaw, Zlib);
+
+function Unzip(opts) {
+ if (!(this instanceof Unzip)) {
+ return deprecateInstantiation(Unzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, UNZIP]);
+}
+ObjectSetPrototypeOf(Unzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Unzip, Zlib);
+
+function createConvenienceMethod(ctor, sync) {
+ if (sync) {
+ return function syncBufferWrapper(buffer, opts) {
+ return zlibBufferSync(new ctor(opts), buffer);
+ };
+ }
+ return function asyncBufferWrapper(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new ctor(opts), buffer, callback);
+ };
+}
+
+const kMaxBrotliParam = MathMax(
+ ...ObjectEntries(constants)
+ .map(({ 0: key, 1: value }) => (key.startsWith('BROTLI_PARAM_') ? value : 0)),
+);
+const brotliInitParamsArray = new Uint32Array(kMaxBrotliParam + 1);
+
+const brotliDefaultOpts = {
+ flush: BROTLI_OPERATION_PROCESS,
+ finishFlush: BROTLI_OPERATION_FINISH,
+ fullFlush: BROTLI_OPERATION_FLUSH,
+};
+function Brotli(opts, mode) {
+ assert(mode === BROTLI_DECODE || mode === BROTLI_ENCODE);
+
+ brotliInitParamsArray.fill(-1);
+ if (opts?.params) {
+ ObjectKeys(opts.params).forEach((origKey) => {
+ const key = +origKey;
+ if (NumberIsNaN(key) || key < 0 || key > kMaxBrotliParam ||
+ (brotliInitParamsArray[key] | 0) !== -1) {
+ throw new ERR_BROTLI_INVALID_PARAM(origKey);
+ }
+
+ const value = opts.params[origKey];
+ if (typeof value !== 'number' && typeof value !== 'boolean') {
+ throw new ERR_INVALID_ARG_TYPE('options.params[key]',
+ 'number', opts.params[origKey]);
+ }
+ brotliInitParamsArray[key] = value;
+ });
+ }
+
+ const handle = mode === BROTLI_DECODE ?
+ new binding.BrotliDecoder(mode) : new binding.BrotliEncoder(mode);
+
+ this._writeState = new Uint32Array(2);
+ handle.init(brotliInitParamsArray, this._writeState, processCallback);
+
+ ReflectApply(ZlibBase, this, [opts, mode, handle, brotliDefaultOpts]);
+}
+ObjectSetPrototypeOf(Brotli.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Brotli, Zlib);
+
+function BrotliCompress(opts) {
+ if (!(this instanceof BrotliCompress)) {
+ return deprecateInstantiation(BrotliCompress, 'DEP0184', opts);
+ }
+ ReflectApply(Brotli, this, [opts, BROTLI_ENCODE]);
+}
+ObjectSetPrototypeOf(BrotliCompress.prototype, Brotli.prototype);
+ObjectSetPrototypeOf(BrotliCompress, Brotli);
+
+function BrotliDecompress(opts) {
+ if (!(this instanceof BrotliDecompress)) {
+ return deprecateInstantiation(BrotliDecompress, 'DEP0184', opts);
+ }
+ ReflectApply(Brotli, this, [opts, BROTLI_DECODE]);
+}
+ObjectSetPrototypeOf(BrotliDecompress.prototype, Brotli.prototype);
+ObjectSetPrototypeOf(BrotliDecompress, Brotli);
+
+
+const zstdDefaultOpts = {
+ flush: ZSTD_e_continue,
+ finishFlush: ZSTD_e_end,
+ fullFlush: ZSTD_e_flush,
+};
+class Zstd extends ZlibBase {
+ constructor(opts, mode, initParamsArray, maxParam) {
+ assert(mode === ZSTD_COMPRESS || mode === ZSTD_DECOMPRESS);
+
+ initParamsArray.fill(-1);
+ if (opts?.params) {
+ ObjectKeys(opts.params).forEach((origKey) => {
+ const key = +origKey;
+ if (NumberIsNaN(key) || key < 0 || key > maxParam ||
+ (initParamsArray[key] | 0) !== -1) {
+ throw new ERR_ZSTD_INVALID_PARAM(origKey);
+ }
+
+ const value = opts.params[origKey];
+ if (typeof value !== 'number' && typeof value !== 'boolean') {
+ throw new ERR_INVALID_ARG_TYPE('options.params[key]',
+ 'number', opts.params[origKey]);
+ }
+ initParamsArray[key] = value;
+ });
+ }
+
+ const handle = mode === ZSTD_COMPRESS ?
+ new binding.ZstdCompress() : new binding.ZstdDecompress();
+
+ const pledgedSrcSize = opts?.pledgedSrcSize ?? undefined;
+
+ const writeState = new Uint32Array(2);
+
+ handle.init(
+ initParamsArray,
+ pledgedSrcSize,
+ writeState,
+ processCallback,
+ opts?.dictionary && isArrayBufferView(opts.dictionary) ? opts.dictionary : undefined,
+ );
+
+ super(opts, mode, handle, zstdDefaultOpts);
+ this._writeState = writeState;
+ }
+}
+
+const kMaxZstdCParam = MathMax(...ObjectKeys(constants).map(
+ (key) => (key.startsWith('ZSTD_c_') ?
+ constants[key] :
+ 0),
+));
+
+const zstdInitCParamsArray = new Uint32Array(kMaxZstdCParam + 1);
+
+class ZstdCompress extends Zstd {
+ constructor(opts) {
+ super(opts, ZSTD_COMPRESS, zstdInitCParamsArray, kMaxZstdCParam);
+ }
+}
+
+const kMaxZstdDParam = MathMax(...ObjectKeys(constants).map(
+ (key) => (key.startsWith('ZSTD_d_') ?
+ constants[key] :
+ 0),
+));
+
+const zstdInitDParamsArray = new Uint32Array(kMaxZstdDParam + 1);
+
+class ZstdDecompress extends Zstd {
+ constructor(opts) {
+ super(opts, ZSTD_DECOMPRESS, zstdInitDParamsArray, kMaxZstdDParam);
+ }
+}
+
+function createProperty(ctor) {
+ return {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ value: function(options) {
+ return new ctor(options);
+ },
+ };
+}
+
+function crc32(data, value = 0) {
+ if (typeof data !== 'string' && !isArrayBufferView(data)) {
+ throw new ERR_INVALID_ARG_TYPE('data', ['Buffer', 'TypedArray', 'DataView', 'string'], data);
+ }
+ validateUint32(value, 'value');
+ return crc32Native(data, value);
+}
+
+// Legacy alias on the C++ wrapper object. This is not public API, so we may
+// want to runtime-deprecate it at some point. There's no hurry, though.
+ObjectDefineProperty(binding.Zlib.prototype, 'jsref', {
+ __proto__: null,
+ get() { return this[owner_symbol]; },
+ set(v) { return this[owner_symbol] = v; },
+});
+
+module.exports = {
+ crc32,
+ Deflate,
+ Inflate,
+ Gzip,
+ Gunzip,
+ DeflateRaw,
+ InflateRaw,
+ Unzip,
+ BrotliCompress,
+ BrotliDecompress,
+ ZstdCompress,
+ ZstdDecompress,
+
+ // Convenience methods.
+ // compress/decompress a string or buffer in one step.
+ deflate: createConvenienceMethod(Deflate, false),
+ deflateSync: createConvenienceMethod(Deflate, true),
+ gzip: createConvenienceMethod(Gzip, false),
+ gzipSync: createConvenienceMethod(Gzip, true),
+ deflateRaw: createConvenienceMethod(DeflateRaw, false),
+ deflateRawSync: createConvenienceMethod(DeflateRaw, true),
+ unzip: createConvenienceMethod(Unzip, false),
+ unzipSync: createConvenienceMethod(Unzip, true),
+ inflate: createConvenienceMethod(Inflate, false),
+ inflateSync: createConvenienceMethod(Inflate, true),
+ gunzip: createConvenienceMethod(Gunzip, false),
+ gunzipSync: createConvenienceMethod(Gunzip, true),
+ inflateRaw: createConvenienceMethod(InflateRaw, false),
+ inflateRawSync: createConvenienceMethod(InflateRaw, true),
+ brotliCompress: createConvenienceMethod(BrotliCompress, false),
+ brotliCompressSync: createConvenienceMethod(BrotliCompress, true),
+ brotliDecompress: createConvenienceMethod(BrotliDecompress, false),
+ brotliDecompressSync: createConvenienceMethod(BrotliDecompress, true),
+ zstdCompress: createConvenienceMethod(ZstdCompress, false),
+ zstdCompressSync: createConvenienceMethod(ZstdCompress, true),
+ zstdDecompress: createConvenienceMethod(ZstdDecompress, false),
+ zstdDecompressSync: createConvenienceMethod(ZstdDecompress, true),
+};
+
+ObjectDefineProperties(module.exports, {
+ createDeflate: createProperty(Deflate),
+ createInflate: createProperty(Inflate),
+ createDeflateRaw: createProperty(DeflateRaw),
+ createInflateRaw: createProperty(InflateRaw),
+ createGzip: createProperty(Gzip),
+ createGunzip: createProperty(Gunzip),
+ createUnzip: createProperty(Unzip),
+ createBrotliCompress: createProperty(BrotliCompress),
+ createBrotliDecompress: createProperty(BrotliDecompress),
+ createZstdCompress: createProperty(ZstdCompress),
+ createZstdDecompress: createProperty(ZstdDecompress),
+ constants: {
+ __proto__: null,
+ configurable: false,
+ enumerable: true,
+ value: constants,
+ },
+ codes: {
+ __proto__: null,
+ enumerable: true,
+ writable: false,
+ value: ObjectFreeze(codes),
+ },
+});
+
+// These should be considered deprecated
+// expose all the zlib constants
+for (const { 0: key, 1: value } of ObjectEntries(constants)) {
+ if (key.startsWith('BROTLI')) continue;
+ ObjectDefineProperty(module.exports, key, {
+ __proto__: null,
+ enumerable: false,
+ value,
+ writable: false,
+ });
+}
\ No newline at end of file
diff --git a/.idx/node/wasi.js b/.idx/node/wasi.js
new file mode 100644
index 0000000..71dbc60
--- /dev/null
+++ b/.idx/node/wasi.js
@@ -0,0 +1,176 @@
+'use strict';
+const {
+ ArrayPrototypeForEach,
+ ArrayPrototypeMap,
+ ArrayPrototypePush,
+ FunctionPrototypeBind,
+ ObjectEntries,
+ String,
+ Symbol,
+} = primordials;
+
+const {
+ ERR_INVALID_ARG_VALUE,
+ ERR_WASI_ALREADY_STARTED,
+} = require('internal/errors').codes;
+const {
+ emitExperimentalWarning,
+ kEmptyObject,
+} = require('internal/util');
+const {
+ validateArray,
+ validateBoolean,
+ validateFunction,
+ validateInt32,
+ validateObject,
+ validateString,
+ validateUndefined,
+} = require('internal/validators');
+const kExitCode = Symbol('kExitCode');
+const kSetMemory = Symbol('kSetMemory');
+const kStarted = Symbol('kStarted');
+const kInstance = Symbol('kInstance');
+const kBindingName = Symbol('kBindingName');
+
+emitExperimentalWarning('WASI');
+
+class WASI {
+ constructor(options = kEmptyObject) {
+ validateObject(options, 'options');
+
+ let _WASI;
+ validateString(options.version, 'options.version');
+ switch (options.version) {
+ case 'unstable':
+ ({ WASI: _WASI } = internalBinding('wasi'));
+ this[kBindingName] = 'wasi_unstable';
+ break;
+ case 'preview1':
+ ({ WASI: _WASI } = internalBinding('wasi'));
+ this[kBindingName] = 'wasi_snapshot_preview1';
+ break;
+ // When adding support for additional wasi versions add case here
+ default:
+ throw new ERR_INVALID_ARG_VALUE('options.version',
+ options.version,
+ 'unsupported WASI version');
+ }
+
+ if (options.args !== undefined)
+ validateArray(options.args, 'options.args');
+ const args = ArrayPrototypeMap(options.args || [], String);
+
+ const env = [];
+ if (options.env !== undefined) {
+ validateObject(options.env, 'options.env');
+ ArrayPrototypeForEach(
+ ObjectEntries(options.env),
+ ({ 0: key, 1: value }) => {
+ if (value !== undefined)
+ ArrayPrototypePush(env, `${key}=${value}`);
+ });
+ }
+
+ const preopens = [];
+ if (options.preopens !== undefined) {
+ validateObject(options.preopens, 'options.preopens');
+ ArrayPrototypeForEach(
+ ObjectEntries(options.preopens),
+ ({ 0: key, 1: value }) =>
+ ArrayPrototypePush(preopens, String(key), String(value)),
+ );
+ }
+
+ const { stdin = 0, stdout = 1, stderr = 2 } = options;
+ validateInt32(stdin, 'options.stdin', 0);
+ validateInt32(stdout, 'options.stdout', 0);
+ validateInt32(stderr, 'options.stderr', 0);
+ const stdio = [stdin, stdout, stderr];
+
+ const wrap = new _WASI(args, env, preopens, stdio);
+
+ for (const prop in wrap) {
+ wrap[prop] = FunctionPrototypeBind(wrap[prop], wrap);
+ }
+
+ let returnOnExit = true;
+ if (options.returnOnExit !== undefined) {
+ validateBoolean(options.returnOnExit, 'options.returnOnExit');
+ returnOnExit = options.returnOnExit;
+ }
+ if (returnOnExit)
+ wrap.proc_exit = FunctionPrototypeBind(wasiReturnOnProcExit, this);
+
+ this[kSetMemory] = wrap._setMemory;
+ delete wrap._setMemory;
+ this.wasiImport = wrap;
+ this[kStarted] = false;
+ this[kExitCode] = 0;
+ this[kInstance] = undefined;
+ }
+
+ finalizeBindings(instance, {
+ memory = instance?.exports?.memory,
+ } = {}) {
+ if (this[kStarted]) {
+ throw new ERR_WASI_ALREADY_STARTED();
+ }
+
+ validateObject(instance, 'instance');
+ validateObject(instance.exports, 'instance.exports');
+
+ this[kSetMemory](memory);
+
+ this[kInstance] = instance;
+ this[kStarted] = true;
+ }
+
+ // Must not export _initialize, must export _start
+ start(instance) {
+ this.finalizeBindings(instance);
+
+ const { _start, _initialize } = this[kInstance].exports;
+
+ validateFunction(_start, 'instance.exports._start');
+ validateUndefined(_initialize, 'instance.exports._initialize');
+
+ try {
+ _start();
+ } catch (err) {
+ if (err !== kExitCode) {
+ throw err;
+ }
+ }
+
+ return this[kExitCode];
+ }
+
+ // Must not export _start, may optionally export _initialize
+ initialize(instance) {
+ this.finalizeBindings(instance);
+
+ const { _start, _initialize } = this[kInstance].exports;
+
+ validateUndefined(_start, 'instance.exports._start');
+ if (_initialize !== undefined) {
+ validateFunction(_initialize, 'instance.exports._initialize');
+ _initialize();
+ }
+ }
+
+ getImportObject() {
+ return { [this[kBindingName]]: this.wasiImport };
+ }
+}
+
+module.exports = { WASI };
+
+
+function wasiReturnOnProcExit(rval) {
+ // If __wasi_proc_exit() does not terminate the process, an assertion is
+ // triggered in the wasm runtime. Node can sidestep the assertion and return
+ // an exit code by recording the exit code, and throwing a JavaScript
+ // exception that WebAssembly cannot catch.
+ this[kExitCode] = rval;
+ throw kExitCode;
+}
\ No newline at end of file
diff --git a/.idx/node/worker_pool.js b/.idx/node/worker_pool.js
new file mode 100644
index 0000000..bc0e59c
--- /dev/null
+++ b/.idx/node/worker_pool.js
@@ -0,0 +1,13 @@
+const WorkerPool = require('./worker_pool.js');
+const os = require('node:os');
+
+const pool = new WorkerPool(os.availableParallelism());
+
+let finished = 0;
+for (let i = 0; i < 10; i++) {
+ pool.runTask({ a: 42, b: 100 }, (err, result) => {
+ console.log(i, err, result);
+ if (++finished === 10)
+ pool.close();
+ });
+}
\ No newline at end of file
diff --git a/.idx/node/worker_threads.js b/.idx/node/worker_threads.js
new file mode 100644
index 0000000..7192c8d
--- /dev/null
+++ b/.idx/node/worker_threads.js
@@ -0,0 +1,57 @@
+'use strict';
+
+const {
+ isInternalThread,
+ isMainThread,
+ SHARE_ENV,
+ resourceLimits,
+ setEnvironmentData,
+ getEnvironmentData,
+ threadId,
+ threadName,
+ Worker,
+} = require('internal/worker');
+
+const {
+ MessagePort,
+ MessageChannel,
+ markAsUncloneable,
+ moveMessagePortToContext,
+ receiveMessageOnPort,
+ BroadcastChannel,
+} = require('internal/worker/io');
+
+const {
+ postMessageToThread,
+} = require('internal/worker/messaging');
+
+const {
+ markAsUntransferable,
+ isMarkedAsUntransferable,
+} = require('internal/buffer');
+
+const { locks } = require('internal/locks');
+
+module.exports = {
+ isInternalThread,
+ isMainThread,
+ MessagePort,
+ MessageChannel,
+ markAsUncloneable,
+ markAsUntransferable,
+ isMarkedAsUntransferable,
+ moveMessagePortToContext,
+ receiveMessageOnPort,
+ resourceLimits,
+ postMessageToThread,
+ threadId,
+ threadName,
+ SHARE_ENV,
+ Worker,
+ parentPort: null,
+ workerData: null,
+ BroadcastChannel,
+ setEnvironmentData,
+ getEnvironmentData,
+ locks,
+};
\ No newline at end of file
diff --git a/.idx/node/zlib.js b/.idx/node/zlib.js
new file mode 100644
index 0000000..d910795
--- /dev/null
+++ b/.idx/node/zlib.js
@@ -0,0 +1,1020 @@
+'use strict';
+
+const {
+ ArrayBuffer,
+ MathMax,
+ NumberIsNaN,
+ ObjectDefineProperties,
+ ObjectDefineProperty,
+ ObjectEntries,
+ ObjectFreeze,
+ ObjectKeys,
+ ObjectSetPrototypeOf,
+ ReflectApply,
+ Symbol,
+ Uint32Array,
+} = primordials;
+
+const {
+ codes: {
+ ERR_BROTLI_INVALID_PARAM,
+ ERR_BUFFER_TOO_LARGE,
+ ERR_INVALID_ARG_TYPE,
+ ERR_OUT_OF_RANGE,
+ ERR_TRAILING_JUNK_AFTER_STREAM_END,
+ ERR_ZSTD_INVALID_PARAM,
+ },
+ genericNodeError,
+} = require('internal/errors');
+const { Transform, finished } = require('stream');
+const {
+ deprecateInstantiation,
+} = require('internal/util');
+const {
+ isArrayBufferView,
+ isAnyArrayBuffer,
+ isUint8Array,
+} = require('internal/util/types');
+const binding = internalBinding('zlib');
+const { crc32: crc32Native } = binding;
+const assert = require('internal/assert');
+const {
+ Buffer,
+ kMaxLength,
+} = require('buffer');
+const { owner_symbol } = require('internal/async_hooks').symbols;
+const {
+ checkRangesOrGetDefault,
+ validateFunction,
+ validateUint32,
+ validateFiniteNumber,
+} = require('internal/validators');
+
+const kFlushFlag = Symbol('kFlushFlag');
+const kError = Symbol('kError');
+
+const constants = internalBinding('constants').zlib;
+const {
+ // Zlib flush levels
+ Z_NO_FLUSH, Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,
+ // Zlib option values
+ Z_MIN_CHUNK, Z_MIN_WINDOWBITS, Z_MAX_WINDOWBITS, Z_MIN_LEVEL, Z_MAX_LEVEL,
+ Z_MIN_MEMLEVEL, Z_MAX_MEMLEVEL, Z_DEFAULT_CHUNK, Z_DEFAULT_COMPRESSION,
+ Z_DEFAULT_STRATEGY, Z_DEFAULT_WINDOWBITS, Z_DEFAULT_MEMLEVEL, Z_FIXED,
+ // Node's compression stream modes (node_zlib_mode)
+ DEFLATE, DEFLATERAW, INFLATE, INFLATERAW, GZIP, GUNZIP, UNZIP,
+ BROTLI_DECODE, BROTLI_ENCODE,
+ ZSTD_COMPRESS, ZSTD_DECOMPRESS,
+ // Brotli operations (~flush levels)
+ BROTLI_OPERATION_PROCESS, BROTLI_OPERATION_FLUSH,
+ BROTLI_OPERATION_FINISH, BROTLI_OPERATION_EMIT_METADATA,
+ // Zstd end directives (~flush levels)
+ ZSTD_e_continue, ZSTD_e_flush, ZSTD_e_end,
+} = constants;
+
+// Translation table for return codes.
+const codes = {
+ Z_OK: constants.Z_OK,
+ Z_STREAM_END: constants.Z_STREAM_END,
+ Z_NEED_DICT: constants.Z_NEED_DICT,
+ Z_ERRNO: constants.Z_ERRNO,
+ Z_STREAM_ERROR: constants.Z_STREAM_ERROR,
+ Z_DATA_ERROR: constants.Z_DATA_ERROR,
+ Z_MEM_ERROR: constants.Z_MEM_ERROR,
+ Z_BUF_ERROR: constants.Z_BUF_ERROR,
+ Z_VERSION_ERROR: constants.Z_VERSION_ERROR,
+};
+
+for (const ckey of ObjectKeys(codes)) {
+ codes[codes[ckey]] = ckey;
+}
+
+function zlibBuffer(engine, buffer, callback) {
+ validateFunction(callback, 'callback');
+ // Streams do not support non-Uint8Array ArrayBufferViews yet. Convert it to a
+ // Buffer without copying.
+ if (isArrayBufferView(buffer) && !isUint8Array(buffer)) {
+ buffer = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);
+ } else if (isAnyArrayBuffer(buffer)) {
+ buffer = Buffer.from(buffer);
+ }
+ engine.buffers = null;
+ engine.nread = 0;
+ engine.cb = callback;
+ engine.on('data', zlibBufferOnData);
+ engine.on('error', zlibBufferOnError);
+ engine.on('end', zlibBufferOnEnd);
+ engine.end(buffer);
+}
+
+function zlibBufferOnData(chunk) {
+ if (!this.buffers) {
+ this.buffers = [chunk];
+ } else {
+ this.buffers.push(chunk);
+ }
+ this.nread += chunk.length;
+ if (this.nread > this._maxOutputLength) {
+ this.close();
+ this.removeAllListeners('end');
+ this.cb(new ERR_BUFFER_TOO_LARGE(this._maxOutputLength));
+ }
+}
+
+function zlibBufferOnError(err) {
+ this.removeAllListeners('end');
+ this.cb(err);
+}
+
+function zlibBufferOnEnd() {
+ let buf;
+ if (this.nread === 0) {
+ buf = Buffer.alloc(0);
+ } else {
+ const bufs = this.buffers;
+ buf = (bufs.length === 1 ? bufs[0] : Buffer.concat(bufs, this.nread));
+ }
+ this.close();
+ if (this._info)
+ this.cb(null, { buffer: buf, engine: this });
+ else
+ this.cb(null, buf);
+}
+
+function zlibBufferSync(engine, buffer) {
+ if (typeof buffer === 'string') {
+ buffer = Buffer.from(buffer);
+ } else if (!isArrayBufferView(buffer)) {
+ if (isAnyArrayBuffer(buffer)) {
+ buffer = Buffer.from(buffer);
+ } else {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'buffer',
+ ['string', 'Buffer', 'TypedArray', 'DataView', 'ArrayBuffer'],
+ buffer,
+ );
+ }
+ }
+ buffer = processChunkSync(engine, buffer, engine._finishFlushFlag);
+ if (engine._info)
+ return { buffer, engine };
+ return buffer;
+}
+
+function zlibOnError(message, errno, code) {
+ const self = this[owner_symbol];
+ // There is no way to cleanly recover.
+ // Continuing only obscures problems.
+
+ const error = genericNodeError(message, { errno, code });
+ error.errno = errno;
+ error.code = code;
+ self.destroy(error);
+ self[kError] = error;
+}
+
+const FLUSH_BOUND = [
+ [ Z_NO_FLUSH, Z_BLOCK ],
+ [ BROTLI_OPERATION_PROCESS, BROTLI_OPERATION_EMIT_METADATA ],
+ [ ZSTD_e_continue, ZSTD_e_end ],
+];
+const FLUSH_BOUND_IDX_NORMAL = 0;
+const FLUSH_BOUND_IDX_BROTLI = 1;
+const FLUSH_BOUND_IDX_ZSTD = 2;
+
+/**
+ * The base class for all Zlib-style streams.
+ * @class
+ */
+function ZlibBase(opts, mode, handle, { flush, finishFlush, fullFlush }) {
+ let chunkSize = Z_DEFAULT_CHUNK;
+ let maxOutputLength = kMaxLength;
+ // The ZlibBase class is not exported to user land, the mode should only be
+ // passed in by us.
+ assert(typeof mode === 'number');
+ assert(mode >= DEFLATE && mode <= ZSTD_DECOMPRESS);
+
+ let flushBoundIdx;
+ if (mode === BROTLI_ENCODE || mode === BROTLI_DECODE) {
+ flushBoundIdx = FLUSH_BOUND_IDX_BROTLI;
+ } else if (mode === ZSTD_COMPRESS || mode === ZSTD_DECOMPRESS) {
+ flushBoundIdx = FLUSH_BOUND_IDX_ZSTD;
+ } else {
+ flushBoundIdx = FLUSH_BOUND_IDX_NORMAL;
+ }
+
+ if (opts) {
+ chunkSize = opts.chunkSize;
+ if (!validateFiniteNumber(chunkSize, 'options.chunkSize')) {
+ chunkSize = Z_DEFAULT_CHUNK;
+ } else if (chunkSize < Z_MIN_CHUNK) {
+ throw new ERR_OUT_OF_RANGE('options.chunkSize',
+ `>= ${Z_MIN_CHUNK}`, chunkSize);
+ }
+
+ flush = checkRangesOrGetDefault(
+ opts.flush, 'options.flush',
+ FLUSH_BOUND[flushBoundIdx][0], FLUSH_BOUND[flushBoundIdx][1], flush);
+
+ finishFlush = checkRangesOrGetDefault(
+ opts.finishFlush, 'options.finishFlush',
+ FLUSH_BOUND[flushBoundIdx][0], FLUSH_BOUND[flushBoundIdx][1],
+ finishFlush);
+
+ maxOutputLength = checkRangesOrGetDefault(
+ opts.maxOutputLength, 'options.maxOutputLength',
+ 1, kMaxLength, kMaxLength);
+
+ if (opts.encoding || opts.objectMode || opts.writableObjectMode) {
+ opts = { ...opts };
+ opts.encoding = null;
+ opts.objectMode = false;
+ opts.writableObjectMode = false;
+ }
+ }
+
+ ReflectApply(Transform, this, [{ autoDestroy: true, ...opts }]);
+ this[kError] = null;
+ this.bytesWritten = 0;
+ this._handle = handle;
+ handle[owner_symbol] = this;
+ // Used by processCallback() and zlibOnError()
+ handle.onerror = zlibOnError;
+ this._outBuffer = Buffer.allocUnsafe(chunkSize);
+ this._outOffset = 0;
+
+ this._chunkSize = chunkSize;
+ this._defaultFlushFlag = flush;
+ this._finishFlushFlag = finishFlush;
+ this._defaultFullFlushFlag = fullFlush;
+ this._info = opts?.info;
+ this._maxOutputLength = maxOutputLength;
+
+ this._rejectGarbageAfterEnd = opts?.rejectGarbageAfterEnd === true;
+}
+ObjectSetPrototypeOf(ZlibBase.prototype, Transform.prototype);
+ObjectSetPrototypeOf(ZlibBase, Transform);
+
+ObjectDefineProperty(ZlibBase.prototype, '_closed', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ return !this._handle;
+ },
+});
+
+/**
+ * @this {ZlibBase}
+ * @returns {void}
+ */
+ZlibBase.prototype.reset = function() {
+ assert(this._handle, 'zlib binding closed');
+ return this._handle.reset();
+};
+
+/**
+ * @this {ZlibBase}
+ * This is the _flush function called by the transform class,
+ * internally, when the last chunk has been written.
+ * @returns {void}
+ */
+ZlibBase.prototype._flush = function(callback) {
+ this._transform(Buffer.alloc(0), '', callback);
+};
+
+/**
+ * @this {ZlibBase}
+ * Force Transform compat behavior.
+ * @returns {void}
+ */
+ZlibBase.prototype._final = function(callback) {
+ callback();
+};
+
+// If a flush is scheduled while another flush is still pending, a way to figure
+// out which one is the "stronger" flush is needed.
+// This is currently only used to figure out which flush flag to use for the
+// last chunk.
+// Roughly, the following holds:
+// Z_NO_FLUSH < Z_BLOCK < Z_PARTIAL_FLUSH <
+// Z_SYNC_FLUSH < Z_FULL_FLUSH < Z_FINISH
+const flushiness = [];
+const kFlushFlagList = [Z_NO_FLUSH, Z_BLOCK, Z_PARTIAL_FLUSH,
+ Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH];
+for (let i = 0; i < kFlushFlagList.length; i++) {
+ flushiness[kFlushFlagList[i]] = i;
+}
+
+function maxFlush(a, b) {
+ return flushiness[a] > flushiness[b] ? a : b;
+}
+
+// Set up a list of 'special' buffers that can be written using .write()
+// from the .flush() code as a way of introducing flushing operations into the
+// write sequence.
+const kFlushBuffers = [];
+{
+ const dummyArrayBuffer = new ArrayBuffer();
+ for (const flushFlag of kFlushFlagList) {
+ kFlushBuffers[flushFlag] = Buffer.from(dummyArrayBuffer);
+ kFlushBuffers[flushFlag][kFlushFlag] = flushFlag;
+ }
+}
+
+ZlibBase.prototype.flush = function(kind, callback) {
+ if (typeof kind === 'function' || (kind === undefined && !callback)) {
+ callback = kind;
+ kind = this._defaultFullFlushFlag;
+ }
+
+ if (this.writableFinished) {
+ if (callback)
+ process.nextTick(callback);
+ } else if (this.writableEnded) {
+ if (callback)
+ this.once('end', callback);
+ } else {
+ this.write(kFlushBuffers[kind], '', callback);
+ }
+};
+
+/**
+ * @this {import('stream').Transform}
+ * @param {(err?: Error) => any} [callback]
+ */
+ZlibBase.prototype.close = function(callback) {
+ if (callback) finished(this, callback);
+ this.destroy();
+};
+
+ZlibBase.prototype._destroy = function(err, callback) {
+ _close(this);
+ callback(err);
+};
+
+ZlibBase.prototype._transform = function(chunk, encoding, cb) {
+ let flushFlag = this._defaultFlushFlag;
+ // We use a 'fake' zero-length chunk to carry information about flushes from
+ // the public API to the actual stream implementation.
+ if (typeof chunk[kFlushFlag] === 'number') {
+ flushFlag = chunk[kFlushFlag];
+ }
+
+ // For the last chunk, also apply `_finishFlushFlag`.
+ if (this.writableEnded && this.writableLength === chunk.byteLength) {
+ flushFlag = maxFlush(flushFlag, this._finishFlushFlag);
+ }
+ processChunk(this, chunk, flushFlag, cb);
+};
+
+ZlibBase.prototype._processChunk = function(chunk, flushFlag, cb) {
+ // _processChunk() is left for backwards compatibility
+ if (typeof cb === 'function')
+ processChunk(this, chunk, flushFlag, cb);
+ else
+ return processChunkSync(this, chunk, flushFlag);
+};
+
+function processChunkSync(self, chunk, flushFlag) {
+ let availInBefore = chunk.byteLength;
+ let availOutBefore = self._chunkSize - self._outOffset;
+ let inOff = 0;
+ let availOutAfter;
+ let availInAfter;
+
+ const buffers = [];
+ let nread = 0;
+ let inputRead = 0;
+ const state = self._writeState;
+ const handle = self._handle;
+ let buffer = self._outBuffer;
+ let offset = self._outOffset;
+ const chunkSize = self._chunkSize;
+
+ let error;
+ self.on('error', function onError(er) {
+ error = er;
+ });
+
+ while (true) {
+ handle.writeSync(flushFlag,
+ chunk, // in
+ inOff, // in_off
+ availInBefore, // in_len
+ buffer, // out
+ offset, // out_off
+ availOutBefore); // out_len
+ if (error)
+ throw error;
+ else if (self[kError])
+ throw self[kError];
+
+ availOutAfter = state[0];
+ availInAfter = state[1];
+
+ const inDelta = (availInBefore - availInAfter);
+ inputRead += inDelta;
+
+ const have = availOutBefore - availOutAfter;
+ if (have > 0) {
+ const out = buffer.slice(offset, offset + have);
+ offset += have;
+ buffers.push(out);
+ nread += out.byteLength;
+
+ if (nread > self._maxOutputLength) {
+ _close(self);
+ throw new ERR_BUFFER_TOO_LARGE(self._maxOutputLength);
+ }
+
+ } else {
+ assert(have === 0, 'have should not go down');
+ }
+
+ // Exhausted the output buffer, or used all the input create a new one.
+ if (availOutAfter === 0 || offset >= chunkSize) {
+ availOutBefore = chunkSize;
+ offset = 0;
+ buffer = Buffer.allocUnsafe(chunkSize);
+ }
+
+ if (availOutAfter === 0) {
+ // Not actually done. Need to reprocess.
+ // Also, update the availInBefore to the availInAfter value,
+ // so that if we have to hit it a third (fourth, etc.) time,
+ // it'll have the correct byte counts.
+ inOff += inDelta;
+ availInBefore = availInAfter;
+ } else {
+ break;
+ }
+ }
+
+ self.bytesWritten = inputRead;
+ _close(self);
+
+ if (nread === 0)
+ return Buffer.alloc(0);
+
+ return (buffers.length === 1 ? buffers[0] : Buffer.concat(buffers, nread));
+}
+
+function processChunk(self, chunk, flushFlag, cb) {
+ const handle = self._handle;
+ if (!handle) return process.nextTick(cb);
+
+ handle.buffer = chunk;
+ handle.cb = cb;
+ handle.availOutBefore = self._chunkSize - self._outOffset;
+ handle.availInBefore = chunk.byteLength;
+ handle.inOff = 0;
+ handle.flushFlag = flushFlag;
+
+ handle.write(flushFlag,
+ chunk, // in
+ 0, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ handle.availOutBefore); // out_len
+}
+
+function processCallback() {
+ // This callback's context (`this`) is the `_handle` (ZCtx) object. It is
+ // important to null out the values once they are no longer needed since
+ // `_handle` can stay in memory long after the buffer is needed.
+ const handle = this;
+ const self = this[owner_symbol];
+ const state = self._writeState;
+
+ if (self.destroyed) {
+ this.buffer = null;
+ this.cb();
+ return;
+ }
+
+ const availOutAfter = state[0];
+ const availInAfter = state[1];
+
+ const inDelta = handle.availInBefore - availInAfter;
+ self.bytesWritten += inDelta;
+
+ const have = handle.availOutBefore - availOutAfter;
+ let streamBufferIsFull = false;
+ if (have > 0) {
+ const out = self._outBuffer.slice(self._outOffset, self._outOffset + have);
+ self._outOffset += have;
+ streamBufferIsFull = !self.push(out);
+ } else {
+ assert(have === 0, 'have should not go down');
+ }
+
+ if (self.destroyed) {
+ this.cb();
+ return;
+ }
+
+ // Exhausted the output buffer, or used all the input create a new one.
+ if (availOutAfter === 0 || self._outOffset >= self._chunkSize) {
+ handle.availOutBefore = self._chunkSize;
+ self._outOffset = 0;
+ self._outBuffer = Buffer.allocUnsafe(self._chunkSize);
+ }
+
+ if (availOutAfter === 0) {
+ // Not actually done. Need to reprocess.
+ // Also, update the availInBefore to the availInAfter value,
+ // so that if we have to hit it a third (fourth, etc.) time,
+ // it'll have the correct byte counts.
+ handle.inOff += inDelta;
+ handle.availInBefore = availInAfter;
+
+
+ if (!streamBufferIsFull) {
+ this.write(handle.flushFlag,
+ this.buffer, // in
+ handle.inOff, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ self._chunkSize); // out_len
+ } else {
+ const oldRead = self._read;
+ self._read = (n) => {
+ self._read = oldRead;
+ this.write(handle.flushFlag,
+ this.buffer, // in
+ handle.inOff, // in_off
+ handle.availInBefore, // in_len
+ self._outBuffer, // out
+ self._outOffset, // out_off
+ self._chunkSize); // out_len
+ self._read(n);
+ };
+ }
+ return;
+ }
+
+ if (availInAfter > 0) {
+ // If we have more input that should be written, but we also have output
+ // space available, that means that the compression library was not
+ // interested in receiving more data, and in particular that the input
+ // stream has ended early.
+ // This applies to streams where we don't check data past the end of
+ // what was consumed; that is, everything except Gunzip/Unzip.
+
+ if (self._rejectGarbageAfterEnd) {
+ const err = new ERR_TRAILING_JUNK_AFTER_STREAM_END();
+ self.destroy(err);
+ this.cb(err);
+ return;
+ }
+
+ self.push(null);
+ }
+
+ // Finished with the chunk.
+ this.buffer = null;
+ this.cb();
+}
+
+/**
+ * @param {ZlibBase} engine
+ * @private
+ */
+function _close(engine) {
+ // Caller may invoke .close after a zlib error (which will null _handle)
+ engine._handle?.close();
+ engine._handle = null;
+}
+
+const zlibDefaultOpts = {
+ flush: Z_NO_FLUSH,
+ finishFlush: Z_FINISH,
+ fullFlush: Z_FULL_FLUSH,
+};
+// Base class for all streams actually backed by zlib and using zlib-specific
+// parameters.
+function Zlib(opts, mode) {
+ let windowBits = Z_DEFAULT_WINDOWBITS;
+ let level = Z_DEFAULT_COMPRESSION;
+ let memLevel = Z_DEFAULT_MEMLEVEL;
+ let strategy = Z_DEFAULT_STRATEGY;
+ let dictionary;
+
+ if (opts) {
+ // windowBits is special. On the compression side, 0 is an invalid value.
+ // But on the decompression side, a value of 0 for windowBits tells zlib
+ // to use the window size in the zlib header of the compressed stream.
+ if ((opts.windowBits == null || opts.windowBits === 0) &&
+ (mode === INFLATE ||
+ mode === GUNZIP ||
+ mode === UNZIP)) {
+ windowBits = 0;
+ } else {
+ // `{ windowBits: 8 }` is valid for deflate but not gzip.
+ const min = Z_MIN_WINDOWBITS + (mode === GZIP ? 1 : 0);
+ windowBits = checkRangesOrGetDefault(
+ opts.windowBits, 'options.windowBits',
+ min, Z_MAX_WINDOWBITS, Z_DEFAULT_WINDOWBITS);
+ }
+
+ level = checkRangesOrGetDefault(
+ opts.level, 'options.level',
+ Z_MIN_LEVEL, Z_MAX_LEVEL, Z_DEFAULT_COMPRESSION);
+
+ memLevel = checkRangesOrGetDefault(
+ opts.memLevel, 'options.memLevel',
+ Z_MIN_MEMLEVEL, Z_MAX_MEMLEVEL, Z_DEFAULT_MEMLEVEL);
+
+ strategy = checkRangesOrGetDefault(
+ opts.strategy, 'options.strategy',
+ Z_DEFAULT_STRATEGY, Z_FIXED, Z_DEFAULT_STRATEGY);
+
+ dictionary = opts.dictionary;
+ if (dictionary !== undefined && !isArrayBufferView(dictionary)) {
+ if (isAnyArrayBuffer(dictionary)) {
+ dictionary = Buffer.from(dictionary);
+ } else {
+ throw new ERR_INVALID_ARG_TYPE(
+ 'options.dictionary',
+ ['Buffer', 'TypedArray', 'DataView', 'ArrayBuffer'],
+ dictionary,
+ );
+ }
+ }
+ }
+
+ const handle = new binding.Zlib(mode);
+ // Ideally, we could let ZlibBase() set up _writeState. I haven't been able
+ // to come up with a good solution that doesn't break our internal API,
+ // and with it all supported npm versions at the time of writing.
+ this._writeState = new Uint32Array(2);
+ handle.init(windowBits,
+ level,
+ memLevel,
+ strategy,
+ this._writeState,
+ processCallback,
+ dictionary);
+
+ ReflectApply(ZlibBase, this, [opts, mode, handle, zlibDefaultOpts]);
+
+ this._level = level;
+ this._strategy = strategy;
+ this._mode = mode;
+}
+ObjectSetPrototypeOf(Zlib.prototype, ZlibBase.prototype);
+ObjectSetPrototypeOf(Zlib, ZlibBase);
+
+// This callback is used by `.params()` to wait until a full flush happened
+// before adjusting the parameters. In particular, the call to the native
+// `params()` function should not happen while a write is currently in progress
+// on the threadpool.
+function paramsAfterFlushCallback(level, strategy, callback) {
+ assert(this._handle, 'zlib binding closed');
+ this._handle.params(level, strategy);
+ if (!this.destroyed) {
+ this._level = level;
+ this._strategy = strategy;
+ if (callback) callback();
+ }
+}
+
+Zlib.prototype.params = function params(level, strategy, callback) {
+ checkRangesOrGetDefault(level, 'level', Z_MIN_LEVEL, Z_MAX_LEVEL);
+ checkRangesOrGetDefault(strategy, 'strategy', Z_DEFAULT_STRATEGY, Z_FIXED);
+
+ if (this._level !== level || this._strategy !== strategy) {
+ this.flush(
+ Z_SYNC_FLUSH,
+ paramsAfterFlushCallback.bind(this, level, strategy, callback),
+ );
+ } else {
+ process.nextTick(callback);
+ }
+};
+
+// generic zlib
+// minimal 2-byte header
+function Deflate(opts) {
+ if (!(this instanceof Deflate)) {
+ return deprecateInstantiation(Deflate, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, DEFLATE]);
+}
+ObjectSetPrototypeOf(Deflate.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Deflate, Zlib);
+
+function Inflate(opts) {
+ if (!(this instanceof Inflate)) {
+ return deprecateInstantiation(Inflate, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, INFLATE]);
+}
+ObjectSetPrototypeOf(Inflate.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Inflate, Zlib);
+
+function Gzip(opts) {
+ if (!(this instanceof Gzip)) {
+ return deprecateInstantiation(Gzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, GZIP]);
+}
+ObjectSetPrototypeOf(Gzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Gzip, Zlib);
+
+function Gunzip(opts) {
+ if (!(this instanceof Gunzip)) {
+ return deprecateInstantiation(Gunzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, GUNZIP]);
+}
+ObjectSetPrototypeOf(Gunzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Gunzip, Zlib);
+
+function DeflateRaw(opts) {
+ if (opts && opts.windowBits === 8) opts.windowBits = 9;
+ if (!(this instanceof DeflateRaw)) {
+ return deprecateInstantiation(DeflateRaw, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, DEFLATERAW]);
+}
+ObjectSetPrototypeOf(DeflateRaw.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(DeflateRaw, Zlib);
+
+function InflateRaw(opts) {
+ if (!(this instanceof InflateRaw)) {
+ return deprecateInstantiation(InflateRaw, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, INFLATERAW]);
+}
+ObjectSetPrototypeOf(InflateRaw.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(InflateRaw, Zlib);
+
+function Unzip(opts) {
+ if (!(this instanceof Unzip)) {
+ return deprecateInstantiation(Unzip, 'DEP0184', opts);
+ }
+ ReflectApply(Zlib, this, [opts, UNZIP]);
+}
+ObjectSetPrototypeOf(Unzip.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Unzip, Zlib);
+
+function createConvenienceMethod(ctor, sync) {
+ if (sync) {
+ return function syncBufferWrapper(buffer, opts) {
+ return zlibBufferSync(new ctor(opts), buffer);
+ };
+ }
+ return function asyncBufferWrapper(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new ctor(opts), buffer, callback);
+ };
+}
+
+const kMaxBrotliParam = MathMax(
+ ...ObjectEntries(constants)
+ .map(({ 0: key, 1: value }) => (key.startsWith('BROTLI_PARAM_') ? value : 0)),
+);
+const brotliInitParamsArray = new Uint32Array(kMaxBrotliParam + 1);
+
+const brotliDefaultOpts = {
+ flush: BROTLI_OPERATION_PROCESS,
+ finishFlush: BROTLI_OPERATION_FINISH,
+ fullFlush: BROTLI_OPERATION_FLUSH,
+};
+function Brotli(opts, mode) {
+ assert(mode === BROTLI_DECODE || mode === BROTLI_ENCODE);
+
+ brotliInitParamsArray.fill(-1);
+ if (opts?.params) {
+ ObjectKeys(opts.params).forEach((origKey) => {
+ const key = +origKey;
+ if (NumberIsNaN(key) || key < 0 || key > kMaxBrotliParam ||
+ (brotliInitParamsArray[key] | 0) !== -1) {
+ throw new ERR_BROTLI_INVALID_PARAM(origKey);
+ }
+
+ const value = opts.params[origKey];
+ if (typeof value !== 'number' && typeof value !== 'boolean') {
+ throw new ERR_INVALID_ARG_TYPE('options.params[key]',
+ 'number', opts.params[origKey]);
+ }
+ brotliInitParamsArray[key] = value;
+ });
+ }
+
+ const handle = mode === BROTLI_DECODE ?
+ new binding.BrotliDecoder(mode) : new binding.BrotliEncoder(mode);
+
+ this._writeState = new Uint32Array(2);
+ handle.init(brotliInitParamsArray, this._writeState, processCallback);
+
+ ReflectApply(ZlibBase, this, [opts, mode, handle, brotliDefaultOpts]);
+}
+ObjectSetPrototypeOf(Brotli.prototype, Zlib.prototype);
+ObjectSetPrototypeOf(Brotli, Zlib);
+
+function BrotliCompress(opts) {
+ if (!(this instanceof BrotliCompress)) {
+ return deprecateInstantiation(BrotliCompress, 'DEP0184', opts);
+ }
+ ReflectApply(Brotli, this, [opts, BROTLI_ENCODE]);
+}
+ObjectSetPrototypeOf(BrotliCompress.prototype, Brotli.prototype);
+ObjectSetPrototypeOf(BrotliCompress, Brotli);
+
+function BrotliDecompress(opts) {
+ if (!(this instanceof BrotliDecompress)) {
+ return deprecateInstantiation(BrotliDecompress, 'DEP0184', opts);
+ }
+ ReflectApply(Brotli, this, [opts, BROTLI_DECODE]);
+}
+ObjectSetPrototypeOf(BrotliDecompress.prototype, Brotli.prototype);
+ObjectSetPrototypeOf(BrotliDecompress, Brotli);
+
+
+const zstdDefaultOpts = {
+ flush: ZSTD_e_continue,
+ finishFlush: ZSTD_e_end,
+ fullFlush: ZSTD_e_flush,
+};
+class Zstd extends ZlibBase {
+ constructor(opts, mode, initParamsArray, maxParam) {
+ assert(mode === ZSTD_COMPRESS || mode === ZSTD_DECOMPRESS);
+
+ initParamsArray.fill(-1);
+ if (opts?.params) {
+ ObjectKeys(opts.params).forEach((origKey) => {
+ const key = +origKey;
+ if (NumberIsNaN(key) || key < 0 || key > maxParam ||
+ (initParamsArray[key] | 0) !== -1) {
+ throw new ERR_ZSTD_INVALID_PARAM(origKey);
+ }
+
+ const value = opts.params[origKey];
+ if (typeof value !== 'number' && typeof value !== 'boolean') {
+ throw new ERR_INVALID_ARG_TYPE('options.params[key]',
+ 'number', opts.params[origKey]);
+ }
+ initParamsArray[key] = value;
+ });
+ }
+
+ const handle = mode === ZSTD_COMPRESS ?
+ new binding.ZstdCompress() : new binding.ZstdDecompress();
+
+ const pledgedSrcSize = opts?.pledgedSrcSize ?? undefined;
+
+ const writeState = new Uint32Array(2);
+
+ handle.init(
+ initParamsArray,
+ pledgedSrcSize,
+ writeState,
+ processCallback,
+ opts?.dictionary && isArrayBufferView(opts.dictionary) ? opts.dictionary : undefined,
+ );
+
+ super(opts, mode, handle, zstdDefaultOpts);
+ this._writeState = writeState;
+ }
+}
+
+const kMaxZstdCParam = MathMax(...ObjectKeys(constants).map(
+ (key) => (key.startsWith('ZSTD_c_') ?
+ constants[key] :
+ 0),
+));
+
+const zstdInitCParamsArray = new Uint32Array(kMaxZstdCParam + 1);
+
+class ZstdCompress extends Zstd {
+ constructor(opts) {
+ super(opts, ZSTD_COMPRESS, zstdInitCParamsArray, kMaxZstdCParam);
+ }
+}
+
+const kMaxZstdDParam = MathMax(...ObjectKeys(constants).map(
+ (key) => (key.startsWith('ZSTD_d_') ?
+ constants[key] :
+ 0),
+));
+
+const zstdInitDParamsArray = new Uint32Array(kMaxZstdDParam + 1);
+
+class ZstdDecompress extends Zstd {
+ constructor(opts) {
+ super(opts, ZSTD_DECOMPRESS, zstdInitDParamsArray, kMaxZstdDParam);
+ }
+}
+
+function createProperty(ctor) {
+ return {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ value: function(options) {
+ return new ctor(options);
+ },
+ };
+}
+
+function crc32(data, value = 0) {
+ if (typeof data !== 'string' && !isArrayBufferView(data)) {
+ throw new ERR_INVALID_ARG_TYPE('data', ['Buffer', 'TypedArray', 'DataView', 'string'], data);
+ }
+ validateUint32(value, 'value');
+ return crc32Native(data, value);
+}
+
+// Legacy alias on the C++ wrapper object. This is not public API, so we may
+// want to runtime-deprecate it at some point. There's no hurry, though.
+ObjectDefineProperty(binding.Zlib.prototype, 'jsref', {
+ __proto__: null,
+ get() { return this[owner_symbol]; },
+ set(v) { return this[owner_symbol] = v; },
+});
+
+module.exports = {
+ crc32,
+ Deflate,
+ Inflate,
+ Gzip,
+ Gunzip,
+ DeflateRaw,
+ InflateRaw,
+ Unzip,
+ BrotliCompress,
+ BrotliDecompress,
+ ZstdCompress,
+ ZstdDecompress,
+
+ // Convenience methods.
+ // compress/decompress a string or buffer in one step.
+ deflate: createConvenienceMethod(Deflate, false),
+ deflateSync: createConvenienceMethod(Deflate, true),
+ gzip: createConvenienceMethod(Gzip, false),
+ gzipSync: createConvenienceMethod(Gzip, true),
+ deflateRaw: createConvenienceMethod(DeflateRaw, false),
+ deflateRawSync: createConvenienceMethod(DeflateRaw, true),
+ unzip: createConvenienceMethod(Unzip, false),
+ unzipSync: createConvenienceMethod(Unzip, true),
+ inflate: createConvenienceMethod(Inflate, false),
+ inflateSync: createConvenienceMethod(Inflate, true),
+ gunzip: createConvenienceMethod(Gunzip, false),
+ gunzipSync: createConvenienceMethod(Gunzip, true),
+ inflateRaw: createConvenienceMethod(InflateRaw, false),
+ inflateRawSync: createConvenienceMethod(InflateRaw, true),
+ brotliCompress: createConvenienceMethod(BrotliCompress, false),
+ brotliCompressSync: createConvenienceMethod(BrotliCompress, true),
+ brotliDecompress: createConvenienceMethod(BrotliDecompress, false),
+ brotliDecompressSync: createConvenienceMethod(BrotliDecompress, true),
+ zstdCompress: createConvenienceMethod(ZstdCompress, false),
+ zstdCompressSync: createConvenienceMethod(ZstdCompress, true),
+ zstdDecompress: createConvenienceMethod(ZstdDecompress, false),
+ zstdDecompressSync: createConvenienceMethod(ZstdDecompress, true),
+};
+
+ObjectDefineProperties(module.exports, {
+ createDeflate: createProperty(Deflate),
+ createInflate: createProperty(Inflate),
+ createDeflateRaw: createProperty(DeflateRaw),
+ createInflateRaw: createProperty(InflateRaw),
+ createGzip: createProperty(Gzip),
+ createGunzip: createProperty(Gunzip),
+ createUnzip: createProperty(Unzip),
+ createBrotliCompress: createProperty(BrotliCompress),
+ createBrotliDecompress: createProperty(BrotliDecompress),
+ createZstdCompress: createProperty(ZstdCompress),
+ createZstdDecompress: createProperty(ZstdDecompress),
+ constants: {
+ __proto__: null,
+ configurable: false,
+ enumerable: true,
+ value: constants,
+ },
+ codes: {
+ __proto__: null,
+ enumerable: true,
+ writable: false,
+ value: ObjectFreeze(codes),
+ },
+});
+
+// These should be considered deprecated
+// expose all the zlib constants
+for (const { 0: key, 1: value } of ObjectEntries(constants)) {
+ if (key.startsWith('BROTLI')) continue;
+ ObjectDefineProperty(module.exports, key, {
+ __proto__: null,
+ enumerable: false,
+ value,
+ writable: false,
+ });
+}
\ No newline at end of file
diff --git a/.idx/output.js b/.idx/output.js
new file mode 100644
index 0000000..82dade2
--- /dev/null
+++ b/.idx/output.js
@@ -0,0 +1,28 @@
+try {
+ var _usingCtx = babelHelpers.usingCtx();
+ var handlerSync = _usingCtx.u(openSync());
+ var handlerAsync = _usingCtx.a(await openAsync());
+ } catch (_) {
+ _usingCtx.e = _;
+ } finally {
+ await _usingCtx.d();
+ }
+const data = await fetch(import.meta.resolve("./data.json")).then(r => r.json());
+const regex = /(?:[Aa])a/
+const regex = /(?:(?:^|(?<=[\n\r\u2028\u2029]))a)a/
+const regex = /(?:[\s\S])./;
+import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
+
+const _jsxFileName = "input.jsx";
+const profile = _jsxDEV("div", {
+ children: [
+ _jsxDEV("img", {
+ src: "avatar.png",
+ className: "profile",
+ }, undefined, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 5 }, this),
+ _jsxDEV("h3", {
+ children: [user.firstName, user.lastName].join(" "),
+ }, undefined, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 5 }, this),
+ ]},
+ undefined, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 3 }, this
+);
\ No newline at end of file
diff --git a/.idx/pages/# globals.css b/.idx/pages/# globals.css
new file mode 100644
index 0000000..884fc9f
--- /dev/null
+++ b/.idx/pages/# globals.css
@@ -0,0 +1,300 @@
+@layer theme, base, mui, components, utilities;
+@import 'tailwindcss';
+
+{@theme inline {
+ /* Material UI typography */
+ --font-h1: var(--mui-font-h1);
+ --font-h2: var(--mui-font-h2);
+ --font-h3: var(--mui-font-h3);
+ --font-h4: var(--mui-font-h4);
+ --font-h5: var(--mui-font-h5);
+ --font-h6: var(--mui-font-h6);
+ --font-subtitle1: var(--mui-font-subtitle1);
+ --font-subtitle2: var(--mui-font-subtitle2);
+ --font-body1: var(--mui-font-body1);
+ --font-body2: var(--mui-font-body2);
+ --font-button: var(--mui-font-button);
+ --font-caption: var(--mui-font-caption);
+ --font-overline: var(--mui-font-overline);
+
+ --letter-spacing-h1: -0.01562em;
+ --letter-spacing-h2: -0.00833em;
+ --letter-spacing-h4: 0.00735em;
+ --letter-spacing-h6: 0.0075em;
+ --letter-spacing-body1: 0.00938em;
+ --letter-spacing-body2: 0.01071em;
+
+ /* Material UI breakpoints */
+ --breakpoint-sm: 37.5rem; /* 600px */
+ --breakpoint-md: 56.25rem; /* 900px */
+ --breakpoint-lg: 75rem; /* 1200px */
+ --breakpoint-xl: 96rem; /* 1536px */
+ --breakpoint-2xl: 120rem; /* 1920px */
+
+ /* Material UI theme colors */
+ --color-primary: rgb(var(--mui-palette-primary-mainChannel));
+ --color-primary-light: rgb(var(--mui-palette-primary-lightChannel));
+ --color-primary-dark: rgb(var(--mui-palette-primary-darkChannel));
+ --color-primary-contrast: rgb(var(--mui-palette-primary-contrastTextChannel));
+
+ --color-secondary: rgb(var(--mui-palette-secondary-mainChannel));
+ --color-secondary-light: rgb(var(--mui-palette-secondary-lightChannel));
+ --color-secondary-dark: rgb(var(--mui-palette-secondary-darkChannel));
+ --color-secondary-contrast: rgb(var(--mui-palette-secondary-contrastTextChannel));
+
+ /* Material UI status colors */
+ --color-info: rgb(var(--mui-palette-info-mainChannel));
+ --color-info-light: rgb(var(--mui-palette-info-lightChannel));
+ --color-info-dark: rgb(var(--mui-palette-info-darkChannel));
+ --color-info-contrast: rgb(var(--mui-palette-info-contrastTextChannel));
+
+ --color-error: rgb(var(--mui-palette-error-mainChannel));
+ --color-error-light: rgb(var(--mui-palette-error-lightChannel));
+ --color-error-dark: rgb(var(--mui-palette-error-darkChannel));
+ --color-error-contrast: rgb(var(--mui-palette-error-contrastTextChannel));
+
+ --color-success: rgb(var(--mui-palette-success-mainChannel));
+ --color-success-light: rgb(var(--mui-palette-success-lightChannel));
+ --color-success-dark: rgb(var(--mui-palette-success-darkChannel));
+ --color-success-contrast: rgb(var(--mui-palette-success-contrastTextChannel));
+
+ --color-warning: rgb(var(--mui-palette-warning-mainChannel));
+ --color-warning-light: rgb(var(--mui-palette-warning-lightChannel));
+ --color-warning-dark: rgb(var(--mui-palette-warning-darkChannel));
+ --color-warning-contrast: rgb(var(--mui-palette-warning-contrastTextChannel));
+
+ /* Material UI text & common colors */
+ --color-text-primary: rgb(var(--mui-palette-text-primaryChannel));
+ --color-text-secondary: rgb(var(--mui-palette-text-secondaryChannel));
+ --color-text-disabled: var(--mui-palette-text-disabled);
+ --color-common-background: var(--mui-palette-common-background);
+ --color-common-onBackground: var(--mui-palette-common-onBackground);
+ --color-divider: var(--mui-palette-divider);
+
+ /* Material UI background colors */
+ --color-background-default: rgb(var(--mui-palette-background-defaultChannel));
+ --color-background-paper: rgb(var(--mui-palette-background-paperChannel));
+
+ /* Material UI action colors */
+ --color-action-active: var(--mui-palette-action-active);
+ --color-action-hover: var(--mui-palette-action-hover);
+ --color-action-selected: var(--mui-palette-action-selected);
+ --color-action-disabled: var(--mui-palette-action-disabled);
+ --color-action-focus: var(--mui-palette-action-focus);
+
+ /* Material UI gray scale */
+ --color-gray-50: var(--mui-palette-grey-50);
+ --color-gray-100: var(--mui-palette-grey-100);
+ --color-gray-200: var(--mui-palette-grey-200);
+ --color-gray-300: var(--mui-palette-grey-300);
+ --color-gray-400: var(--mui-palette-grey-400);
+ --color-gray-500: var(--mui-palette-grey-500);
+ --color-gray-600: var(--mui-palette-grey-600);
+ --color-gray-700: var(--mui-palette-grey-700);
+ --color-gray-800: var(--mui-palette-grey-800);
+ --color-gray-900: var(--mui-palette-grey-900);
+ --color-gray-A100: var(--mui-palette-grey-A100);
+ --color-gray-A200: var(--mui-palette-grey-A200);
+ --color-gray-A400: var(--mui-palette-grey-A400);
+ --color-gray-A700: var(--mui-palette-grey-A700);
+
+ /* Material UI Component Colors */
+ /* Alert */
+ --color-Alert-error: var(--mui-palette-Alert-errorColor);
+ --color-Alert-info: var(--mui-palette-Alert-infoColor);
+ --color-Alert-success: var(--mui-palette-Alert-successColor);
+ --color-Alert-warning: var(--mui-palette-Alert-warningColor);
+ --color-Alert-errorFilled: var(--mui-palette-Alert-errorFilledBg);
+ --color-Alert-infoFilled: var(--mui-palette-Alert-infoFilledBg);
+ --color-Alert-successFilled: var(--mui-palette-Alert-successFilledBg);
+ --color-Alert-warningFilled: var(--mui-palette-Alert-warningFilledBg);
+ --color-Alert-errorFilledColor: var(--mui-palette-Alert-errorFilledColor);
+ --color-Alert-infoFilledColor: var(--mui-palette-Alert-infoFilledColor);
+ --color-Alert-successFilledColor: var(--mui-palette-Alert-successFilledColor);
+ --color-Alert-warningFilledColor: var(--mui-palette-Alert-warningFilledColor);
+ --color-Alert-errorStandard: var(--mui-palette-Alert-errorStandardBg);
+ --color-Alert-infoStandard: var(--mui-palette-Alert-infoStandardBg);
+ --color-Alert-successStandard: var(--mui-palette-Alert-successStandardBg);
+ --color-Alert-warningStandard: var(--mui-palette-Alert-warningStandardBg);
+ --color-Alert-errorIcon: var(--mui-palette-Alert-errorIconColor);
+ --color-Alert-infoIcon: var(--mui-palette-Alert-infoIconColor);
+ --color-Alert-successIcon: var(--mui-palette-Alert-successIconColor);
+ --color-Alert-warningIcon: var(--mui-palette-Alert-warningIconColor);
+
+ /* AppBar */
+ --color-AppBar-default: var(--mui-palette-AppBar-defaultBg);
+
+ /* Avatar */
+ --color-Avatar-default: var(--mui-palette-Avatar-defaultBg);
+
+ /* Button */
+ --color-Button-inheritContained: var(--mui-palette-Button-inheritContainedBg);
+ --color-Button-inheritContainedHover: var(
+ --mui-palette-Button-inheritContainedHoverBg
+ );
+
+ /* Chip */
+ --color-Chip-defaultBorder: var(--mui-palette-Chip-defaultBorder);
+ --color-Chip-defaultAvatar: var(--mui-palette-Chip-defaultAvatarColor);
+ --color-Chip-defaultIcon: var(--mui-palette-Chip-defaultIconColor);
+
+ /* FilledInput */
+ --color-FilledInput-bg: var(--mui-palette-FilledInput-bg);
+ --color-FilledInput-hover: var(--mui-palette-FilledInput-hoverBg);
+ --color-FilledInput-disabled: var(--mui-palette-FilledInput-disabledBg);
+
+ /* LinearProgress */
+ --color-LinearProgress-primary: var(--mui-palette-LinearProgress-primaryBg);
+ --color-LinearProgress-secondary: var(--mui-palette-LinearProgress-secondaryBg);
+ --color-LinearProgress-error: var(--mui-palette-LinearProgress-errorBg);
+ --color-LinearProgress-info: var(--mui-palette-LinearProgress-infoBg);
+ --color-LinearProgress-success: var(--mui-palette-LinearProgress-successBg);
+ --color-LinearProgress-warning: var(--mui-palette-LinearProgress-warningBg);
+
+ /* Skeleton */
+ --color-Skeleton-bg: var(--mui-palette-Skeleton-bg);
+
+ /* Slider */
+ --color-Slider-primary: var(--mui-palette-Slider-primaryTrack);
+ --color-Slider-secondary: var(--mui-palette-Slider-secondaryTrack);
+ --color-Slider-error: var(--mui-palette-Slider-errorTrack);
+ --color-Slider-info: var(--mui-palette-Slider-infoTrack);
+ --color-Slider-success: var(--mui-palette-Slider-successTrack);
+ --color-Slider-warning: var(--mui-palette-Slider-warningTrack);
+
+ /* SnackbarContent */
+ --color-SnackbarContent-bg: var(--mui-palette-SnackbarContent-bg);
+ --color-SnackbarContent-text: var(--mui-palette-SnackbarContent-color);
+
+ /* SpeedDialAction */
+ --color-SpeedDialAction-fabHover: var(--mui-palette-SpeedDialAction-fabHoverBg);
+
+ /* StepConnector & StepContent */
+ --color-StepConnector-border: var(--mui-palette-StepConnector-border);
+ --color-StepContent-border: var(--mui-palette-StepContent-border);
+
+ /* Switch */
+ --color-Switch-default: var(--mui-palette-Switch-defaultColor);
+ --color-Switch-defaultDisabled: var(--mui-palette-Switch-defaultDisabledColor);
+ --color-Switch-primaryDisabled: var(--mui-palette-Switch-primaryDisabledColor);
+ --color-Switch-secondaryDisabled: var(--mui-palette-Switch-secondaryDisabledColor);
+ --color-Switch-errorDisabled: var(--mui-palette-Switch-errorDisabledColor);
+ --color-Switch-infoDisabled: var(--mui-palette-Switch-infoDisabledColor);
+ --color-Switch-successDisabled: var(--mui-palette-Switch-successDisabledColor);
+ --color-Switch-warningDisabled: var(--mui-palette-Switch-warningDisabledColor);
+
+ /* TableCell */
+ --color-TableCell-border: var(--mui-palette-TableCell-border);
+
+ /* Tooltip */
+ --color-Tooltip-bg: var(--mui-palette-Tooltip-bg);
+
+ /* Material UI shadows */
+ --shadow-1: var(--mui-shadows-1);
+ --shadow-2: var(--mui-shadows-2);
+ --shadow-3: var(--mui-shadows-3);
+ --shadow-4: var(--mui-shadows-4);
+ --shadow-5: var(--mui-shadows-5);
+ --shadow-6: var(--mui-shadows-6);
+ --shadow-7: var(--mui-shadows-7);
+ --shadow-8: var(--mui-shadows-8);
+ --shadow-9: var(--mui-shadows-9);
+ --shadow-10: var(--mui-shadows-10);
+ --shadow-11: var(--mui-shadows-11);
+ --shadow-12: var(--mui-shadows-12);
+ --shadow-13: var(--mui-shadows-13);
+ --shadow-14: var(--mui-shadows-14);
+ --shadow-15: var(--mui-shadows-15);
+ --shadow-16: var(--mui-shadows-16);
+ --shadow-17: var(--mui-shadows-17);
+ --shadow-18: var(--mui-shadows-18);
+ --shadow-19: var(--mui-shadows-19);
+ --shadow-20: var(--mui-shadows-20);
+ --shadow-21: var(--mui-shadows-21);
+ --shadow-22: var(--mui-shadows-22);
+ --shadow-23: var(--mui-shadows-23);
+ --shadow-24: var(--mui-shadows-24);
+
+ /* Material UI opacity */
+ --opacity-activated: calc(100% * var(--mui-palette-action-activatedOpacity));
+ --opacity-disabled: calc(100% * var(--mui-palette-action-disabledOpacity));
+ --opacity-focus: calc(100% * var(--mui-palette-action-focusOpacity));
+ --opacity-hover: calc(100% * var(--mui-palette-action-hoverOpacity));
+ --opacity-selected: calc(100% * var(--mui-palette-action-selectedOpacity));
+
+ /* Material UI overlays */
+ --overlay-1: var(--mui-overlays-1);
+ --overlay-2: var(--mui-overlays-2);
+ --overlay-3: var(--mui-overlays-3);
+ --overlay-4: var(--mui-overlays-4);
+ --overlay-5: var(--mui-overlays-5);
+ --overlay-6: var(--mui-overlays-6);
+ --overlay-7: var(--mui-overlays-7);
+ --overlay-8: var(--mui-overlays-8);
+ --overlay-9: var(--mui-overlays-9);
+ --overlay-10: var(--mui-overlays-10);
+ --overlay-11: var(--mui-overlays-11);
+ --overlay-12: var(--mui-overlays-12);
+ --overlay-13: var(--mui-overlays-13);
+ --overlay-14: var(--mui-overlays-14);
+ --overlay-15: var(--mui-overlays-15);
+ --overlay-16: var(--mui-overlays-16);
+ --overlay-17: var(--mui-overlays-17);
+ --overlay-18: var(--mui-overlays-18);
+ --overlay-19: var(--mui-overlays-19);
+ --overlay-20: var(--mui-overlays-20);
+ --overlay-21: var(--mui-overlays-21);
+ --overlay-22: var(--mui-overlays-22);
+ --overlay-23: var(--mui-overlays-23);
+ --overlay-24: var(--mui-overlays-24);
+ }
+
+ /* Material UI base styles */
+ @layer base {
+ h1 {
+ font: var(--mui-font-h1);
+ letter-spacing: -0.01562em;
+ }
+ h2 {
+ font: var(--mui-font-h2);
+ letter-spacing: -0.00833em;
+ }
+ h3 {
+ font: var(--mui-font-h3);
+ }
+ h4 {
+ font: var(--mui-font-h4);
+ letter-spacing: 0.00735em;
+ }
+ h5 {
+ font: var(--mui-font-h5);
+ }
+ h6 {
+ font: var(--mui-font-h6);
+ letter-spacing: 0.0075em;
+ }
+ p {
+ font: var(--mui-font-body1);
+ letter-spacing: 0.00938em;
+ }
+ span {
+ font: var(--mui-font-body2);
+ letter-spacing: 0.01071em;
+ }
+ }
+
+ /* Material UI typography utilities */
+ @utility typography-* {
+ font: --value(--font- *);
+ }
+
+ /* Material UI overlay utilities */
+ @utility overlay-* {
+ background-image: --value(--overlay- *);
+ }
+
+ /* Material UI elevation utilities */
+ @utility elevation-* {
+ background-image: --value(--overlay- *);
+ box-shadow: --value(--shadow- *);
+ }
\ No newline at end of file
diff --git a/.idx/pages/App.tsx b/.idx/pages/App.tsx
new file mode 100644
index 0000000..9406f0d
--- /dev/null
+++ b/.idx/pages/App.tsx
@@ -0,0 +1,11 @@
+Hello world
+
+@layer utilities {
+ .typography-h1 {
+ font: var(--mui-font-h1);
+ letter-spacing: -0.01562em;
+ }
+ .text-primary {
+ color: rgb(var(--mui-palette-primary-mainChannel));
+ }
+ }
\ No newline at end of file
diff --git a/.idx/pages/Card.css b/.idx/pages/Card.css
new file mode 100644
index 0000000..de9427f
--- /dev/null
+++ b/.idx/pages/Card.css
@@ -0,0 +1,146 @@
+@import "tailwindcss";
+@import url('https://fonts.googleapis.com/css2?family=Lexend+Deca&family=Big+Shoulders+Display:wght@700&display=swap');
+
+.card {
+ padding: 3rem;
+ color: rgba(255, 255, 255, 0.9);
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+ transition: all 0.3s ease;
+ cursor: pointer;
+ position: relative;
+ border-radius: 8px;
+}
+
+.card:hover {
+ transform: translateY(-5px);
+}
+
+.card.selected {
+ transform: scale(1.02);
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
+ animation: pulse 2s infinite;
+}
+
+@keyframes pulse {
+ 0% {
+ transform: scale(1.02);
+ }
+
+ 50% {
+ transform: scale(1.05);
+ }
+
+ 100% {
+ transform: scale(1.02);
+ }
+}
+
+.card.selected::after {
+ content: '❤️';
+ position: absolute;
+ top: 1rem;
+ right: 1rem;
+ width: 32px;
+ height: 32px;
+ background-color: rgba(255, 255, 255, 0.2);
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.2rem;
+ animation: bounce 1s infinite;
+}
+
+@keyframes bounce {
+
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+
+ 50% {
+ transform: translateY(-5px);
+ }
+}
+
+.card h2 {
+ font-family: 'Big Shoulders Display', cursive;
+ font-weight: 700;
+ color: rgb(242, 242, 242);
+ text-transform: uppercase;
+ font-size: 2.5rem;
+ margin: 0;
+ text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.card p {
+ font-family: 'Lexend Deca', sans-serif;
+ font-weight: 400;
+ font-size: 15px;
+ line-height: 1.6;
+ margin: 0;
+}
+
+.card-icon {
+ width: 64px;
+ height: 64px;
+ filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.1));
+}
+
+.learn-more {
+ font-family: 'Lexend Deca', sans-serif;
+ background-color: rgb(242, 242, 242);
+ border: 2px solid rgb(242, 242, 242);
+ border-radius: 25px;
+ padding: 0.8rem 2rem;
+ width: fit-content;
+ cursor: pointer;
+ margin-top: auto;
+ transition: all 0.3s ease;
+ font-weight: 500;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+}
+
+.purple {
+ background-color: rgb(147, 51, 234);
+}
+
+.purple .learn-more {
+ color: rgb(147, 51, 234);
+}
+
+.purple .learn-more:hover {
+ background-color: transparent;
+ color: rgb(242, 242, 242);
+ box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
+}
+
+.teal {
+ background-color: rgb(20, 184, 166);
+}
+
+.teal .learn-more {
+ color: rgb(20, 184, 166);
+}
+
+.teal .learn-more:hover {
+ background-color: transparent;
+ color: rgb(242, 242, 242);
+ box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
+}
+
+.coral {
+ background-color: rgb(251, 146, 60);
+}
+
+.coral .learn-more {
+ color: rgb(251, 146, 60);
+}
+
+.coral .learn-more:hover {
+ background-color: transparent;
+ color: rgb(242, 242, 242);
+ box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
+}
\ No newline at end of file
diff --git a/.idx/pages/Card.tsx b/.idx/pages/Card.tsx
new file mode 100644
index 0000000..2c9bc4d
--- /dev/null
+++ b/.idx/pages/Card.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import './Card.css';
+
+interface CardProps {
+ title: string;
+ description: string;
+ icon: string;
+ color: 'all' ;
+ isSelected: boolean;
+ onSelect: () => void;
+}
+
+const Card: React.FC = ({ title, description, icon, color, isSelected, onSelect }) => {
+ return (
+
+
+
{title}
+
{description}
+
Send
+
+ );
+};
+
+export default Card;
\ No newline at end of file
diff --git a/.idx/pages/Home.jsx b/.idx/pages/Home.jsx
new file mode 100644
index 0000000..0e555f4
--- /dev/null
+++ b/.idx/pages/Home.jsx
@@ -0,0 +1,6 @@
+import {appContentStore} from "../stores/appContentStore"
+export const Home () => {
+ const { appContent } = appContentStore()
+ return(
+ {appContent.heading}
+}
\ No newline at end of file
diff --git a/.idx/pages/LoginForm.jsx b/.idx/pages/LoginForm.jsx
new file mode 100644
index 0000000..8be5785
--- /dev/null
+++ b/.idx/pages/LoginForm.jsx
@@ -0,0 +1,52 @@
+import { useState } from "react";
+
+const SignupForm = () => {
+ const [formData, setFormData] = useState({
+ email: "",
+ password: "",
+ });
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ console.log(formData);
+
+ fetch("http://localhost:8080/users", {
+ method: "POST",
+ body: JSON.stringify({ email: formData.email, password: formData.password }),
+ headers: {
+ "Content-Type": "application/json"
+ }
+ })
+ .then(() => {
+ // Reset form
+ e.target.reset()
+ })
+ .catch(error => {
+ console.log(error)
+ })
+
+ };
+
+ return (
+
+ );
+};
+
+export default SignupForm;
\ No newline at end of file
diff --git a/.idx/pages/SignupForm.jsx b/.idx/pages/SignupForm.jsx
new file mode 100644
index 0000000..8be5785
--- /dev/null
+++ b/.idx/pages/SignupForm.jsx
@@ -0,0 +1,52 @@
+import { useState } from "react";
+
+const SignupForm = () => {
+ const [formData, setFormData] = useState({
+ email: "",
+ password: "",
+ });
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ console.log(formData);
+
+ fetch("http://localhost:8080/users", {
+ method: "POST",
+ body: JSON.stringify({ email: formData.email, password: formData.password }),
+ headers: {
+ "Content-Type": "application/json"
+ }
+ })
+ .then(() => {
+ // Reset form
+ e.target.reset()
+ })
+ .catch(error => {
+ console.log(error)
+ })
+
+ };
+
+ return (
+
+ );
+};
+
+export default SignupForm;
\ No newline at end of file
diff --git a/.idx/pages/TodoItem.tsx b/.idx/pages/TodoItem.tsx
new file mode 100644
index 0000000..59dbe6e
--- /dev/null
+++ b/.idx/pages/TodoItem.tsx
@@ -0,0 +1,24 @@
+import { Checkbox } from "@/components/ui/checkbox";
+import { Button } from "@/components/ui/button";
+import { Trash2 } from "lucide-react";
+import { useTodoStore } from "@/stores/todoStore";
+
+interface TodoItemProps {
+ id: string;
+}
+export const TodoItem = ({ id }: TodoItemProps) => {
+ const todo = useTodoStore((state) =>
+ state.todos.find((todo) =>todo.id === id
+);
+
+if (!todo) return null;
+
+return (
+
+
+ {
+ const [text, setText] = useState("");
+ const todos = useTodoStore((state) => state.settodos);
+const { setTodos } = useTodoActions();
+ const handleSubmit = (e: React.FormEvent) => {
+ e.preventDefault();
+ if (text.trim()) {
+ const todo = {
+ text: text.trim()
+ id: Date.now().toString(),
+ completed: false,
+ }
+ setTodos([...todos, todo]);
+ setText("");
+ }
+ }
+}
\ No newline at end of file
diff --git a/.idx/pages/UserSettings.jsx b/.idx/pages/UserSettings.jsx
new file mode 100644
index 0000000..67e4a17
--- /dev/null
+++ b/.idx/pages/UserSettings.jsx
@@ -0,0 +1,9 @@
+import { create } from "zustand"
+export const useUserStore = create ((set) =>({
+ isLoggedIn: false,
+ age: 25,
+ userName: "John Doe",
+ toggleLogin: () set ((state) => ({isLoggedIn:})) !state.isLoggedIn}))
+ incrementAge: () => set ((state) => ({age: state.age +1})),
+ setUserName: (newUserName) => set ({userName:})
+})
\ No newline at end of file
diff --git a/.idx/pages/Userinfo.jsx b/.idx/pages/Userinfo.jsx
new file mode 100644
index 0000000..19415b8
--- /dev/null
+++ b/.idx/pages/Userinfo.jsx
@@ -0,0 +1,11 @@
+import { useUserStore } from "../stores/userStore"
+export const UserInfo = () => {
+ const { userName, age } = useUserStore()
+
+return (
+
+}
User Profile
+
User Name: {userName}>
+
Age: {age}
+
+))
\ No newline at end of file
diff --git a/.idx/pages/_app.tsx b/.idx/pages/_app.tsx
new file mode 100644
index 0000000..9d21c56
--- /dev/null
+++ b/.idx/pages/_app.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { StyledEngineProvider } from '@mui/material/styles';
+import GlobalStyles from '@mui/material/GlobalStyles';
+
+createRoot(document.getElementById('root')!).render(
+
+
+
+ {/* Your app */}
+
+
+);
\ No newline at end of file
diff --git a/.idx/pages/_document.tsx b/.idx/pages/_document.tsx
new file mode 100644
index 0000000..21d646f
--- /dev/null
+++ b/.idx/pages/_document.tsx
@@ -0,0 +1,59 @@
++import { createEmotionCache } from '@mui/material-nextjs/v15-pagesRouter';
+ ...
+ +import type { DocumentHeadTagsProps } from '@mui/material-nextjs/v15-pagesRouter';
+ // or `v1X-pagesRouter` if you are using Next.js v1X
+
++export default function MyDocument(props: DocumentProps & DocumentHeadTagsProps) {
+ ...
+ }
+
+ MyDocument.getInitialProps = async (ctx) => {
+ const finalProps = await documentGetInitialProps(ctx, {
++ emotionCache: createEmotionCache({ enableCssLayer: true }),
+ });
+ return finalProps;
+ };
+import {
+ createCache,
+ documentGetInitialProps,
+ } from '@mui/material-nextjs/v15-pagesRouter';
+
+ // ...
+
+ MyDocument.getInitialProps = async (ctx: DocumentContext) => {
+ const finalProps = await documentGetInitialProps(ctx, {
+ emotionCache: createCache({ enableCssLayer: true }),
+ });
+ return finalProps;
+ };
+ +import {
+ + DocumentHeadTags,
+ + documentGetInitialProps,
+ +} from '@mui/material-nextjs/v15-pagesRouter';
+ // or `v1X-pagesRouter` if you are using Next.js v1X
+
+ export default function MyDocument(props) {
+ return (
+
+
+ +
+ ...
+
+
+
+
+
+
+ );
+ }
+
+ +MyDocument.getInitialProps = async (ctx) => {
+ + const finalProps = await documentGetInitialProps(ctx);
+ + return finalProps;
+ +};
+ MyDocument.getInitialProps = async (ctx) => {
+ const finalProps = await documentGetInitialProps(ctx, {
+ + emotionCache: createCustomCache(),
+ });
+ return finalProps;
+ };
\ No newline at end of file
diff --git a/.idx/pages/layout.tsx b/.idx/pages/layout.tsx
new file mode 100644
index 0000000..5bb2a40
--- /dev/null
+++ b/.idx/pages/layout.tsx
@@ -0,0 +1,26 @@
+}import { AppRouterCacheProvider } from '@mui/material-nextjs/v15-appRouter';
++import { Roboto } from 'next/font/google';
++import { ThemeProvider } from '@mui/material/styles';
++import theme from '../theme';
+
++const roboto = Roboto({
++ weight: ['300', '400', '500', '700'],
++ subsets: ['latin'],
++ display: 'swap',
++ variable: '--font-roboto',
++});
+
+ export default function RootLayout(props) {
+ const { children } = props;
+ return (
++
+
+
++
+ {children}
++
+
+
+
+ );
+ }
\ No newline at end of file
diff --git a/.idx/pages/main.tsx b/.idx/pages/main.tsx
new file mode 100644
index 0000000..9d21c56
--- /dev/null
+++ b/.idx/pages/main.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { StyledEngineProvider } from '@mui/material/styles';
+import GlobalStyles from '@mui/material/GlobalStyles';
+
+createRoot(document.getElementById('root')!).render(
+
+
+
+ {/* Your app */}
+
+
+);
\ No newline at end of file
diff --git a/.idx/pages/stores/appContentStore.jsx b/.idx/pages/stores/appContentStore.jsx
new file mode 100644
index 0000000..adb1dc6
--- /dev/null
+++ b/.idx/pages/stores/appContentStore.jsx
@@ -0,0 +1,5 @@
+import {create} from "zustand"
+export const appContentStore = create(() => ({}))
+appContent:{
+ heading: "State-Management-Zustand-js-project-todo-Special Garden Group"
+}
\ No newline at end of file
diff --git a/.idx/pages/stores/userStore.jsx b/.idx/pages/stores/userStore.jsx
new file mode 100644
index 0000000..67e4a17
--- /dev/null
+++ b/.idx/pages/stores/userStore.jsx
@@ -0,0 +1,9 @@
+import { create } from "zustand"
+export const useUserStore = create ((set) =>({
+ isLoggedIn: false,
+ age: 25,
+ userName: "John Doe",
+ toggleLogin: () set ((state) => ({isLoggedIn:})) !state.isLoggedIn}))
+ incrementAge: () => set ((state) => ({age: state.age +1})),
+ setUserName: (newUserName) => set ({userName:})
+})
\ No newline at end of file
diff --git a/.idx/pages/theme.ts b/.idx/pages/theme.ts
new file mode 100644
index 0000000..a9be90b
--- /dev/null
+++ b/.idx/pages/theme.ts
@@ -0,0 +1,12 @@
+'use client';
+import { createTheme } from '@mui/material/styles';
+
+const theme = createTheme({
+ typography: {
+ fontFamily: 'var(--font-roboto)',
+ cssVariables: true,
+ });
+ },
+});
+
+export default theme;
diff --git a/.idx/pages/timeline.jsx b/.idx/pages/timeline.jsx
new file mode 100644
index 0000000..7e4f8af
--- /dev/null
+++ b/.idx/pages/timeline.jsx
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ Secondary
+
+
+
+
+
+ Success
+
+
\ No newline at end of file
diff --git a/.idx/pages/todoList.tsx b/.idx/pages/todoList.tsx
new file mode 100644
index 0000000..462c795
--- /dev/null
+++ b/.idx/pages/todoList.tsx
@@ -0,0 +1,29 @@
+import { useShallow } from "zustand/shallow";
+import { usetodoStore , type Todo } from "../stores/todoStore";
+import { TodoItem } from "./TodoItem";
+import { Separator } from "@/components/ui/separator";
+
+export const TodoList => {
+ const todos: Todo[] =useTodoStore((state => state.todos);
+const isSubscribed = useSubscribed();
+ if (todos.length === 0) {
+ return(
+
+ No todos yet.Add one above!
+
+ );
+ }
+
+ return (
+
+ {todos.map((todo, index) => {
+
}
+ {index < todo.lenght - 1 &&
}
+
+ }
+ )
+
+ )
+ }
+)
+}
\ No newline at end of file
diff --git a/.idx/replace-top-level-this-plugin.js b/.idx/replace-top-level-this-plugin.js
new file mode 100644
index 0000000..9cbecd0
--- /dev/null
+++ b/.idx/replace-top-level-this-plugin.js
@@ -0,0 +1,81 @@
+module.exports = (api) => {
+ const { types: t } = api;
+ return {
+ name: "replace-top-level-this",
+ visitor: {
+ ThisExpression(path) {
+ path.replaceWith(t.identifier("globalThis"));
+ }
+ }
+ }
+ }
+ replace-top-level-this-plugin.js
+module.exports = (api) => {
+ const { types: t } = api;
+ return {
+ name: "replace-top-level-this",
+ visitor: {
+ ThisExpression(path) {
+ path.replaceWith(t.identifier("globalThis"));
+ }
+ "FunctionDeclaration|FunctionExpression|ObjectMethod|ClassMethod|ClassPrivateMethod"(path) {
+ path.skip();
+ }
+ }
+ }
+}
+module.exports = (api) => {
+ const { types: t } = api;
+ return {
+ name: "replace-top-level-this",
+ visitor: {
+ ThisExpression(path) {
+ path.replaceWith(t.identifier("globalThis"));
+ }
+ FunctionParent(path) {
+ if (!path.isArrowFunctionExpression()) {
+ path.skip();
+ }
+ }
+ }
+ }
+ }
+ import {
+ requeueComputedKeyAndDecorators
+ } from "@babel/helper-environment-visitor";
+
+ module.exports = (api) => {
+ const { types: t } = api;
+ return {
+ name: "replace-top-level-this",
+ visitor: {
+ ThisExpression(path) {
+ path.replaceWith(t.identifier("globalThis"));
+ }
+ FunctionParent(path) {
+ if (!path.isArrowFunctionExpression()) {
+ path.skip();
+ }
+ if (path.isMethod()) {
+ requeueComputedKeyAndDecorators(path);
+ }
+ }
+ }
+ }
+ }
+ import environmentVisitor from "@babel/helper-environment-visitor";
+
+module.exports = (api) => {
+ const { types: t, traverse } = api;
+ return {
+ name: "replace-top-level-this",
+ visitor: traverse.visitors.merge([
+ {
+ ThisExpression(path) {
+ path.replaceWith(t.identifier("globalThis"));
+ }
+ },
+ environmentVisitor
+ ]);
+ }
+}
\ No newline at end of file
diff --git a/.idx/scrollbar.jsx b/.idx/scrollbar.jsx
new file mode 100644
index 0000000..2812783
--- /dev/null
+++ b/.idx/scrollbar.jsx
@@ -0,0 +1,12 @@
+import darkScrollbar from '@mui/material/darkScrollbar';
+import { createTheme } from '@mui/material/styles';
+
+const THEME = createTheme({
+ components: {
+ MuiCssBaseline: {
+ styleOverrides: (themeParam) => ({
+ body: themeParam.palette.mode === 'dark' ? darkScrollbar() : null,
+ }),
+ },
+ },
+});
\ No newline at end of file
diff --git a/.idx/src/misc.ts b/.idx/src/misc.ts
new file mode 100644
index 0000000..8a080b0
--- /dev/null
+++ b/.idx/src/misc.ts
@@ -0,0 +1,11 @@
+const findBareSupers = traverse.visitors.merge[]>([
+ {
+ Super(path) {
+ const { node, parentPath } = path;
+ if (parentPath.isCallExpression({ callee: node })) {
+ this.push(parentPath);
+ }
+ },
+ },
+ environmentVisitor,
+ ]);
\ No newline at end of file
diff --git a/.idx/src/tsconfig.json b/.idx/src/tsconfig.json
new file mode 100644
index 0000000..8f42215
--- /dev/null
+++ b/.idx/src/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "lib": ["esnext"],
+ "noEmit": true,
+ "isolatedModules": true,
+ "moduleResolution": "nodenext",
+ "allowImportingTsExtensions": true
+ }
+ }
+
\ No newline at end of file
diff --git a/.idx/src/webpack.config.js b/.idx/src/webpack.config.js
new file mode 100644
index 0000000..ca221f5
--- /dev/null
+++ b/.idx/src/webpack.config.js
@@ -0,0 +1,13 @@
+module: {
+ rules: [
+ {
+ loader: "babel-loader",
+ options: {
+ rootMode: "upward",
+ },
+ },
+ ];
+ }
+ module.exports = {
+ entry: ["@babel/polyfill", "./app/js"],
+ };
\ No newline at end of file
diff --git a/.idx/src/wrapper.js b/.idx/src/wrapper.js
new file mode 100644
index 0000000..409ac3a
--- /dev/null
+++ b/.idx/src/wrapper.js
@@ -0,0 +1,3 @@
+module.exports = require("babel-jest").default.createTransformer({
+ rootMode: "upward",
+ });
\ No newline at end of file
diff --git a/.idx/sum.js b/.idx/sum.js
new file mode 100644
index 0000000..c201d58
--- /dev/null
+++ b/.idx/sum.js
@@ -0,0 +1,4 @@
+function sum(a, b) {
+ return a + b;
+ }
+ module.exports = sum;
\ No newline at end of file
diff --git a/.idx/sum.test.js b/.idx/sum.test.js
new file mode 100644
index 0000000..df0dd09
--- /dev/null
+++ b/.idx/sum.test.js
@@ -0,0 +1,5 @@
+const sum = require('./sum');
+
+test('adds 1 + 2 to equal 3', () => {
+ expect(sum(1, 2)).toBe(3);
+});
\ No newline at end of file
diff --git a/.idx/tailwind.config.js b/.idx/tailwind.config.js
new file mode 100644
index 0000000..7acfb12
--- /dev/null
+++ b/.idx/tailwind.config.js
@@ -0,0 +1,27 @@
+const colors = require('tailwindcss/colors')
+module.exports = {
+ mode:'jit',
+ purge: [`./src/**/*.{js,jsx,ts,tsx}`, `./public/index.html'],
+ darkMode: 'class', // or 'media' or 'class'
+ theme: {
+ extend: {}
+ colors:{
+ bg-primary: #'202225',
+ bg-secondary: #'5865f2',
+ gray: colors.trueGray,
+ 900: '#202225',
+ 800: '#2f3136',
+ 700: '#36393f',
+ 600: '#4f545c',
+ 400: '#d4d7dc',
+ 300: '#e3e5e8',
+ 200: '#ohedef',
+ 100: ,#f2f3f5',
+ },
+ },
+ },
+ variants: {
+ extend: {},
+ },
+ plugins: [],
+}
\ No newline at end of file
diff --git a/.idx/tests.js b/.idx/tests.js
new file mode 100644
index 0000000..69fccaf
--- /dev/null
+++ b/.idx/tests.js
@@ -0,0 +1,75 @@
+'use strict';
+
+const {
+ ObjectAssign,
+ ObjectDefineProperty,
+} = primordials;
+
+const { test, suite, before, after, beforeEach, afterEach } = require('internal/test_runner/harness');
+const { run } = require('internal/test_runner/runner');
+
+module.exports = test;
+ObjectAssign(module.exports, {
+ after,
+ afterEach,
+ before,
+ beforeEach,
+ describe: suite,
+ it: test,
+ run,
+ suite,
+ test,
+});
+
+let lazyMock;
+
+ObjectDefineProperty(module.exports, 'mock', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ if (lazyMock === undefined) {
+ const { MockTracker } = require('internal/test_runner/mock/mock');
+
+ lazyMock = new MockTracker();
+ }
+
+ return lazyMock;
+ },
+});
+
+let lazySnapshot;
+
+ObjectDefineProperty(module.exports, 'snapshot', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ if (lazySnapshot === undefined) {
+ const {
+ setDefaultSnapshotSerializers,
+ setResolveSnapshotPath,
+ } = require('internal/test_runner/snapshot');
+
+ lazySnapshot = {
+ __proto__: null,
+ setDefaultSnapshotSerializers,
+ setResolveSnapshotPath,
+ };
+ }
+
+ return lazySnapshot;
+ },
+});
+
+ObjectDefineProperty(module.exports, 'assert', {
+ __proto__: null,
+ configurable: true,
+ enumerable: true,
+ get() {
+ const { register } = require('internal/test_runner/assert');
+ const assert = { __proto__: null, register };
+ ObjectDefineProperty(module.exports, 'assert', assert);
+ return assert;
+ },
+});
\ No newline at end of file
diff --git a/.idx/todo.jsx b/.idx/todo.jsx
new file mode 100644
index 0000000..9468316
--- /dev/null
+++ b/.idx/todo.jsx
@@ -0,0 +1,68 @@
+import { useCountTodo } from './todo.jsx/useCountTodo';
+import todoStore from './todoStore';
+export const useTodo = todoStore;
+import { create } from 'zustand';
+import { devtools } from 'zustand/middleware';
+// import { mission } from 'tasks/mission.js'
+
+const _TodoStoreInstance = create(
+ devtools((set) => ({
+ todos: 0,
+ todo: 0,
+ increasePopulation: () => set((state) => ({ todo: state.todo + 1 })),
+ removeAllTodo: () => set({ todo: 0 }),
+ updateTodo: (newTodo) => set({ todo: newTodo }),
+ }))
+);
+ function TodoCounter() {
+ const todo = useTodo((state) => state.todos);
+ return {todo} todos here... ;
+ }
+
+ function Controls() {
+ const increasePopulation = useTodo((state) => state.increasePopulation);
+ return one up ;
+ }
+
+
+export const Count = () => {
+ // const { count, increment, decrement } = useCountTodonpm()
+ const count = useCountTodo(state => state.count)
+ const increment = useCountTodo(state => state.increment)
+ const decrement = useCountTodo(state => state.decrement)
+ const doubleIfEven = useCountTodo(state => state.doubleIfEven)
+
+ return (
+
+ Count
+ Count: {count}
+ Increment
+ Decrement
+Double if even
+
+ )
+}
+
+export const Button = () => {
+ const markUncompletedTasks = () => console.log("red");
+
+ return (
+
+ Button
+ console.log("light")}>Light Theme
+ console.log("dark")}>Dark Theme
+ console.log("blue")}>Blue
+ Mark Uncompleted Tasks
+
+ );
+};
+
+export const Footer = () => {
+ return (
+
+ );
+};
+
+export default todoStore; // Removed the default export of useTodo to comply with Fast Refresh requirements.
\ No newline at end of file
diff --git a/.idx/todoStore.ts b/.idx/todoStore.ts
new file mode 100644
index 0000000..a991b78
--- /dev/null
+++ b/.idx/todoStore.ts
@@ -0,0 +1,34 @@
+import { create } from "zustand";
+import { TodoItem } from "./assets/stores/components/pages/TodoItem";
+export interface Todo {...
+ //Define the store's state type
+ interface Todostate {
+ todos: Todo[];
+ inSubscribed:bolean;
+ setTodos: (todos: Todo[]) => void;
+ }
+ export const useTodoStore = create()((set) => ({)
+ todos: [],
+ inSubcribed: true,
+ setTodos: (todos) => set({ todos })
+ }));
+
+ export const useTodoStore = () => useTodoStore((state)) => state.todos);
+ todos: []
+ isSubscribed: true,
+ actions: TodoActions;
+ setTodos: (todos) => set({ todos })
+ setSubscribed: () => set((old) => ){isSubscribed: !old.isSubscribed })),
+}));
+export const useTodos = () => useTodoStore((state) => state.todos);
+export const useTodo = (id: string)=>
+ useTodoStore((state) => state.todos.find((todo) => state.todos);
+export const useTodo = (id: string) =>
+ useTodoStore((state) => state.todos.find((todo) => todo.id === id));
+export const useSubscribed = () => useTodoStore((state) => state.isSubscribed);
+export const useTodos =Todostore ((state) => state.todos);
+
+export const useTodo = (id: string) =>
+ useTodoStore((state => state.todos.find((TodoItem.id ===id));
+export const useSubscribed = () useTodoStore((state) => state.isSubscribed);
+export const useTodoActions =() => useTodoStore((state) state.actions);
diff --git a/.idx/todoform.jsx b/.idx/todoform.jsx
new file mode 100644
index 0000000..9468316
--- /dev/null
+++ b/.idx/todoform.jsx
@@ -0,0 +1,68 @@
+import { useCountTodo } from './todo.jsx/useCountTodo';
+import todoStore from './todoStore';
+export const useTodo = todoStore;
+import { create } from 'zustand';
+import { devtools } from 'zustand/middleware';
+// import { mission } from 'tasks/mission.js'
+
+const _TodoStoreInstance = create(
+ devtools((set) => ({
+ todos: 0,
+ todo: 0,
+ increasePopulation: () => set((state) => ({ todo: state.todo + 1 })),
+ removeAllTodo: () => set({ todo: 0 }),
+ updateTodo: (newTodo) => set({ todo: newTodo }),
+ }))
+);
+ function TodoCounter() {
+ const todo = useTodo((state) => state.todos);
+ return {todo} todos here... ;
+ }
+
+ function Controls() {
+ const increasePopulation = useTodo((state) => state.increasePopulation);
+ return one up ;
+ }
+
+
+export const Count = () => {
+ // const { count, increment, decrement } = useCountTodonpm()
+ const count = useCountTodo(state => state.count)
+ const increment = useCountTodo(state => state.increment)
+ const decrement = useCountTodo(state => state.decrement)
+ const doubleIfEven = useCountTodo(state => state.doubleIfEven)
+
+ return (
+
+ Count
+ Count: {count}
+ Increment
+ Decrement
+Double if even
+
+ )
+}
+
+export const Button = () => {
+ const markUncompletedTasks = () => console.log("red");
+
+ return (
+
+ Button
+ console.log("light")}>Light Theme
+ console.log("dark")}>Dark Theme
+ console.log("blue")}>Blue
+ Mark Uncompleted Tasks
+
+ );
+};
+
+export const Footer = () => {
+ return (
+
+ );
+};
+
+export default todoStore; // Removed the default export of useTodo to comply with Fast Refresh requirements.
\ No newline at end of file
diff --git a/.idx/touch/routes/app.js b/.idx/touch/routes/app.js
new file mode 100644
index 0000000..f48ba1e
--- /dev/null
+++ b/.idx/touch/routes/app.js
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+var logger = require('morgan');
+var session = require('express-session');
+var session = require('express-session');
+var passport = require('passport');
+
+var SQLiteStore = require('connect-sqlite3')(session);
+
+var indexRouter = require('./routes/index');
+var authRouter = require('./routes/auth');
+
+
+
+
+
+
+
+
+
+
+
+
+
+app.use(express.static(path.join(__dirname, 'public')));
+app.use(session({
+ secret: 'keyboard cat',
+ resave: false,
+ saveUninitialized: false,
+ store: new SQLiteStore({ db: 'sessions.db', dir: './var/db' })
+ app.use(session({
+ secret: 'keyboard cat',
+ resave: false,
+ saveUninitialized: false,
+ store: new SQLiteStore({ db: 'sessions.db', dir: './var/db' })
+ }));
+ app.use(passport.authenticate('session'));
+}));
+
+app.use('/', indexRouter);
+app.use('/', authRouter);
+passport.serializeUser(function(user, cb) {
+ process.nextTick(function() {
+ cb(null, { id: user.id, username: user.username, name: user.name });
+ });
+ });
+
+ passport.deserializeUser(function(user, cb) {
+ process.nextTick(function() {
+ return cb(null, user);
+ });
+ });
\ No newline at end of file
diff --git a/.idx/touch/routes/auth.js b/.idx/touch/routes/auth.js
new file mode 100644
index 0000000..f4e8191
--- /dev/null
+++ b/.idx/touch/routes/auth.js
@@ -0,0 +1,77 @@
+var express = require('express');
+var express = require('express');
+var passport = require('passport');
+var FacebookStrategy = require('passport-facebook');
+var db = require('../db');
+var router = express.Router();
+
+passport.use(new FacebookStrategy({
+ clientID: process.env['FACEBOOK_CLIENT_ID'],
+ clientSecret: process.env['FACEBOOK_CLIENT_SECRET'],
+ callbackURL: '/oauth2/redirect/facebook',
+ state: true
+ }, function verify(accessToken, refreshToken, profile, cb) {
+ db.get('SELECT * FROM federated_credentials WHERE provider = ? AND subject = ?', [
+ 'https://www.facebook.com',
+ profile.id
+ ], function(err, row) {
+ if (err) { return cb(err); }
+ if (!row) {
+ db.run('INSERT INTO users (name) VALUES (?)', [
+ profile.displayName
+ ], function(err) {
+ if (err) { return cb(err); }
+
+ var id = this.lastID;
+ db.run('INSERT INTO federated_credentials (user_id, provider, subject) VALUES (?, ?, ?)', [
+ id,
+ 'https://www.facebook.com',
+ profile.id
+ ], function(err) {
+ if (err) { return cb(err); }
+ var user = {
+ id: id,
+ name: profile.displayName
+ };
+ return cb(null, user);
+ });
+ });
+ } else {
+ db.get('SELECT * FROM users WHERE id = ?', [ row.user_id ], function(err, row) {
+ if (err) { return cb(err); }
+ if (!row) { return cb(null, false); }
+ return cb(null, row);
+ });
+ }
+ });
+ }));
+router.get('/login', function(req, res, next) {
+ res.render('login');
+});
+router.get('/login/federated/facebook', passport.authenticate('facebook'));
+module.exports = router;
+
+
+router.get('/oauth2/redirect/facebook', passport.authenticate('facebook', {
+ successRedirect: '/',
+ failureRedirect: '/login'
+ }));
+
+
+
+
+
+
+
+
+
+
+
+
+
+ router.post('/logout', function(req, res, next) {
+ req.logout(function(err) {
+ if (err) { return next(err); }
+ res.redirect('/');
+ });
+ });
\ No newline at end of file
diff --git a/.idx/touch/routes/views/login.ejs b/.idx/touch/routes/views/login.ejs
new file mode 100644
index 0000000..200208c
--- /dev/null
+++ b/.idx/touch/routes/views/login.ejs
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sign in
+Sign in with Facebook
\ No newline at end of file
diff --git a/.idx/tsconfig.json b/.idx/tsconfig.json
new file mode 100644
index 0000000..dd6858d
--- /dev/null
+++ b/.idx/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "jsx": "react",
+ "paths": {
+ "@mui/styled-engine": ["./node_modules/@mui/styled-engine-sc"]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/.idx/useDarkMode.jsx b/.idx/useDarkMode.jsx
new file mode 100644
index 0000000..598b4e7
--- /dev/null
+++ b/.idx/useDarkMode.jsx
@@ -0,0 +1,15 @@
+return[storedValue, setValue];
+};
+const use DarkMode =() => {
+ const [enabled, setEnabled]=useLocalStorage('dark-theme');
+ const isEnabled = typeof enabledState ===
+ 'undefined' && enabled;
+ useEffect(()) => }
+ const className = 'dark';
+ const bodyClass = window.document.body.classList;
+ isEnabled ? bodyclass.add(className):bodyclass.remove(className);
+},[enabled, isEnabled]);
+return [enabled, setEnabled]
+};
+export default useDarkMode;
+}
\ No newline at end of file
diff --git a/.idx/vite.config.js b/.idx/vite.config.js
new file mode 100644
index 0000000..dd7b3a3
--- /dev/null
+++ b/.idx/vite.config.js
@@ -0,0 +1,7 @@
+import react from '@vitejs/plugin-react'
+import { defineConfig } from 'vite'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()]
+})
\ No newline at end of file
diff --git a/.idx/vite.config.ts b/.idx/vite.config.ts
new file mode 100644
index 0000000..4022c86
--- /dev/null
+++ b/.idx/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import tailwindcss from '@tailwindcss/vite'
+export default defineConfig({
+ plugins: [
+ tailwindcss(),
+ ],
+})
\ No newline at end of file
diff --git a/.idx/~/.bash_aliases b/.idx/~/.bash_aliases
new file mode 100644
index 0000000..e562182
--- /dev/null
+++ b/.idx/~/.bash_aliases
@@ -0,0 +1,6 @@
+alias yarn="corepack yarn"
+alias yarnpkg="corepack yarnpkg"
+alias pnpm="corepack pnpm"
+alias pnpx="corepack pnpx"
+alias npm="corepack npm"
+alias npx="corepack npx"
\ No newline at end of file
diff --git a/.netlify/edge-functions-dist/e3086b4e970b7e25ab2bd1a67a54639d72b7e70498fe3f368a16e7c8cfa758a2.eszip b/.netlify/edge-functions-dist/e3086b4e970b7e25ab2bd1a67a54639d72b7e70498fe3f368a16e7c8cfa758a2.eszip
new file mode 100644
index 0000000..cc2549d
Binary files /dev/null and b/.netlify/edge-functions-dist/e3086b4e970b7e25ab2bd1a67a54639d72b7e70498fe3f368a16e7c8cfa758a2.eszip differ
diff --git a/.netlify/edge-functions-dist/manifest.json b/.netlify/edge-functions-dist/manifest.json
new file mode 100644
index 0000000..236dcba
--- /dev/null
+++ b/.netlify/edge-functions-dist/manifest.json
@@ -0,0 +1 @@
+{"bundles":[{"asset":"e3086b4e970b7e25ab2bd1a67a54639d72b7e70498fe3f368a16e7c8cfa758a2.eszip","format":"eszip2"}],"routes":[{"function":"fireproof_server","pattern":"^/fireproof/?$","excluded_patterns":[],"path":"/fireproof"}],"post_cache_routes":[],"bundler_version":"14.5.4","layers":[],"import_map":"netlify:import-map","function_config":{"fireproof_server":{"generator":"internalFunc"}}}
\ No newline at end of file
diff --git a/.netlify/edge-functions-import-map.json b/.netlify/edge-functions-import-map.json
new file mode 100644
index 0000000..98ee31d
--- /dev/null
+++ b/.netlify/edge-functions-import-map.json
@@ -0,0 +1 @@
+{"imports":{"zlib":"node:zlib","worker_threads":"node:worker_threads","wasi":"node:wasi","vm":"node:vm","v8":"node:v8","util/types":"node:util/types","util":"node:util","url":"node:url","tty":"node:tty","trace_events":"node:trace_events","tls":"node:tls","timers/promises":"node:timers/promises","timers":"node:timers","sys":"node:sys","string_decoder":"node:string_decoder","stream/web":"node:stream/web","stream/promises":"node:stream/promises","stream/consumers":"node:stream/consumers","stream":"node:stream","repl":"node:repl","readline/promises":"node:readline/promises","readline":"node:readline","querystring":"node:querystring","punycode":"node:punycode","process":"node:process","perf_hooks":"node:perf_hooks","path/win32":"node:path/win32","path/posix":"node:path/posix","path":"node:path","os":"node:os","net":"node:net","module":"node:module","inspector/promises":"node:inspector/promises","inspector":"node:inspector","https":"node:https","http2":"node:http2","http":"node:http","fs/promises":"node:fs/promises","fs":"node:fs","events":"node:events","domain":"node:domain","dns/promises":"node:dns/promises","dns":"node:dns","diagnostics_channel":"node:diagnostics_channel","dgram":"node:dgram","crypto":"node:crypto","constants":"node:constants","console":"node:console","cluster":"node:cluster","child_process":"node:child_process","buffer":"node:buffer","async_hooks":"node:async_hooks","assert/strict":"node:assert/strict","assert":"node:assert","_tls_wrap":"node:_tls_wrap","_tls_common":"node:_tls_common","_stream_writable":"node:_stream_writable","_stream_wrap":"node:_stream_wrap","_stream_transform":"node:_stream_transform","_stream_readable":"node:_stream_readable","_stream_passthrough":"node:_stream_passthrough","_stream_duplex":"node:_stream_duplex","_http_server":"node:_http_server","_http_outgoing":"node:_http_outgoing","_http_incoming":"node:_http_incoming","_http_common":"node:_http_common","_http_client":"node:_http_client","_http_agent":"node:_http_agent","@netlify/edge-functions":"https://edge.netlify.com/v1/index.ts","netlify:edge":"https://edge.netlify.com/v1/index.ts?v=legacy"},"scopes":{}}
\ No newline at end of file
diff --git a/.netlify/edge-functions/fireproof_server.ts b/.netlify/edge-functions/fireproof_server.ts
new file mode 100644
index 0000000..b079ce6
--- /dev/null
+++ b/.netlify/edge-functions/fireproof_server.ts
@@ -0,0 +1,670 @@
+// node_modules/.pnpm/@netlify+blobs@8.0.1/node_modules/@netlify/blobs/dist/chunk-GUEW34CP.js
+var NF_ERROR = "x-nf-error";
+var NF_REQUEST_ID = "x-nf-request-id";
+var BlobsInternalError = class extends Error {
+ constructor(res) {
+ let details = res.headers.get(NF_ERROR) || `${res.status} status code`;
+ if (res.headers.has(NF_REQUEST_ID)) {
+ details += `, ID: ${res.headers.get(NF_REQUEST_ID)}`;
+ }
+ super(`Netlify Blobs has generated an internal error (${details})`);
+ this.name = "BlobsInternalError";
+ }
+};
+var collectIterator = async (iterator) => {
+ const result = [];
+ for await (const item of iterator) {
+ result.push(item);
+ }
+ return result;
+};
+var base64Decode = (input) => {
+ const { Buffer } = globalThis;
+ if (Buffer) {
+ return Buffer.from(input, "base64").toString();
+ }
+ return atob(input);
+};
+var base64Encode = (input) => {
+ const { Buffer } = globalThis;
+ if (Buffer) {
+ return Buffer.from(input).toString("base64");
+ }
+ return btoa(input);
+};
+var getEnvironment = () => {
+ const { Deno, Netlify, process } = globalThis;
+ return Netlify?.env ?? Deno?.env ?? {
+ delete: (key) => delete process?.env[key],
+ get: (key) => process?.env[key],
+ has: (key) => Boolean(process?.env[key]),
+ set: (key, value) => {
+ if (process?.env) {
+ process.env[key] = value;
+ }
+ },
+ toObject: () => process?.env ?? {}
+ };
+};
+var getEnvironmentContext = () => {
+ const context = globalThis.netlifyBlobsContext || getEnvironment().get("NETLIFY_BLOBS_CONTEXT");
+ if (typeof context !== "string" || !context) {
+ return {};
+ }
+ const data = base64Decode(context);
+ try {
+ return JSON.parse(data);
+ } catch {
+ }
+ return {};
+};
+var MissingBlobsEnvironmentError = class extends Error {
+ constructor(requiredProperties) {
+ super(
+ `The environment has not been configured to use Netlify Blobs. To use it manually, supply the following properties when creating a store: ${requiredProperties.join(
+ ", "
+ )}`
+ );
+ this.name = "MissingBlobsEnvironmentError";
+ }
+};
+var BASE64_PREFIX = "b64;";
+var METADATA_HEADER_INTERNAL = "x-amz-meta-user";
+var METADATA_HEADER_EXTERNAL = "netlify-blobs-metadata";
+var METADATA_MAX_SIZE = 2 * 1024;
+var encodeMetadata = (metadata) => {
+ if (!metadata) {
+ return null;
+ }
+ const encodedObject = base64Encode(JSON.stringify(metadata));
+ const payload = `b64;${encodedObject}`;
+ if (METADATA_HEADER_EXTERNAL.length + payload.length > METADATA_MAX_SIZE) {
+ throw new Error("Metadata object exceeds the maximum size");
+ }
+ return payload;
+};
+var decodeMetadata = (header) => {
+ if (!header || !header.startsWith(BASE64_PREFIX)) {
+ return {};
+ }
+ const encodedData = header.slice(BASE64_PREFIX.length);
+ const decodedData = base64Decode(encodedData);
+ const metadata = JSON.parse(decodedData);
+ return metadata;
+};
+var getMetadataFromResponse = (response) => {
+ if (!response.headers) {
+ return {};
+ }
+ const value = response.headers.get(METADATA_HEADER_EXTERNAL) || response.headers.get(METADATA_HEADER_INTERNAL);
+ try {
+ return decodeMetadata(value);
+ } catch {
+ throw new Error(
+ "An internal error occurred while trying to retrieve the metadata for an entry. Please try updating to the latest version of the Netlify Blobs client."
+ );
+ }
+};
+var BlobsConsistencyError = class extends Error {
+ constructor() {
+ super(
+ `Netlify Blobs has failed to perform a read using strong consistency because the environment has not been configured with a 'uncachedEdgeURL' property`
+ );
+ this.name = "BlobsConsistencyError";
+ }
+};
+var regions = {
+ "us-east-1": true,
+ "us-east-2": true
+};
+var isValidRegion = (input) => Object.keys(regions).includes(input);
+var InvalidBlobsRegionError = class extends Error {
+ constructor(region) {
+ super(
+ `${region} is not a supported Netlify Blobs region. Supported values are: ${Object.keys(regions).join(", ")}.`
+ );
+ this.name = "InvalidBlobsRegionError";
+ }
+};
+var DEFAULT_RETRY_DELAY = getEnvironment().get("NODE_ENV") === "test" ? 1 : 5e3;
+var MIN_RETRY_DELAY = 1e3;
+var MAX_RETRY = 5;
+var RATE_LIMIT_HEADER = "X-RateLimit-Reset";
+var fetchAndRetry = async (fetch, url, options, attemptsLeft = MAX_RETRY) => {
+ try {
+ const res = await fetch(url, options);
+ if (attemptsLeft > 0 && (res.status === 429 || res.status >= 500)) {
+ const delay = getDelay(res.headers.get(RATE_LIMIT_HEADER));
+ await sleep(delay);
+ return fetchAndRetry(fetch, url, options, attemptsLeft - 1);
+ }
+ return res;
+ } catch (error) {
+ if (attemptsLeft === 0) {
+ throw error;
+ }
+ const delay = getDelay();
+ await sleep(delay);
+ return fetchAndRetry(fetch, url, options, attemptsLeft - 1);
+ }
+};
+var getDelay = (rateLimitReset) => {
+ if (!rateLimitReset) {
+ return DEFAULT_RETRY_DELAY;
+ }
+ return Math.max(Number(rateLimitReset) * 1e3 - Date.now(), MIN_RETRY_DELAY);
+};
+var sleep = (ms) => new Promise((resolve) => {
+ setTimeout(resolve, ms);
+});
+var SIGNED_URL_ACCEPT_HEADER = "application/json;type=signed-url";
+var Client = class {
+ constructor({ apiURL, consistency, edgeURL, fetch, region, siteID, token, uncachedEdgeURL }) {
+ this.apiURL = apiURL;
+ this.consistency = consistency ?? "eventual";
+ this.edgeURL = edgeURL;
+ this.fetch = fetch ?? globalThis.fetch;
+ this.region = region;
+ this.siteID = siteID;
+ this.token = token;
+ this.uncachedEdgeURL = uncachedEdgeURL;
+ if (!this.fetch) {
+ throw new Error(
+ "Netlify Blobs could not find a `fetch` client in the global scope. You can either update your runtime to a version that includes `fetch` (like Node.js 18.0.0 or above), or you can supply your own implementation using the `fetch` property."
+ );
+ }
+ }
+ async getFinalRequest({
+ consistency: opConsistency,
+ key,
+ metadata,
+ method,
+ parameters = {},
+ storeName
+ }) {
+ const encodedMetadata = encodeMetadata(metadata);
+ const consistency = opConsistency ?? this.consistency;
+ let urlPath = `/${this.siteID}`;
+ if (storeName) {
+ urlPath += `/${storeName}`;
+ }
+ if (key) {
+ urlPath += `/${key}`;
+ }
+ if (this.edgeURL) {
+ if (consistency === "strong" && !this.uncachedEdgeURL) {
+ throw new BlobsConsistencyError();
+ }
+ const headers = {
+ authorization: `Bearer ${this.token}`
+ };
+ if (encodedMetadata) {
+ headers[METADATA_HEADER_INTERNAL] = encodedMetadata;
+ }
+ if (this.region) {
+ urlPath = `/region:${this.region}${urlPath}`;
+ }
+ const url2 = new URL(urlPath, consistency === "strong" ? this.uncachedEdgeURL : this.edgeURL);
+ for (const key2 in parameters) {
+ url2.searchParams.set(key2, parameters[key2]);
+ }
+ return {
+ headers,
+ url: url2.toString()
+ };
+ }
+ const apiHeaders = { authorization: `Bearer ${this.token}` };
+ const url = new URL(`/api/v1/blobs${urlPath}`, this.apiURL ?? "https://api.netlify.com");
+ for (const key2 in parameters) {
+ url.searchParams.set(key2, parameters[key2]);
+ }
+ if (this.region) {
+ url.searchParams.set("region", this.region);
+ }
+ if (storeName === void 0 || key === void 0) {
+ return {
+ headers: apiHeaders,
+ url: url.toString()
+ };
+ }
+ if (encodedMetadata) {
+ apiHeaders[METADATA_HEADER_EXTERNAL] = encodedMetadata;
+ }
+ if (method === "head" || method === "delete") {
+ return {
+ headers: apiHeaders,
+ url: url.toString()
+ };
+ }
+ const res = await this.fetch(url.toString(), {
+ headers: { ...apiHeaders, accept: SIGNED_URL_ACCEPT_HEADER },
+ method
+ });
+ if (res.status !== 200) {
+ throw new BlobsInternalError(res);
+ }
+ const { url: signedURL } = await res.json();
+ const userHeaders = encodedMetadata ? { [METADATA_HEADER_INTERNAL]: encodedMetadata } : void 0;
+ return {
+ headers: userHeaders,
+ url: signedURL
+ };
+ }
+ async makeRequest({
+ body,
+ consistency,
+ headers: extraHeaders,
+ key,
+ metadata,
+ method,
+ parameters,
+ storeName
+ }) {
+ const { headers: baseHeaders = {}, url } = await this.getFinalRequest({
+ consistency,
+ key,
+ metadata,
+ method,
+ parameters,
+ storeName
+ });
+ const headers = {
+ ...baseHeaders,
+ ...extraHeaders
+ };
+ if (method === "put") {
+ headers["cache-control"] = "max-age=0, stale-while-revalidate=60";
+ }
+ const options = {
+ body,
+ headers,
+ method
+ };
+ if (body instanceof ReadableStream) {
+ options.duplex = "half";
+ }
+ return fetchAndRetry(this.fetch, url, options);
+ }
+};
+var getClientOptions = (options, contextOverride) => {
+ const context = contextOverride ?? getEnvironmentContext();
+ const siteID = context.siteID ?? options.siteID;
+ const token = context.token ?? options.token;
+ if (!siteID || !token) {
+ throw new MissingBlobsEnvironmentError(["siteID", "token"]);
+ }
+ if (options.region !== void 0 && !isValidRegion(options.region)) {
+ throw new InvalidBlobsRegionError(options.region);
+ }
+ const clientOptions = {
+ apiURL: context.apiURL ?? options.apiURL,
+ consistency: options.consistency,
+ edgeURL: context.edgeURL ?? options.edgeURL,
+ fetch: options.fetch,
+ region: options.region,
+ siteID,
+ token,
+ uncachedEdgeURL: context.uncachedEdgeURL ?? options.uncachedEdgeURL
+ };
+ return clientOptions;
+};
+
+// node_modules/.pnpm/@netlify+blobs@8.0.1/node_modules/@netlify/blobs/dist/main.js
+var DEPLOY_STORE_PREFIX = "deploy:";
+var LEGACY_STORE_INTERNAL_PREFIX = "netlify-internal/legacy-namespace/";
+var SITE_STORE_PREFIX = "site:";
+var Store = class _Store {
+ constructor(options) {
+ this.client = options.client;
+ if ("deployID" in options) {
+ _Store.validateDeployID(options.deployID);
+ let name = DEPLOY_STORE_PREFIX + options.deployID;
+ if (options.name) {
+ name += `:${options.name}`;
+ }
+ this.name = name;
+ } else if (options.name.startsWith(LEGACY_STORE_INTERNAL_PREFIX)) {
+ const storeName = options.name.slice(LEGACY_STORE_INTERNAL_PREFIX.length);
+ _Store.validateStoreName(storeName);
+ this.name = storeName;
+ } else {
+ _Store.validateStoreName(options.name);
+ this.name = SITE_STORE_PREFIX + options.name;
+ }
+ }
+ async delete(key) {
+ const res = await this.client.makeRequest({ key, method: "delete", storeName: this.name });
+ if (![200, 204, 404].includes(res.status)) {
+ throw new BlobsInternalError(res);
+ }
+ }
+ async get(key, options) {
+ const { consistency, type } = options ?? {};
+ const res = await this.client.makeRequest({ consistency, key, method: "get", storeName: this.name });
+ if (res.status === 404) {
+ return null;
+ }
+ if (res.status !== 200) {
+ throw new BlobsInternalError(res);
+ }
+ if (type === void 0 || type === "text") {
+ return res.text();
+ }
+ if (type === "arrayBuffer") {
+ return res.arrayBuffer();
+ }
+ if (type === "blob") {
+ return res.blob();
+ }
+ if (type === "json") {
+ return res.json();
+ }
+ if (type === "stream") {
+ return res.body;
+ }
+ throw new BlobsInternalError(res);
+ }
+ async getMetadata(key, { consistency } = {}) {
+ const res = await this.client.makeRequest({ consistency, key, method: "head", storeName: this.name });
+ if (res.status === 404) {
+ return null;
+ }
+ if (res.status !== 200 && res.status !== 304) {
+ throw new BlobsInternalError(res);
+ }
+ const etag = res?.headers.get("etag") ?? void 0;
+ const metadata = getMetadataFromResponse(res);
+ const result = {
+ etag,
+ metadata
+ };
+ return result;
+ }
+ async getWithMetadata(key, options) {
+ const { consistency, etag: requestETag, type } = options ?? {};
+ const headers = requestETag ? { "if-none-match": requestETag } : void 0;
+ const res = await this.client.makeRequest({
+ consistency,
+ headers,
+ key,
+ method: "get",
+ storeName: this.name
+ });
+ if (res.status === 404) {
+ return null;
+ }
+ if (res.status !== 200 && res.status !== 304) {
+ throw new BlobsInternalError(res);
+ }
+ const responseETag = res?.headers.get("etag") ?? void 0;
+ const metadata = getMetadataFromResponse(res);
+ const result = {
+ etag: responseETag,
+ metadata
+ };
+ if (res.status === 304 && requestETag) {
+ return { data: null, ...result };
+ }
+ if (type === void 0 || type === "text") {
+ return { data: await res.text(), ...result };
+ }
+ if (type === "arrayBuffer") {
+ return { data: await res.arrayBuffer(), ...result };
+ }
+ if (type === "blob") {
+ return { data: await res.blob(), ...result };
+ }
+ if (type === "json") {
+ return { data: await res.json(), ...result };
+ }
+ if (type === "stream") {
+ return { data: res.body, ...result };
+ }
+ throw new Error(`Invalid 'type' property: ${type}. Expected: arrayBuffer, blob, json, stream, or text.`);
+ }
+ list(options = {}) {
+ const iterator = this.getListIterator(options);
+ if (options.paginate) {
+ return iterator;
+ }
+ return collectIterator(iterator).then(
+ (items) => items.reduce(
+ (acc, item) => ({
+ blobs: [...acc.blobs, ...item.blobs],
+ directories: [...acc.directories, ...item.directories]
+ }),
+ { blobs: [], directories: [] }
+ )
+ );
+ }
+ async set(key, data, { metadata } = {}) {
+ _Store.validateKey(key);
+ const res = await this.client.makeRequest({
+ body: data,
+ key,
+ metadata,
+ method: "put",
+ storeName: this.name
+ });
+ if (res.status !== 200) {
+ throw new BlobsInternalError(res);
+ }
+ }
+ async setJSON(key, data, { metadata } = {}) {
+ _Store.validateKey(key);
+ const payload = JSON.stringify(data);
+ const headers = {
+ "content-type": "application/json"
+ };
+ const res = await this.client.makeRequest({
+ body: payload,
+ headers,
+ key,
+ metadata,
+ method: "put",
+ storeName: this.name
+ });
+ if (res.status !== 200) {
+ throw new BlobsInternalError(res);
+ }
+ }
+ static formatListResultBlob(result) {
+ if (!result.key) {
+ return null;
+ }
+ return {
+ etag: result.etag,
+ key: result.key
+ };
+ }
+ static validateKey(key) {
+ if (key === "") {
+ throw new Error("Blob key must not be empty.");
+ }
+ if (key.startsWith("/") || key.startsWith("%2F")) {
+ throw new Error("Blob key must not start with forward slash (/).");
+ }
+ if (new TextEncoder().encode(key).length > 600) {
+ throw new Error(
+ "Blob key must be a sequence of Unicode characters whose UTF-8 encoding is at most 600 bytes long."
+ );
+ }
+ }
+ static validateDeployID(deployID) {
+ if (!/^\w{1,24}$/.test(deployID)) {
+ throw new Error(`'${deployID}' is not a valid Netlify deploy ID.`);
+ }
+ }
+ static validateStoreName(name) {
+ if (name.includes("/") || name.includes("%2F")) {
+ throw new Error("Store name must not contain forward slashes (/).");
+ }
+ if (new TextEncoder().encode(name).length > 64) {
+ throw new Error(
+ "Store name must be a sequence of Unicode characters whose UTF-8 encoding is at most 64 bytes long."
+ );
+ }
+ }
+ getListIterator(options) {
+ const { client, name: storeName } = this;
+ const parameters = {};
+ if (options?.prefix) {
+ parameters.prefix = options.prefix;
+ }
+ if (options?.directories) {
+ parameters.directories = "true";
+ }
+ return {
+ [Symbol.asyncIterator]() {
+ let currentCursor = null;
+ let done = false;
+ return {
+ async next() {
+ if (done) {
+ return { done: true, value: void 0 };
+ }
+ const nextParameters = { ...parameters };
+ if (currentCursor !== null) {
+ nextParameters.cursor = currentCursor;
+ }
+ const res = await client.makeRequest({
+ method: "get",
+ parameters: nextParameters,
+ storeName
+ });
+ let blobs = [];
+ let directories = [];
+ if (![200, 204, 404].includes(res.status)) {
+ throw new BlobsInternalError(res);
+ }
+ if (res.status === 404) {
+ done = true;
+ } else {
+ const page = await res.json();
+ if (page.next_cursor) {
+ currentCursor = page.next_cursor;
+ } else {
+ done = true;
+ }
+ blobs = (page.blobs ?? []).map(_Store.formatListResultBlob).filter(Boolean);
+ directories = page.directories ?? [];
+ }
+ return {
+ done: false,
+ value: {
+ blobs,
+ directories
+ }
+ };
+ }
+ };
+ }
+ };
+ }
+};
+var getStore = (input) => {
+ if (typeof input === "string") {
+ const clientOptions = getClientOptions({});
+ const client = new Client(clientOptions);
+ return new Store({ client, name: input });
+ }
+ if (typeof input?.name === "string") {
+ const { name } = input;
+ const clientOptions = getClientOptions(input);
+ if (!name) {
+ throw new MissingBlobsEnvironmentError(["name"]);
+ }
+ const client = new Client(clientOptions);
+ return new Store({ client, name });
+ }
+ if (typeof input?.deployID === "string") {
+ const clientOptions = getClientOptions(input);
+ const { deployID } = input;
+ if (!deployID) {
+ throw new MissingBlobsEnvironmentError(["deployID"]);
+ }
+ const client = new Client(clientOptions);
+ return new Store({ client, deployID });
+ }
+ throw new Error(
+ "The `getStore` method requires the name of the store as a string or as the `name` property of an options object"
+ );
+};
+
+// src/edge-functions/server.ts
+console.log("Fireproof edge function loaded");
+var server_default = async (req) => {
+ const url = new URL(req.url);
+ const carId = url.searchParams.get("car");
+ const metaDb = url.searchParams.get("meta");
+ console.log("request ", req.method, req.url);
+ if (req.method === "PUT") {
+ if (carId) {
+ const carFiles = getStore("cars");
+ const carArrayBuffer = new Uint8Array(await req.arrayBuffer());
+ await carFiles.set(carId, carArrayBuffer);
+ return new Response(JSON.stringify({ ok: true }), { status: 201 });
+ } else if (metaDb) {
+ const meta = getStore("meta");
+ const x = await req.json();
+ const { data, cid, parents } = x[0];
+ await meta.setJSON(`${metaDb}/${cid}`, { data, parents });
+ return new Response(JSON.stringify({ ok: true }), { status: 201 });
+ }
+ } else if (req.method === "GET") {
+ if (carId) {
+ const carFiles = getStore("cars");
+ const carArrayBuffer = await carFiles.get(carId, { type: "arrayBuffer" });
+ return new Response(carArrayBuffer, { status: 200 });
+ } else if (metaDb) {
+ const meta = getStore("meta");
+ const { blobs } = await meta.list({ prefix: `${metaDb}/` });
+ const allParents = [];
+ const entries = (await Promise.all(
+ blobs.map(async (blob) => {
+ const blobContents = await meta.get(blob.key, {
+ type: "json"
+ });
+ if (!blobContents) {
+ return { data: null };
+ }
+ const { data, parents } = blobContents;
+ if (parents) {
+ for (const p of parents) {
+ allParents.push(p.toString());
+ void meta.delete(`${metaDb}/${p}`);
+ }
+ }
+ return { cid: blob.key.split("/")[1], data, parents: [] };
+ })
+ )).filter((entry) => entry.data !== null && !allParents.includes(entry.cid));
+ return new Response(JSON.stringify(entries), { status: 200 });
+ }
+ } else if (req.method === "DELETE") {
+ if (carId) {
+ const carFiles = getStore("cars");
+ await carFiles.delete(carId);
+ return new Response(JSON.stringify({ ok: true }), { status: 200 });
+ } else if (metaDb) {
+ const meta = getStore("meta");
+ const { blobs } = await meta.list({ prefix: `${metaDb}/` });
+ await Promise.all(blobs.map((blob) => meta.delete(blob.key)));
+ return new Response(JSON.stringify({ ok: true }), { status: 200 });
+ } else {
+ const meta = getStore("meta");
+ const { blobs } = await meta.list({ prefix: `main/` });
+ for (const blob of blobs) {
+ await meta.delete(blob.key);
+ }
+ return new Response(JSON.stringify({ ok: true }), { status: 200 });
+ }
+ }
+ return new Response(JSON.stringify({ error: "Invalid path" }), {
+ status: 400
+ });
+};
+var config = { path: "/fireproof" };
+export {
+ config,
+ server_default as default
+};
diff --git a/.netlify/functions/manifest.json b/.netlify/functions/manifest.json
new file mode 100644
index 0000000..3ae3a26
--- /dev/null
+++ b/.netlify/functions/manifest.json
@@ -0,0 +1 @@
+{"functions":[{"bundler":"nft","buildData":{"runtimeAPIVersion":1},"mainFile":"/home/user/js-project-todo/backend/server.js","name":"server","priority":10,"runtimeVersion":"nodejs20.x","path":"/home/user/js-project-todo/.netlify/functions/server.zip","runtime":"js"}],"system":{"arch":"x64","platform":"linux"},"timestamp":1758197982513,"version":1}
\ No newline at end of file
diff --git a/.netlify/functions/server.zip b/.netlify/functions/server.zip
new file mode 100644
index 0000000..255edce
Binary files /dev/null and b/.netlify/functions/server.zip differ
diff --git a/.netlify/netlify.toml b/.netlify/netlify.toml
new file mode 100644
index 0000000..46f786e
--- /dev/null
+++ b/.netlify/netlify.toml
@@ -0,0 +1,43 @@
+redirectsOrigin = "config"
+plugins = []
+functionsDirectory = "/home/user/js-project-todo/backend"
+functionsDirectoryOrigin = "config"
+headers = []
+
+[functions]
+
+[functions."*"]
+
+[build]
+publish = "/home/user/js-project-todo/my-project/dist"
+publishOrigin = "config"
+commandOrigin = "config"
+base = "/home/user/js-project-todo"
+command = "npm install && npm run build"
+functions = "/home/user/js-project-todo/backend"
+
+[build.environment]
+
+[build.processing]
+
+[build.processing.css]
+
+[build.processing.html]
+
+[build.processing.images]
+
+[build.processing.js]
+
+[build.services]
+
+[[redirects]]
+from = "/api/*"
+to = "/.netlify/functions/server/:splat"
+status = 200.0
+force = false
+
+[redirects.query]
+
+[redirects.conditions]
+
+[redirects.headers]
\ No newline at end of file
diff --git a/.netlify/plugins/package-lock.json b/.netlify/plugins/package-lock.json
new file mode 100644
index 0000000..110b2ba
--- /dev/null
+++ b/.netlify/plugins/package-lock.json
@@ -0,0 +1,20283 @@
+{
+ "name": "netlify-local-plugins",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "netlify-local-plugins",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "content-security-policy-buildhooks": "https://d2bc42d4-d04c-4015-9647-53075b3bd3db.netlify.app/packages/buildhooks.tgz",
+ "fireproof-buildhooks": "https://1c1df094-75d2-4ed1-b918-1926a3953680.netlify.app/packages/buildhooks.tgz",
+ "neon-buildhooks": "https://37fb2d91-fc5f-402b-b52c-84240e7335fa.netlify.app/packages/buildhooks.tgz",
+ "user-agent-blocker-buildhooks": "https://229cd987-05ad-4a05-b612-849942d6bec4.netlify.app/packages/buildhooks.tgz"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
+ "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
+ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.4",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.4",
+ "@babel/types": "^7.28.4",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/core/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@babel/types": "^7.28.2",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
+ "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.4"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
+ "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.4",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
+ "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@commander-js/extra-typings": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz",
+ "integrity": "sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~12.1.0"
+ }
+ },
+ "node_modules/@contentful/rich-text-types": {
+ "version": "15.15.1",
+ "resolved": "https://registry.npmjs.org/@contentful/rich-text-types/-/rich-text-types-15.15.1.tgz",
+ "integrity": "sha512-oheW0vkxWDuKBIIXDeJfZaRYo+NzKbC4gETMhH+MGJd4nfL9cqrOvtRxZBgnhICN4vDpH4my/zUIZGKcFqGSjQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@dabh/diagnostics": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
+ "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
+ "license": "MIT",
+ "dependencies": {
+ "colorspace": "1.1.x",
+ "enabled": "2.0.x",
+ "kuler": "^2.0.0"
+ }
+ },
+ "node_modules/@dependents/detective-less": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-5.0.1.tgz",
+ "integrity": "sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "gonzales-pe": "^4.3.0",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
+ "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.3.3",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
+ "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
+ "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.13.5",
+ "@emotion/cache": "^11.14.0",
+ "@emotion/serialize": "^1.3.3",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+ "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.2",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+ "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
+ "license": "MIT"
+ },
+ "node_modules/@envelop/instrumentation": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@envelop/instrumentation/-/instrumentation-1.0.0.tgz",
+ "integrity": "sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@whatwg-node/promise-helpers": "^1.2.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz",
+ "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz",
+ "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz",
+ "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz",
+ "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz",
+ "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz",
+ "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz",
+ "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz",
+ "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz",
+ "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz",
+ "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz",
+ "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz",
+ "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz",
+ "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz",
+ "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz",
+ "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz",
+ "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz",
+ "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz",
+ "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz",
+ "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz",
+ "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz",
+ "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@fastify/busboy": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz",
+ "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==",
+ "license": "MIT"
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
+ "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.10"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.7.3",
+ "@floating-ui/utils": "^0.2.10"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
+ "license": "MIT"
+ },
+ "node_modules/@fullstory/browser": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@fullstory/browser/-/browser-2.0.6.tgz",
+ "integrity": "sha512-5cbZldOkb+KhgAFRQ5iMEoJR+TgKhCBRFiZN3PMHr+++EmHqprtNMyEAGppe02GUkASV4+7s4txghq6nkrRj8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@fullstory/snippet": "2.0.5"
+ }
+ },
+ "node_modules/@fullstory/snippet": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@fullstory/snippet/-/snippet-2.0.5.tgz",
+ "integrity": "sha512-33GJ/QhzZNk4q2B6LhU6Siha68NalrkPxdOaqrVZbUp0UyNYf3qHmU3ATTe51Vk/aM2J34ylrItJ7u94PQ16sA==",
+ "license": "ISC"
+ },
+ "node_modules/@google-cloud/paginator": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz",
+ "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "arrify": "^2.0.0",
+ "extend": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@google-cloud/projectify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz",
+ "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@google-cloud/promisify": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz",
+ "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@google-cloud/storage": {
+ "version": "5.20.5",
+ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.20.5.tgz",
+ "integrity": "sha512-lOs/dCyveVF8TkVFnFSF7IGd0CJrTm91qiK6JLu+Z8qiT+7Ag0RyVhxZIWkhiACqwABo7kSHDm8FdH8p2wxSSw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@google-cloud/paginator": "^3.0.7",
+ "@google-cloud/projectify": "^2.0.0",
+ "@google-cloud/promisify": "^2.0.0",
+ "abort-controller": "^3.0.0",
+ "arrify": "^2.0.0",
+ "async-retry": "^1.3.3",
+ "compressible": "^2.0.12",
+ "configstore": "^5.0.0",
+ "duplexify": "^4.0.0",
+ "ent": "^2.2.0",
+ "extend": "^3.0.2",
+ "gaxios": "^4.0.0",
+ "google-auth-library": "^7.14.1",
+ "hash-stream-validation": "^0.2.2",
+ "mime": "^3.0.0",
+ "mime-types": "^2.0.8",
+ "p-limit": "^3.0.1",
+ "pumpify": "^2.0.0",
+ "retry-request": "^4.2.2",
+ "stream-events": "^1.0.4",
+ "teeny-request": "^7.1.3",
+ "uuid": "^8.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/@graphql-tools/batch-delegate": {
+ "version": "9.0.41",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/batch-delegate/-/batch-delegate-9.0.41.tgz",
+ "integrity": "sha512-ypPT32Ba4imLoXuDYbmCzU7E7i6y9TzJW/JYgt1CQZZy5BJUNnIQ2SE4AnttnyzSfGbYd3aMiVVSK9Ta3E3dKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/delegate": "^10.2.23",
+ "@graphql-tools/utils": "^10.9.1",
+ "@whatwg-node/promise-helpers": "^1.3.0",
+ "dataloader": "^2.2.3",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/batch-execute": {
+ "version": "9.0.19",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.19.tgz",
+ "integrity": "sha512-VGamgY4PLzSx48IHPoblRw0oTaBa7S26RpZXt0Y4NN90ytoE0LutlpB2484RbkfcTjv9wa64QD474+YP1kEgGA==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.9.1",
+ "@whatwg-node/promise-helpers": "^1.3.0",
+ "dataloader": "^2.2.3",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/delegate": {
+ "version": "10.2.23",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.2.23.tgz",
+ "integrity": "sha512-xrPtl7f1LxS+B6o+W7ueuQh67CwRkfl+UKJncaslnqYdkxKmNBB4wnzVcW8ZsRdwbsla/v43PtwAvSlzxCzq2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/batch-execute": "^9.0.19",
+ "@graphql-tools/executor": "^1.4.9",
+ "@graphql-tools/schema": "^10.0.25",
+ "@graphql-tools/utils": "^10.9.1",
+ "@repeaterjs/repeater": "^3.0.6",
+ "@whatwg-node/promise-helpers": "^1.3.0",
+ "dataloader": "^2.2.3",
+ "dset": "^3.1.2",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/executor": {
+ "version": "1.4.9",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.4.9.tgz",
+ "integrity": "sha512-SAUlDT70JAvXeqV87gGzvDzUGofn39nvaVcVhNf12Dt+GfWHtNNO/RCn/Ea4VJaSLGzraUd41ObnN3i80EBU7w==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.9.1",
+ "@graphql-typed-document-node/core": "^3.2.0",
+ "@repeaterjs/repeater": "^3.0.4",
+ "@whatwg-node/disposablestack": "^0.0.6",
+ "@whatwg-node/promise-helpers": "^1.0.0",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/merge": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.1.tgz",
+ "integrity": "sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.9.1",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/schema": {
+ "version": "10.0.25",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.25.tgz",
+ "integrity": "sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/merge": "^9.1.1",
+ "@graphql-tools/utils": "^10.9.1",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/stitch": {
+ "version": "9.4.29",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/stitch/-/stitch-9.4.29.tgz",
+ "integrity": "sha512-rx7GvUlDQLm7SdWURdtBhxOdjAlqtvbK8PiAFx5J+WmFAN3x9H4uP2B/Wwo3Oqj04f3yiEPRAdrOowdlgPEOlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/batch-delegate": "^9.0.41",
+ "@graphql-tools/delegate": "^10.2.23",
+ "@graphql-tools/executor": "^1.4.9",
+ "@graphql-tools/merge": "^9.1.1",
+ "@graphql-tools/schema": "^10.0.25",
+ "@graphql-tools/utils": "^10.9.1",
+ "@graphql-tools/wrap": "^10.1.4",
+ "@whatwg-node/promise-helpers": "^1.3.0",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/utils": {
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.9.1.tgz",
+ "integrity": "sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-typed-document-node/core": "^3.1.1",
+ "@whatwg-node/promise-helpers": "^1.0.0",
+ "cross-inspect": "1.0.1",
+ "dset": "^3.1.4",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/wrap": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.1.4.tgz",
+ "integrity": "sha512-7pyNKqXProRjlSdqOtrbnFRMQAVamCmEREilOXtZujxY6kYit3tvWWSjUrcIOheltTffoRh7EQSjpy2JDCzasg==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-tools/delegate": "^10.2.23",
+ "@graphql-tools/schema": "^10.0.25",
+ "@graphql-tools/utils": "^10.9.1",
+ "@whatwg-node/promise-helpers": "^1.3.0",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@hookform/resolvers": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz",
+ "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react-hook-form": "^7.0.0"
+ }
+ },
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
+ "license": "ISC"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@lmdb/lmdb-darwin-arm64": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.3.tgz",
+ "integrity": "sha512-RXwGZ/0eCqtCY8FLTM/koR60w+MXyvBUpToXiIyjOcBnC81tAlTUHrRUavCEWPI9zc9VgvpK3+cbumPyR8BSuA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-darwin-x64": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz",
+ "integrity": "sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz",
+ "integrity": "sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm64": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz",
+ "integrity": "sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-x64": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz",
+ "integrity": "sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-win32-x64": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz",
+ "integrity": "sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@mapbox/node-pre-gyp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.0.tgz",
+ "integrity": "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "detect-libc": "^2.0.0",
+ "https-proxy-agent": "^7.0.5",
+ "node-fetch": "^2.6.7",
+ "nopt": "^8.0.0",
+ "semver": "^7.5.3",
+ "tar": "^7.4.0"
+ },
+ "bin": {
+ "node-pre-gyp": "bin/node-pre-gyp"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
+ "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@netlify/binary-info": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/binary-info/-/binary-info-1.0.0.tgz",
+ "integrity": "sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==",
+ "license": "Apache 2"
+ },
+ "node_modules/@netlify/blobs": {
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-10.0.10.tgz",
+ "integrity": "sha512-900jiduBT3b7GagpOGJKD3FQypkNbskGyx+Mvd9Ajy7pU3K0CNj4JBaji4aJZz7krrMxZZJacr0wCEsqWLQQmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/dev-utils": "4.1.3",
+ "@netlify/runtime-utils": "2.1.0"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@netlify/content-engine": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@netlify/content-engine/-/content-engine-1.9.1.tgz",
+ "integrity": "sha512-dXbNrxM/PLnLbMSLa/vWpPSpXO5NY6epqRxcF/i+96NSdNekGzgZv8A8FoUyeYVzK+Zxe+505V+c0pYHASSYXQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/types": "^7.20.7",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "@netlify/content-engine-graphiql-explorer": "1.1.0",
+ "@pnpm/exec": "^2.0.0",
+ "address": "1.2.2",
+ "async-mutex": "^0.5.0",
+ "axios": "^1.7.7",
+ "better-opn": "^2.1.1",
+ "cache-manager": "^2.11.1",
+ "chalk": "^4.1.2",
+ "ci-info": "^2.0.0",
+ "common-tags": "^1.8.2",
+ "compression": "^1.7.4",
+ "convert-hrtime": "^3.0.0",
+ "cors": "^2.8.5",
+ "detect-port": "^1.5.1",
+ "devcert": "^1.2.2",
+ "enhanced-resolve": "^5.12.0",
+ "execa": "^5.1.1",
+ "express": "^4.18.2",
+ "fastest-levenshtein": "^1.0.16",
+ "fastq": "^1.15.0",
+ "file-type": "16.5.4",
+ "flatted": "^3.3.1",
+ "fs-exists-cached": "1.0.0",
+ "fs-extra": "^11.1.1",
+ "glob": "^10.4.5",
+ "globby": "^11.1.0",
+ "got": "^11.8.6",
+ "graphql": "^16.8.1",
+ "graphql-compose": "^9.0.10",
+ "graphql-http": "^1.13.0",
+ "hash-wasm": "~4.9.0",
+ "hasha": "^5.2.2",
+ "import-from": "~4.0.0",
+ "invariant": "^2.2.4",
+ "is-relative": "^1.0.0",
+ "is-relative-url": "^3.0.0",
+ "joi": "^17.7.0",
+ "lmdb": "2.5.3",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.difference": "^4.5.0",
+ "lodash.differencewith": "^4.5.0",
+ "lodash.foreach": "^4.5.0",
+ "lodash.get": "^4.4.2",
+ "lodash.groupby": "^4.6.0",
+ "lodash.intersection": "^4.4.0",
+ "lodash.intersectionwith": "^4.4.0",
+ "lodash.isempty": "^4.4.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.merge": "^4.6.2",
+ "lodash.omit": "^4.5.0",
+ "lodash.orderby": "^4.6.0",
+ "lodash.pick": "^4.4.0",
+ "lodash.pickby": "^4.6.0",
+ "lodash.set": "^4.3.2",
+ "lodash.sortby": "^4.7.0",
+ "lodash.topairs": "^4.3.0",
+ "lodash.uniq": "^4.5.0",
+ "lodash.uniqwith": "^4.5.0",
+ "meant": "^1.0.3",
+ "memoizee": "^0.4.15",
+ "micromatch": "^4.0.5",
+ "mime": "^3.0.0",
+ "minizlib": "^3.0.1",
+ "moment": "^2.29.4",
+ "node-object-hash": "~2.3.10",
+ "normalize-path": "^3.0.0",
+ "opentracing": "^0.14.7",
+ "p-defer": "^3.0.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-error": "^2.1.2",
+ "progress": "^2.0.3",
+ "prompts": "^2.4.2",
+ "redux": "4.2.1",
+ "redux-thunk": "^2.4.2",
+ "semver": "^7.3.8",
+ "signal-exit": "^3.0.7",
+ "stack-trace": "^0.0.10",
+ "stream-json": "^1.7.4",
+ "string-similarity": "^1.2.2",
+ "strip-ansi": "^6.0.1",
+ "type-of": "^2.0.1",
+ "uuid": "^8.3.2",
+ "yurnalist": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@google-cloud/storage": "^5.8.4"
+ }
+ },
+ "node_modules/@netlify/content-engine-graphiql-explorer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@netlify/content-engine-graphiql-explorer/-/content-engine-graphiql-explorer-1.1.0.tgz",
+ "integrity": "sha512-DYmIHQe23uZXDCXbfZybWd+PGissjMfWxzIpJ0D/EfBb1I52A5Ic9cK3Rx7ZMmi64i1GTwoZY5lwQV5w2HmHKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.19.0"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@netlify/content-engine/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@netlify/dev-utils": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@netlify/dev-utils/-/dev-utils-4.1.3.tgz",
+ "integrity": "sha512-Cc8XNyKNVPWmRJAMVD8VICdYvVxZ66uoVdDzSyhrctw0cT7hW3NAlXF/xoLFK7uOV1xejah/Qt+2MPCJn32mqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@whatwg-node/server": "^0.10.0",
+ "ansis": "^4.1.0",
+ "chokidar": "^4.0.1",
+ "decache": "^4.6.2",
+ "dettle": "^1.0.5",
+ "dot-prop": "9.0.0",
+ "empathic": "^2.0.0",
+ "env-paths": "^3.0.0",
+ "image-size": "^2.0.2",
+ "js-image-generator": "^1.0.4",
+ "parse-gitignore": "^2.0.0",
+ "semver": "^7.7.2",
+ "tmp-promise": "^3.0.3",
+ "uuid": "^11.1.0",
+ "write-file-atomic": "^5.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || >=20"
+ }
+ },
+ "node_modules/@netlify/dev-utils/node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
+ "node_modules/@netlify/functions": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-4.2.5.tgz",
+ "integrity": "sha512-aL9DP/BpXNq86p4zCuWOgqd1a8Nvnbip9iiMuY5EcWzyAuiEPFeGnIUIGuGtBGtMnDE9AedUl+w9vXJZyDa1pQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/blobs": "10.0.10",
+ "@netlify/dev-utils": "4.1.3",
+ "@netlify/types": "2.0.3",
+ "@netlify/zip-it-and-ship-it": "^14.1.3",
+ "cron-parser": "^4.9.0",
+ "decache": "^4.6.2",
+ "extract-zip": "^2.0.1",
+ "is-stream": "^4.0.1",
+ "jwt-decode": "^4.0.0",
+ "lambda-local": "^2.2.0",
+ "read-package-up": "^11.0.0",
+ "source-map-support": "^0.5.21"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@netlify/integrations": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@netlify/integrations/-/integrations-0.6.0.tgz",
+ "integrity": "sha512-UYXhr6gArBppzbPINkd1gvRF7G6htbT04c05zGnfAEpc43pL5SNQIVHh7/KPuiic07xjSKAGUAezMz2QLenndg==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/functions": "^1.4.0",
+ "@types/chance": "^1.1.3",
+ "chance": "^1.1.9"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@netlify/integrations/node_modules/@netlify/functions": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.6.0.tgz",
+ "integrity": "sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-promise": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@netlify/integrations/node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "license": "MIT"
+ },
+ "node_modules/@netlify/netlify-design-tokens": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@netlify/netlify-design-tokens/-/netlify-design-tokens-7.1.0.tgz",
+ "integrity": "sha512-Rh88/9yMquQuHmsmHn/fip6QOWsLp21sCuPK9wYLJ3uScS8HagXfgDXGeYvaStURn8bhtG8hY1tyDbfbgy3+IA==",
+ "license": "ISC"
+ },
+ "node_modules/@netlify/node-cookies": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz",
+ "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@netlify/runtime-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@netlify/runtime-utils/-/runtime-utils-2.1.0.tgz",
+ "integrity": "sha512-z1h+wjB7IVYUsFZsuIYyNxiw5WWuylseY+eXaUDHBxNeLTlqziy+lz03QkR67CUR4Y790xGIhaHV00aOR2KAtw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || >=20"
+ }
+ },
+ "node_modules/@netlify/sdk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk/-/sdk-3.0.0.tgz",
+ "integrity": "sha512-1Cl5WgyQ8fdO5DDNf9Ocweftvgt/jsZqAZU2YeRmm3Lii5QwFGCCgLdw1xFCTGf2BZSozvZveEBO0utuLBqixw==",
+ "license": "ISC",
+ "dependencies": {
+ "@commander-js/extra-typings": "^12.1.0",
+ "@graphql-tools/stitch": "^9.0.3",
+ "@graphql-tools/utils": "^10.1.2",
+ "@graphql-tools/wrap": "^10.0.1",
+ "@netlify/content-engine": "1.9.1",
+ "@netlify/functions": "^4.1.10",
+ "@netlify/integrations": "^0.6.0",
+ "@netlify/sdk--extension-api-client": "2.12.6",
+ "@netlify/sdk--ui-core": "1.14.0",
+ "@netlify/sdk--ui-functions": "1.10.0",
+ "@netlify/sdk--ui-react": "1.23.0",
+ "@sindresorhus/slugify": "^2.2.1",
+ "@types/configstore": "^6.0.2",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.2.0",
+ "commander": "^12.1.0",
+ "configstore": "6.0.0",
+ "dataloader": "^2.2.3",
+ "env-paths": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "esbuild-plugin-copy": "^2.1.1",
+ "escalade": "^3.2.0",
+ "execa": "^9.3.0",
+ "fs-extra": "^11.1.0",
+ "graphql-scalars": "^1.22.5",
+ "js-xxhash": "^3.0.1",
+ "js-yaml": "^4.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "moize": "^6.1.6",
+ "normalize-package-data": "^7.0.0",
+ "open": "^9.1.0",
+ "outdent": "^0.8.0",
+ "safe-stable-stringify": "^2.4.3",
+ "semver": "^7.7.2",
+ "string-argv": "^0.3.2",
+ "ts-morph": "^25.0.1",
+ "typescript": "^5.4.3",
+ "wretch": "^2.7.0",
+ "zod": "^3.22.4",
+ "zod-metadata": "^1.1.0",
+ "zod-to-json-schema": "^3.24.5",
+ "zod-validation-error": "^2.0.0"
+ },
+ "bin": {
+ "netlify-extension": "bin.js",
+ "netlify-integration": "bin-deprecated.js",
+ "ntli": "bin.js"
+ },
+ "engines": {
+ "node": ">= 18.19.0"
+ }
+ },
+ "node_modules/@netlify/sdk--extension-api-client": {
+ "version": "2.12.6",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--extension-api-client/-/sdk--extension-api-client-2.12.6.tgz",
+ "integrity": "sha512-vMlxub26OCat9m2w4bqVfMN0V34UPiHaAKzBWexZL1CcvAWqqyo4fbc4ODS2wph7BxS2f4/lsMCNwrmMlCrVHQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@netlify/blobs": "^10.0.4",
+ "camelize-ts": "^3.0.0",
+ "openapi-fetch": "^0.13.4",
+ "snakify-ts": "^2.3.0",
+ "type-fest": "^4.35.0",
+ "wretch": "^2.7.0"
+ }
+ },
+ "node_modules/@netlify/sdk--ui-core": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-core/-/sdk--ui-core-1.14.0.tgz",
+ "integrity": "sha512-jCvgK2wGdaMr+qM8Apo8ANbDrYslF7Crk//PZObFydfHz7Vp9f0wOLlu8al97WH25NiUrJK49AaLAXa0e1IY/g==",
+ "license": "ISC",
+ "dependencies": {
+ "event-iterator": "^2.0.0",
+ "iter-tools-es": "^7.5.3",
+ "zod": "^3.22.4"
+ }
+ },
+ "node_modules/@netlify/sdk--ui-functions": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-functions/-/sdk--ui-functions-1.10.0.tgz",
+ "integrity": "sha512-Q/82NMNy50Y/u5+uTWS8EgDNcjvz6UpvsYSNtdoSH8LIbUjhGc96yk3oX/6T8eUGJ7yKNDUsy2nB7cwLVwyNRA==",
+ "license": "ISC",
+ "dependencies": {
+ "@netlify/functions": "^4.1.9",
+ "@netlify/sdk--extension-api-client": "2.12.6",
+ "zod": "^3.23.8"
+ },
+ "peerDependencies": {
+ "@trpc/server": ">= 11 || >= 11.0.0-rc.0"
+ }
+ },
+ "node_modules/@netlify/sdk--ui-react": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-react/-/sdk--ui-react-1.23.0.tgz",
+ "integrity": "sha512-ztkebDLSZ0l9IGiobhOxT0qKxvExl9Cp/StlNy42MlSJw3sFwIZic3aqXSPZ+i+A0TTjUMQ7ZqOmDf9co/e8Cg==",
+ "license": "ISC",
+ "dependencies": {
+ "@fullstory/browser": "^2.0.5",
+ "@hookform/resolvers": "^3.9.0",
+ "@netlify/netlify-design-tokens": "^7.1.0",
+ "@netlify/sdk--ui-core": "1.14.0",
+ "@netlify/tailwind-config": "^2.1.0",
+ "@netlify/ui": "0.0.23",
+ "@react-hook/resize-observer": "^2.0.1",
+ "escape-string-regexp": "^5.0.0",
+ "hast-util-to-jsx-runtime": "^2.3.0",
+ "history": "^5.3.0",
+ "react-hook-form": "^7.52.0",
+ "react-select": "^5.8.0",
+ "shiki": "^1.18.0",
+ "zod": "^3.23.8"
+ },
+ "peerDependencies": {
+ "autoprefixer": "^10.4.19",
+ "postcss": "^8.4.38",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "tailwindcss": "^3.4.3"
+ }
+ },
+ "node_modules/@netlify/serverless-functions-api": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-2.5.0.tgz",
+ "integrity": "sha512-0Hl6POpkEs3aan8T+EQvPIj5/gNc+64nwNv93VY4JoxFSrLPKYWmUyXJhT9lG93VxwGfmbxrCOV8U4sq2eWgTw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@netlify/tailwind-config": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@netlify/tailwind-config/-/tailwind-config-2.1.0.tgz",
+ "integrity": "sha512-szc+wQjsG7NqWasjEzUe8+OKv/1w6FOEFkMAwTD7+JC6UuVFReop+dhoFERWUrm6xEKl5ug/dVjWiPTsu9A0Ng==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/netlify-design-tokens": "^7.0.0",
+ "@tailwindcss/container-queries": "^0.1.1",
+ "tailwindcss": "^3.4.1"
+ }
+ },
+ "node_modules/@netlify/types": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@netlify/types/-/types-2.0.3.tgz",
+ "integrity": "sha512-OcV8ivKTdsyANqVSQzbusOA7FVtE9s6zwxNCGR/aNnQaVxMUgm93UzKgfR7cZ1nnQNZHAbjd0dKJKaAUqrzbMw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || >=20"
+ }
+ },
+ "node_modules/@netlify/ui": {
+ "version": "0.0.23",
+ "resolved": "https://registry.npmjs.org/@netlify/ui/-/ui-0.0.23.tgz",
+ "integrity": "sha512-QqLcs02GwetH78YOdtDpUys3fq9sykmgbJJMuI2xWzxEGhqxrTrRwE64kFNtzKsklqB2mfvVHbVafipzPkH1Ug==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/netlify-design-tokens": "^7.0.0",
+ "@netlify/tailwind-config": "^2.1.0",
+ "@tippyjs/react": "^4.2.6",
+ "clsx": "^2.1.0",
+ "downshift": "^9.0.0",
+ "history": "^4.7.2",
+ "lodash.split": "^4.4.2",
+ "react-to-text": "2.0.1",
+ "tippy.js": "6.3.7"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/@netlify/ui/node_modules/history": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+ "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.1.2",
+ "loose-envify": "^1.2.0",
+ "resolve-pathname": "^3.0.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0",
+ "value-equal": "^1.0.1"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it": {
+ "version": "14.1.7",
+ "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-14.1.7.tgz",
+ "integrity": "sha512-GuPYN/+oAmT5boiKVPsIk5sE25qmln8+bHaakMAr2S6vwy/yArEYcM/Oa7kLMIyN3aryYrdpqOSwU1ly20tkyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.22.5",
+ "@babel/types": "7.28.1",
+ "@netlify/binary-info": "^1.0.0",
+ "@netlify/serverless-functions-api": "^2.5.0",
+ "@vercel/nft": "0.29.4",
+ "archiver": "^7.0.0",
+ "common-path-prefix": "^3.0.0",
+ "copy-file": "^11.0.0",
+ "es-module-lexer": "^1.0.0",
+ "esbuild": "0.25.9",
+ "execa": "^8.0.0",
+ "fast-glob": "^3.3.3",
+ "filter-obj": "^6.0.0",
+ "find-up": "^7.0.0",
+ "is-path-inside": "^4.0.0",
+ "junk": "^4.0.0",
+ "locate-path": "^7.0.0",
+ "merge-options": "^3.0.4",
+ "minimatch": "^9.0.0",
+ "normalize-path": "^3.0.0",
+ "p-map": "^7.0.0",
+ "path-exists": "^5.0.0",
+ "precinct": "^12.0.0",
+ "require-package-name": "^2.0.1",
+ "resolve": "^2.0.0-next.1",
+ "semver": "^7.3.8",
+ "tmp-promise": "^3.0.2",
+ "toml": "^3.0.0",
+ "unixify": "^1.0.0",
+ "urlpattern-polyfill": "8.0.2",
+ "yargs": "^17.0.0",
+ "zod": "^3.23.8"
+ },
+ "bin": {
+ "zip-it-and-ship-it": "bin.js"
+ },
+ "engines": {
+ "node": ">=18.14.0"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@babel/types": {
+ "version": "7.28.1",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz",
+ "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/android-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/android-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/android-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/linux-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/@esbuild/win32-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/esbuild": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/npm-run-path": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
+ "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@netlify/zip-it-and-ship-it/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
+ "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "12.11.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
+ "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "2.21.3",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
+ "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.40.0"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=2"
+ }
+ },
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
+ "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "5.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
+ "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.39.0",
+ "deprecation": "^2.3.1"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
+ "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^6.0.1",
+ "@octokit/request-error": "^2.1.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
+ "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "18.12.0",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz",
+ "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/core": "^3.5.1",
+ "@octokit/plugin-paginate-rest": "^2.16.8",
+ "@octokit/plugin-request-log": "^1.0.4",
+ "@octokit/plugin-rest-endpoint-methods": "^5.12.0"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "6.41.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
+ "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^12.11.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pnpm/exec": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/exec/-/exec-2.0.0.tgz",
+ "integrity": "sha512-b5ALfWEOFQprWKntN7MF8XWCyslBk2c8u20GEDcDDQOs6c0HyHlWxX5lig8riQKdS000U6YyS4L4b32NOleXAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@pnpm/self-installer": "^2.0.0",
+ "command-exists": "^1.2.2",
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@pnpm/self-installer": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@pnpm/self-installer/-/self-installer-2.2.1.tgz",
+ "integrity": "sha512-aefLe96wAWghkx6q1PwbVS1Iz1iGE+HKwkTmtzWLFXeGhbknaIdG2voMwaBGIYGCSxm8sDKR1uLO4aRRAYuc+Q==",
+ "license": "MIT",
+ "bin": {
+ "self-installer": "bin.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@react-hook/latest": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz",
+ "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/@react-hook/passive-layout-effect": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
+ "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/@react-hook/resize-observer": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@react-hook/resize-observer/-/resize-observer-2.0.2.tgz",
+ "integrity": "sha512-tzKKzxNpfE5TWmxuv+5Ae3IF58n0FQgQaWJmcbYkjXTRZATXxClnTprQ2uuYygYTpu1pqbBskpwMpj6jpT1djA==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-hook/latest": "^1.0.2",
+ "@react-hook/passive-layout-effect": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@repeaterjs/repeater": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.6.tgz",
+ "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sanity/block-tools": {
+ "version": "2.36.6",
+ "resolved": "https://registry.npmjs.org/@sanity/block-tools/-/block-tools-2.36.6.tgz",
+ "integrity": "sha512-/0oExFhNiHcOkwe0WFzdvW8NICQ7bSpUnHCYfNdm8cEiwxu/3pUVW2kiqEE5BhC1gtWt/jsQzkDZPao+I5kW0w==",
+ "deprecated": "Renamed - use `@portabletext/block-tools` instead. `@sanity/block-tools` will no longer receive updates.",
+ "license": "MIT",
+ "dependencies": {
+ "get-random-values": "^1.2.2",
+ "lodash": "^4.17.15"
+ }
+ },
+ "node_modules/@sanity/client": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@sanity/client/-/client-3.4.1.tgz",
+ "integrity": "sha512-WSvnroCHqboUeyY0nl71vDPKmfurXI0mtqdNDb5u8MW00CAHRyCt1+Sgy39D/g+6R35FYniV31vTSTo3ofim0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/eventsource": "^4.0.0",
+ "get-it": "^6.1.1",
+ "make-error": "^1.3.0",
+ "object-assign": "^4.1.1",
+ "rxjs": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@sanity/color": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@sanity/color/-/color-2.2.5.tgz",
+ "integrity": "sha512-tTi22KoKuER3sldXYl4c1Dq2zU7tMLDkljFiaUKVkBbu4PBvRGCFw75kXZnD2b4Bsp6vin+7sI+AKdCKRhfRuw==",
+ "license": "MIT"
+ },
+ "node_modules/@sanity/eventsource": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-4.1.1.tgz",
+ "integrity": "sha512-4RpexVqD+hbIXDgFLgWq/vSJWHNEBbc9eGa96ear/3ADFhMQx+QG4Q7r3QmQkB2t7LfUrrJfMQn9sMwaBTlurg==",
+ "license": "MIT",
+ "dependencies": {
+ "event-source-polyfill": "1.0.31",
+ "eventsource": "2.0.2"
+ }
+ },
+ "node_modules/@sanity/generate-help-url": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-3.0.0.tgz",
+ "integrity": "sha512-wtMYcV5GIDIhVyF/jjmdwq1GdlK07dRL40XMns73VbrFI7FteRltxv48bhYVZPcLkRXb0SHjpDS/icj9/yzbVA==",
+ "license": "MIT"
+ },
+ "node_modules/@sanity/media-library-types": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@sanity/media-library-types/-/media-library-types-1.0.1.tgz",
+ "integrity": "sha512-lyjDQqq0IkVMBKPsm1+IeTpOki3OeFvSCyFms8pPTYcMaH0U5S+wK553QDI4HnmmPx0SiWpOWtLlTh1qkh+IFA==",
+ "license": "MIT"
+ },
+ "node_modules/@sanity/schema": {
+ "version": "2.36.6",
+ "resolved": "https://registry.npmjs.org/@sanity/schema/-/schema-2.36.6.tgz",
+ "integrity": "sha512-gNwYOtrtr63BcW5YFcgpJvZwB32SzJZE2UH/MmlIaTBrY4BBq0DG+BKy4ZF830MC5Lqm7XiHVAw+qpzSCAalNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/generate-help-url": "^3.0.0",
+ "@sanity/types": "2.36.6",
+ "arrify": "^1.0.1",
+ "humanize-list": "^1.0.1",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.15",
+ "object-inspect": "^1.6.0"
+ }
+ },
+ "node_modules/@sanity/schema/node_modules/@sanity/types": {
+ "version": "2.36.6",
+ "resolved": "https://registry.npmjs.org/@sanity/types/-/types-2.36.6.tgz",
+ "integrity": "sha512-BaYdU1rijN0z7fSDLKIyn3P9dKykEns+fWovMgeUmwzZ8UmuIqQbPFV7cceO3tGa9D/v54FI2FoUpXlxoYNvtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/client": "^3.3.3",
+ "@sanity/color": "^2.1.14",
+ "@types/react": "^17.0.42",
+ "rxjs": "^6.5.3"
+ }
+ },
+ "node_modules/@sanity/schema/node_modules/@types/react": {
+ "version": "17.0.88",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.88.tgz",
+ "integrity": "sha512-HEOvpzcFWkEcHq4EsTChnpimRc3Lz1/qzYRDFtobFp4obVa6QVjCDMjWmkgxgaTYttNvyjnldY8MUflGp5YiUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "^0.16",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@sanity/schema/node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@sanity/timed-out": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
+ "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@sanity/types": {
+ "version": "3.99.0",
+ "resolved": "https://registry.npmjs.org/@sanity/types/-/types-3.99.0.tgz",
+ "integrity": "sha512-a766U9VSoyOSWq+RZz9wsEo/Nnn+inDkEcdGu+rHFuygdepullB/RZpF2MxNsfUMCSPnajgG1Tm9lhwbSmlySA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/client": "^7.6.0",
+ "@sanity/media-library-types": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "18 || 19"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/@sanity/client": {
+ "version": "7.11.2",
+ "resolved": "https://registry.npmjs.org/@sanity/client/-/client-7.11.2.tgz",
+ "integrity": "sha512-q7rm2KgbWV60z+umlIZa3l7Nc9xyDRjmicm9tOP7PovOYNM0UK1PP/Auj6wssr+OqEsgcoe2n2pQFDtn/n8N9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/eventsource": "^5.0.2",
+ "get-it": "^8.6.9",
+ "nanoid": "^3.3.11",
+ "rxjs": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/@sanity/eventsource": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-5.0.2.tgz",
+ "integrity": "sha512-/B9PMkUvAlUrpRq0y+NzXgRv5lYCLxZNsBJD2WXVnqZYOfByL9oQBV7KiTaARuObp5hcQYuPfOAVjgXe3hrixA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/event-source-polyfill": "1.0.5",
+ "@types/eventsource": "1.1.15",
+ "event-source-polyfill": "1.0.31",
+ "eventsource": "2.0.2"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/decompress-response": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-7.0.0.tgz",
+ "integrity": "sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/get-it": {
+ "version": "8.6.10",
+ "resolved": "https://registry.npmjs.org/get-it/-/get-it-8.6.10.tgz",
+ "integrity": "sha512-27StIK860ZVp2bhsG/aTWpcoA4OrFxtMqBbesa5sR23m5OxfVQYCnpm2rPQeo3gs5qsUk0FdkISLgXRJ4HynNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/follow-redirects": "^1.14.4",
+ "decompress-response": "^7.0.0",
+ "follow-redirects": "^1.15.9",
+ "is-retry-allowed": "^2.2.0",
+ "through2": "^4.0.2",
+ "tunnel-agent": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/is-retry-allowed": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
+ "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/rxjs": {
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@sanity/types/node_modules/through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "3"
+ }
+ },
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "license": "MIT"
+ },
+ "node_modules/@shikijs/core": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz",
+ "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/engine-javascript": "1.29.2",
+ "@shikijs/engine-oniguruma": "1.29.2",
+ "@shikijs/types": "1.29.2",
+ "@shikijs/vscode-textmate": "^10.0.1",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.4"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz",
+ "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.29.2",
+ "@shikijs/vscode-textmate": "^10.0.1",
+ "oniguruma-to-es": "^2.2.0"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz",
+ "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.29.2",
+ "@shikijs/vscode-textmate": "^10.0.1"
+ }
+ },
+ "node_modules/@shikijs/langs": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz",
+ "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.29.2"
+ }
+ },
+ "node_modules/@shikijs/themes": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz",
+ "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.29.2"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz",
+ "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^10.0.1",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
+ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
+ "license": "MIT"
+ },
+ "node_modules/@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sindresorhus/slugify": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
+ "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/transliterate": "^1.0.0",
+ "escape-string-regexp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sindresorhus/transliterate": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz",
+ "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "license": "MIT"
+ },
+ "node_modules/@stackbit/artisanal-names": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@stackbit/artisanal-names/-/artisanal-names-1.0.1.tgz",
+ "integrity": "sha512-d4h70dAL5RR6HC8tOKRdBHUx0EEpZiSjmTlLUB4V2lDddt83B9df7yWuk1sgrUX10vrWGlkC3Phv4B6W9Qk/5g=="
+ },
+ "node_modules/@stackbit/cms-contentful": {
+ "version": "0.4.56",
+ "resolved": "https://registry.npmjs.org/@stackbit/cms-contentful/-/cms-contentful-0.4.56.tgz",
+ "integrity": "sha512-TURhzPOINGrVggavp6nxnADStXwmBvLUg8NKmV8QvIT56OKhJsUvFssFsOiDDfD2oyXIoPy0nFAaoygcrrg0oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@contentful/rich-text-types": "^15.11.1",
+ "@stackbit/cms-core": "2.0.1",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "contentful": "^9.1.10",
+ "contentful-management": "^7.51.4",
+ "lodash": "^4.17.21"
+ }
+ },
+ "node_modules/@stackbit/cms-core": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@stackbit/cms-core/-/cms-core-2.0.1.tgz",
+ "integrity": "sha512-fsBLMP6hBIS8idS1bYGerV+tIgx/OVOmme47kMaoJWBKpQYqGMhKSZodGCkORUM4xRhTxncavHWI+jds+Kp62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.11.5",
+ "@babel/traverse": "^7.11.5",
+ "@iarna/toml": "^2.2.3",
+ "@netlify/sdk": "^1.17.2",
+ "@stackbit/sdk": "2.0.1",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "chalk": "^4.0.1",
+ "content-engine": "0.0.29",
+ "esm": "^3.2.25",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.6",
+ "htmlparser": "^1.7.7",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.20",
+ "micromatch": "^4.0.2",
+ "moment": "^2.29.1",
+ "parse5": "^6.0.1",
+ "sanitize-filename": "^1.6.3",
+ "slugify": "^1.6.5",
+ "uuid": "^9.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/android-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/android-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/android-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/darwin-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-loong64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-s390x": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/linux-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/sunos-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/win32-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/win32-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@esbuild/win32-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@netlify/content-engine/-/content-engine-0.8.2.tgz",
+ "integrity": "sha512-FQegi441w8KLJO+QhU3QJWa8vlYI7HfioPwBkTKOnLpImun+L/2wcVCHaPWLgyV5o6LGwGPedXxXNgWebRiI+w==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/types": "^7.20.7",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "@netlify/content-engine-graphiql-explorer": "0.0.4",
+ "address": "1.2.2",
+ "axios": "^0.21.1",
+ "better-opn": "^2.1.1",
+ "cache-manager": "^2.11.1",
+ "chalk": "^4.1.2",
+ "ci-info": "^2.0.0",
+ "common-tags": "^1.8.2",
+ "compression": "^1.7.4",
+ "convert-hrtime": "^3.0.0",
+ "cors": "^2.8.5",
+ "detect-port": "^1.5.1",
+ "devcert": "^1.2.2",
+ "enhanced-resolve": "^5.12.0",
+ "execa": "^5.1.1",
+ "express": "^4.18.2",
+ "fastest-levenshtein": "^1.0.16",
+ "fastq": "^1.15.0",
+ "file-type": "16.5.4",
+ "fs-exists-cached": "1.0.0",
+ "fs-extra": "^11.1.1",
+ "glob": "^7.2.3",
+ "globby": "^11.1.0",
+ "got": "^11.8.6",
+ "graphql": "^16.8.1",
+ "graphql-compose": "^9.0.10",
+ "graphql-http": "^1.13.0",
+ "hash-wasm": "~4.9.0",
+ "hasha": "^5.2.2",
+ "import-from": "~4.0.0",
+ "invariant": "^2.2.4",
+ "is-relative": "^1.0.0",
+ "is-relative-url": "^3.0.0",
+ "joi": "^17.7.0",
+ "lmdb": "2.5.3",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.difference": "^4.5.0",
+ "lodash.differencewith": "^4.5.0",
+ "lodash.foreach": "^4.5.0",
+ "lodash.get": "^4.4.2",
+ "lodash.groupby": "^4.6.0",
+ "lodash.intersection": "^4.4.0",
+ "lodash.intersectionwith": "^4.4.0",
+ "lodash.isempty": "^4.4.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.merge": "^4.6.2",
+ "lodash.omit": "^4.5.0",
+ "lodash.orderby": "^4.6.0",
+ "lodash.pick": "^4.4.0",
+ "lodash.pickby": "^4.6.0",
+ "lodash.set": "^4.3.2",
+ "lodash.sortby": "^4.7.0",
+ "lodash.topairs": "^4.3.0",
+ "lodash.uniq": "^4.5.0",
+ "lodash.uniqwith": "^4.5.0",
+ "meant": "^1.0.3",
+ "memoizee": "^0.4.15",
+ "micromatch": "^4.0.5",
+ "mime": "^3.0.0",
+ "moment": "^2.29.4",
+ "node-html-parser": "^5.4.2",
+ "node-object-hash": "~2.3.10",
+ "normalize-path": "^3.0.0",
+ "opentracing": "^0.14.7",
+ "p-defer": "^3.0.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-error": "^2.1.2",
+ "progress": "^2.0.3",
+ "prompts": "^2.4.2",
+ "redux": "4.2.1",
+ "redux-thunk": "^2.4.2",
+ "semver": "^7.3.8",
+ "signal-exit": "^3.0.7",
+ "stack-trace": "^0.0.10",
+ "stream-json": "^1.7.4",
+ "string-similarity": "^1.2.2",
+ "strip-ansi": "^6.0.1",
+ "type-of": "^2.0.1",
+ "uuid": "^8.3.2",
+ "yurnalist": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine-graphiql-explorer": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@netlify/content-engine-graphiql-explorer/-/content-engine-graphiql-explorer-0.0.4.tgz",
+ "integrity": "sha512-FsCo+Q2oIh+kwl4Z43GIsJ1HhlHDvgeBKhlBE8Zb7BrdKNtq6gTDetsQy2O7IvWMJdx7W1Ltuxsgz7U60IOLCQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/content-engine/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/functions": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.8.2.tgz",
+ "integrity": "sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/serverless-functions-api": "1.26.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/sdk": {
+ "version": "1.67.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk/-/sdk-1.67.0.tgz",
+ "integrity": "sha512-ogDibdluTkqLtKBVWye6tzh3D9GJ3jfHe7IhnbMYc1HlNiLz7QqOrLpVyqm8pOvXW5PZfJ11JPyTcs69/yTztQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@commander-js/extra-typings": "^12.1.0",
+ "@graphql-tools/stitch": "^9.0.3",
+ "@graphql-tools/utils": "^10.1.2",
+ "@graphql-tools/wrap": "^10.0.1",
+ "@netlify/content-engine": "0.8.2",
+ "@netlify/functions": "^2.8.1",
+ "@netlify/integrations": "^0.6.0",
+ "@netlify/sdk--extension-api-client": "0.1.1",
+ "@sindresorhus/slugify": "^2.2.1",
+ "@stackbit/dev": "^1.0.27",
+ "@types/configstore": "^6.0.2",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.2.0",
+ "commander": "^12.1.0",
+ "configstore": "6.0.0",
+ "crypto-js": "^4.2.0",
+ "env-paths": "^3.0.0",
+ "esbuild": "^0.20.0",
+ "esbuild-plugin-copy": "^2.1.1",
+ "execa": "^8.0.1",
+ "fs-extra": "^11.1.0",
+ "graphql-scalars": "^1.22.5",
+ "js-xxhash": "^3.0.1",
+ "js-yaml": "^4.1.0",
+ "jsonwebtoken": "^9.0.2",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.kebabcase": "^4.1.1",
+ "open": "^9.1.0",
+ "outdent": "^0.8.0",
+ "safe-stable-stringify": "^2.4.3",
+ "toml": "^3.0.0",
+ "typescript": "^5.4.3",
+ "wretch": "^2.7.0",
+ "zod": "^3.22.4",
+ "zod-metadata": "^1.1.0",
+ "zod-to-json-schema": "^3.21.4",
+ "zod-validation-error": "^2.0.0"
+ },
+ "bin": {
+ "netlify-integration": "bin.js",
+ "ntli": "bin.js"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/sdk--extension-api-client": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--extension-api-client/-/sdk--extension-api-client-0.1.1.tgz",
+ "integrity": "sha512-gl4K9VJg0+MLBZCAjfKvySXs1Dv5l/Y5YEXsFQZIJIgHKCmPiNOEz8SLzF7YgRNqlgIapjcBu52kif82J5HUpA==",
+ "license": "ISC",
+ "dependencies": {
+ "wretch": "^2.7.0",
+ "zod": "^3.22.4"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/sdk/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/sdk/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/sdk/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/@netlify/serverless-functions-api": {
+ "version": "1.26.1",
+ "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.26.1.tgz",
+ "integrity": "sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/node-cookies": "^0.1.0",
+ "urlpattern-polyfill": "8.0.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/esbuild": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.2",
+ "@esbuild/android-arm": "0.20.2",
+ "@esbuild/android-arm64": "0.20.2",
+ "@esbuild/android-x64": "0.20.2",
+ "@esbuild/darwin-arm64": "0.20.2",
+ "@esbuild/darwin-x64": "0.20.2",
+ "@esbuild/freebsd-arm64": "0.20.2",
+ "@esbuild/freebsd-x64": "0.20.2",
+ "@esbuild/linux-arm": "0.20.2",
+ "@esbuild/linux-arm64": "0.20.2",
+ "@esbuild/linux-ia32": "0.20.2",
+ "@esbuild/linux-loong64": "0.20.2",
+ "@esbuild/linux-mips64el": "0.20.2",
+ "@esbuild/linux-ppc64": "0.20.2",
+ "@esbuild/linux-riscv64": "0.20.2",
+ "@esbuild/linux-s390x": "0.20.2",
+ "@esbuild/linux-x64": "0.20.2",
+ "@esbuild/netbsd-x64": "0.20.2",
+ "@esbuild/openbsd-x64": "0.20.2",
+ "@esbuild/sunos-x64": "0.20.2",
+ "@esbuild/win32-arm64": "0.20.2",
+ "@esbuild/win32-ia32": "0.20.2",
+ "@esbuild/win32-x64": "0.20.2"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/execa/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/execa/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/fs-extra/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/fs-extra/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/js-yaml/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/npm-run-path": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
+ "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/cms-core/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@stackbit/cms-git": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/@stackbit/cms-git/-/cms-git-0.4.18.tgz",
+ "integrity": "sha512-eqRY3sC8xaJ6OrWPpRptEhe/6/0mt6TsAk0LMVsDERekzLOYQqnmsqPNFN0tIaTd9FXqPSmravW6jc6b+aAXMA==",
+ "license": "MIT",
+ "dependencies": {
+ "@stackbit/artisanal-names": "^1.0.1",
+ "@stackbit/cms-core": "2.0.1",
+ "@stackbit/sdk": "2.0.1",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "axios": "^0.24.0",
+ "fs-extra": "^11.1.0",
+ "git-url-parse": "^13.1.0",
+ "lodash": "^4.17.20",
+ "micromatch": "^4.0.4",
+ "slugify": "^1.6.5"
+ }
+ },
+ "node_modules/@stackbit/cms-git/node_modules/axios": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
+ "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.4"
+ }
+ },
+ "node_modules/@stackbit/cms-sanity": {
+ "version": "0.2.56",
+ "resolved": "https://registry.npmjs.org/@stackbit/cms-sanity/-/cms-sanity-0.2.56.tgz",
+ "integrity": "sha512-K6n3WDAUt7/gT93UccCif6FGlcGbD4BmX7fW/iOiWxNrivjlc/3Exv0ZZMFJWmRzELNZpZg1pwVsJsUTaetLUQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/block-tools": "^2.29.3",
+ "@sanity/client": "^3.3.0",
+ "@sanity/schema": "^2.29.3",
+ "@sanity/types": "^3.31.0",
+ "@stackbit/cms-core": "2.0.1",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "fs-extra": "^9.0.13",
+ "glob": "10.2.6",
+ "jsdom": "^20.0.0",
+ "lodash": "^4.17.21",
+ "tinycolor2": "^1.5.2",
+ "uuid": "^8.3.2"
+ }
+ },
+ "node_modules/@stackbit/cms-sanity/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@stackbit/cms-sanity/node_modules/glob": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz",
+ "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@stackbit/cms-sanity/node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/@stackbit/cms-sanity/node_modules/minipass": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz",
+ "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@stackbit/dev": {
+ "version": "1.0.35",
+ "resolved": "https://registry.npmjs.org/@stackbit/dev/-/dev-1.0.35.tgz",
+ "integrity": "sha512-qrvYqVWM1ssB/tsuy6dftTWya9boVOVagMPGBeaKJC3cS1XRPG/bzbZQaHfnvGHvFjbiV0RsF5AgMvSyE2piYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@stackbit/cms-core": "2.0.1",
+ "@stackbit/cms-git": "0.4.18",
+ "@stackbit/dev-common": "0.5.51",
+ "@stackbit/sdk": "2.0.1",
+ "axios": "^0.25.0",
+ "chalk": "^4.1.0",
+ "chokidar": "^3.5.3",
+ "configstore": "^5",
+ "cors": "^2.8.5",
+ "detect-port": "^1.3.0",
+ "dotenv": "^16.0.3",
+ "express": "^4.17.2",
+ "fs-extra": "^10.0.0",
+ "http-proxy-middleware": "^0.20.0",
+ "lodash": "^4.17.21",
+ "open": "^8.4.0",
+ "rimraf": "^3.0.2",
+ "uuid": "^8.3.2",
+ "winston": "^3.4.0",
+ "yargs": "^17.3.1"
+ },
+ "bin": {
+ "stackbit-dev": "dist/index.js"
+ }
+ },
+ "node_modules/@stackbit/dev-common": {
+ "version": "0.5.51",
+ "resolved": "https://registry.npmjs.org/@stackbit/dev-common/-/dev-common-0.5.51.tgz",
+ "integrity": "sha512-WNfV5tPGuPi+WkjnivZMvLDE6hsVu2i9EndwG8zM9ZXKng8bwOxI+w5P+Td8EbvTu/ahjbR+3g7yzxu7HkI1aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@iarna/toml": "^2.2.5",
+ "@stackbit/artisanal-names": "^1.0.1",
+ "@stackbit/cms-contentful": "0.4.56",
+ "@stackbit/cms-core": "2.0.1",
+ "@stackbit/cms-git": "0.4.18",
+ "@stackbit/cms-sanity": "0.2.56",
+ "@stackbit/sdk": "2.0.1",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "axios": "^0.25.0",
+ "chalk": "^4.0.1",
+ "configstore": "^5",
+ "detect-port": "^1.3.0",
+ "express": "^4.17.2",
+ "file-type": "^16.5.4",
+ "fs-extra": "^10.0.0",
+ "git-url-parse": "^13.1.0",
+ "js-yaml": "^3.14.1",
+ "lodash": "^4.17.21",
+ "moment": "^2.29.1",
+ "rimraf": "^3.0.2",
+ "sanitize-filename": "^1.6.3",
+ "semver": "^7.5.2",
+ "slugify": "^1.6.5",
+ "socket.io": "^4.0.1",
+ "uuid": "^8.3.2"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/axios": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
+ "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.7"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/dev-common/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@stackbit/dev-common/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",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev-common/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/axios": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
+ "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.7"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/dev/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/@stackbit/dev/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",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stackbit/dev/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/@stackbit/sdk": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@stackbit/sdk/-/sdk-2.0.1.tgz",
+ "integrity": "sha512-/AFW0772DNy8qsUgANf79hmdc//dr1hqQEAMcT8F7U/c5TnihBs2szcDRIwX/jYZp+qJFRguB83lDCDPfckCyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/rest": "^18.3.5",
+ "@stackbit/types": "1.0.1",
+ "@stackbit/utils": "0.4.19",
+ "acorn": "^8.2.4",
+ "chokidar": "^3.5.3",
+ "esbuild": "^0.19.12",
+ "fs-extra": "^9.1.0",
+ "joi": "^17.4.0",
+ "js-yaml": "^4.0.0",
+ "lodash": "^4.17.20",
+ "micromatch": "^4.0.2",
+ "moment": "^2.29.1",
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
+ "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/android-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
+ "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/android-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
+ "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/android-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
+ "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
+ "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/darwin-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
+ "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
+ "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
+ "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
+ "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
+ "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
+ "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-loong64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
+ "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
+ "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
+ "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
+ "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-s390x": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
+ "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/linux-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
+ "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/sunos-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
+ "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/win32-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
+ "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/win32-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
+ "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/@esbuild/win32-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
+ "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/esbuild": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
+ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.19.12",
+ "@esbuild/android-arm": "0.19.12",
+ "@esbuild/android-arm64": "0.19.12",
+ "@esbuild/android-x64": "0.19.12",
+ "@esbuild/darwin-arm64": "0.19.12",
+ "@esbuild/darwin-x64": "0.19.12",
+ "@esbuild/freebsd-arm64": "0.19.12",
+ "@esbuild/freebsd-x64": "0.19.12",
+ "@esbuild/linux-arm": "0.19.12",
+ "@esbuild/linux-arm64": "0.19.12",
+ "@esbuild/linux-ia32": "0.19.12",
+ "@esbuild/linux-loong64": "0.19.12",
+ "@esbuild/linux-mips64el": "0.19.12",
+ "@esbuild/linux-ppc64": "0.19.12",
+ "@esbuild/linux-riscv64": "0.19.12",
+ "@esbuild/linux-s390x": "0.19.12",
+ "@esbuild/linux-x64": "0.19.12",
+ "@esbuild/netbsd-x64": "0.19.12",
+ "@esbuild/openbsd-x64": "0.19.12",
+ "@esbuild/sunos-x64": "0.19.12",
+ "@esbuild/win32-arm64": "0.19.12",
+ "@esbuild/win32-ia32": "0.19.12",
+ "@esbuild/win32-x64": "0.19.12"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@stackbit/sdk/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/@stackbit/types": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@stackbit/types/-/types-1.0.1.tgz",
+ "integrity": "sha512-DODjYi6Mlc0z+P7oIROtbT+CqWh3+ACHJZrotOCkRhZbT8P3yX/Tmtzdzn6VQIDmLOf58STU/1ceT75R5n71bg==",
+ "license": "MIT"
+ },
+ "node_modules/@stackbit/utils": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/@stackbit/utils/-/utils-0.4.19.tgz",
+ "integrity": "sha512-Q0SrJXB4SugDrNUvwJZYpF5Syg9WjC+oRISzW/sQSWBISln/d4xwl+l/6cQsv0Zm7OdyhsAQdY2MFfH6QG3HTg==",
+ "license": "MIT",
+ "dependencies": {
+ "@iarna/toml": "^2.2.5",
+ "@stackbit/types": "1.0.1",
+ "fs-extra": "^9.1.0",
+ "js-yaml": "^4.0.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "node_modules/@stackbit/utils/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "license": "MIT",
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@tailwindcss/container-queries": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz",
+ "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=3.2.0"
+ }
+ },
+ "node_modules/@tanstack/query-core": {
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.89.0.tgz",
+ "integrity": "sha512-joFV1MuPhSLsKfTzwjmPDrp8ENfZ9N23ymFu07nLfn3JCkSHy0CFgsyhHTJOmWaumC/WiNIKM0EJyduCF/Ih/Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.89.0.tgz",
+ "integrity": "sha512-SXbtWSTSRXyBOe80mszPxpEbaN4XPRUp/i0EfQK1uyj3KCk/c8FuPJNIRwzOVe/OU3rzxrYtiNabsAmk1l714A==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/query-core": "5.89.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19"
+ }
+ },
+ "node_modules/@tippyjs/react": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.6.tgz",
+ "integrity": "sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==",
+ "license": "MIT",
+ "dependencies": {
+ "tippy.js": "^6.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "license": "MIT"
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@trpc/client": {
+ "version": "11.0.0-rc.477",
+ "resolved": "https://registry.npmjs.org/@trpc/client/-/client-11.0.0-rc.477.tgz",
+ "integrity": "sha512-Ah/Er3vxTm2bIEUcIrike7Z/8Yc+DkFveU2ZHQQ0+zY7yxs931438+4OEJuY/Xl/0p5OTDeZTm6HBuZ1REFiyA==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "@trpc/server": "11.0.0-rc.477+a467f8314"
+ }
+ },
+ "node_modules/@trpc/react-query": {
+ "version": "11.0.0-rc.477",
+ "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-11.0.0-rc.477.tgz",
+ "integrity": "sha512-1ZCAm0wv7yLmb3muq+5DTRxdKXzI1KjTrcM2+QRKCFu6EherGM8x6zGI36P9ZmC6o+SCoedzxqazDNe+kkqVqA==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "@tanstack/react-query": "^5.49.2",
+ "@trpc/client": "11.0.0-rc.477+a467f8314",
+ "@trpc/server": "11.0.0-rc.477+a467f8314",
+ "react": ">=18.2.0",
+ "react-dom": ">=18.2.0"
+ }
+ },
+ "node_modules/@trpc/server": {
+ "version": "11.0.0-rc.477",
+ "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.0.0-rc.477.tgz",
+ "integrity": "sha512-K6zmjRv96fWilqm/ETehEK1DWsy5bSyrs2xbsNzCbjguMgamMhOClRHgYzJcwgLp2kasJ7QgD9YbahOhV1/u1w==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@ts-morph/common": {
+ "version": "0.26.1",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz",
+ "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.3.2",
+ "minimatch": "^9.0.4",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/chance": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@types/chance/-/chance-1.1.7.tgz",
+ "integrity": "sha512-40you9610GTQPJyvjMBgmj9wiDO6qXhbfjizNYod/fmvLSfUUxURAJMTD8tjmbcZSsyYE5iEUox61AAcCjW/wQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/configstore": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.2.tgz",
+ "integrity": "sha512-OS//b51j9uyR3zvwD04Kfs5kHpve2qalQ18JhY/ho3voGYUTPLEG90/ocfKPI48hyHH8T04f7KEEbK6Ue60oZQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.19",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
+ "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz",
+ "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
+ "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/event-source-polyfill": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz",
+ "integrity": "sha512-iaiDuDI2aIFft7XkcwMzDWLqo7LVDixd2sR6B4wxJut9xcp/Ev9bO4EFg4rm6S9QxATLBj5OPxdeocgmhjwKaw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/eventsource": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.15.tgz",
+ "integrity": "sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/follow-redirects": {
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.4.tgz",
+ "integrity": "sha512-GWXfsD0Jc1RWiFmMuMFCpXMzi9L7oPDVwxUnZdg89kDNnqsRfUKXEtUYtA98A6lig1WXH/CYY/fvPW9HuN5fTA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/glob": {
+ "version": "5.0.38",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz",
+ "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json-patch": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz",
+ "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/mkdirp": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz",
+ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "8.10.66",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
+ "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.15",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
+ "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "19.1.13",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.13.tgz",
+ "integrity": "sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.12",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz",
+ "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/rimraf": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.5.tgz",
+ "integrity": "sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/glob": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
+ "license": "MIT"
+ },
+ "node_modules/@types/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/triple-beam": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
+ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.44.0.tgz",
+ "integrity": "sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.44.0",
+ "@typescript-eslint/types": "^8.44.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/project-service/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.44.0.tgz",
+ "integrity": "sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.44.0.tgz",
+ "integrity": "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.44.0.tgz",
+ "integrity": "sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.44.0",
+ "@typescript-eslint/tsconfig-utils": "8.44.0",
+ "@typescript-eslint/types": "8.44.0",
+ "@typescript-eslint/visitor-keys": "8.44.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.44.0.tgz",
+ "integrity": "sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.44.0",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/nft": {
+ "version": "0.29.4",
+ "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz",
+ "integrity": "sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==",
+ "license": "MIT",
+ "dependencies": {
+ "@mapbox/node-pre-gyp": "^2.0.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^10.4.5",
+ "graceful-fs": "^4.2.9",
+ "node-gyp-build": "^4.2.2",
+ "picomatch": "^4.0.2",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "nft": "out/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz",
+ "integrity": "sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@vue/shared": "3.5.21",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz",
+ "integrity": "sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.21",
+ "@vue/shared": "3.5.21"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
+ "integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@vue/compiler-core": "3.5.21",
+ "@vue/compiler-dom": "3.5.21",
+ "@vue/compiler-ssr": "3.5.21",
+ "@vue/shared": "3.5.21",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.18",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz",
+ "integrity": "sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.21",
+ "@vue/shared": "3.5.21"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz",
+ "integrity": "sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==",
+ "license": "MIT"
+ },
+ "node_modules/@whatwg-node/disposablestack": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz",
+ "integrity": "sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==",
+ "license": "MIT",
+ "dependencies": {
+ "@whatwg-node/promise-helpers": "^1.0.0",
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/fetch": {
+ "version": "0.10.10",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.10.10.tgz",
+ "integrity": "sha512-watz4i/Vv4HpoJ+GranJ7HH75Pf+OkPQ63NoVmru6Srgc8VezTArB00i/oQlnn0KWh14gM42F22Qcc9SU9mo/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@whatwg-node/node-fetch": "^0.7.25",
+ "urlpattern-polyfill": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/fetch/node_modules/urlpattern-polyfill": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz",
+ "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==",
+ "license": "MIT"
+ },
+ "node_modules/@whatwg-node/node-fetch": {
+ "version": "0.7.25",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.7.25.tgz",
+ "integrity": "sha512-szCTESNJV+Xd56zU6ShOi/JWROxE9IwCic8o5D9z5QECZloas6Ez5tUuKqXTAdu6fHFx1t6C+5gwj8smzOLjtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^3.1.1",
+ "@whatwg-node/disposablestack": "^0.0.6",
+ "@whatwg-node/promise-helpers": "^1.3.2",
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/promise-helpers": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz",
+ "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/server": {
+ "version": "0.10.12",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/server/-/server-0.10.12.tgz",
+ "integrity": "sha512-MQIvvQyPvKGna586MzXhgwnEbGtbm7QtOgJ/KPd/tC70M/jbhd1xHdIQQbh3okBw+MrDF/EvaC2vB5oRC7QdlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@envelop/instrumentation": "^1.0.0",
+ "@whatwg-node/disposablestack": "^0.0.6",
+ "@whatwg-node/fetch": "^0.10.10",
+ "@whatwg-node/promise-helpers": "^1.3.2",
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/abbrev": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
+ "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.1.0",
+ "acorn-walk": "^8.0.2"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ansis": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz",
+ "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/application-config-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz",
+ "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==",
+ "license": "MIT"
+ },
+ "node_modules/archiver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz",
+ "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "archiver-utils": "^5.0.2",
+ "async": "^3.2.4",
+ "buffer-crc32": "^1.0.0",
+ "readable-stream": "^4.0.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^3.0.0",
+ "zip-stream": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz",
+ "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==",
+ "license": "MIT",
+ "dependencies": {
+ "glob": "^10.0.0",
+ "graceful-fs": "^4.2.0",
+ "is-stream": "^2.0.1",
+ "lazystream": "^1.0.0",
+ "lodash": "^4.17.15",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ast-module-types": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-6.0.1.tgz",
+ "integrity": "sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
+ },
+ "node_modules/async-mutex": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz",
+ "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "retry": "0.13.1"
+ }
+ },
+ "node_modules/async-sema": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz",
+ "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==",
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/atomic-sleep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.21",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
+ "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "browserslist": "^4.24.4",
+ "caniuse-lite": "^1.0.30001702",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+ "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.4",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-macros/node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/bare-events": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz",
+ "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==",
+ "license": "Apache-2.0",
+ "optional": true
+ },
+ "node_modules/bare-fs": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.4.tgz",
+ "integrity": "sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
+ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
+ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-url": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz",
+ "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "license": "MIT",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.5.tgz",
+ "integrity": "sha512-TiU4qUT9jdCuh4aVOG7H1QozyeI2sZRqoRPdqBIaslfNt4WUSanRBueAwl2x5jt4rXBMim3lIN2x6yT8PDi24Q==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/before-after-hook": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
+ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/better-opn": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz",
+ "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==",
+ "license": "MIT",
+ "dependencies": {
+ "open": "^7.0.3"
+ },
+ "engines": {
+ "node": ">8.0.0"
+ }
+ },
+ "node_modules/better-opn/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/better-opn/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.52",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
+ "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
+ "license": "Unlicense",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/bignumber.js": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
+ "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "license": "MIT",
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.26.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz",
+ "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.8.3",
+ "caniuse-lite": "^1.0.30001741",
+ "electron-to-chromium": "^1.5.218",
+ "node-releases": "^2.0.21",
+ "update-browserslist-db": "^1.1.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
+ "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
+ },
+ "node_modules/bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cache-manager": {
+ "version": "2.11.1",
+ "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz",
+ "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==",
+ "license": "MIT",
+ "dependencies": {
+ "async": "1.5.2",
+ "lodash.clonedeep": "4.5.0",
+ "lru-cache": "4.0.0"
+ }
+ },
+ "node_modules/cache-manager/node_modules/async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "license": "MIT"
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "license": "MIT",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/camelize-ts": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelize-ts/-/camelize-ts-3.0.0.tgz",
+ "integrity": "sha512-cgRwKKavoDKLTjO4FQTs3dRBePZp/2Y9Xpud0FhuCOTE86M2cniKN4CCXgRnsyXNMmQMifVHcv6SPaMtTx6ofQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001743",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz",
+ "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/capture-stack-trace": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz",
+ "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chance": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.13.tgz",
+ "integrity": "sha512-V6lQCljcLznE7tUYUM9EOAnnKXbctE6j/rdQkYOHIWbfGQbrzTsAXNW9CdU5XCo4ArXQCj/rb6HgxPlmGJcaUg==",
+ "license": "MIT"
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "license": "MIT"
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "license": "MIT"
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/code-block-writer": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz",
+ "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
+ "license": "MIT"
+ },
+ "node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-convert/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/colorspace": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
+ "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
+ "license": "MIT",
+ "dependencies": {
+ "color": "^3.1.3",
+ "text-hex": "1.0.x"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "license": "ISC"
+ },
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/compress-commons": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
+ "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==",
+ "license": "MIT",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "crc32-stream": "^6.0.0",
+ "is-stream": "^2.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/compress-commons/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz",
+ "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/configstore": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/configstore?sponsor=1"
+ }
+ },
+ "node_modules/configstore/node_modules/dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/configstore/node_modules/xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-engine": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/content-engine/-/content-engine-0.0.29.tgz",
+ "integrity": "sha512-UFkz8Si+vUTDBm1h/Gir2g+13YNk8RiWSplpuDbQIg7ksLT/aQLAiuCmMC0ZyV6i1f3B6KZ5aP1OSFxkkHsn7w==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/core": "^7.20.12",
+ "@babel/parser": "^7.20.13",
+ "@babel/traverse": "^7.20.13",
+ "@babel/types": "^7.20.7",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "address": "1.2.2",
+ "axios": "^0.21.1",
+ "better-opn": "^2.1.1",
+ "bluebird": "^3.7.2",
+ "cache-manager": "^2.11.1",
+ "chalk": "^4.1.2",
+ "ci-info": "^2.0.0",
+ "common-tags": "^1.8.2",
+ "compression": "^1.7.4",
+ "content-engine-graphiql-explorer": "^0.0.1",
+ "convert-hrtime": "^3.0.0",
+ "cors": "^2.8.5",
+ "detect-port": "^1.5.1",
+ "devcert": "^1.2.2",
+ "enhanced-resolve": "^5.12.0",
+ "execa": "^5.1.1",
+ "express": "^4.18.2",
+ "fastest-levenshtein": "^1.0.16",
+ "fastq": "^1.15.0",
+ "file-type": "16.5.4",
+ "fs-exists-cached": "1.0.0",
+ "fs-extra": "^11.1.1",
+ "glob": "^7.2.3",
+ "globby": "^11.1.0",
+ "got": "^11.8.6",
+ "graphql": "^16.6.0",
+ "graphql-compose": "^9.0.10",
+ "graphql-http": "^1.13.0",
+ "hash-wasm": "~4.9.0",
+ "hasha": "^5.2.2",
+ "import-from": "~4.0.0",
+ "invariant": "^2.2.4",
+ "is-relative": "^1.0.0",
+ "is-relative-url": "^3.0.0",
+ "joi": "^17.7.0",
+ "lmdb": "2.5.3",
+ "lodash": "^4.17.21",
+ "meant": "^1.0.3",
+ "memoizee": "^0.4.15",
+ "micromatch": "^4.0.5",
+ "mime": "^3.0.0",
+ "moment": "^2.29.4",
+ "node-html-parser": "^5.4.2",
+ "node-object-hash": "~2.3.10",
+ "normalize-path": "^3.0.0",
+ "opentracing": "^0.14.7",
+ "p-defer": "^3.0.0",
+ "pretty-error": "^2.1.2",
+ "progress": "^2.0.3",
+ "prompts": "^2.4.2",
+ "redux": "4.2.1",
+ "redux-thunk": "^2.4.2",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.8",
+ "signal-exit": "^3.0.7",
+ "stack-trace": "^0.0.10",
+ "string-similarity": "^1.2.2",
+ "strip-ansi": "^6.0.1",
+ "type-of": "^2.0.1",
+ "uuid": "^8.3.2",
+ "yurnalist": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "optionalDependencies": {
+ "gatsby-sharp": "^1.9.0-next.1"
+ }
+ },
+ "node_modules/content-engine-graphiql-explorer": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/content-engine-graphiql-explorer/-/content-engine-graphiql-explorer-0.0.1.tgz",
+ "integrity": "sha512-ZeWPqWrwkap3VyyYGRyNLiIzslgNAgDVd1LTX5Jv3IxpL3FPaJhV05/8LK7ONdp9LJpWWhnmdQOU8iq9NKurXA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/content-engine/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/content-engine/node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/content-engine/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/content-engine/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/content-engine/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/content-engine/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/content-engine/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/content-engine/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/content-engine/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/content-engine/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/content-engine/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/content-engine/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/content-engine/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",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/content-engine/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/content-security-policy-buildhooks": {
+ "version": "0.0.0-id2r3",
+ "resolved": "https://d2bc42d4-d04c-4015-9647-53075b3bd3db.netlify.app/packages/buildhooks.tgz",
+ "integrity": "sha512-Kjs/BRiGdTHeJ1Djl5jI5S5pdDwXW6EWWnFsBMHVDNVLyieIuwgA5Pp5kpSfBS8RfEtbPUd0GOyx8AvImhCydQ==",
+ "dependencies": {
+ "@netlify/sdk": "3.0.0",
+ "outdent": "^0.8.0",
+ "zod": "^3.23.8"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/contentful": {
+ "version": "9.3.7",
+ "resolved": "https://registry.npmjs.org/contentful/-/contentful-9.3.7.tgz",
+ "integrity": "sha512-Jl33LEUXdiu1WD6tIDE5/oRYiSdqBbnzLJWDgXb4htgxbnsaNXvDP58ny7BrVT02M2Ii8TfCCfsH5cnfiV5f1A==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@contentful/rich-text-types": "^16.0.2",
+ "axios": "^1.7.4",
+ "contentful-resolve-response": "^1.3.12",
+ "contentful-sdk-core": "^8.3.1",
+ "fast-copy": "^2.1.7",
+ "json-stringify-safe": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/contentful-management": {
+ "version": "7.54.2",
+ "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-7.54.2.tgz",
+ "integrity": "sha512-up7a31QsVM3ADXm6CrLGp9u/AVHO/yIDJGyS9Ztesa/xlxJgGmrEMTqUevauT1Y/5vC54gBM5S8in1zcP7atqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-patch": "0.0.30",
+ "axios": "^0.21.4",
+ "contentful-sdk-core": "^6.10.4",
+ "fast-copy": "^2.1.0",
+ "lodash.isplainobject": "^4.0.6",
+ "type-fest": "^2.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/contentful-management/node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/contentful-management/node_modules/contentful-sdk-core": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.11.0.tgz",
+ "integrity": "sha512-ukKxiiHdCa/izTQbA3/VUPMQB2PZW5D2KYjV9WQVOc8QjmDhu1wpEDkYxYjOrUDgT5tM7xw6umpwlifxoYe9kQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-copy": "^2.1.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "p-throttle": "^4.1.1",
+ "qs": "^6.9.4"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/contentful-management/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/contentful-resolve-response": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/contentful-resolve-response/-/contentful-resolve-response-1.9.3.tgz",
+ "integrity": "sha512-1mPTz7bJLZsLdWAOEyjoVKys/eTXa7o3aV3EYLH7sqqF8V1fnRHlJqlDoxGZFsPxQPBYag+V89B1E/HYE0ENnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-copy": "^2.1.7"
+ },
+ "engines": {
+ "node": ">=4.7.2"
+ }
+ },
+ "node_modules/contentful-sdk-core": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-8.3.2.tgz",
+ "integrity": "sha512-L2LNWRXb1/5RLpLemCoP2Lzz6211xyE63GXh2nVXekvM4Dnswo+9N2D6JmWTne9zq89Izo88vOGAzzIAxb4Ukw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-copy": "^2.1.7",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "p-throttle": "^4.1.1",
+ "qs": "^6.11.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/contentful/node_modules/@contentful/rich-text-types": {
+ "version": "16.8.5",
+ "resolved": "https://registry.npmjs.org/@contentful/rich-text-types/-/rich-text-types-16.8.5.tgz",
+ "integrity": "sha512-q18RJuJCOuYveGiCIjE5xLCQc5lZ3L2Qgxrlg/H2YEobDFqdtmklazRi1XwEWaK3tMg6yVXBzKKkQfLB4qW14A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/convert-hrtime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz",
+ "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
+ },
+ "node_modules/copy-file": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/copy-file/-/copy-file-11.1.0.tgz",
+ "integrity": "sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.11",
+ "p-event": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/crc32-stream": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz",
+ "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==",
+ "license": "MIT",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==",
+ "license": "MIT",
+ "dependencies": {
+ "capture-stack-trace": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cron-parser": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz",
+ "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "luxon": "^3.2.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/cross-inspect": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz",
+ "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+ "license": "MIT"
+ },
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+ "license": "MIT"
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "license": "MIT",
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "license": "MIT"
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "license": "ISC",
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+ "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/data-urls/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/data-urls/node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/data-urls/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/data-urls/node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dataloader": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz",
+ "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==",
+ "license": "MIT"
+ },
+ "node_modules/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/decache": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz",
+ "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==",
+ "license": "MIT",
+ "dependencies": {
+ "callsite": "^1.0.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "license": "MIT"
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
+ "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "license": "MIT",
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/default-browser/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/default-browser/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/npm-run-path": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
+ "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
+ "license": "ISC"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.0.tgz",
+ "integrity": "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-port": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz",
+ "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==",
+ "license": "MIT",
+ "dependencies": {
+ "address": "^1.0.1",
+ "debug": "4"
+ },
+ "bin": {
+ "detect": "bin/detect-port.js",
+ "detect-port": "bin/detect-port.js"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/detect-port/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/detect-port/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/detective-amd": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-6.0.1.tgz",
+ "integrity": "sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-module-types": "^6.0.1",
+ "escodegen": "^2.1.0",
+ "get-amd-module-type": "^6.0.1",
+ "node-source-walk": "^7.0.1"
+ },
+ "bin": {
+ "detective-amd": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-cjs": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-6.0.1.tgz",
+ "integrity": "sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-module-types": "^6.0.1",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-es6": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-5.0.1.tgz",
+ "integrity": "sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew==",
+ "license": "MIT",
+ "dependencies": {
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-postcss": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-7.0.1.tgz",
+ "integrity": "sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-url": "^1.2.4",
+ "postcss-values-parser": "^6.0.2"
+ },
+ "engines": {
+ "node": "^14.0.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.47"
+ }
+ },
+ "node_modules/detective-sass": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-6.0.1.tgz",
+ "integrity": "sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw==",
+ "license": "MIT",
+ "dependencies": {
+ "gonzales-pe": "^4.3.0",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-scss": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-5.0.1.tgz",
+ "integrity": "sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg==",
+ "license": "MIT",
+ "dependencies": {
+ "gonzales-pe": "^4.3.0",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-stylus": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-5.0.1.tgz",
+ "integrity": "sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/detective-typescript": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-14.0.0.tgz",
+ "integrity": "sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw==",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "^8.23.0",
+ "ast-module-types": "^6.0.1",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "typescript": "^5.4.4"
+ }
+ },
+ "node_modules/detective-vue2": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/detective-vue2/-/detective-vue2-2.2.0.tgz",
+ "integrity": "sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA==",
+ "license": "MIT",
+ "dependencies": {
+ "@dependents/detective-less": "^5.0.1",
+ "@vue/compiler-sfc": "^3.5.13",
+ "detective-es6": "^5.0.1",
+ "detective-sass": "^6.0.1",
+ "detective-scss": "^5.0.1",
+ "detective-stylus": "^5.0.1",
+ "detective-typescript": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "typescript": "^5.4.4"
+ }
+ },
+ "node_modules/dettle": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/dettle/-/dettle-1.0.5.tgz",
+ "integrity": "sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==",
+ "license": "MIT"
+ },
+ "node_modules/devcert": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/devcert/-/devcert-1.2.2.tgz",
+ "integrity": "sha512-UsLqvtJGPiGwsIZnJINUnFYaWgK7CroreGRndWHZkRD58tPFr3pVbbSyHR8lbh41+azR4jKvuNZ+eCoBZGA5kA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/configstore": "^2.1.1",
+ "@types/debug": "^0.0.30",
+ "@types/get-port": "^3.2.0",
+ "@types/glob": "^5.0.34",
+ "@types/lodash": "^4.14.92",
+ "@types/mkdirp": "^0.5.2",
+ "@types/node": "^8.5.7",
+ "@types/rimraf": "^2.0.2",
+ "@types/tmp": "^0.0.33",
+ "application-config-path": "^0.1.0",
+ "command-exists": "^1.2.4",
+ "debug": "^3.1.0",
+ "eol": "^0.9.1",
+ "get-port": "^3.2.0",
+ "glob": "^7.1.2",
+ "is-valid-domain": "^0.1.6",
+ "lodash": "^4.17.4",
+ "mkdirp": "^0.5.1",
+ "password-prompt": "^1.0.4",
+ "rimraf": "^2.6.2",
+ "sudo-prompt": "^8.2.0",
+ "tmp": "^0.0.33",
+ "tslib": "^1.10.0"
+ }
+ },
+ "node_modules/devcert/node_modules/@types/configstore": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz",
+ "integrity": "sha512-YY+hm3afkDHeSM2rsFXxeZtu0garnusBWNG1+7MknmDWQHqcH2w21/xOU9arJUi8ch4qyFklidANLCu3ihhVwQ==",
+ "license": "MIT"
+ },
+ "node_modules/devcert/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/devcert/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/devcert/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/devcert/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/devcert/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/devcert/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "license": "MIT",
+ "dependencies": {
+ "utila": "~0.4"
+ }
+ },
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domexception": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+ "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "license": "MIT",
+ "dependencies": {
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz",
+ "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^4.18.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/downshift": {
+ "version": "9.0.10",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-9.0.10.tgz",
+ "integrity": "sha512-TP/iqV6bBok6eGD5tZ8boM8Xt7/+DZvnVNr8cNIhbAm2oUBd79Tudiccs2hbcV9p7xAgS/ozE7Hxy3a9QqS6Mw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.24.5",
+ "compute-scroll-into-view": "^3.1.0",
+ "prop-types": "^15.8.1",
+ "react-is": "18.2.0",
+ "tslib": "^2.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.12.0"
+ }
+ },
+ "node_modules/dset": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/duplexify": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "end-of-stream": "^1.4.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1",
+ "stream-shift": "^1.0.2"
+ }
+ },
+ "node_modules/duplexify/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.221",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.221.tgz",
+ "integrity": "sha512-/1hFJ39wkW01ogqSyYoA4goOXOtMRy6B+yvA1u42nnsEGtHzIzmk93aPISumVQeblj47JUHLC9coCjUxb1EvtQ==",
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex-xs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
+ "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
+ "license": "MIT"
+ },
+ "node_modules/empathic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
+ "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/enabled": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
+ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/engine.io": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
+ "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.7.2",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/@types/node": {
+ "version": "24.5.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz",
+ "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.12.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/engine.io/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
+ "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/ent": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz",
+ "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "punycode": "^1.4.1",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eol": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz",
+ "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==",
+ "license": "MIT"
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "license": "MIT"
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "hasInstallScript": true,
+ "license": "ISC",
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz",
+ "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.10",
+ "@esbuild/android-arm": "0.25.10",
+ "@esbuild/android-arm64": "0.25.10",
+ "@esbuild/android-x64": "0.25.10",
+ "@esbuild/darwin-arm64": "0.25.10",
+ "@esbuild/darwin-x64": "0.25.10",
+ "@esbuild/freebsd-arm64": "0.25.10",
+ "@esbuild/freebsd-x64": "0.25.10",
+ "@esbuild/linux-arm": "0.25.10",
+ "@esbuild/linux-arm64": "0.25.10",
+ "@esbuild/linux-ia32": "0.25.10",
+ "@esbuild/linux-loong64": "0.25.10",
+ "@esbuild/linux-mips64el": "0.25.10",
+ "@esbuild/linux-ppc64": "0.25.10",
+ "@esbuild/linux-riscv64": "0.25.10",
+ "@esbuild/linux-s390x": "0.25.10",
+ "@esbuild/linux-x64": "0.25.10",
+ "@esbuild/netbsd-arm64": "0.25.10",
+ "@esbuild/netbsd-x64": "0.25.10",
+ "@esbuild/openbsd-arm64": "0.25.10",
+ "@esbuild/openbsd-x64": "0.25.10",
+ "@esbuild/openharmony-arm64": "0.25.10",
+ "@esbuild/sunos-x64": "0.25.10",
+ "@esbuild/win32-arm64": "0.25.10",
+ "@esbuild/win32-ia32": "0.25.10",
+ "@esbuild/win32-x64": "0.25.10"
+ }
+ },
+ "node_modules/esbuild-plugin-copy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz",
+ "integrity": "sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "fs-extra": "^10.0.1",
+ "globby": "^11.0.3"
+ },
+ "peerDependencies": {
+ "esbuild": ">= 0.14.0"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/esbuild-plugin-copy/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esm": {
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/event-iterator": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz",
+ "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==",
+ "license": "MIT"
+ },
+ "node_modules/event-source-polyfill": {
+ "version": "1.0.31",
+ "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz",
+ "integrity": "sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA==",
+ "license": "MIT"
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/eventsource": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
+ "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
+ "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "license": "(MIT OR WTFPL)",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "license": "ISC",
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/extract-zip/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/extract-zip/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/fast-copy": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.7.tgz",
+ "integrity": "sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA==",
+ "license": "MIT"
+ },
+ "node_modules/fast-equals": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz",
+ "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==",
+ "license": "MIT"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "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.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-redact": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
+ "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-text-encoding": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
+ "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fecha": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
+ "license": "MIT"
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "16.5.4",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
+ "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.0",
+ "strtok3": "^6.2.4",
+ "token-types": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/filter-obj": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-6.1.0.tgz",
+ "integrity": "sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "license": "MIT"
+ },
+ "node_modules/find-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
+ "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.2.0",
+ "path-exists": "^5.0.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up-simple": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
+ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fireproof-buildhooks": {
+ "version": "0.0.0-yly59",
+ "resolved": "https://1c1df094-75d2-4ed1-b918-1926a3953680.netlify.app/packages/buildhooks.tgz",
+ "integrity": "sha512-2BBHMzdEOB5Ma4BKok69eXul4u92LAnLKKXIv6DEHRmytK5qmJtCGQLzODkhNpPfTZiGDlFdxabc7OgxHv1Wbw==",
+ "dependencies": {
+ "@netlify/blobs": "^8.0.1",
+ "@netlify/functions": "^2.8.2",
+ "@netlify/sdk": "2.5.1",
+ "@octokit/core": "^3.6.0",
+ "@tanstack/react-query": "^5.59.0",
+ "@trpc/client": "11.0.0-rc.477",
+ "@trpc/react-query": "11.0.0-rc.477",
+ "@trpc/server": "11.0.0-rc.477",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "zod": "^3.23.8"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/android-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/android-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/android-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/darwin-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-loong64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-s390x": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/linux-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/sunos-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/win32-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/win32-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@esbuild/win32-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/blobs": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.2.0.tgz",
+ "integrity": "sha512-9djLZHBKsoKk8XCgwWSEPK9QnT8qqxEQGuYh48gFIcNLvpBKkLnHbDZuyUxmNemCfDz7h0HnMXgSPnnUVgARhg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/content-engine": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@netlify/content-engine/-/content-engine-1.2.2.tgz",
+ "integrity": "sha512-hKkK0lJtJ106ZmRmvf+bkl283pwobiVryolUPT8mIDildrgf7ba1ku8sGPqRFaoYH0MB6eIQW6sFwlajpOwG8w==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/types": "^7.20.7",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "@netlify/content-engine-graphiql-explorer": "1.1.0",
+ "@pnpm/exec": "^2.0.0",
+ "address": "1.2.2",
+ "axios": "^0.21.1",
+ "better-opn": "^2.1.1",
+ "cache-manager": "^2.11.1",
+ "chalk": "^4.1.2",
+ "ci-info": "^2.0.0",
+ "common-tags": "^1.8.2",
+ "compression": "^1.7.4",
+ "convert-hrtime": "^3.0.0",
+ "cors": "^2.8.5",
+ "detect-port": "^1.5.1",
+ "devcert": "^1.2.2",
+ "enhanced-resolve": "^5.12.0",
+ "execa": "^5.1.1",
+ "express": "^4.18.2",
+ "fastest-levenshtein": "^1.0.16",
+ "fastq": "^1.15.0",
+ "file-type": "16.5.4",
+ "fs-exists-cached": "1.0.0",
+ "fs-extra": "^11.1.1",
+ "glob": "^7.2.3",
+ "globby": "^11.1.0",
+ "got": "^11.8.6",
+ "graphql": "^16.8.1",
+ "graphql-compose": "^9.0.10",
+ "graphql-http": "^1.13.0",
+ "hash-wasm": "~4.9.0",
+ "hasha": "^5.2.2",
+ "import-from": "~4.0.0",
+ "invariant": "^2.2.4",
+ "is-relative": "^1.0.0",
+ "is-relative-url": "^3.0.0",
+ "joi": "^17.7.0",
+ "lmdb": "2.5.3",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.difference": "^4.5.0",
+ "lodash.differencewith": "^4.5.0",
+ "lodash.foreach": "^4.5.0",
+ "lodash.get": "^4.4.2",
+ "lodash.groupby": "^4.6.0",
+ "lodash.intersection": "^4.4.0",
+ "lodash.intersectionwith": "^4.4.0",
+ "lodash.isempty": "^4.4.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.merge": "^4.6.2",
+ "lodash.omit": "^4.5.0",
+ "lodash.orderby": "^4.6.0",
+ "lodash.pick": "^4.4.0",
+ "lodash.pickby": "^4.6.0",
+ "lodash.set": "^4.3.2",
+ "lodash.sortby": "^4.7.0",
+ "lodash.topairs": "^4.3.0",
+ "lodash.uniq": "^4.5.0",
+ "lodash.uniqwith": "^4.5.0",
+ "meant": "^1.0.3",
+ "memoizee": "^0.4.15",
+ "micromatch": "^4.0.5",
+ "mime": "^3.0.0",
+ "minizlib": "^3.0.1",
+ "moment": "^2.29.4",
+ "node-html-parser": "^5.4.2",
+ "node-object-hash": "~2.3.10",
+ "normalize-path": "^3.0.0",
+ "opentracing": "^0.14.7",
+ "p-defer": "^3.0.0",
+ "pkg-dir": "^5.0.0",
+ "pretty-error": "^2.1.2",
+ "progress": "^2.0.3",
+ "prompts": "^2.4.2",
+ "redux": "4.2.1",
+ "redux-thunk": "^2.4.2",
+ "semver": "^7.3.8",
+ "signal-exit": "^3.0.7",
+ "stack-trace": "^0.0.10",
+ "stream-json": "^1.7.4",
+ "string-similarity": "^1.2.2",
+ "strip-ansi": "^6.0.1",
+ "type-of": "^2.0.1",
+ "uuid": "^8.3.2",
+ "yurnalist": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@google-cloud/storage": "^5.8.4"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/content-engine/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/content-engine/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/functions": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.8.2.tgz",
+ "integrity": "sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/serverless-functions-api": "1.26.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/netlify-design-tokens": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/netlify-design-tokens/-/netlify-design-tokens-6.0.0.tgz",
+ "integrity": "sha512-ej601PfCL1xRAvUyZNgJ3r+LdaSI3i8w7EjfGkwjYlM8lpKzP9bZyLDmhhfJes0luq4jXDDPBIRs0aky/4seBA==",
+ "license": "ISC"
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/sdk": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk/-/sdk-2.5.1.tgz",
+ "integrity": "sha512-hybmcoC5GunKLNo5mt6lLIKmXj9PZcyLc+3p3s8hbvfcNohE0gqXFAj2qrrhw1MOoEBbE+JUY1OGTB5gRdhRRw==",
+ "license": "ISC",
+ "dependencies": {
+ "@commander-js/extra-typings": "^12.1.0",
+ "@graphql-tools/stitch": "^9.0.3",
+ "@graphql-tools/utils": "^10.1.2",
+ "@graphql-tools/wrap": "^10.0.1",
+ "@netlify/content-engine": "1.2.2",
+ "@netlify/functions": "^2.8.2",
+ "@netlify/integrations": "^0.6.0",
+ "@netlify/sdk--extension-api-client": "2.3.0",
+ "@netlify/sdk--ui-core": "1.4.0",
+ "@netlify/sdk--ui-functions": "1.2.0",
+ "@netlify/sdk--ui-react": "1.7.0",
+ "@sindresorhus/slugify": "^2.2.1",
+ "@stackbit/dev": "^1.0.27",
+ "@types/configstore": "^6.0.2",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.2.0",
+ "commander": "^12.1.0",
+ "configstore": "6.0.0",
+ "crypto-js": "^4.2.0",
+ "env-paths": "^3.0.0",
+ "esbuild": "^0.20.0",
+ "esbuild-plugin-copy": "^2.1.1",
+ "execa": "^9.3.0",
+ "fs-extra": "^11.1.0",
+ "graphql-scalars": "^1.22.5",
+ "js-xxhash": "^3.0.1",
+ "js-yaml": "^4.1.0",
+ "jsonwebtoken": "^9.0.2",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.kebabcase": "^4.1.1",
+ "open": "^9.1.0",
+ "outdent": "^0.8.0",
+ "safe-stable-stringify": "^2.4.3",
+ "semver": "^7.3.8",
+ "string-argv": "^0.3.2",
+ "toml": "^3.0.0",
+ "typescript": "^5.4.3",
+ "wretch": "^2.7.0",
+ "zod": "^3.22.4",
+ "zod-metadata": "^1.1.0",
+ "zod-to-json-schema": "^3.21.4",
+ "zod-validation-error": "^2.0.0"
+ },
+ "bin": {
+ "netlify-extension": "bin.js",
+ "netlify-integration": "bin-deprecated.js",
+ "ntli": "bin.js"
+ },
+ "engines": {
+ "node": ">= 18.19.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/sdk--extension-api-client": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--extension-api-client/-/sdk--extension-api-client-2.3.0.tgz",
+ "integrity": "sha512-lJK8I5Q1T035I/onWeU8OUeB08+FGVKeGrVkJHFjQ+oxBmxUriE0ldksLdPAK1kfEFybrWrkRBkF1rsLs81ePA==",
+ "license": "ISC",
+ "dependencies": {
+ "wretch": "^2.7.0",
+ "zod": "^3.22.4"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/sdk--ui-core": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-core/-/sdk--ui-core-1.4.0.tgz",
+ "integrity": "sha512-3hzICh7hH+/l2kIj7E7o/PyKfPJVqrNAZQTwPW2PPwk0FuokGKgSEIuVQEP3+2XYbhQKZD0wxeVPJizCPnNiTA==",
+ "license": "ISC",
+ "dependencies": {
+ "event-iterator": "^2.0.0",
+ "iter-tools-es": "^7.5.3",
+ "zod": "^3.22.4"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/sdk--ui-react": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-react/-/sdk--ui-react-1.7.0.tgz",
+ "integrity": "sha512-hDkAxI98goxS5IA7feF9HpvPmkGDV92gxcH9dwbetUKHFPKIa1hw5D9j4S2jUie80/e8eNvMFk6rpzB8uz8L3Q==",
+ "license": "ISC",
+ "dependencies": {
+ "@hookform/resolvers": "^3.6.0",
+ "@netlify/netlify-design-tokens": "^6.0.0",
+ "@netlify/sdk--ui-core": "1.4.0",
+ "@netlify/tailwind-config": "^2.0.0",
+ "@netlify/ui": "0.0.20",
+ "@react-hook/resize-observer": "^2.0.1",
+ "hast-util-to-jsx-runtime": "^2.3.0",
+ "react-hook-form": "^7.52.0",
+ "react-select": "^5.8.0",
+ "shiki": "^1.18.0",
+ "zod": "^3.23.8"
+ },
+ "peerDependencies": {
+ "autoprefixer": "^10.4.19",
+ "postcss": "^8.4.38",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "tailwindcss": "^3.4.3"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/sdk/node_modules/@netlify/sdk--ui-functions": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@netlify/sdk--ui-functions/-/sdk--ui-functions-1.2.0.tgz",
+ "integrity": "sha512-HoOnBCxEuXvgHJ9sdkVAAybuZHLi3Ru7XEFYtxR7IYC9jvLZYpQuYiINMrGgiVM2LLTI29jt01daiMdMj7zeDg==",
+ "license": "ISC",
+ "dependencies": {
+ "@netlify/functions": "^2.8.1",
+ "@netlify/sdk--extension-api-client": "2.3.0",
+ "zod": "^3.23.8"
+ },
+ "peerDependencies": {
+ "@trpc/server": ">= 11 || >= 11.0.0-rc.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/serverless-functions-api": {
+ "version": "1.26.1",
+ "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.26.1.tgz",
+ "integrity": "sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/node-cookies": "^0.1.0",
+ "urlpattern-polyfill": "8.0.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/@netlify/ui": {
+ "version": "0.0.20",
+ "resolved": "https://registry.npmjs.org/@netlify/ui/-/ui-0.0.20.tgz",
+ "integrity": "sha512-Z66gmuwEY+JkpEI4ICbzrqnDETYi8A+uKk0pkswlmzbFgVmmZ2GaST13oMzNcrLx5+nTyCqf52o7YaJhRchneg==",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/netlify-design-tokens": "^6.0.0",
+ "@netlify/tailwind-config": "^2.0.0",
+ "@tippyjs/react": "^4.2.6",
+ "clsx": "^2.1.0",
+ "downshift": "^9.0.0",
+ "history": "^4.7.2",
+ "lodash": "^4.17.21",
+ "react-to-text": "2.0.1",
+ "tippy.js": "6.3.7"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/esbuild": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.2",
+ "@esbuild/android-arm": "0.20.2",
+ "@esbuild/android-arm64": "0.20.2",
+ "@esbuild/android-x64": "0.20.2",
+ "@esbuild/darwin-arm64": "0.20.2",
+ "@esbuild/darwin-x64": "0.20.2",
+ "@esbuild/freebsd-arm64": "0.20.2",
+ "@esbuild/freebsd-x64": "0.20.2",
+ "@esbuild/linux-arm": "0.20.2",
+ "@esbuild/linux-arm64": "0.20.2",
+ "@esbuild/linux-ia32": "0.20.2",
+ "@esbuild/linux-loong64": "0.20.2",
+ "@esbuild/linux-mips64el": "0.20.2",
+ "@esbuild/linux-ppc64": "0.20.2",
+ "@esbuild/linux-riscv64": "0.20.2",
+ "@esbuild/linux-s390x": "0.20.2",
+ "@esbuild/linux-x64": "0.20.2",
+ "@esbuild/netbsd-x64": "0.20.2",
+ "@esbuild/openbsd-x64": "0.20.2",
+ "@esbuild/sunos-x64": "0.20.2",
+ "@esbuild/win32-arm64": "0.20.2",
+ "@esbuild/win32-ia32": "0.20.2",
+ "@esbuild/win32-x64": "0.20.2"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fireproof-buildhooks/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/history": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+ "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.1.2",
+ "loose-envify": "^1.2.0",
+ "resolve-pathname": "^3.0.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0",
+ "value-equal": "^1.0.1"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fireproof-buildhooks/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "license": "ISC"
+ },
+ "node_modules/fn.name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
+ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
+ "license": "MIT"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-urlencoded": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
+ "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA==",
+ "license": "MIT"
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "node_modules/from2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/from2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/from2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/fs-exists-cached": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz",
+ "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==",
+ "license": "ISC"
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gatsby-sharp": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-1.15.0.tgz",
+ "integrity": "sha512-nl+dSQwXPmhkE0qcLVvkLdE8scQALYopuk25RkLCDfi1VTNz0g6wcZwkmbcNjlTCR4RkbvCt7MGgNC7CVH3Ddw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "sharp": "^0.32.6"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/gaxios": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz",
+ "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.7"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/gaxios/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/gaxios/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/gaxios/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/gaxios/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gaxios/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/gcp-metadata": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz",
+ "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "gaxios": "^4.0.0",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-amd-module-type": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz",
+ "integrity": "sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-module-types": "^6.0.1",
+ "node-source-walk": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-it": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/get-it/-/get-it-6.1.1.tgz",
+ "integrity": "sha512-2835L9lb4NAgjAbFOMMOm2XDSgj+lWmmCQv40A5rE7zZoIdM2+yk7Ie+sBD3T5lHW/Dw5IFFHyx16oQGpAo4hQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@sanity/timed-out": "^4.0.2",
+ "create-error-class": "^3.0.2",
+ "debug": "^2.6.8",
+ "decompress-response": "^6.0.0",
+ "follow-redirects": "^1.2.4",
+ "form-urlencoded": "^2.0.7",
+ "into-stream": "^3.1.0",
+ "is-plain-object": "^2.0.4",
+ "is-retry-allowed": "^1.1.0",
+ "is-stream": "^1.1.0",
+ "nano-pubsub": "^1.0.2",
+ "object-assign": "^4.1.1",
+ "parse-headers": "^2.0.4",
+ "progress-stream": "^2.0.0",
+ "same-origin": "^0.1.1",
+ "simple-concat": "^1.0.1",
+ "tunnel-agent": "^0.6.0",
+ "url-parse": "^1.1.9"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/get-it/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/get-it/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-random-values": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-random-values/-/get-random-values-1.2.2.tgz",
+ "integrity": "sha512-lMyPjQyl0cNNdDf2oR+IQ/fM3itDvpoHy45Ymo2r0L1EjazeSl13SfbKZs7KtZ/3MDCeueiaJiuOEfKqRTsSgA==",
+ "license": "MIT",
+ "dependencies": {
+ "global": "^4.4.0"
+ },
+ "engines": {
+ "node": "10 || 12 || >=14"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/git-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
+ "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-ssh": "^1.4.0",
+ "parse-url": "^8.1.0"
+ }
+ },
+ "node_modules/git-url-parse": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz",
+ "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==",
+ "license": "MIT",
+ "dependencies": {
+ "git-up": "^7.0.0"
+ }
+ },
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "license": "MIT",
+ "optional": true
+ },
+ "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==",
+ "license": "ISC",
+ "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/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "license": "MIT",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gonzales-pe": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
+ "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "gonzales": "bin/gonzales.js"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz",
+ "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "arrify": "^2.0.0",
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "fast-text-encoding": "^1.0.0",
+ "gaxios": "^4.0.0",
+ "gcp-metadata": "^4.2.0",
+ "gtoken": "^5.0.4",
+ "jws": "^4.0.0",
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/google-auth-library/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/google-auth-library/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/google-p12-pem": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz",
+ "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==",
+ "deprecated": "Package is no longer maintained",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "node-forge": "^1.3.1"
+ },
+ "bin": {
+ "gp12-pem": "build/src/bin/gp12-pem.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/graphql": {
+ "version": "16.11.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz",
+ "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/graphql-compose": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-9.1.0.tgz",
+ "integrity": "sha512-nFL2+oeF8IlKjXPzmFL9rlBhrHlJMKGC0JeuBfOkWLLNqAtlFV+M1YGuuORyx0+mbLsBl9XToKWBPPfCHL8HHA==",
+ "license": "MIT",
+ "dependencies": {
+ "graphql-type-json": "0.3.2"
+ },
+ "peerDependencies": {
+ "graphql": "^14.2.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/graphql-http": {
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.22.4.tgz",
+ "integrity": "sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==",
+ "license": "MIT",
+ "workspaces": [
+ "implementations/**/*"
+ ],
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "graphql": ">=0.11 <=16"
+ }
+ },
+ "node_modules/graphql-scalars": {
+ "version": "1.24.2",
+ "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.24.2.tgz",
+ "integrity": "sha512-FoZ11yxIauEnH0E5rCUkhDXHVn/A6BBfovJdimRZCQlFCl+h7aVvarKmI15zG4VtQunmCDdqdtNs6ixThy3uAg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/graphql-type-json": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz",
+ "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "graphql": ">=0.8.0"
+ }
+ },
+ "node_modules/gtoken": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz",
+ "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "gaxios": "^4.0.0",
+ "google-p12-pem": "^3.1.3",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-stream-validation": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz",
+ "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/hash-wasm": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz",
+ "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==",
+ "license": "MIT"
+ },
+ "node_modules/hasha": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
+ "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasha/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasha/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
+ "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+ "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-js": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/hosted-git-info/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==",
+ "license": "ISC"
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/htmlparser": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz",
+ "integrity": "sha512-zpK66ifkT0fauyFh2Mulrq4AqGTucxGtOhZ8OjkbSfcCpkqQEI8qRkY0tSQSJNAQ4HUZkgWaU4fK4EH6SVH9PQ==",
+ "engines": {
+ "node": ">=0.1.33"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz",
+ "integrity": "sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw==",
+ "license": "MIT",
+ "dependencies": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.1",
+ "lodash": "^4.17.14",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "license": "MIT",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/https-proxy-agent/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/humanize-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/humanize-list/-/humanize-list-1.0.1.tgz",
+ "integrity": "sha512-4+p3fCRF21oUqxhK0yZ6yaSP/H5/wZumc7q1fH99RkW7Q13aAxDeP78BKjoR+6y+kaHqKF/JWuQhsNuuI2NKtA==",
+ "license": "MIT"
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
+ "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==",
+ "license": "MIT",
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=16.x"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz",
+ "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/index-to-position": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz",
+ "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
+ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
+ "license": "MIT"
+ },
+ "node_modules/inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/inquirer/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inquirer/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/into-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
+ "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "from2": "^2.1.1",
+ "p-is-promise": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "license": "MIT",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+ "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-regex": {
+ "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==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-unc-path": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-relative-url": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz",
+ "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-absolute-url": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-retry-allowed": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+ "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-ssh": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
+ "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==",
+ "license": "MIT",
+ "dependencies": {
+ "protocols": "^2.0.1"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
+ "node_modules/is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "license": "MIT",
+ "dependencies": {
+ "unc-path-regex": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "license": "MIT"
+ },
+ "node_modules/is-url-superb": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz",
+ "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-valid-domain": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.1.6.tgz",
+ "integrity": "sha512-ZKtq737eFkZr71At8NxOFcP9O1K89gW3DkdrGMpp1upr/ueWjj+Weh4l9AI4rN0Gt8W2M1w7jrG2b/Yv83Ljpg==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ }
+ },
+ "node_modules/is-valid-domain/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-wsl/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/iter-tools-es": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/iter-tools-es/-/iter-tools-es-7.5.4.tgz",
+ "integrity": "sha512-Of+EJp3cTuxdYmt/bidzODOuhH/MbHBJf9nK21dqlO6hyPjKYzhw0lnZlDYfOzZ2baL5NwnsICC6mccV+CNRPg==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.7",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/joi": {
+ "version": "17.13.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
+ "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.3.0",
+ "@hapi/topo": "^5.1.0",
+ "@sideway/address": "^4.1.5",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/js-image-generator": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/js-image-generator/-/js-image-generator-1.0.4.tgz",
+ "integrity": "sha512-ckb7kyVojGAnArouVR+5lBIuwU1fcrn7E/YYSd0FK7oIngAkMmRvHASLro9Zt5SQdWToaI66NybG+OGxPw/HlQ==",
+ "license": "ISC",
+ "dependencies": {
+ "jpeg-js": "^0.4.2"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-xxhash": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/js-xxhash/-/js-xxhash-3.0.1.tgz",
+ "integrity": "sha512-Y2NSC77RIxJrvi2NoXjMi2LYsVDTlVqBoQRi8PXQg4PtP29wdtIOhsp8Ujw4EjEkBFheCPx8bMOmI9zoxx/3jQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "20.0.3",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
+ "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "acorn": "^8.8.1",
+ "acorn-globals": "^7.0.0",
+ "cssom": "^0.5.0",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^3.0.2",
+ "decimal.js": "^10.4.2",
+ "domexception": "^4.0.0",
+ "escodegen": "^2.0.0",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^3.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.1",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.2",
+ "parse5": "^7.1.1",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.1.2",
+ "w3c-xmlserializer": "^4.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^11.0.0",
+ "ws": "^8.11.0",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/jsdom/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/jsdom/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/jsdom/node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/jsdom/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsdom/node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jsdom/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jsdom/node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "license": "MIT"
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "license": "ISC"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jwa": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz",
+ "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal-constant-time": "^1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "license": "MIT",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/junk": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz",
+ "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "^1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwt-decode": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+ "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kuler": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
+ "license": "MIT"
+ },
+ "node_modules/lambda-local": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/lambda-local/-/lambda-local-2.2.0.tgz",
+ "integrity": "sha512-bPcgpIXbHnVGfI/omZIlgucDqlf4LrsunwoKue5JdZeGybt8L6KyJz2Zu19ffuZwIwLj2NAI2ZyaqNT6/cetcg==",
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^10.0.1",
+ "dotenv": "^16.3.1",
+ "winston": "^3.10.0"
+ },
+ "bin": {
+ "lambda-local": "build/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lambda-local/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/lmdb": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.3.tgz",
+ "integrity": "sha512-iBA0cb13CobBSoGJLfZgnrykLlfJipDAnvtf+YwIqqzBEsTeQYsXrHaSBkaHd5wCWeabwrNvhjZoFMUrlo+eLw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "msgpackr": "^1.5.4",
+ "node-addon-api": "^4.3.0",
+ "node-gyp-build-optional-packages": "5.0.3",
+ "ordered-binary": "^1.2.4",
+ "weak-lru-cache": "^1.2.2"
+ },
+ "optionalDependencies": {
+ "@lmdb/lmdb-darwin-arm64": "2.5.3",
+ "@lmdb/lmdb-darwin-x64": "2.5.3",
+ "@lmdb/lmdb-linux-arm": "2.5.3",
+ "@lmdb/lmdb-linux-arm64": "2.5.3",
+ "@lmdb/lmdb-linux-x64": "2.5.3",
+ "@lmdb/lmdb-win32-x64": "2.5.3"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.differencewith": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz",
+ "integrity": "sha512-/8JFjydAS+4bQuo3CpLMBv7WxGFyk7/etOAsrQUCu0a9QVDemxv0YQ0rFyeZvqlUD314SERfNlgnlqqHmaQ0Cg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.every": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz",
+ "integrity": "sha512-isF82d+65/sNvQ3aaQAW7LLHnnTxSN/2fm4rhYyuufLzA4VtHz6y6S5vFwe6PQVr2xdqUOyxBbTNKDpnmeu50w==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
+ "license": "MIT"
+ },
+ "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==",
+ "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.",
+ "license": "MIT"
+ },
+ "node_modules/lodash.groupby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz",
+ "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.intersection": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz",
+ "integrity": "sha512-N+L0cCfnqMv6mxXtSPeKt+IavbOBBSiAEkKyLasZ8BVcP9YXQgxLO12oPR8OyURwKV8l5vJKiE1M8aS70heuMg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.intersectionwith": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.intersectionwith/-/lodash.intersectionwith-4.4.0.tgz",
+ "integrity": "sha512-C7XTc7vhofW4tEq5PnsM5hTgQ3qemR06ytO2NNXey3PuFb4D7u6sgmVqsf4VJG57BuSbhJeosueF37HvLJcGTA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isempty": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+ "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==",
+ "license": "MIT"
+ },
+ "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==",
+ "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.maxby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz",
+ "integrity": "sha512-QfTqQTwzmKxLy7VZlbx2M/ipWv8DCQ2F5BI/MRxLharOQ5V78yMSuB+JE+EuUM22txYfj09R2Q7hUlEYj7KdNg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.omit": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==",
+ "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.",
+ "license": "MIT"
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.orderby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
+ "integrity": "sha512-T0rZxKmghOOf5YPnn8EY5iLYeWCpZq8G41FfqoVHH5QDTAFaghJRmAdLiadEDq+ztgM2q5PjA+Z1fOwGrLgmtg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==",
+ "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.",
+ "license": "MIT"
+ },
+ "node_modules/lodash.pickby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
+ "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.snakecase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
+ "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.split": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.split/-/lodash.split-4.4.2.tgz",
+ "integrity": "sha512-kn1IDX0aHfg0FsnPIyxCHTamZXt3YK3aExRH1LW8YhzP6+sCldTm8+E4aIg+nSmM6R4eqdWGrXWtfYI961bwIw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.topairs": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.topairs/-/lodash.topairs-4.3.0.tgz",
+ "integrity": "sha512-qrRMbykBSEGdOgQLJJqVSdPWMD7Q+GJJ5jMRfQYb+LTLsw3tYVIabnCzRqTJb2WTo17PG5gNzXuFaZgYH/9SAQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniqwith": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz",
+ "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==",
+ "license": "MIT"
+ },
+ "node_modules/logform": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz",
+ "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@colors/colors": "1.6.0",
+ "@types/triple-beam": "^1.3.2",
+ "fecha": "^4.2.0",
+ "ms": "^2.1.1",
+ "safe-stable-stringify": "^2.3.1",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/logform/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz",
+ "integrity": "sha512-WKhDkjlLwzE8jAQdQlsxLUQTPXLCKX/4cJk6s5AlRtJkDBk0IKH5O51bVDH61K9N4bhbbyvLM6EiOuE8ovApPA==",
+ "license": "ISC",
+ "dependencies": {
+ "pseudomap": "^1.0.1",
+ "yallist": "^2.0.0"
+ }
+ },
+ "node_modules/lru-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
+ "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es5-ext": "~0.10.2"
+ }
+ },
+ "node_modules/luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.19",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
+ "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "license": "ISC"
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
+ "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/meant": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz",
+ "integrity": "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==",
+ "license": "MIT"
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
+ "license": "MIT"
+ },
+ "node_modules/memoizee": {
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
+ "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.2",
+ "es5-ext": "^0.10.64",
+ "es6-weak-map": "^2.0.3",
+ "event-emitter": "^0.3.5",
+ "is-promise": "^2.2.2",
+ "lru-queue": "^0.1.0",
+ "next-tick": "^1.1.0",
+ "timers-ext": "^0.1.7"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-options": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
+ "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/merge-options/node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micro-memoize": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.1.3.tgz",
+ "integrity": "sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==",
+ "license": "MIT"
+ },
+ "node_modules/micromark": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
+ "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark/node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/micromark/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/micromark/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/module-definition": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-6.0.1.tgz",
+ "integrity": "sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-module-types": "^6.0.1",
+ "node-source-walk": "^7.0.1"
+ },
+ "bin": {
+ "module-definition": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/moize": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz",
+ "integrity": "sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-equals": "^3.0.1",
+ "micro-memoize": "^4.1.2"
+ }
+ },
+ "node_modules/moment": {
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/msgpackr": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz",
+ "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "msgpackr-extract": "^3.0.2"
+ }
+ },
+ "node_modules/msgpackr-extract": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
+ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-gyp-build-optional-packages": "5.2.2"
+ },
+ "bin": {
+ "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
+ },
+ "optionalDependencies": {
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
+ }
+ },
+ "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.1"
+ },
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "license": "ISC"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nano-pubsub": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
+ "integrity": "sha512-HtPs1RbULM/z8wt3BbeeZlxVNiJbl+zQAwwrbc0KAq5NHaCG3MmffOVCpRhNTs+TK67MdN6aZ+5wzPtRZvME+w==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/napi-build-utils": {
+ "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==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neon-buildhooks": {
+ "version": "0.0.0-xcsgo",
+ "resolved": "https://37fb2d91-fc5f-402b-b52c-84240e7335fa.netlify.app/packages/buildhooks.tgz",
+ "integrity": "sha512-Esox3tcD4RcQp1tU7JzqSD+Io7u6cdqWnxEKbnfeCn6k4+szODHBVVgIA+SUKtWosfrb75HKnYKmjp0VwRwfug==",
+ "dependencies": {
+ "@netlify/sdk": "3.0.0",
+ "@trpc/server": "11.0.0-rc.477",
+ "date-fns": "^4.1.0",
+ "dotenv": "^16.4.7",
+ "graphql": "^16.10.0",
+ "picocolors": "^1.1.1",
+ "pino": "^9.7.0",
+ "uuid": "^11.1.0",
+ "zod": "^3.24.2"
+ }
+ },
+ "node_modules/neon-buildhooks/node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "license": "ISC"
+ },
+ "node_modules/node-abi": {
+ "version": "3.77.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz",
+ "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "license": "MIT"
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "license": "(BSD-3-Clause OR GPL-2.0)",
+ "peer": true,
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/node-gyp-build-optional-packages": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz",
+ "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==",
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
+ }
+ },
+ "node_modules/node-html-parser": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz",
+ "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^4.2.1",
+ "he": "1.2.0"
+ }
+ },
+ "node_modules/node-object-hash": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz",
+ "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.21",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz",
+ "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==",
+ "license": "MIT"
+ },
+ "node_modules/node-source-walk": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-7.0.1.tgz",
+ "integrity": "sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.26.7"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz",
+ "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.22",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
+ "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
+ "license": "MIT"
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-exit-leak-free": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/one-time": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+ "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+ "license": "MIT",
+ "dependencies": {
+ "fn.name": "1.x.x"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/oniguruma-to-es": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz",
+ "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex-xs": "^1.0.0",
+ "regex": "^5.1.1",
+ "regex-recursion": "^5.1.1"
+ }
+ },
+ "node_modules/open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/openapi-fetch": {
+ "version": "0.13.8",
+ "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.13.8.tgz",
+ "integrity": "sha512-yJ4QKRyNxE44baQ9mY5+r/kAzZ8yXMemtNAOFwOzRXJscdjSxxzWSNlyBAr+o5JjkUw9Lc3W7OIoca0cY3PYnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "openapi-typescript-helpers": "^0.0.15"
+ }
+ },
+ "node_modules/openapi-typescript-helpers": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmjs.org/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.15.tgz",
+ "integrity": "sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==",
+ "license": "MIT"
+ },
+ "node_modules/opentracing": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz",
+ "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/ordered-binary": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz",
+ "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==",
+ "license": "MIT"
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/outdent": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz",
+ "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==",
+ "license": "MIT"
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-defer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz",
+ "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-event": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz",
+ "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-timeout": "^6.1.2"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate/node_modules/yocto-queue": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
+ "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-4.1.1.tgz",
+ "integrity": "sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz",
+ "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-gitignore": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz",
+ "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz",
+ "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==",
+ "license": "MIT"
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-path": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz",
+ "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==",
+ "license": "MIT",
+ "dependencies": {
+ "protocols": "^2.0.0"
+ }
+ },
+ "node_modules/parse-url": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
+ "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-path": "^7.0.0"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "license": "MIT"
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/password-prompt": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz",
+ "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==",
+ "license": "0BSD",
+ "dependencies": {
+ "ansi-escapes": "^4.3.2",
+ "cross-spawn": "^7.0.3"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
+ },
+ "node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "BlueOak-1.0.0",
+ "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/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==",
+ "license": "ISC"
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/peek-readable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
+ "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pino": {
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-9.10.0.tgz",
+ "integrity": "sha512-VOFxoNnxICtxaN8S3E73pR66c5MTFC+rwRcNRyHV/bV/c90dXvJqMfjkeRFsGBDXmlUN3LccJQPqGIufnaJePA==",
+ "license": "MIT",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0",
+ "fast-redact": "^3.1.1",
+ "on-exit-leak-free": "^2.1.0",
+ "pino-abstract-transport": "^2.0.0",
+ "pino-std-serializers": "^7.0.0",
+ "process-warning": "^5.0.0",
+ "quick-format-unescaped": "^4.0.3",
+ "real-require": "^0.2.0",
+ "safe-stable-stringify": "^2.3.1",
+ "sonic-boom": "^4.0.1",
+ "thread-stream": "^3.0.0"
+ },
+ "bin": {
+ "pino": "bin.js"
+ }
+ },
+ "node_modules/pino-abstract-transport": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz",
+ "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==",
+ "license": "MIT",
+ "dependencies": {
+ "split2": "^4.0.0"
+ }
+ },
+ "node_modules/pino-std-serializers": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
+ "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
+ "license": "MIT"
+ },
+ "node_modules/pirates": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-import/node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
+ "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/yaml": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.1"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/postcss-values-parser": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz",
+ "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "color-name": "^1.1.4",
+ "is-url-superb": "^4.0.0",
+ "quote-unquote": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.9"
+ }
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^2.0.0",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/prebuild-install/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-fs": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/precinct": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/precinct/-/precinct-12.2.0.tgz",
+ "integrity": "sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@dependents/detective-less": "^5.0.1",
+ "commander": "^12.1.0",
+ "detective-amd": "^6.0.1",
+ "detective-cjs": "^6.0.1",
+ "detective-es6": "^5.0.1",
+ "detective-postcss": "^7.0.1",
+ "detective-sass": "^6.0.1",
+ "detective-scss": "^5.0.1",
+ "detective-stylus": "^5.0.1",
+ "detective-typescript": "^14.0.0",
+ "detective-vue2": "^2.2.0",
+ "module-definition": "^6.0.1",
+ "node-source-walk": "^7.0.1",
+ "postcss": "^8.5.1",
+ "typescript": "^5.7.3"
+ },
+ "bin": {
+ "precinct": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/pretty-error": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz",
+ "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.17.20",
+ "renderkid": "^2.0.4"
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
+ "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
+ },
+ "node_modules/process-warning": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
+ "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/progress-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
+ "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "speedometer": "~1.0.0",
+ "through2": "~2.0.3"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/prop-types/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/property-information": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+ "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/protocols": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz",
+ "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==",
+ "license": "MIT"
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "license": "ISC"
+ },
+ "node_modules/psl": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
+ "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/lupomontero"
+ }
+ },
+ "node_modules/psl/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/pumpify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
+ "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "duplexify": "^4.1.1",
+ "inherits": "^2.0.3",
+ "pump": "^3.0.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/quick-format-unescaped": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
+ "license": "MIT"
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/quote-unquote": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz",
+ "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==",
+ "license": "MIT"
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-hook-form": {
+ "version": "7.62.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz",
+ "integrity": "sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18 || ^19"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "license": "MIT"
+ },
+ "node_modules/react-select": {
+ "version": "5.10.2",
+ "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.2.tgz",
+ "integrity": "sha512-Z33nHdEFWq9tfnfVXaiM12rbJmk+QjFEztWLtmXqQhz6Al4UZZ9xc0wiatmGtUOCCnHN0WizL3tCMYRENX4rVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.0",
+ "@emotion/cache": "^11.4.0",
+ "@emotion/react": "^11.8.1",
+ "@floating-ui/dom": "^1.0.1",
+ "@types/react-transition-group": "^4.4.0",
+ "memoize-one": "^6.0.0",
+ "prop-types": "^15.6.0",
+ "react-transition-group": "^4.3.0",
+ "use-isomorphic-layout-effect": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/react-to-text": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/react-to-text/-/react-to-text-2.0.1.tgz",
+ "integrity": "sha512-4lGuxY+/PqASinxrv7/ydE8wGdnZCGsTNIFiO6DKykzy703jI5pc0/fyyB6BNrBWmtYJ7H9dGY80PJ3V1/8UIg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ }
+ },
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/read-package-up": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
+ "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up-simple": "^1.0.0",
+ "read-pkg": "^9.0.0",
+ "type-fest": "^4.6.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
+ "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.3",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^8.0.0",
+ "type-fest": "^4.6.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-pkg/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==",
+ "license": "ISC"
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
+ "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "index-to-position": "^1.1.0",
+ "type-fest": "^4.39.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz",
+ "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^4.7.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.1.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/real-require": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "node_modules/redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "redux": "^4"
+ }
+ },
+ "node_modules/regex": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz",
+ "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-recursion": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz",
+ "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
+ "license": "MIT",
+ "dependencies": {
+ "regex": "^5.1.1",
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "license": "ISC"
+ },
+ "node_modules/renderkid": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz",
+ "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "node_modules/renderkid/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/renderkid/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-package-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
+ "integrity": "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==",
+ "license": "MIT"
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
+ "node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "license": "MIT"
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-pathname": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==",
+ "license": "MIT"
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "license": "MIT",
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/retry-request": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz",
+ "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "extend": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/retry-request/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/retry-request/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/rimraf/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",
+ "license": "ISC",
+ "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"
+ }
+ },
+ "node_modules/rimraf/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/run-applescript/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/run-applescript/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/run-applescript/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/rxjs/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-stable-stringify": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
+ "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/same-origin": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
+ "integrity": "sha512-effkSW9cap879l6CVNdwL5iubVz8tkspqgfiqwgBgFQspV7152WHaLzr5590yR8oFgt7E1d4lO09uUhtAgUPoA==",
+ "license": "MIT"
+ },
+ "node_modules/sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "license": "WTFPL OR ISC",
+ "dependencies": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/sharp": {
+ "version": "0.32.6",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
+ "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.2",
+ "node-addon-api": "^6.1.0",
+ "prebuild-install": "^7.1.1",
+ "semver": "^7.5.4",
+ "simple-get": "^4.0.1",
+ "tar-fs": "^3.0.4",
+ "tunnel-agent": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/sharp/node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/sharp/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/sharp/node_modules/node-addon-api": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
+ "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz",
+ "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "1.29.2",
+ "@shikijs/engine-javascript": "1.29.2",
+ "@shikijs/engine-oniguruma": "1.29.2",
+ "@shikijs/langs": "1.29.2",
+ "@shikijs/themes": "1.29.2",
+ "@shikijs/types": "1.29.2",
+ "@shikijs/vscode-textmate": "^10.0.1",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz",
+ "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz",
+ "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==",
+ "license": "MIT"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slugify": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+ "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/snakify-ts": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/snakify-ts/-/snakify-ts-2.3.0.tgz",
+ "integrity": "sha512-PM8KdclwOt3Blvu5rPmFS1jjBC9hP33MNONh4/EvyXH5BD5s1HMLi5W66J1Ozx7TOqw8ESvoPgnTg0mthbj8DA==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash.snakecase": "^4.1.1"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
+ "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.6.0",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/sonic-boom": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
+ "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==",
+ "license": "MIT",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
+ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/speedometer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
+ "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==",
+ "license": "MIT"
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stream-chain": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz",
+ "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/stream-events": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
+ "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "stubs": "^3.0.0"
+ }
+ },
+ "node_modules/stream-json": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz",
+ "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "stream-chain": "^2.2.5"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/streamx": {
+ "version": "2.22.1",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
+ "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-argv": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
+ "node_modules/string-similarity": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz",
+ "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "ISC",
+ "dependencies": {
+ "lodash.every": "^4.6.0",
+ "lodash.flattendeep": "^4.4.0",
+ "lodash.foreach": "^4.5.0",
+ "lodash.map": "^4.6.0",
+ "lodash.maxby": "^4.6.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strtok3": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz",
+ "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/stubs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
+ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/style-to-js": {
+ "version": "1.1.17",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
+ "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.9"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
+ "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.4"
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
+ "license": "MIT"
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sudo-prompt": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz",
+ "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT"
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "license": "MIT"
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.17",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
+ "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.6.0",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.2",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.6",
+ "lilconfig": "^3.1.3",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.47",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.2",
+ "postcss-nested": "^6.2.0",
+ "postcss-selector-parser": "^6.1.2",
+ "resolve": "^1.22.8",
+ "sucrase": "^3.35.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz",
+ "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/tar-stream/node_modules/b4a": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz",
+ "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tar/node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/teeny-request": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.2.0.tgz",
+ "integrity": "sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "node-fetch": "^2.6.1",
+ "stream-events": "^1.0.5",
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/teeny-request/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/teeny-request/node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/teeny-request/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/teeny-request/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/text-decoder/node_modules/b4a": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz",
+ "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/text-hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/thread-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
+ "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
+ "license": "MIT",
+ "dependencies": {
+ "real-require": "^0.2.0"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/through2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/timers-ext": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz",
+ "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==",
+ "license": "ISC",
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
+ "license": "MIT"
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
+ "license": "MIT"
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
+ "license": "MIT"
+ },
+ "node_modules/tippy.js": {
+ "version": "6.3.7",
+ "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
+ "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@popperjs/core": "^2.9.0"
+ }
+ },
+ "node_modules/titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "license": "MIT",
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/tmp-promise": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
+ "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tmp": "^0.2.0"
+ }
+ },
+ "node_modules/tmp-promise/node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
+ "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/toml": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
+ "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
+ "license": "MIT"
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/triple-beam": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
+ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "license": "WTFPL",
+ "dependencies": {
+ "utf8-byte-length": "^1.0.1"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/ts-morph": {
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz",
+ "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ts-morph/common": "~0.26.0",
+ "code-block-writer": "^13.0.3"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "license": "ISC"
+ },
+ "node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-of": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz",
+ "integrity": "sha512-39wxbwHdQ2sTiBB8wAzKfQ9GN+om8w+sjNWzr+vZJR5AMD5J+J7Yc8AtXnU9r/r2c8XiDZ/smxutDmZehX/qpQ==",
+ "license": "MIT"
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
+ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz",
+ "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==",
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
+ "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
+ "license": "ISC"
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unixify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz",
+ "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "normalize-path": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unixify/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/urlpattern-polyfill": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz",
+ "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==",
+ "license": "MIT"
+ },
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz",
+ "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/user-agent-blocker-buildhooks": {
+ "version": "0.0.0-xsfy4",
+ "resolved": "https://229cd987-05ad-4a05-b612-849942d6bec4.netlify.app/packages/buildhooks.tgz",
+ "integrity": "sha512-fX/SAxAm6DSFhqYFv7s96wk9N6fLlsrdLvare8Wq17RzgN9POYQYV8u+PlphbYJ/+difRh8HvVpu2EHwyXMQhA==",
+ "dependencies": {
+ "@netlify/blobs": "^8.1.0",
+ "@netlify/sdk": "3.0.0",
+ "zod": "^3.24.1"
+ }
+ },
+ "node_modules/user-agent-blocker-buildhooks/node_modules/@netlify/blobs": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.2.0.tgz",
+ "integrity": "sha512-9djLZHBKsoKk8XCgwWSEPK9QnT8qqxEQGuYh48gFIcNLvpBKkLnHbDZuyUxmNemCfDz7h0HnMXgSPnnUVgARhg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/utf8-byte-length": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
+ "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==",
+ "license": "(WTFPL OR MIT)"
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "license": "MIT"
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/value-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==",
+ "license": "MIT"
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
+ "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+ "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/weak-lru-cache": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
+ "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==",
+ "license": "MIT"
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/winston": {
+ "version": "3.17.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz",
+ "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==",
+ "license": "MIT",
+ "dependencies": {
+ "@colors/colors": "^1.6.0",
+ "@dabh/diagnostics": "^2.0.2",
+ "async": "^3.2.3",
+ "is-stream": "^2.0.0",
+ "logform": "^2.7.0",
+ "one-time": "^1.0.0",
+ "readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
+ "stack-trace": "0.0.x",
+ "triple-beam": "^1.3.0",
+ "winston-transport": "^4.9.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-transport": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz",
+ "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==",
+ "license": "MIT",
+ "dependencies": {
+ "logform": "^2.7.0",
+ "readable-stream": "^3.6.2",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-transport/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/winston/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/winston/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/wretch": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/wretch/-/wretch-2.11.0.tgz",
+ "integrity": "sha512-zbFW4PnPSS5RFQabHRkCAcMQjmFGrEQLcJwYe4YGXL9KWXneu03Dtaz2JUeqEkOwNDMjdfHEHPL+AIZJwE+y1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/write-file-atomic/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "license": "MIT"
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yauzl/node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yurnalist": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-2.1.0.tgz",
+ "integrity": "sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "inquirer": "^7.0.0",
+ "is-ci": "^2.0.0",
+ "read": "^1.0.7",
+ "strip-ansi": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/yurnalist/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yurnalist/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yurnalist/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yurnalist/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/yurnalist/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yurnalist/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yurnalist/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/zip-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
+ "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==",
+ "license": "MIT",
+ "dependencies": {
+ "archiver-utils": "^5.0.0",
+ "compress-commons": "^6.0.2",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-metadata": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/zod-metadata/-/zod-metadata-1.1.2.tgz",
+ "integrity": "sha512-3PB0SX74jNAvSLvj03Fxpgl98kWJevW1Wa/AnQJ3ToOJ7m9Vi90bMVxveKCWre8btVRDqw449P8hpdTijkSNNA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "zod": "^3.21.2"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.24.6",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz",
+ "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.24.1"
+ }
+ },
+ "node_modules/zod-validation-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz",
+ "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "zod": "^3.18.0"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/.netlify/plugins/package.json b/.netlify/plugins/package.json
new file mode 100644
index 0000000..5a405c5
--- /dev/null
+++ b/.netlify/plugins/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "netlify-local-plugins",
+ "description": "This directory contains Build plugins that have been automatically installed by Netlify.",
+ "version": "1.0.0",
+ "private": true,
+ "author": "Netlify",
+ "license": "MIT",
+ "dependencies": {
+ "content-security-policy-buildhooks": "https://d2bc42d4-d04c-4015-9647-53075b3bd3db.netlify.app/packages/buildhooks.tgz",
+ "fireproof-buildhooks": "https://1c1df094-75d2-4ed1-b918-1926a3953680.netlify.app/packages/buildhooks.tgz",
+ "neon-buildhooks": "https://37fb2d91-fc5f-402b-b52c-84240e7335fa.netlify.app/packages/buildhooks.tgz",
+ "user-agent-blocker-buildhooks": "https://229cd987-05ad-4a05-b612-849942d6bec4.netlify.app/packages/buildhooks.tgz"
+ }
+}
diff --git a/.netlify/state.json b/.netlify/state.json
new file mode 100644
index 0000000..1aa381f
--- /dev/null
+++ b/.netlify/state.json
@@ -0,0 +1,3 @@
+{
+ "siteId": "a8bd5bc4-c20c-4add-96e0-a5ea5054d94f"
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index d1c68b5..567e9e8 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,4 @@
-# Todo
\ No newline at end of file
+#js-project-todo
+Copywright Special Garden Group
+A/RES/217(III)
+A/RES/70/1
diff --git a/To b/To
new file mode 100644
index 0000000..e69de29
diff --git a/[ b/[
new file mode 100644
index 0000000..1de0c54
--- /dev/null
+++ b/[
@@ -0,0 +1 @@
+more is not installed, but available in the following packages, pick one to run it, Ctrl+C to cancel.
diff --git a/_redirects.md b/_redirects.md
new file mode 100644
index 0000000..7bcfb1f
--- /dev/null
+++ b/_redirects.md
@@ -0,0 +1,9 @@
+
+/home /
+/blog/my-post.php /blog/my-post
+/news /blog
+/cuties https://www.petsofnetlify.com
+/authors/c%C3%A9line /authors/about-c%C3%A9line
+/blog/my-old-title /blog/my-new-title
+/blog/my-old-title /blog/an-even-better-title
+/* index.html 200
\ No newline at end of file
diff --git a/backend/.babelrc b/backend/.babelrc
new file mode 100644
index 0000000..aa45599
--- /dev/null
+++ b/backend/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presents" ["@babel/present-env"]
+}
\ No newline at end of file
diff --git a/backend/README.md b/backend/README.md
new file mode 100644
index 0000000..d1c68b5
--- /dev/null
+++ b/backend/README.md
@@ -0,0 +1 @@
+# Todo
\ No newline at end of file
diff --git a/backend/_redirects.md b/backend/_redirects.md
new file mode 100644
index 0000000..7bcfb1f
--- /dev/null
+++ b/backend/_redirects.md
@@ -0,0 +1,9 @@
+
+/home /
+/blog/my-post.php /blog/my-post
+/news /blog
+/cuties https://www.petsofnetlify.com
+/authors/c%C3%A9line /authors/about-c%C3%A9line
+/blog/my-old-title /blog/my-new-title
+/blog/my-old-title /blog/an-even-better-title
+/* index.html 200
\ No newline at end of file
diff --git a/backend/extensions.json b/backend/extensions.json
new file mode 100644
index 0000000..86f1adf
--- /dev/null
+++ b/backend/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "redhat.fabric8-analytics"
+ ]
+}
\ No newline at end of file
diff --git a/backend/login.ejs b/backend/login.ejs
new file mode 100644
index 0000000..200208c
--- /dev/null
+++ b/backend/login.ejs
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sign in
+Sign in with Facebook
\ No newline at end of file
diff --git a/backend/package-lock.json b/backend/package-lock.json
new file mode 100644
index 0000000..8bf54ff
--- /dev/null
+++ b/backend/package-lock.json
@@ -0,0 +1,1583 @@
+{
+ "name": "backend",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "backend",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "bcrypt-nodejs": "^0.0.3",
+ "body-parser": "^2.2.0",
+ "cors": "^2.8.5",
+ "dotenv": "^17.2.2",
+ "express": "^5.1.0",
+ "mongodb-memory-server": "^9.4.0",
+ "mongoose": "^8.18.1"
+ }
+ },
+ "node_modules/@mongodb-js/saslprep": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz",
+ "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "24.5.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz",
+ "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.12.0"
+ }
+ },
+ "node_modules/@types/webidl-conversions": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
+ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/whatwg-url": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
+ "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/webidl-conversions": "*"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/async-mutex": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+ "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz",
+ "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-events": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz",
+ "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==",
+ "license": "Apache-2.0",
+ "optional": true
+ },
+ "node_modules/bcrypt-nodejs": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/bcrypt-nodejs/-/bcrypt-nodejs-0.0.3.tgz",
+ "integrity": "sha512-NmTbLm867btBHCBZ222FQXkQKzecB0KG6pTXFa6NeTVZaSnLfCsx7EK2PL3J+kX8xJThUquEBbhimRCKKZX9zA==",
+ "deprecated": "bcrypt-nodejs is no longer actively maintained. Please use bcrypt or bcryptjs. See https://github.com/kelektiv/node.bcrypt.js/wiki/bcrypt-vs-brypt.js to learn more about these two options"
+ },
+ "node_modules/body-parser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
+ "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "^3.1.2",
+ "content-type": "^1.0.5",
+ "debug": "^4.4.0",
+ "http-errors": "^2.0.0",
+ "iconv-lite": "^0.6.3",
+ "on-finished": "^2.4.1",
+ "qs": "^6.14.0",
+ "raw-body": "^3.0.0",
+ "type-is": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/bson": {
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
+ "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.20.1"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "license": "MIT"
+ },
+ "node_modules/content-disposition": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
+ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "17.2.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
+ "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
+ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "^2.0.0",
+ "body-parser": "^2.2.0",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "finalhandler": "^2.1.0",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "merge-descriptors": "^2.0.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "^2.4.1",
+ "once": "^1.4.0",
+ "parseurl": "^1.3.3",
+ "proxy-addr": "^2.0.7",
+ "qs": "^6.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
+ "node_modules/finalhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
+ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "on-finished": "^2.4.1",
+ "parseurl": "^1.3.3",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "license": "MIT",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-errors/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
+ "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "license": "MIT"
+ },
+ "node_modules/kareem": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
+ "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "license": "MIT"
+ },
+ "node_modules/merge-descriptors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
+ "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mongodb": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.18.0.tgz",
+ "integrity": "sha512-fO5ttN9VC8P0F5fqtQmclAkgXZxbIkYRTUi1j8JO6IYwvamkhtYDilJr35jOPELR49zqCJgXZWwCtW7B+TM8vQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@mongodb-js/saslprep": "^1.1.9",
+ "bson": "^6.10.4",
+ "mongodb-connection-string-url": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.20.1"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-providers": "^3.188.0",
+ "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
+ "gcp-metadata": "^5.2.0",
+ "kerberos": "^2.0.1",
+ "mongodb-client-encryption": ">=6.0.0 <7",
+ "snappy": "^7.2.2",
+ "socks": "^2.7.1"
+ },
+ "peerDependenciesMeta": {
+ "@aws-sdk/credential-providers": {
+ "optional": true
+ },
+ "@mongodb-js/zstd": {
+ "optional": true
+ },
+ "gcp-metadata": {
+ "optional": true
+ },
+ "kerberos": {
+ "optional": true
+ },
+ "mongodb-client-encryption": {
+ "optional": true
+ },
+ "snappy": {
+ "optional": true
+ },
+ "socks": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/mongodb-connection-string-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
+ "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/whatwg-url": "^11.0.2",
+ "whatwg-url": "^14.1.0 || ^13.0.0"
+ }
+ },
+ "node_modules/mongodb-memory-server": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-9.5.0.tgz",
+ "integrity": "sha512-In3zRT40cLlVtpy7FK6b96Lby6JBAdXj8Kf9YrH4p1Aa2X4ptojq7SmiRR3x47Lo0/UCXXIwhJpkdbYY8kRZAw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "mongodb-memory-server-core": "9.5.0",
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=14.20.1"
+ }
+ },
+ "node_modules/mongodb-memory-server-core": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-9.5.0.tgz",
+ "integrity": "sha512-Jb/V80JeYAKWaF4bPFme7SmTR6ew1PWgkpPUepLDfRraeN49i1cruxICeA4zz4T33W/o31N+zazP8wI8ebf7yw==",
+ "license": "MIT",
+ "dependencies": {
+ "async-mutex": "^0.4.1",
+ "camelcase": "^6.3.0",
+ "debug": "^4.3.7",
+ "find-cache-dir": "^3.3.2",
+ "follow-redirects": "^1.15.9",
+ "https-proxy-agent": "^7.0.5",
+ "mongodb": "^5.9.2",
+ "new-find-package-json": "^2.0.0",
+ "semver": "^7.6.3",
+ "tar-stream": "^3.1.7",
+ "tslib": "^2.6.3",
+ "yauzl": "^3.1.3"
+ },
+ "engines": {
+ "node": ">=14.20.1"
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/@types/whatwg-url": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/webidl-conversions": "*"
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/bson": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz",
+ "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14.20.1"
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/mongodb": {
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz",
+ "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bson": "^5.5.0",
+ "mongodb-connection-string-url": "^2.6.0",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">=14.20.1"
+ },
+ "optionalDependencies": {
+ "@mongodb-js/saslprep": "^1.1.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-providers": "^3.188.0",
+ "@mongodb-js/zstd": "^1.0.0",
+ "kerberos": "^1.0.0 || ^2.0.0",
+ "mongodb-client-encryption": ">=2.3.0 <3",
+ "snappy": "^7.2.2"
+ },
+ "peerDependenciesMeta": {
+ "@aws-sdk/credential-providers": {
+ "optional": true
+ },
+ "@mongodb-js/zstd": {
+ "optional": true
+ },
+ "kerberos": {
+ "optional": true
+ },
+ "mongodb-client-encryption": {
+ "optional": true
+ },
+ "snappy": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/mongodb-connection-string-url": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/whatwg-url": "^8.2.1",
+ "whatwg-url": "^11.0.0"
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongodb-memory-server-core/node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongoose": {
+ "version": "8.18.1",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.18.1.tgz",
+ "integrity": "sha512-K0RfrUXXufqNRZZjvAGdyjydB91SnbWxlwFYi5t7zN2DxVWFD3c6puia0/7xfBwZm6RCpYOVdYFlRFpoDWiC+w==",
+ "license": "MIT",
+ "dependencies": {
+ "bson": "^6.10.4",
+ "kareem": "2.6.3",
+ "mongodb": "~6.18.0",
+ "mpath": "0.9.0",
+ "mquery": "5.0.0",
+ "ms": "2.1.3",
+ "sift": "17.1.3"
+ },
+ "engines": {
+ "node": ">=16.20.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mongoose"
+ }
+ },
+ "node_modules/mpath": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
+ "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mquery": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
+ "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4.x"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/new-find-package-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz",
+ "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
+ "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.7.0",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "is-promise": "^4.0.0",
+ "parseurl": "^1.3.3",
+ "path-to-regexp": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.5",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "mime-types": "^3.0.1",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sift": {
+ "version": "17.1.3",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
+ "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
+ "license": "MIT"
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.22.1",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
+ "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
+ "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/type-is": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "license": "MIT",
+ "dependencies": {
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz",
+ "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==",
+ "license": "MIT"
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
+ "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^5.1.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/yauzl": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz",
+ "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "pend": "~1.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/backend/settings.json b/backend/settings.json
new file mode 100644
index 0000000..bd3f135
--- /dev/null
+++ b/backend/settings.json
@@ -0,0 +1,4 @@
+{
+ // ...config
+ "tailwindCSS.experimental.classRegex": [["className\\s*:\\s*['\"]([^'\"]*)['\"]"]]
+ }
\ No newline at end of file
diff --git a/backend/tasks.json b/backend/tasks.json
new file mode 100644
index 0000000..44f59d0
--- /dev/null
+++ b/backend/tasks.json
@@ -0,0 +1,31 @@
+{
+ // These tasks will run in order when initializing your CodeSandbox project.
+ "setupTasks": [
+ {
+ "command": "pnpm install",
+ "name": "Installing Dependencies"
+ }
+ ],
+
+ // These tasks can be run from CodeSandbox. Running one will open a log in the app.
+ "tasks": {
+ "dev": {
+ "name": "dev",
+ "command": "pnpm dev",
+ "runAtStart": true
+ },
+ "build": {
+ "name": "build",
+ "command": "pnpm build"
+ },
+ "lint": {
+ "name": "lint",
+ "command": "pnpm lint"
+ },
+ "preview": {
+ "name": "preview",
+ "command": "pnpm preview"
+ }
+ }
+}
+
\ No newline at end of file
diff --git a/bin/autorestic b/bin/autorestic
new file mode 100755
index 0000000..fe6fccb
Binary files /dev/null and b/bin/autorestic differ
diff --git a/cli.spec.ts b/cli.spec.ts
new file mode 100644
index 0000000..433cb86
--- /dev/null
+++ b/cli.spec.ts
@@ -0,0 +1,154 @@
+import fs from 'fs'
+import path from 'node:path'
+import type { SyncOptions, SyncResult } from 'execa'
+import { execaCommandSync } from 'execa'
+import { afterEach, beforeAll, expect, test } from 'vitest'
+
+const CLI_PATH = path.join(__dirname, '..')
+
+const projectName = 'test-app'
+const genPath = path.join(__dirname, projectName)
+const genPathWithSubfolder = path.join(__dirname, 'subfolder', projectName)
+
+const run = (
+ args: string[],
+ options?: SO,
+): SyncResult => {
+ return execaCommandSync(`node ${CLI_PATH} ${args.join(' ')}`, options)
+}
+
+// Helper to create a non-empty directory
+const createNonEmptyDir = (overrideFolder?: string) => {
+ // Create the temporary directory
+ const newNonEmptyFolder = overrideFolder || genPath
+ fs.mkdirSync(newNonEmptyFolder, { recursive: true })
+
+ // Create a package.json file
+ const pkgJson = path.join(newNonEmptyFolder, 'package.json')
+ fs.writeFileSync(pkgJson, '{ "foo": "bar" }')
+}
+
+// Vue 3 starter template
+const templateFiles = fs
+ .readdirSync(path.join(CLI_PATH, 'template-vue'))
+ // _gitignore is renamed to .gitignore
+ .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath))
+ .sort()
+
+// React starter template
+const templateFilesReact = fs
+ .readdirSync(path.join(CLI_PATH, 'template-react'))
+ // _gitignore is renamed to .gitignore
+ .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath))
+ .sort()
+
+const clearAnyPreviousFolders = () => {
+ if (fs.existsSync(genPath)) {
+ fs.rmSync(genPath, { recursive: true, force: true })
+ }
+ if (fs.existsSync(genPathWithSubfolder)) {
+ fs.rmSync(genPathWithSubfolder, { recursive: true, force: true })
+ }
+}
+
+beforeAll(() => clearAnyPreviousFolders())
+afterEach(() => clearAnyPreviousFolders())
+
+test('prompts for the project name if none supplied', () => {
+ const { stdout } = run([])
+ expect(stdout).toContain('Project name:')
+})
+
+test('prompts for the framework if none supplied when target dir is current directory', () => {
+ fs.mkdirSync(genPath, { recursive: true })
+ const { stdout } = run(['.'], { cwd: genPath })
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework if none supplied', () => {
+ const { stdout } = run([projectName])
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework on not supplying a value for --template', () => {
+ const { stdout } = run([projectName, '--template'])
+ expect(stdout).toContain('Select a framework:')
+})
+
+test('prompts for the framework on supplying an invalid template', () => {
+ const { stdout } = run([projectName, '--template', 'unknown'])
+ expect(stdout).toContain(
+ `"unknown" isn't a valid template. Please choose from below:`,
+ )
+})
+
+test('asks to overwrite non-empty target directory', () => {
+ createNonEmptyDir()
+ const { stdout } = run([projectName], { cwd: __dirname })
+ expect(stdout).toContain(`Target directory "${projectName}" is not empty.`)
+})
+
+test('asks to overwrite non-empty target directory with subfolder', () => {
+ createNonEmptyDir(genPathWithSubfolder)
+ const { stdout } = run([`subfolder/${projectName}`], { cwd: __dirname })
+ expect(stdout).toContain(
+ `Target directory "subfolder/${projectName}" is not empty.`,
+ )
+})
+
+test('asks to overwrite non-empty current directory', () => {
+ createNonEmptyDir()
+ const { stdout } = run(['.'], { cwd: genPath })
+ expect(stdout).toContain(`Current directory is not empty.`)
+})
+
+test('successfully scaffolds a project based on vue starter template', () => {
+ const { stdout } = run([projectName, '--template', 'vue'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPath).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPath}`)
+ expect(templateFiles).toEqual(generatedFiles)
+})
+
+test('successfully scaffolds a project with subfolder based on react starter template', () => {
+ const { stdout } = run([`subfolder/${projectName}`, '--template', 'react'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPathWithSubfolder).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPathWithSubfolder}`)
+ expect(templateFilesReact).toEqual(generatedFiles)
+})
+
+test('works with the -t alias', () => {
+ const { stdout } = run([projectName, '-t', 'vue'], {
+ cwd: __dirname,
+ })
+ const generatedFiles = fs.readdirSync(genPath).sort()
+
+ // Assertions
+ expect(stdout).toContain(`Scaffolding project in ${genPath}`)
+ expect(templateFiles).toEqual(generatedFiles)
+})
+
+test('accepts command line override for --overwrite', () => {
+ createNonEmptyDir()
+ const { stdout } = run(['.', '--overwrite', 'ignore'], { cwd: genPath })
+ expect(stdout).not.toContain(`Current directory is not empty.`)
+})
+
+test('return help usage how to use create-vite', () => {
+ const { stdout } = run(['--help'], { cwd: __dirname })
+ const message = 'Usage: create-vite [OPTION]... [DIRECTORY]'
+ expect(stdout).toContain(message)
+})
+
+test('return help usage how to use create-vite with -h alias', () => {
+ const { stdout } = run(['--h'], { cwd: __dirname })
+ const message = 'Usage: create-vite [OPTION]... [DIRECTORY]'
+ expect(stdout).toContain(message)
+})
\ No newline at end of file
diff --git a/cpython b/cpython
new file mode 160000
index 0000000..1e3d3ed
--- /dev/null
+++ b/cpython
@@ -0,0 +1 @@
+Subproject commit 1e3d3ed571bf7f507bee69aaf7ac87c42732b844
diff --git a/craco.config.js b/craco.config.js
new file mode 100644
index 0000000..880ea08
--- /dev/null
+++ b/craco.config.js
@@ -0,0 +1,11 @@
+module.exports = {
+ style: {
+ postcss: {
+ plugins: [
+ require('tailwindcss'),
+ require('autoprefixer'),
+ ],
+
+ },
+ },
+}
\ No newline at end of file
diff --git a/dist/assets/index-4gmHgof3.js b/dist/assets/index-4gmHgof3.js
new file mode 100644
index 0000000..93bc1b0
--- /dev/null
+++ b/dist/assets/index-4gmHgof3.js
@@ -0,0 +1,71 @@
+(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const s of d)if(s.type==="childList")for(const y of s.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&c(y)}).observe(document,{childList:!0,subtree:!0});function f(d){const s={};return d.integrity&&(s.integrity=d.integrity),d.referrerPolicy&&(s.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?s.credentials="include":d.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function c(d){if(d.ep)return;d.ep=!0;const s=f(d);fetch(d.href,s)}})();var Si=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ao(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}var Bf={exports:{}},ar={};/**
+ * @license React
+ * react-jsx-runtime.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var Zh;function fg(){if(Zh)return ar;Zh=1;var u=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function f(c,d,s){var y=null;if(s!==void 0&&(y=""+s),d.key!==void 0&&(y=""+d.key),"key"in d){s={};for(var p in d)p!=="key"&&(s[p]=d[p])}else s=d;return d=s.ref,{$$typeof:u,type:c,key:y,ref:d!==void 0?d:null,props:s}}return ar.Fragment=i,ar.jsx=f,ar.jsxs=f,ar}var Kh;function og(){return Kh||(Kh=1,Bf.exports=fg()),Bf.exports}var fe=og(),jf={exports:{}},je={};/**
+ * @license React
+ * react.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var Jh;function sg(){if(Jh)return je;Jh=1;var u=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),f=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),y=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),E=Symbol.for("react.lazy"),S=Symbol.iterator;function D(A){return A===null||typeof A!="object"?null:(A=S&&A[S]||A["@@iterator"],typeof A=="function"?A:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,Z={};function Y(A,K,ce){this.props=A,this.context=K,this.refs=Z,this.updater=ce||w}Y.prototype.isReactComponent={},Y.prototype.setState=function(A,K){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,K,"setState")},Y.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function W(){}W.prototype=Y.prototype;function I(A,K,ce){this.props=A,this.context=K,this.refs=Z,this.updater=ce||w}var oe=I.prototype=new W;oe.constructor=I,x(oe,Y.prototype),oe.isPureReactComponent=!0;var Ce=Array.isArray,V={H:null,A:null,T:null,S:null,V:null},C=Object.prototype.hasOwnProperty;function ue(A,K,ce,ie,Ee,Ye){return ce=Ye.ref,{$$typeof:u,type:A,key:K,ref:ce!==void 0?ce:null,props:Ye}}function se(A,K){return ue(A.type,K,void 0,void 0,void 0,A.props)}function ye(A){return typeof A=="object"&&A!==null&&A.$$typeof===u}function ze(A){var K={"=":"=0",":":"=2"};return"$"+A.replace(/[=:]/g,function(ce){return K[ce]})}var Ke=/\/+/g;function Xe(A,K){return typeof A=="object"&&A!==null&&A.key!=null?ze(""+A.key):K.toString(36)}function Le(){}function Qe(A){switch(A.status){case"fulfilled":return A.value;case"rejected":throw A.reason;default:switch(typeof A.status=="string"?A.then(Le,Le):(A.status="pending",A.then(function(K){A.status==="pending"&&(A.status="fulfilled",A.value=K)},function(K){A.status==="pending"&&(A.status="rejected",A.reason=K)})),A.status){case"fulfilled":return A.value;case"rejected":throw A.reason}}throw A}function Je(A,K,ce,ie,Ee){var Ye=typeof A;(Ye==="undefined"||Ye==="boolean")&&(A=null);var _e=!1;if(A===null)_e=!0;else switch(Ye){case"bigint":case"string":case"number":_e=!0;break;case"object":switch(A.$$typeof){case u:case i:_e=!0;break;case E:return _e=A._init,Je(_e(A._payload),K,ce,ie,Ee)}}if(_e)return Ee=Ee(A),_e=ie===""?"."+Xe(A,0):ie,Ce(Ee)?(ce="",_e!=null&&(ce=_e.replace(Ke,"$&/")+"/"),Je(Ee,K,ce,"",function(va){return va})):Ee!=null&&(ye(Ee)&&(Ee=se(Ee,ce+(Ee.key==null||A&&A.key===Ee.key?"":(""+Ee.key).replace(Ke,"$&/")+"/")+_e)),K.push(Ee)),1;_e=0;var Ut=ie===""?".":ie+":";if(Ce(A))for(var nt=0;nt>>1,A=j[Be];if(0>>1;Bed(ie,de))Eed(Ye,ie)?(j[Be]=Ye,j[Ee]=de,Be=Ee):(j[Be]=ie,j[ce]=de,Be=ce);else if(Ee d(Ye,de))j[Be]=Ye,j[Ee]=de,Be=Ee;else break e}}return le}function d(j,le){var de=j.sortIndex-le.sortIndex;return de!==0?de:j.id-le.id}if(u.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;u.unstable_now=function(){return s.now()}}else{var y=Date,p=y.now();u.unstable_now=function(){return y.now()-p}}var g=[],v=[],E=1,S=null,D=3,w=!1,x=!1,Z=!1,Y=!1,W=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,oe=typeof setImmediate<"u"?setImmediate:null;function Ce(j){for(var le=f(v);le!==null;){if(le.callback===null)c(v);else if(le.startTime<=j)c(v),le.sortIndex=le.expirationTime,i(g,le);else break;le=f(v)}}function V(j){if(Z=!1,Ce(j),!x)if(f(g)!==null)x=!0,C||(C=!0,Xe());else{var le=f(v);le!==null&&Je(V,le.startTime-j)}}var C=!1,ue=-1,se=5,ye=-1;function ze(){return Y?!0:!(u.unstable_now()-yej&&ze());){var Be=S.callback;if(typeof Be=="function"){S.callback=null,D=S.priorityLevel;var A=Be(S.expirationTime<=j);if(j=u.unstable_now(),typeof A=="function"){S.callback=A,Ce(j),le=!0;break t}S===f(g)&&c(g),Ce(j)}else c(g);S=f(g)}if(S!==null)le=!0;else{var K=f(v);K!==null&&Je(V,K.startTime-j),le=!1}}break e}finally{S=null,D=de,w=!1}le=void 0}}finally{le?Xe():C=!1}}}var Xe;if(typeof oe=="function")Xe=function(){oe(Ke)};else if(typeof MessageChannel<"u"){var Le=new MessageChannel,Qe=Le.port2;Le.port1.onmessage=Ke,Xe=function(){Qe.postMessage(null)}}else Xe=function(){W(Ke,0)};function Je(j,le){ue=W(function(){j(u.unstable_now())},le)}u.unstable_IdlePriority=5,u.unstable_ImmediatePriority=1,u.unstable_LowPriority=4,u.unstable_NormalPriority=3,u.unstable_Profiling=null,u.unstable_UserBlockingPriority=2,u.unstable_cancelCallback=function(j){j.callback=null},u.unstable_forceFrameRate=function(j){0>j||125Be?(j.sortIndex=de,i(v,j),f(g)===null&&j===f(v)&&(Z?(I(ue),ue=-1):Z=!0,Je(V,de-Be))):(j.sortIndex=A,i(g,j),x||w||(x=!0,C||(C=!0,Xe()))),j},u.unstable_shouldYield=ze,u.unstable_wrapCallback=function(j){var le=D;return function(){var de=D;D=le;try{return j.apply(this,arguments)}finally{D=de}}}})(Gf)),Gf}var Wh;function hg(){return Wh||(Wh=1,qf.exports=dg()),qf.exports}var Xf={exports:{}},Xt={};/**
+ * @license React
+ * react-dom.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var kh;function vg(){if(kh)return Xt;kh=1;var u=no();function i(g){var v="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(i){console.error(i)}}return u(),Xf.exports=vg(),Xf.exports}/**
+ * @license React
+ * react-dom-client.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var Ih;function mg(){if(Ih)return nr;Ih=1;var u=hg(),i=no(),f=wv();function c(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=Be[A],Be[A]=null,A--)}function ie(e,t){A++,Be[A]=e.current,e.current=t}var Ee=K(null),Ye=K(null),_e=K(null),Ut=K(null);function nt(e,t){switch(ie(_e,t),ie(Ye,e),ie(Ee,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?bh(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=bh(t),e=Sh(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ce(Ee),ie(Ee,e)}function va(){ce(Ee),ce(Ye),ce(_e)}function pt(e){e.memoizedState!==null&&ie(Ut,e);var t=Ee.current,a=Sh(t,e.type);t!==a&&(ie(Ye,e),ie(Ee,a))}function aa(e){Ye.current===e&&(ce(Ee),ce(Ye)),Ut.current===e&&(ce(Ut),ku._currentValue=de)}var vn=Object.prototype.hasOwnProperty,Fn=u.unstable_scheduleCallback,na=u.unstable_cancelCallback,ma=u.unstable_shouldYield,uu=u.unstable_requestPaint,jt=u.unstable_now,mn=u.unstable_getCurrentPriorityLevel,yn=u.unstable_ImmediatePriority,gn=u.unstable_UserBlockingPriority,Ba=u.unstable_NormalPriority,ya=u.unstable_LowPriority,Oa=u.unstable_IdlePriority,Wn=u.log,pn=u.unstable_setDisableYieldValue,Nt=null,ot=null;function Jt(e){if(typeof Wn=="function"&&pn(e),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(Nt,e)}catch{}}var Tt=Math.clz32?Math.clz32:kn,Al=Math.log,la=Math.LN2;function kn(e){return e>>>=0,e===0?32:31-(Al(e)/la|0)|0}var ja=256,Ma=4194304;function za(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ja(e,t,a){var n=e.pendingLanes;if(n===0)return 0;var l=0,r=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var h=n&134217727;return h!==0?(n=h&~r,n!==0?l=za(n):(o&=h,o!==0?l=za(o):a||(a=h&~e,a!==0&&(l=za(a))))):(h=n&~r,h!==0?l=za(h):o!==0?l=za(o):a||(a=n&~e,a!==0&&(l=za(a)))),l===0?0:t!==0&&t!==l&&(t&r)===0&&(r=l&-l,a=t&-t,r>=a||r===32&&(a&4194048)!==0)?t:l}function $t(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Pn(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bn(){var e=ja;return ja<<=1,(ja&4194048)===0&&(ja=256),e}function ua(){var e=Ma;return Ma<<=1,(Ma&62914560)===0&&(Ma=4194304),e}function Sn(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function $a(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function In(e,t,a,n,l,r){var o=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var h=e.entanglements,R=e.expirationTimes,B=e.hiddenUpdates;for(a=o&~a;0)":-1 l||R[n]!==B[l]){var J=`
+`+R[n].replace(" at new "," at ");return e.displayName&&J.includes("")&&(J=J.replace("",e.displayName)),J}while(1<=n&&0<=l);break}}}finally{it=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?qt(a):""}function _l(e){switch(e.tag){case 26:case 27:case 5:return qt(e.type);case 16:return qt("Lazy");case 13:return qt("Suspense");case 19:return qt("SuspenseList");case 0:case 15:return Ya(e.type,!1);case 11:return Ya(e.type.render,!1);case 1:return Ya(e.type,!0);case 31:return qt("Activity");default:return""}}function m(e){try{var t="";do t+=_l(e),e=e.return;while(e);return t}catch(a){return`
+Error generating stack: `+a.message+`
+`+a.stack}}function T(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function b(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function z(e){var t=b(e)?"checked":"value",a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var l=a.get,r=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(o){n=""+o,r.call(this,o)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(o){n=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function N(e){e._valueTracker||(e._valueTracker=z(e))}function M(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var a=t.getValue(),n="";return e&&(n=b(e)?e.checked?"true":"false":e.value),e=n,e!==a?(t.setValue(e),!0):!1}function $(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var te=/[\n"\\]/g;function ee(e){return e.replace(te,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function ne(e,t,a,n,l,r,o,h){e.name="",o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?e.type=o:e.removeAttribute("type"),t!=null?o==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+T(t)):e.value!==""+T(t)&&(e.value=""+T(t)):o!=="submit"&&o!=="reset"||e.removeAttribute("value"),t!=null?ve(e,o,T(t)):a!=null?ve(e,o,T(a)):n!=null&&e.removeAttribute("value"),l==null&&r!=null&&(e.defaultChecked=!!r),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?e.name=""+T(h):e.removeAttribute("name")}function re(e,t,a,n,l,r,o,h){if(r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.type=r),t!=null||a!=null){if(!(r!=="submit"&&r!=="reset"||t!=null))return;a=a!=null?""+T(a):"",t=t!=null?""+T(t):a,h||t===e.value||(e.value=t),e.defaultValue=t}n=n??l,n=typeof n!="function"&&typeof n!="symbol"&&!!n,e.checked=h?e.checked:!!n,e.defaultChecked=!!n,o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.name=o)}function ve(e,t,a){t==="number"&&$(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function we(e,t,a,n){if(e=e.options,t){t={};for(var l=0;l"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Yi=!1;if(Ia)try{var su={};Object.defineProperty(su,"passive",{get:function(){Yi=!0}}),window.addEventListener("test",su,su),window.removeEventListener("test",su,su)}catch{Yi=!1}var Rn=null,qi=null,mr=null;function To(){if(mr)return mr;var e,t=qi,a=t.length,n,l="value"in Rn?Rn.value:Rn.textContent,r=l.length;for(e=0;e=vu),Mo=" ",zo=!1;function wo(e,t){switch(e){case"keyup":return Nm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Uo(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var xl=!1;function Lm(e,t){switch(e){case"compositionend":return Uo(t);case"keypress":return t.which!==32?null:(zo=!0,Mo);case"textInput":return e=t.data,e===Mo&&zo?null:e;default:return null}}function Hm(e,t){if(xl)return e==="compositionend"||!Zi&&wo(e,t)?(e=To(),mr=qi=Rn=null,xl=!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=t)return{node:a,offset:t-e};e=n}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=qo(a)}}function Xo(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Xo(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Qo(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=$(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=$(e.document)}return t}function $i(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Vm=Ia&&"documentMode"in document&&11>=document.documentMode,Ol=null,Fi=null,pu=null,Wi=!1;function Vo(e,t,a){var n=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Wi||Ol==null||Ol!==$(n)||(n=Ol,"selectionStart"in n&&$i(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),pu&&gu(pu,n)||(pu=n,n=ui(Fi,"onSelect"),0>=o,l-=o,tn=1<<32-Tt(t)+l|a<r?r:8;var o=j.T,h={};j.T=h,Lc(e,!1,t,a);try{var R=l(),B=j.S;if(B!==null&&B(h,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var J=Im(R,n);Nu(e,t,J,sa(e))}else Nu(e,t,n,sa(e))}catch(k){Nu(e,t,{then:function(){},status:"rejected",reason:k},sa())}finally{le.p=r,j.T=o}}function ly(){}function Nc(e,t,a,n){if(e.tag!==5)throw Error(c(476));var l=Zs(e).queue;Vs(e,l,t,de,a===null?ly:function(){return Ks(e),a(n)})}function Zs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:de,baseState:de,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:un,lastRenderedState:de},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:un,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ks(e){var t=Zs(e).next.queue;Nu(e,t,{},sa())}function Cc(){return Gt(ku)}function Js(){return _t().memoizedState}function $s(){return _t().memoizedState}function uy(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=sa();e=_n(a);var n=Dn(t,e,a);n!==null&&(da(n,t,a),xu(n,t,a)),t={cache:oc()},e.payload=t;return}t=t.return}}function ry(e,t,a){var n=sa();a={lane:n,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},Yr(e)?Ws(t,a):(a=ec(e,t,a,n),a!==null&&(da(a,e,n),ks(a,t,n)))}function Fs(e,t,a){var n=sa();Nu(e,t,a,n)}function Nu(e,t,a,n){var l={lane:n,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(Yr(e))Ws(t,l);else{var r=e.alternate;if(e.lanes===0&&(r===null||r.lanes===0)&&(r=t.lastRenderedReducer,r!==null))try{var o=t.lastRenderedState,h=r(o,a);if(l.hasEagerState=!0,l.eagerState=h,ra(h,o))return Rr(e,t,l,0),dt===null&&Er(),!1}catch{}finally{}if(a=ec(e,t,l,n),a!==null)return da(a,e,n),ks(a,t,n),!0}return!1}function Lc(e,t,a,n){if(n={lane:2,revertLane:vf(),action:n,hasEagerState:!1,eagerState:null,next:null},Yr(e)){if(t)throw Error(c(479))}else t=ec(e,a,n,2),t!==null&&da(t,e,2)}function Yr(e){var t=e.alternate;return e===qe||t!==null&&t===qe}function Ws(e,t){jl=Nr=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function ks(e,t,a){if((a&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,a|=n,t.lanes=a,Wa(e,a)}}var qr={readContext:Gt,use:Lr,useCallback:Et,useContext:Et,useEffect:Et,useImperativeHandle:Et,useLayoutEffect:Et,useInsertionEffect:Et,useMemo:Et,useReducer:Et,useRef:Et,useState:Et,useDebugValue:Et,useDeferredValue:Et,useTransition:Et,useSyncExternalStore:Et,useId:Et,useHostTransitionStatus:Et,useFormState:Et,useActionState:Et,useOptimistic:Et,useMemoCache:Et,useCacheRefresh:Et},Ps={readContext:Gt,use:Lr,useCallback:function(e,t){return Pt().memoizedState=[e,t===void 0?null:t],e},useContext:Gt,useEffect:Ls,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,jr(4194308,4,Ys.bind(null,t,e),a)},useLayoutEffect:function(e,t){return jr(4194308,4,e,t)},useInsertionEffect:function(e,t){jr(4,2,e,t)},useMemo:function(e,t){var a=Pt();t=t===void 0?null:t;var n=e();if(vl){Jt(!0);try{e()}finally{Jt(!1)}}return a.memoizedState=[n,t],n},useReducer:function(e,t,a){var n=Pt();if(a!==void 0){var l=a(t);if(vl){Jt(!0);try{a(t)}finally{Jt(!1)}}}else l=t;return n.memoizedState=n.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},n.queue=e,e=e.dispatch=ry.bind(null,qe,e),[n.memoizedState,e]},useRef:function(e){var t=Pt();return e={current:e},t.memoizedState=e},useState:function(e){e=Mc(e);var t=e.queue,a=Fs.bind(null,qe,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:wc,useDeferredValue:function(e,t){var a=Pt();return Uc(a,e,t)},useTransition:function(){var e=Mc(!1);return e=Vs.bind(null,qe,e.queue,!0,!1),Pt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var n=qe,l=Pt();if(Ie){if(a===void 0)throw Error(c(407));a=a()}else{if(a=t(),dt===null)throw Error(c(349));($e&124)!==0||bs(n,t,a)}l.memoizedState=a;var r={value:a,getSnapshot:t};return l.queue=r,Ls(Es.bind(null,n,r,e),[e]),n.flags|=2048,ql(9,Br(),Ss.bind(null,n,r,a,t),null),a},useId:function(){var e=Pt(),t=dt.identifierPrefix;if(Ie){var a=an,n=tn;a=(n&~(1<<32-Tt(n)-1)).toString(32)+a,t="«"+t+"R"+a,a=Cr++,0xe?(wt=Te,Te=null):wt=Te.sibling;var Pe=q(U,Te,H[xe],F);if(Pe===null){Te===null&&(Te=wt);break}e&&Te&&Pe.alternate===null&&t(U,Te),O=r(Pe,O,xe),Ge===null?me=Pe:Ge.sibling=Pe,Ge=Pe,Te=wt}if(xe===H.length)return a(U,Te),Ie&&cl(U,xe),me;if(Te===null){for(;xexe?(wt=Te,Te=null):wt=Te.sibling;var Qn=q(U,Te,Pe.value,F);if(Qn===null){Te===null&&(Te=wt);break}e&&Te&&Qn.alternate===null&&t(U,Te),O=r(Qn,O,xe),Ge===null?me=Qn:Ge.sibling=Qn,Ge=Qn,Te=wt}if(Pe.done)return a(U,Te),Ie&&cl(U,xe),me;if(Te===null){for(;!Pe.done;xe++,Pe=H.next())Pe=k(U,Pe.value,F),Pe!==null&&(O=r(Pe,O,xe),Ge===null?me=Pe:Ge.sibling=Pe,Ge=Pe);return Ie&&cl(U,xe),me}for(Te=n(Te);!Pe.done;xe++,Pe=H.next())Pe=G(Te,U,xe,Pe.value,F),Pe!==null&&(e&&Pe.alternate!==null&&Te.delete(Pe.key===null?xe:Pe.key),O=r(Pe,O,xe),Ge===null?me=Pe:Ge.sibling=Pe,Ge=Pe);return e&&Te.forEach(function(cg){return t(U,cg)}),Ie&&cl(U,xe),me}function rt(U,O,H,F){if(typeof H=="object"&&H!==null&&H.type===x&&H.key===null&&(H=H.props.children),typeof H=="object"&&H!==null){switch(H.$$typeof){case D:e:{for(var me=H.key;O!==null;){if(O.key===me){if(me=H.type,me===x){if(O.tag===7){a(U,O.sibling),F=l(O,H.props.children),F.return=U,U=F;break e}}else if(O.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===se&&ed(me)===O.type){a(U,O.sibling),F=l(O,H.props),Lu(F,H),F.return=U,U=F;break e}a(U,O);break}else t(U,O);O=O.sibling}H.type===x?(F=rl(H.props.children,U.mode,F,H.key),F.return=U,U=F):(F=Ar(H.type,H.key,H.props,null,U.mode,F),Lu(F,H),F.return=U,U=F)}return o(U);case w:e:{for(me=H.key;O!==null;){if(O.key===me)if(O.tag===4&&O.stateNode.containerInfo===H.containerInfo&&O.stateNode.implementation===H.implementation){a(U,O.sibling),F=l(O,H.children||[]),F.return=U,U=F;break e}else{a(U,O);break}else t(U,O);O=O.sibling}F=nc(H,U.mode,F),F.return=U,U=F}return o(U);case se:return me=H._init,H=me(H._payload),rt(U,O,H,F)}if(Je(H))return Oe(U,O,H,F);if(Xe(H)){if(me=Xe(H),typeof me!="function")throw Error(c(150));return H=me.call(H),De(U,O,H,F)}if(typeof H.then=="function")return rt(U,O,Gr(H),F);if(H.$$typeof===oe)return rt(U,O,Or(U,H),F);Xr(U,H)}return typeof H=="string"&&H!==""||typeof H=="number"||typeof H=="bigint"?(H=""+H,O!==null&&O.tag===6?(a(U,O.sibling),F=l(O,H),F.return=U,U=F):(a(U,O),F=ac(H,U.mode,F),F.return=U,U=F),o(U)):a(U,O)}return function(U,O,H,F){try{Cu=0;var me=rt(U,O,H,F);return Gl=null,me}catch(Te){if(Te===_u||Te===zr)throw Te;var Ge=ia(29,Te,null,U.mode);return Ge.lanes=F,Ge.return=U,Ge}finally{}}}var Xl=td(!0),ad=td(!1),Ta=K(null),Ga=null;function On(e){var t=e.alternate;ie(Ot,Ot.current&1),ie(Ta,e),Ga===null&&(t===null||Bl.current!==null||t.memoizedState!==null)&&(Ga=e)}function nd(e){if(e.tag===22){if(ie(Ot,Ot.current),ie(Ta,e),Ga===null){var t=e.alternate;t!==null&&t.memoizedState!==null&&(Ga=e)}}else Mn()}function Mn(){ie(Ot,Ot.current),ie(Ta,Ta.current)}function rn(e){ce(Ta),Ga===e&&(Ga=null),ce(Ot)}var Ot=K(0);function Qr(e){for(var t=e;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||Df(a)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Hc(e,t,a,n){t=e.memoizedState,a=a(n,t),a=a==null?t:E({},t,a),e.memoizedState=a,e.lanes===0&&(e.updateQueue.baseState=a)}var Bc={enqueueSetState:function(e,t,a){e=e._reactInternals;var n=sa(),l=_n(n);l.payload=t,a!=null&&(l.callback=a),t=Dn(e,l,n),t!==null&&(da(t,e,n),xu(t,e,n))},enqueueReplaceState:function(e,t,a){e=e._reactInternals;var n=sa(),l=_n(n);l.tag=1,l.payload=t,a!=null&&(l.callback=a),t=Dn(e,l,n),t!==null&&(da(t,e,n),xu(t,e,n))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var a=sa(),n=_n(a);n.tag=2,t!=null&&(n.callback=t),t=Dn(e,n,a),t!==null&&(da(t,e,a),xu(t,e,a))}};function ld(e,t,a,n,l,r,o){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(n,r,o):t.prototype&&t.prototype.isPureReactComponent?!gu(a,n)||!gu(l,r):!0}function ud(e,t,a,n){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,n),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,n),t.state!==e&&Bc.enqueueReplaceState(t,t.state,null)}function ml(e,t){var a=t;if("ref"in t){a={};for(var n in t)n!=="ref"&&(a[n]=t[n])}if(e=e.defaultProps){a===t&&(a=E({},a));for(var l in e)a[l]===void 0&&(a[l]=e[l])}return a}var Vr=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)};function rd(e){Vr(e)}function id(e){console.error(e)}function cd(e){Vr(e)}function Zr(e,t){try{var a=e.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(n){setTimeout(function(){throw n})}}function fd(e,t,a){try{var n=e.onCaughtError;n(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function jc(e,t,a){return a=_n(a),a.tag=3,a.payload={element:null},a.callback=function(){Zr(e,t)},a}function od(e){return e=_n(e),e.tag=3,e}function sd(e,t,a,n){var l=a.type.getDerivedStateFromError;if(typeof l=="function"){var r=n.value;e.payload=function(){return l(r)},e.callback=function(){fd(t,a,n)}}var o=a.stateNode;o!==null&&typeof o.componentDidCatch=="function"&&(e.callback=function(){fd(t,a,n),typeof l!="function"&&(Ln===null?Ln=new Set([this]):Ln.add(this));var h=n.stack;this.componentDidCatch(n.value,{componentStack:h!==null?h:""})})}function cy(e,t,a,n,l){if(a.flags|=32768,n!==null&&typeof n=="object"&&typeof n.then=="function"){if(t=a.alternate,t!==null&&Ru(t,a,l,!0),a=Ta.current,a!==null){switch(a.tag){case 13:return Ga===null?ff():a.alternate===null&&St===0&&(St=3),a.flags&=-257,a.flags|=65536,a.lanes=l,n===hc?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([n]):t.add(n),sf(e,n,l)),!1;case 22:return a.flags|=65536,n===hc?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([n])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([n]):a.add(n)),sf(e,n,l)),!1}throw Error(c(435,a.tag))}return sf(e,n,l),ff(),!1}if(Ie)return t=Ta.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,n!==rc&&(e=Error(c(422),{cause:n}),Eu(ba(e,a)))):(n!==rc&&(t=Error(c(423),{cause:n}),Eu(ba(t,a))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,n=ba(n,a),l=jc(e.stateNode,n,l),yc(e,l),St!==4&&(St=2)),!1;var r=Error(c(520),{cause:n});if(r=ba(r,a),Xu===null?Xu=[r]:Xu.push(r),St!==4&&(St=2),t===null)return!0;n=ba(n,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,e=l&-l,a.lanes|=e,e=jc(a.stateNode,n,e),yc(a,e),!1;case 1:if(t=a.type,r=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||r!==null&&typeof r.componentDidCatch=="function"&&(Ln===null||!Ln.has(r))))return a.flags|=65536,l&=-l,a.lanes|=l,l=od(l),sd(l,e,a,n),yc(a,l),!1}a=a.return}while(a!==null);return!1}var dd=Error(c(461)),Mt=!1;function Lt(e,t,a,n){t.child=e===null?ad(t,null,a,n):Xl(t,e.child,a,n)}function hd(e,t,a,n,l){a=a.render;var r=t.ref;if("ref"in n){var o={};for(var h in n)h!=="ref"&&(o[h]=n[h])}else o=n;return dl(t),n=Ec(e,t,a,o,r,l),h=Rc(),e!==null&&!Mt?(Tc(e,t,l),cn(e,t,l)):(Ie&&h&&lc(t),t.flags|=1,Lt(e,t,n,l),t.child)}function vd(e,t,a,n,l){if(e===null){var r=a.type;return typeof r=="function"&&!tc(r)&&r.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=r,md(e,t,r,n,l)):(e=Ar(a.type,null,n,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(r=e.child,!Kc(e,l)){var o=r.memoizedProps;if(a=a.compare,a=a!==null?a:gu,a(o,n)&&e.ref===t.ref)return cn(e,t,l)}return t.flags|=1,e=en(r,n),e.ref=t.ref,e.return=t,t.child=e}function md(e,t,a,n,l){if(e!==null){var r=e.memoizedProps;if(gu(r,n)&&e.ref===t.ref)if(Mt=!1,t.pendingProps=n=r,Kc(e,l))(e.flags&131072)!==0&&(Mt=!0);else return t.lanes=e.lanes,cn(e,t,l)}return Yc(e,t,a,n,l)}function yd(e,t,a){var n=t.pendingProps,l=n.children,r=e!==null?e.memoizedState:null;if(n.mode==="hidden"){if((t.flags&128)!==0){if(n=r!==null?r.baseLanes|a:a,e!==null){for(l=t.child=e.child,r=0;l!==null;)r=r|l.lanes|l.childLanes,l=l.sibling;t.childLanes=r&~n}else t.childLanes=0,t.child=null;return gd(e,t,n,a)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Mr(t,r!==null?r.cachePool:null),r!==null?ms(t,r):pc(),nd(t);else return t.lanes=t.childLanes=536870912,gd(e,t,r!==null?r.baseLanes|a:a,a)}else r!==null?(Mr(t,r.cachePool),ms(t,r),Mn(),t.memoizedState=null):(e!==null&&Mr(t,null),pc(),Mn());return Lt(e,t,l,a),t.child}function gd(e,t,a,n){var l=dc();return l=l===null?null:{parent:xt._currentValue,pool:l},t.memoizedState={baseLanes:a,cachePool:l},e!==null&&Mr(t,null),pc(),nd(t),e!==null&&Ru(e,t,n,!0),null}function Kr(e,t){var a=t.ref;if(a===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(c(284));(e===null||e.ref!==a)&&(t.flags|=4194816)}}function Yc(e,t,a,n,l){return dl(t),a=Ec(e,t,a,n,void 0,l),n=Rc(),e!==null&&!Mt?(Tc(e,t,l),cn(e,t,l)):(Ie&&n&&lc(t),t.flags|=1,Lt(e,t,a,l),t.child)}function pd(e,t,a,n,l,r){return dl(t),t.updateQueue=null,a=gs(t,n,a,l),ys(e),n=Rc(),e!==null&&!Mt?(Tc(e,t,r),cn(e,t,r)):(Ie&&n&&lc(t),t.flags|=1,Lt(e,t,a,r),t.child)}function bd(e,t,a,n,l){if(dl(t),t.stateNode===null){var r=Ul,o=a.contextType;typeof o=="object"&&o!==null&&(r=Gt(o)),r=new a(n,r),t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,r.updater=Bc,t.stateNode=r,r._reactInternals=t,r=t.stateNode,r.props=n,r.state=t.memoizedState,r.refs={},vc(t),o=a.contextType,r.context=typeof o=="object"&&o!==null?Gt(o):Ul,r.state=t.memoizedState,o=a.getDerivedStateFromProps,typeof o=="function"&&(Hc(t,a,o,n),r.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof r.getSnapshotBeforeUpdate=="function"||typeof r.UNSAFE_componentWillMount!="function"&&typeof r.componentWillMount!="function"||(o=r.state,typeof r.componentWillMount=="function"&&r.componentWillMount(),typeof r.UNSAFE_componentWillMount=="function"&&r.UNSAFE_componentWillMount(),o!==r.state&&Bc.enqueueReplaceState(r,r.state,null),Mu(t,n,r,l),Ou(),r.state=t.memoizedState),typeof r.componentDidMount=="function"&&(t.flags|=4194308),n=!0}else if(e===null){r=t.stateNode;var h=t.memoizedProps,R=ml(a,h);r.props=R;var B=r.context,J=a.contextType;o=Ul,typeof J=="object"&&J!==null&&(o=Gt(J));var k=a.getDerivedStateFromProps;J=typeof k=="function"||typeof r.getSnapshotBeforeUpdate=="function",h=t.pendingProps!==h,J||typeof r.UNSAFE_componentWillReceiveProps!="function"&&typeof r.componentWillReceiveProps!="function"||(h||B!==o)&&ud(t,r,n,o),An=!1;var q=t.memoizedState;r.state=q,Mu(t,n,r,l),Ou(),B=t.memoizedState,h||q!==B||An?(typeof k=="function"&&(Hc(t,a,k,n),B=t.memoizedState),(R=An||ld(t,a,R,n,q,B,o))?(J||typeof r.UNSAFE_componentWillMount!="function"&&typeof r.componentWillMount!="function"||(typeof r.componentWillMount=="function"&&r.componentWillMount(),typeof r.UNSAFE_componentWillMount=="function"&&r.UNSAFE_componentWillMount()),typeof r.componentDidMount=="function"&&(t.flags|=4194308)):(typeof r.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=n,t.memoizedState=B),r.props=n,r.state=B,r.context=o,n=R):(typeof r.componentDidMount=="function"&&(t.flags|=4194308),n=!1)}else{r=t.stateNode,mc(e,t),o=t.memoizedProps,J=ml(a,o),r.props=J,k=t.pendingProps,q=r.context,B=a.contextType,R=Ul,typeof B=="object"&&B!==null&&(R=Gt(B)),h=a.getDerivedStateFromProps,(B=typeof h=="function"||typeof r.getSnapshotBeforeUpdate=="function")||typeof r.UNSAFE_componentWillReceiveProps!="function"&&typeof r.componentWillReceiveProps!="function"||(o!==k||q!==R)&&ud(t,r,n,R),An=!1,q=t.memoizedState,r.state=q,Mu(t,n,r,l),Ou();var G=t.memoizedState;o!==k||q!==G||An||e!==null&&e.dependencies!==null&&xr(e.dependencies)?(typeof h=="function"&&(Hc(t,a,h,n),G=t.memoizedState),(J=An||ld(t,a,J,n,q,G,R)||e!==null&&e.dependencies!==null&&xr(e.dependencies))?(B||typeof r.UNSAFE_componentWillUpdate!="function"&&typeof r.componentWillUpdate!="function"||(typeof r.componentWillUpdate=="function"&&r.componentWillUpdate(n,G,R),typeof r.UNSAFE_componentWillUpdate=="function"&&r.UNSAFE_componentWillUpdate(n,G,R)),typeof r.componentDidUpdate=="function"&&(t.flags|=4),typeof r.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof r.componentDidUpdate!="function"||o===e.memoizedProps&&q===e.memoizedState||(t.flags|=4),typeof r.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&q===e.memoizedState||(t.flags|=1024),t.memoizedProps=n,t.memoizedState=G),r.props=n,r.state=G,r.context=R,n=J):(typeof r.componentDidUpdate!="function"||o===e.memoizedProps&&q===e.memoizedState||(t.flags|=4),typeof r.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&q===e.memoizedState||(t.flags|=1024),n=!1)}return r=n,Kr(e,t),n=(t.flags&128)!==0,r||n?(r=t.stateNode,a=n&&typeof a.getDerivedStateFromError!="function"?null:r.render(),t.flags|=1,e!==null&&n?(t.child=Xl(t,e.child,null,l),t.child=Xl(t,null,a,l)):Lt(e,t,a,l),t.memoizedState=r.state,e=t.child):e=cn(e,t,l),e}function Sd(e,t,a,n){return Su(),t.flags|=256,Lt(e,t,a,n),t.child}var qc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Gc(e){return{baseLanes:e,cachePool:is()}}function Xc(e,t,a){return e=e!==null?e.childLanes&~a:0,t&&(e|=Aa),e}function Ed(e,t,a){var n=t.pendingProps,l=!1,r=(t.flags&128)!==0,o;if((o=r)||(o=e!==null&&e.memoizedState===null?!1:(Ot.current&2)!==0),o&&(l=!0,t.flags&=-129),o=(t.flags&32)!==0,t.flags&=-33,e===null){if(Ie){if(l?On(t):Mn(),Ie){var h=bt,R;if(R=h){e:{for(R=h,h=qa;R.nodeType!==8;){if(!h){h=null;break e}if(R=La(R.nextSibling),R===null){h=null;break e}}h=R}h!==null?(t.memoizedState={dehydrated:h,treeContext:il!==null?{id:tn,overflow:an}:null,retryLane:536870912,hydrationErrors:null},R=ia(18,null,null,0),R.stateNode=h,R.return=t,t.child=R,Zt=t,bt=null,R=!0):R=!1}R||ol(t)}if(h=t.memoizedState,h!==null&&(h=h.dehydrated,h!==null))return Df(h)?t.lanes=32:t.lanes=536870912,null;rn(t)}return h=n.children,n=n.fallback,l?(Mn(),l=t.mode,h=Jr({mode:"hidden",children:h},l),n=rl(n,l,a,null),h.return=t,n.return=t,h.sibling=n,t.child=h,l=t.child,l.memoizedState=Gc(a),l.childLanes=Xc(e,o,a),t.memoizedState=qc,n):(On(t),Qc(t,h))}if(R=e.memoizedState,R!==null&&(h=R.dehydrated,h!==null)){if(r)t.flags&256?(On(t),t.flags&=-257,t=Vc(e,t,a)):t.memoizedState!==null?(Mn(),t.child=e.child,t.flags|=128,t=null):(Mn(),l=n.fallback,h=t.mode,n=Jr({mode:"visible",children:n.children},h),l=rl(l,h,a,null),l.flags|=2,n.return=t,l.return=t,n.sibling=l,t.child=n,Xl(t,e.child,null,a),n=t.child,n.memoizedState=Gc(a),n.childLanes=Xc(e,o,a),t.memoizedState=qc,t=l);else if(On(t),Df(h)){if(o=h.nextSibling&&h.nextSibling.dataset,o)var B=o.dgst;o=B,n=Error(c(419)),n.stack="",n.digest=o,Eu({value:n,source:null,stack:null}),t=Vc(e,t,a)}else if(Mt||Ru(e,t,a,!1),o=(a&e.childLanes)!==0,Mt||o){if(o=dt,o!==null&&(n=a&-a,n=(n&42)!==0?1:el(n),n=(n&(o.suspendedLanes|a))!==0?0:n,n!==0&&n!==R.retryLane))throw R.retryLane=n,wl(e,n),da(o,e,n),dd;h.data==="$?"||ff(),t=Vc(e,t,a)}else h.data==="$?"?(t.flags|=192,t.child=e.child,t=null):(e=R.treeContext,bt=La(h.nextSibling),Zt=t,Ie=!0,fl=null,qa=!1,e!==null&&(Ea[Ra++]=tn,Ea[Ra++]=an,Ea[Ra++]=il,tn=e.id,an=e.overflow,il=t),t=Qc(t,n.children),t.flags|=4096);return t}return l?(Mn(),l=n.fallback,h=t.mode,R=e.child,B=R.sibling,n=en(R,{mode:"hidden",children:n.children}),n.subtreeFlags=R.subtreeFlags&65011712,B!==null?l=en(B,l):(l=rl(l,h,a,null),l.flags|=2),l.return=t,n.return=t,n.sibling=l,t.child=n,n=l,l=t.child,h=e.child.memoizedState,h===null?h=Gc(a):(R=h.cachePool,R!==null?(B=xt._currentValue,R=R.parent!==B?{parent:B,pool:B}:R):R=is(),h={baseLanes:h.baseLanes|a,cachePool:R}),l.memoizedState=h,l.childLanes=Xc(e,o,a),t.memoizedState=qc,n):(On(t),a=e.child,e=a.sibling,a=en(a,{mode:"visible",children:n.children}),a.return=t,a.sibling=null,e!==null&&(o=t.deletions,o===null?(t.deletions=[e],t.flags|=16):o.push(e)),t.child=a,t.memoizedState=null,a)}function Qc(e,t){return t=Jr({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Jr(e,t){return e=ia(22,e,null,t),e.lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function Vc(e,t,a){return Xl(t,e.child,null,a),e=Qc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Rd(e,t,a){e.lanes|=t;var n=e.alternate;n!==null&&(n.lanes|=t),cc(e.return,t,a)}function Zc(e,t,a,n,l){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:n,tail:a,tailMode:l}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=n,r.tail=a,r.tailMode=l)}function Td(e,t,a){var n=t.pendingProps,l=n.revealOrder,r=n.tail;if(Lt(e,t,n.children,a),n=Ot.current,(n&2)!==0)n=n&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Rd(e,a,t);else if(e.tag===19)Rd(e,a,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}n&=1}switch(ie(Ot,n),l){case"forwards":for(a=t.child,l=null;a!==null;)e=a.alternate,e!==null&&Qr(e)===null&&(l=a),a=a.sibling;a=l,a===null?(l=t.child,t.child=null):(l=a.sibling,a.sibling=null),Zc(t,!1,l,a,r);break;case"backwards":for(a=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&Qr(e)===null){t.child=l;break}e=l.sibling,l.sibling=a,a=l,l=e}Zc(t,!0,a,null,r);break;case"together":Zc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function cn(e,t,a){if(e!==null&&(t.dependencies=e.dependencies),Cn|=t.lanes,(a&t.childLanes)===0)if(e!==null){if(Ru(e,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(c(153));if(t.child!==null){for(e=t.child,a=en(e,e.pendingProps),t.child=a,a.return=t;e.sibling!==null;)e=e.sibling,a=a.sibling=en(e,e.pendingProps),a.return=t;a.sibling=null}return t.child}function Kc(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&xr(e)))}function fy(e,t,a){switch(t.tag){case 3:nt(t,t.stateNode.containerInfo),Tn(t,xt,e.memoizedState.cache),Su();break;case 27:case 5:pt(t);break;case 4:nt(t,t.stateNode.containerInfo);break;case 10:Tn(t,t.type,t.memoizedProps.value);break;case 13:var n=t.memoizedState;if(n!==null)return n.dehydrated!==null?(On(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Ed(e,t,a):(On(t),e=cn(e,t,a),e!==null?e.sibling:null);On(t);break;case 19:var l=(e.flags&128)!==0;if(n=(a&t.childLanes)!==0,n||(Ru(e,t,a,!1),n=(a&t.childLanes)!==0),l){if(n)return Td(e,t,a);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),ie(Ot,Ot.current),n)break;return null;case 22:case 23:return t.lanes=0,yd(e,t,a);case 24:Tn(t,xt,e.memoizedState.cache)}return cn(e,t,a)}function Ad(e,t,a){if(e!==null)if(e.memoizedProps!==t.pendingProps)Mt=!0;else{if(!Kc(e,a)&&(t.flags&128)===0)return Mt=!1,fy(e,t,a);Mt=(e.flags&131072)!==0}else Mt=!1,Ie&&(t.flags&1048576)!==0&&es(t,Dr,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var n=t.elementType,l=n._init;if(n=l(n._payload),t.type=n,typeof n=="function")tc(n)?(e=ml(n,e),t.tag=1,t=bd(null,t,n,e,a)):(t.tag=0,t=Yc(null,t,n,e,a));else{if(n!=null){if(l=n.$$typeof,l===Ce){t.tag=11,t=hd(null,t,n,e,a);break e}else if(l===ue){t.tag=14,t=vd(null,t,n,e,a);break e}}throw t=Qe(n)||n,Error(c(306,t,""))}}return t;case 0:return Yc(e,t,t.type,t.pendingProps,a);case 1:return n=t.type,l=ml(n,t.pendingProps),bd(e,t,n,l,a);case 3:e:{if(nt(t,t.stateNode.containerInfo),e===null)throw Error(c(387));n=t.pendingProps;var r=t.memoizedState;l=r.element,mc(e,t),Mu(t,n,null,a);var o=t.memoizedState;if(n=o.cache,Tn(t,xt,n),n!==r.cache&&fc(t,[xt],a,!0),Ou(),n=o.element,r.isDehydrated)if(r={element:n,isDehydrated:!1,cache:o.cache},t.updateQueue.baseState=r,t.memoizedState=r,t.flags&256){t=Sd(e,t,n,a);break e}else if(n!==l){l=ba(Error(c(424)),t),Eu(l),t=Sd(e,t,n,a);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(bt=La(e.firstChild),Zt=t,Ie=!0,fl=null,qa=!0,a=ad(t,null,n,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Su(),n===l){t=cn(e,t,a);break e}Lt(e,t,n,a)}t=t.child}return t;case 26:return Kr(e,t),e===null?(a=Oh(t.type,null,t.pendingProps,null))?t.memoizedState=a:Ie||(a=t.type,e=t.pendingProps,n=ii(_e.current).createElement(a),n[P]=t,n[ae]=e,Bt(n,a,e),Ne(n),t.stateNode=n):t.memoizedState=Oh(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return pt(t),e===null&&Ie&&(n=t.stateNode=_h(t.type,t.pendingProps,_e.current),Zt=t,qa=!0,l=bt,jn(t.type)?(xf=l,bt=La(n.firstChild)):bt=l),Lt(e,t,t.pendingProps.children,a),Kr(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ie&&((l=n=bt)&&(n=By(n,t.type,t.pendingProps,qa),n!==null?(t.stateNode=n,Zt=t,bt=La(n.firstChild),qa=!1,l=!0):l=!1),l||ol(t)),pt(t),l=t.type,r=t.pendingProps,o=e!==null?e.memoizedProps:null,n=r.children,Tf(l,r)?n=null:o!==null&&Tf(l,o)&&(t.flags|=32),t.memoizedState!==null&&(l=Ec(e,t,ty,null,null,a),ku._currentValue=l),Kr(e,t),Lt(e,t,n,a),t.child;case 6:return e===null&&Ie&&((e=a=bt)&&(a=jy(a,t.pendingProps,qa),a!==null?(t.stateNode=a,Zt=t,bt=null,e=!0):e=!1),e||ol(t)),null;case 13:return Ed(e,t,a);case 4:return nt(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Xl(t,null,n,a):Lt(e,t,n,a),t.child;case 11:return hd(e,t,t.type,t.pendingProps,a);case 7:return Lt(e,t,t.pendingProps,a),t.child;case 8:return Lt(e,t,t.pendingProps.children,a),t.child;case 12:return Lt(e,t,t.pendingProps.children,a),t.child;case 10:return n=t.pendingProps,Tn(t,t.type,n.value),Lt(e,t,n.children,a),t.child;case 9:return l=t.type._context,n=t.pendingProps.children,dl(t),l=Gt(l),n=n(l),t.flags|=1,Lt(e,t,n,a),t.child;case 14:return vd(e,t,t.type,t.pendingProps,a);case 15:return md(e,t,t.type,t.pendingProps,a);case 19:return Td(e,t,a);case 31:return n=t.pendingProps,a=t.mode,n={mode:n.mode,children:n.children},e===null?(a=Jr(n,a),a.ref=t.ref,t.child=a,a.return=t,t=a):(a=en(e.child,n),a.ref=t.ref,t.child=a,a.return=t,t=a),t;case 22:return yd(e,t,a);case 24:return dl(t),n=Gt(xt),e===null?(l=dc(),l===null&&(l=dt,r=oc(),l.pooledCache=r,r.refCount++,r!==null&&(l.pooledCacheLanes|=a),l=r),t.memoizedState={parent:n,cache:l},vc(t),Tn(t,xt,l)):((e.lanes&a)!==0&&(mc(e,t),Mu(t,null,null,a),Ou()),l=e.memoizedState,r=t.memoizedState,l.parent!==n?(l={parent:n,cache:n},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),Tn(t,xt,n)):(n=r.cache,Tn(t,xt,n),n!==l.cache&&fc(t,[xt],a,!0))),Lt(e,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(c(156,t.tag))}function fn(e){e.flags|=4}function _d(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Nh(t)){if(t=Ta.current,t!==null&&(($e&4194048)===$e?Ga!==null:($e&62914560)!==$e&&($e&536870912)===0||t!==Ga))throw Du=hc,cs;e.flags|=8192}}function $r(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?ua():536870912,e.lanes|=t,Kl|=t)}function Hu(e,t){if(!Ie)switch(e.tailMode){case"hidden":t=e.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?e.tail=null:a.sibling=null;break;case"collapsed":a=e.tail;for(var n=null;a!==null;)a.alternate!==null&&(n=a),a=a.sibling;n===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:n.sibling=null}}function gt(e){var t=e.alternate!==null&&e.alternate.child===e.child,a=0,n=0;if(t)for(var l=e.child;l!==null;)a|=l.lanes|l.childLanes,n|=l.subtreeFlags&65011712,n|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)a|=l.lanes|l.childLanes,n|=l.subtreeFlags,n|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=n,e.childLanes=a,t}function oy(e,t,a){var n=t.pendingProps;switch(uc(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return gt(t),null;case 1:return gt(t),null;case 3:return a=t.stateNode,n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ln(xt),va(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(bu(t)?fn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,ns())),gt(t),null;case 26:return a=t.memoizedState,e===null?(fn(t),a!==null?(gt(t),_d(t,a)):(gt(t),t.flags&=-16777217)):a?a!==e.memoizedState?(fn(t),gt(t),_d(t,a)):(gt(t),t.flags&=-16777217):(e.memoizedProps!==n&&fn(t),gt(t),t.flags&=-16777217),null;case 27:aa(t),a=_e.current;var l=t.type;if(e!==null&&t.stateNode!=null)e.memoizedProps!==n&&fn(t);else{if(!n){if(t.stateNode===null)throw Error(c(166));return gt(t),null}e=Ee.current,bu(t)?ts(t):(e=_h(l,n,a),t.stateNode=e,fn(t))}return gt(t),null;case 5:if(aa(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==n&&fn(t);else{if(!n){if(t.stateNode===null)throw Error(c(166));return gt(t),null}if(e=Ee.current,bu(t))ts(t);else{switch(l=ii(_e.current),e){case 1:e=l.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:e=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":e=l.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":e=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":e=l.createElement("div"),e.innerHTML="
+
+
+
+
+
+