From f9a95f3575211cb7fa1ed12f9b84d7a3539832c8 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:55:53 +0100 Subject: [PATCH 01/22] Update readme and add installation docs --- README.md | 42 +++++++++++++++--------------------------- docs/installation.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 docs/installation.md diff --git a/README.md b/README.md index b21967c2..a27251d2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ - Lagon logo + Lagoss logo

Deploy Serverless Functions at the Edge @@ -19,16 +19,16 @@ ## About -Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions close to users. +Lagoss is a fork of [Lagon](https://github.com/lagonapp/lagon) an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions. -> **Note**: Lagon is in Alpha. Get access to Lagon Cloud via the [waitlist](https://tally.so/r/n9q1Rp) - -Current status: - -- Dev: In heavy development, features are being added and APIs have breaking changes -- **Alpha**: Missing features and bugs to fix, progressive access to Lagon Cloud ([waitlist](https://tally.so/r/n9q1Rp)) -- ~Beta~: Stable APIs, last features are being added, Lagon Cloud available without a waitlist -- ~General Availability~: Cloud and self-hosted versions available for production usage +> [!WARNING] +> **Current status:** +> +> The project was forked from [Lagon](https://github.com/lagonapp/lagon) with the +> intention to continue development. There is currently a public testing instance +> deployed at . However it should be only used for basic +> testing and data might be deleted at any point. If you want a proper setup, +> please deploy your own instance. ## Packages @@ -39,7 +39,7 @@ Current status: - **[runtime](./crates/runtime)** Rust JavaScript Runtime, using V8 Isolates - **[serverless](./crates/serverless)** HTTP entrypoint for Functions, using the Runtime and exporting metrics - **[ui](./packages/ui)** Design system -- **[wpt-runner](./crates/wpt-runner)** Run web-platform-tests on Lagon +- **[wpt-runner](./crates/wpt-runner)** Run web-platform-tests on Lagoss - **[www](./www)** Public website ## Features @@ -51,28 +51,16 @@ Current status: - CLI to manage Functions and develop locally - Deploy at the Edge using the Cloud version, or self-host it -## Roadmap - -The roadmap is accessible to anyone on GitHub. Feel free to open an issue to discuss new features that you would like to see implemented. - -[See the roadmap on GitHub](https://github.com/orgs/lagonapp/projects/1) - -## Contributing - -[See the contributing guide](https://docs.lagon.app/contributing) - ## How it works -Lagon uses V8 Isolates, which are sandboxed environments used to run plain JavaScript. That means each Function's memory is isolated from each others, and you can run a lot of them at the same time with very few resources. [Node.js](https://nodejs.org/), [Electron](https://www.electronjs.org/), [Deno](https://deno.land/) (and [Deno Deploy](https://deno.com/deploy)), [Cloudflare Workers](https://workers.cloudflare.com/) are also using V8 Isolates to execute JavaScript. +Lagoss uses V8 Isolates, which are sandboxed environments used to run plain JavaScript. That means each Function's memory is isolated from each others, and you can run a lot of them at the same time with very few resources. [Node.js](https://nodejs.org/), [Electron](https://www.electronjs.org/), [Deno](https://deno.land/) (and [Deno Deploy](https://deno.com/deploy)), [Cloudflare Workers](https://workers.cloudflare.com/) are also using V8 Isolates to execute JavaScript. Starting an Isolate is a lot faster than starting a whole Node.js process, which allows for almost free cold starts. -## Sponsors ❤️ - -Thanks a lot to every current and past sponsor! +## Installation -![Sponsors list](./assets/sponsors.png) +Learn how you can [install](./docs/installation.md) your own Lagoss instance. ## License -[GNU AGPLv3](./LICENSE) +[GNU AGPLv3](./LICENSE) \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 00000000..14fb7dc0 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,30 @@ +# Installation + +Deploying your own instance of Lagoss is straightforward and only require some basic knowledge of Docker. + +## Requirements + +- A linux server with: + - a static ip + - [docker](https://docs.docker.com/engine/install/) + - [docker-compose](https://docs.docker.com/compose/install/) +- A wildcard domain (exp: `*.lagoss.com`) where you can set a wildcard to your server +- Github O-Auth app + +## Download `docker-compose.yml` & `.env` + +```bash +# download docker-compose.yml +wget ... + +# download .env file +wget ... +``` + +### Create Github O-Auth app + +For the login you need to configure + +### Configure your settings in `.env` + +### Start setup From aa10bf76feb5cf76ec794d772aeb4768bf2eaaac Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 21:33:17 +0100 Subject: [PATCH 02/22] improve docs --- CONTRIBUTING.md | 3 -- README.md | 15 ++---- assets/sponsors.png | Bin 22313 -> 0 bytes docs/.env.example | 18 +++++++ docs/Caddyfile | 10 ++++ docs/docker-compose.yml | 109 ++++++++++++++++++++++++++++++++++++++++ docs/installation.md | 39 ++++++++++---- 7 files changed, 171 insertions(+), 23 deletions(-) delete mode 100644 CONTRIBUTING.md delete mode 100644 assets/sponsors.png create mode 100644 docs/.env.example create mode 100644 docs/Caddyfile create mode 100644 docs/docker-compose.yml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 7d269c2c..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,3 +0,0 @@ -## Contributing - -[See the contributing guide on the documentation](https://docs.lagon.app/contributing) diff --git a/README.md b/README.md index a27251d2..44d26488 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,11 @@

- - + + Lagoss logo

Deploy Serverless Functions at the Edge -
-
- -

@@ -21,14 +17,12 @@ Lagoss is a fork of [Lagon](https://github.com/lagonapp/lagon) an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions. -> [!WARNING] -> **Current status:** -> +> [!NOTE] > The project was forked from [Lagon](https://github.com/lagonapp/lagon) with the > intention to continue development. There is currently a public testing instance > deployed at . However it should be only used for basic > testing and data might be deleted at any point. If you want a proper setup, -> please deploy your own instance. +> please deploy your own instance => [Install my own instance](./docs/installation.md). ## Packages @@ -40,7 +34,6 @@ Lagoss is a fork of [Lagon](https://github.com/lagonapp/lagon) an open-source ru - **[serverless](./crates/serverless)** HTTP entrypoint for Functions, using the Runtime and exporting metrics - **[ui](./packages/ui)** Design system - **[wpt-runner](./crates/wpt-runner)** Run web-platform-tests on Lagoss -- **[www](./www)** Public website ## Features diff --git a/assets/sponsors.png b/assets/sponsors.png deleted file mode 100644 index 4eb90a633e694259bccc50342921025ae5da5190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22313 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 +S3_ROOT_SECRET_ACCESS_KEY= +CLICKHOUSE_PASSWORD= + +# Dashboard settings +LAGON_RESTRICT_LOGIN=false +NEXT_PUBLIC_LAGON_ROOT_DOMAIN=your-domain.com +LAGON_BLACKLISTED_FUNCTIONS_NAMES=app,dash,www,docs +NEXT_PUBLIC_LAGON_ROOT_SCHEM=http +NEXTAUTH_URL=https://app.your-domain.com +NEXTAUTH_SECRET= +GITHUB_CLIENT_ID= +GITHUB_CLIENT_SECRET= \ No newline at end of file diff --git a/docs/Caddyfile b/docs/Caddyfile new file mode 100644 index 00000000..a59eaa69 --- /dev/null +++ b/docs/Caddyfile @@ -0,0 +1,10 @@ +{ + # debug + # email you@your-domain.com + # admin :2019 +} + +*.your-domain.com { +# encode zstd gzip + reverse_proxy serverless:4000 +} diff --git a/docs/docker-compose.yml b/docs/docker-compose.yml new file mode 100644 index 00000000..c414f926 --- /dev/null +++ b/docs/docker-compose.yml @@ -0,0 +1,109 @@ +version: '3' + +services: + redis: + image: redis + command: redis-server --save 20 1 --loglevel warning + volumes: + - redis:/data + restart: unless-stopped + + mysql: + image: mariadb + environment: + MYSQL_RANDOM_ROOT_PASSWORD: true + MYSQL_DATABASE: lagoss + MYSQL_USER: lagoss + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + volumes: + - mysql:/var/lib/mysql + restart: unless-stopped + + clickhouse: + image: clickhouse/clickhouse-server + ulimits: + nofile: + soft: 262144 + hard: 262144 + environment: + CLICKHOUSE_DB: lagoss + CLICKHOUSE_USER: lagoss + CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} + volumes: + - clickhouse:/var/lib/clickhouse + restart: unless-stopped + + minio: + image: minio/minio + volumes: + - minio:/data + environment: + MINIO_ROOT_USER: lagoss + MINIO_ROOT_PASSWORD: ${S3_ROOT_SECRET_ACCESS_KEY} + entrypoint: sh + command: -c 'mkdir -p /data/lagon && minio server /data --console-address ":9001" --address ":9002"' + restart: unless-stopped + + dashboard: + image: lagon/dashboard:${VERSION:-latest} + environment: + DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss + REDIS_URL: redis://redis:6379 + S3_ENDPOINT: http://minio:9002 + S3_REGION: unknown + S3_ACCESS_KEY_ID: lagoss + S3_SECRET_ACCESS_KEY: ${S3_ROOT_SECRET_ACCESS_KEY} + CLICKHOUSE_URL: http://clickhouse:8123 + CLICKHOUSE_USER: lagoss + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} + CLICKHOUSE_DATABASE: lagoss + LAGON_REGION: local + env_file: .env + depends_on: + - redis + - mysql + - clickhouse + - minio + restart: unless-stopped + + serverless: + image: lagon/serverless:${VERSION:-latest} + environment: + DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss + REDIS_URL: redis://redis:6379 + S3_ENDPOINT: http://minio:9002 + S3_REGION: unknown + S3_ACCESS_KEY_ID: lagoss + S3_SECRET_ACCESS_KEY: ${S3_ROOT_SECRET_ACCESS_KEY} + CLICKHOUSE_URL: http://clickhouse:8123 + CLICKHOUSE_USER: lagoss + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} + CLICKHOUSE_DATABASE: lagoss + LAGON_REGION: local + LAGON_ISOLATES_CACHE_SECONDS: 60 + LAGON_LISTEN_ADDR: 0.0.0.0:4000 + env_file: .env + depends_on: + - redis + - mysql + - clickhouse + - minio + restart: unless-stopped + + caddy: + build: + context: . + dockerfile: dockerfile.caddy + ports: + - 80:80 + # - 443:443 + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro + restart: unless-stopped + +volumes: + redis: + mysql: + clickhouse: + minio: diff --git a/docs/installation.md b/docs/installation.md index 14fb7dc0..73ff6918 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,30 +1,51 @@ # Installation -Deploying your own instance of Lagoss is straightforward and only require some basic knowledge of Docker. +Deploying your own instance of Lagoss is straightforward and only requires some basic knowledge of Linux, Docker & DNS. ## Requirements - A linux server with: - a static ip - - [docker](https://docs.docker.com/engine/install/) - - [docker-compose](https://docs.docker.com/compose/install/) -- A wildcard domain (exp: `*.lagoss.com`) where you can set a wildcard to your server -- Github O-Auth app + - [docker](https://docs.docker.com/engine/install/) installed + - [docker-compose](https://docs.docker.com/compose/install/) installed +- A wildcard domain `*.your-domain.com` pointing to your server +- A Github O-Auth app ## Download `docker-compose.yml` & `.env` ```bash # download docker-compose.yml -wget ... +wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/docker-compose.yml # download .env file -wget ... +wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/.env.example -O .env + +# download Caddyfile +wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/Caddyfile ``` -### Create Github O-Auth app +### Create Github OAuth app + +For the login you need to create an OAuth app at Github to be able to login using your Github account. -For the login you need to configure +TODO describe creating a OAuth app ### Configure your settings in `.env` +TODO + ### Start setup + +```bash +# start deployment +docker compose up -d + +# access logs +docker compose logs -f +``` + +You should now be able to access the dashboard at `app.your-domain.com`. + +### Enable https + +TODO From db9cb6b048787f4a7789b86657b38892adbc3fc5 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 21:36:04 +0100 Subject: [PATCH 03/22] update files --- docs/.env.example | 2 +- docs/Caddyfile | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/.env.example b/docs/.env.example index a864fd15..538469b3 100644 --- a/docs/.env.example +++ b/docs/.env.example @@ -15,4 +15,4 @@ NEXT_PUBLIC_LAGON_ROOT_SCHEM=http NEXTAUTH_URL=https://app.your-domain.com NEXTAUTH_SECRET= GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= \ No newline at end of file +GITHUB_CLIENT_SECRET= diff --git a/docs/Caddyfile b/docs/Caddyfile index a59eaa69..a1bdfaee 100644 --- a/docs/Caddyfile +++ b/docs/Caddyfile @@ -1,10 +1,12 @@ { # debug # email you@your-domain.com - # admin :2019 } *.your-domain.com { -# encode zstd gzip reverse_proxy serverless:4000 } + +app.your-domain.com { + reverse_proxy dashboard:4000 +} From deabed697ae0820532ecb62037775fafce69691a Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 22:29:08 +0100 Subject: [PATCH 04/22] update docs --- docs/.gitignore | 3 + docs/.vitepress/config.ts | 68 + .../docs/pages/cli.mdx => docs/content/cli.md | 0 .../content/cloud/assets.md | 0 .../cron.mdx => docs/content/cloud/cron.md | 0 .../content/cloud/deployments.md | 0 .../content/cloud/domains.md | 0 .../content/cloud/environment-variables.md | 0 .../content/cloud/limits.md | 0 .../logs.mdx => docs/content/cloud/logs.md | 0 .../content/cloud/pricing.md | 0 .../content/cloud/regions.md | 0 .../content/cloud/security.md | 0 .../content/contributing.md | 0 .../docs/pages => docs/content}/examples.md | 0 .../content/getting-started.md | 95 +- docs/content/index.md | 24 + .../index.mdx => docs/content/introduction.md | 27 +- .../docs => docs/content}/public/favicon.ico | Bin docs/content/public/icon-white-black.png | Bin 0 -> 19949 bytes docs/content/public/icon-white.png | Bin 0 -> 13592 bytes .../content}/public/images/cron-region.png | Bin .../content}/public/images/cron.png | Bin .../content}/public/images/domains-list.png | Bin .../public/images/env-variables-list.png | Bin .../content}/public/images/env-variables.png | Bin .../public/images/my-domains-list.png | Bin .../content}/public/images/playground.png | Bin .../public/images/www-domains-list.png | Bin .../{ => content/public/install}/.env.example | 0 docs/{ => content/public/install}/Caddyfile | 0 .../public/install}/docker-compose.yml | 0 {packages/docs => docs/content}/public/og.png | Bin .../content/runtime-apis.md | 0 .../content/self-hosting/configuration.md | 0 .../self-hosting}/installation.md | 0 docs/package.json | 15 + docs/tsconfig.json | 22 + packages/docs/.env.example | 2 - packages/docs/.eslintrc.json | 6 - packages/docs/.gitignore | 36 - packages/docs/CHANGELOG.md | 235 ---- packages/docs/README.md | 1 - packages/docs/lib/posthog.tsx | 26 - packages/docs/next-sitemap.config.js | 7 - packages/docs/next.config.js | 22 - packages/docs/package.json | 33 - packages/docs/pages/_app.tsx | 14 - packages/docs/pages/_meta.json | 10 - packages/docs/pages/cloud/_meta.json | 12 - packages/docs/pages/self-hosted/_meta.json | 4 - .../docs/pages/self-hosted/requirements.mdx | 1 - packages/docs/postcss.config.js | 6 - packages/docs/public/logo-black.png | Bin 46008 -> 0 bytes packages/docs/public/logo-white.png | Bin 36251 -> 0 bytes packages/docs/styles/globals.css | 42 - packages/docs/tailwind.config.ts | 9 - packages/docs/theme.config.tsx | 54 - packages/docs/tsconfig.json | 20 - pnpm-lock.yaml | 1241 +---------------- 60 files changed, 247 insertions(+), 1788 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/.vitepress/config.ts rename packages/docs/pages/cli.mdx => docs/content/cli.md (100%) rename packages/docs/pages/cloud/assets.mdx => docs/content/cloud/assets.md (100%) rename packages/docs/pages/cloud/cron.mdx => docs/content/cloud/cron.md (100%) rename packages/docs/pages/cloud/deployments.mdx => docs/content/cloud/deployments.md (100%) rename packages/docs/pages/cloud/domains.mdx => docs/content/cloud/domains.md (100%) rename packages/docs/pages/cloud/environment-variables.mdx => docs/content/cloud/environment-variables.md (100%) rename packages/docs/pages/cloud/limits.mdx => docs/content/cloud/limits.md (100%) rename packages/docs/pages/cloud/logs.mdx => docs/content/cloud/logs.md (100%) rename packages/docs/pages/cloud/pricing.mdx => docs/content/cloud/pricing.md (100%) rename packages/docs/pages/cloud/regions.mdx => docs/content/cloud/regions.md (100%) rename packages/docs/pages/cloud/security.mdx => docs/content/cloud/security.md (100%) rename packages/docs/pages/contributing.mdx => docs/content/contributing.md (100%) rename {packages/docs/pages => docs/content}/examples.md (100%) rename packages/docs/pages/get-started.mdx => docs/content/getting-started.md (72%) create mode 100644 docs/content/index.md rename packages/docs/pages/index.mdx => docs/content/introduction.md (53%) rename {packages/docs => docs/content}/public/favicon.ico (100%) create mode 100644 docs/content/public/icon-white-black.png create mode 100644 docs/content/public/icon-white.png rename {packages/docs => docs/content}/public/images/cron-region.png (100%) rename {packages/docs => docs/content}/public/images/cron.png (100%) rename {packages/docs => docs/content}/public/images/domains-list.png (100%) rename {packages/docs => docs/content}/public/images/env-variables-list.png (100%) rename {packages/docs => docs/content}/public/images/env-variables.png (100%) rename {packages/docs => docs/content}/public/images/my-domains-list.png (100%) rename {packages/docs => docs/content}/public/images/playground.png (100%) rename {packages/docs => docs/content}/public/images/www-domains-list.png (100%) rename docs/{ => content/public/install}/.env.example (100%) rename docs/{ => content/public/install}/Caddyfile (100%) rename docs/{ => content/public/install}/docker-compose.yml (100%) rename {packages/docs => docs/content}/public/og.png (100%) rename packages/docs/pages/runtime-apis.mdx => docs/content/runtime-apis.md (100%) rename packages/docs/pages/self-hosted/installation.mdx => docs/content/self-hosting/configuration.md (100%) rename docs/{ => content/self-hosting}/installation.md (100%) create mode 100644 docs/package.json create mode 100644 docs/tsconfig.json delete mode 100644 packages/docs/.env.example delete mode 100644 packages/docs/.eslintrc.json delete mode 100644 packages/docs/.gitignore delete mode 100644 packages/docs/CHANGELOG.md delete mode 100644 packages/docs/README.md delete mode 100644 packages/docs/lib/posthog.tsx delete mode 100644 packages/docs/next-sitemap.config.js delete mode 100644 packages/docs/next.config.js delete mode 100644 packages/docs/package.json delete mode 100644 packages/docs/pages/_app.tsx delete mode 100644 packages/docs/pages/_meta.json delete mode 100644 packages/docs/pages/cloud/_meta.json delete mode 100644 packages/docs/pages/self-hosted/_meta.json delete mode 100644 packages/docs/pages/self-hosted/requirements.mdx delete mode 100644 packages/docs/postcss.config.js delete mode 100644 packages/docs/public/logo-black.png delete mode 100644 packages/docs/public/logo-white.png delete mode 100644 packages/docs/styles/globals.css delete mode 100644 packages/docs/tailwind.config.ts delete mode 100644 packages/docs/theme.config.tsx delete mode 100644 packages/docs/tsconfig.json diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..b6465434 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +.vitepress/cache/ +.vitepress/build/ +node_modules/ diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 00000000..65073fe7 --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,68 @@ +import { defineConfig } from 'vitepress'; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: 'Lagoss', + description: + 'An open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions.', + + srcDir: 'content', + + themeConfig: { + logo: '/icon-white.png', + + nav: [ + { text: 'Home', link: '/' }, + { text: 'Docs', link: '/introduction' }, + ], + + sidebar: [ + { + text: 'Introduction', + link: '/introduction', + }, + { + text: 'Getting Started', + link: '/getting-started', + }, + { + text: 'Runtime APIs', + link: '/runtime-apis', + }, + { + text: 'CLI', + link: '/cli', + }, + { + text: 'Examples', + link: '/examples', + }, + { + text: 'Usage', + collapsed: false, + items: [ + { text: 'Deployments', link: '/cloud/deployments' }, + { text: 'Assets', link: '/cloud/assets' }, + { text: 'Environment variables', link: '/cloud/environment-variables' }, + { text: 'Domains', link: '/cloud/domains' }, + { text: 'Logs', link: '/cloud/logs' }, + { text: 'Cron', link: '/cloud/cron' }, + // { text: 'Pricing', link: '/cloud/pricing' }, + // { text: 'Regions', link: '/cloud/regions' }, + { text: 'Limits', link: '/cloud/limits' }, + { text: 'Security', link: '/cloud/security' }, + ], + }, + { + text: 'Self hosting', + collapsed: true, + items: [ + { text: 'Installation', link: '/self-hosting/installation' }, + { text: 'Configuration', link: '/self-hosting/configuration' }, + ], + }, + ], + + socialLinks: [{ icon: 'github', link: 'https://github.com/lagossapp/lagoss' }], + }, +}); diff --git a/packages/docs/pages/cli.mdx b/docs/content/cli.md similarity index 100% rename from packages/docs/pages/cli.mdx rename to docs/content/cli.md diff --git a/packages/docs/pages/cloud/assets.mdx b/docs/content/cloud/assets.md similarity index 100% rename from packages/docs/pages/cloud/assets.mdx rename to docs/content/cloud/assets.md diff --git a/packages/docs/pages/cloud/cron.mdx b/docs/content/cloud/cron.md similarity index 100% rename from packages/docs/pages/cloud/cron.mdx rename to docs/content/cloud/cron.md diff --git a/packages/docs/pages/cloud/deployments.mdx b/docs/content/cloud/deployments.md similarity index 100% rename from packages/docs/pages/cloud/deployments.mdx rename to docs/content/cloud/deployments.md diff --git a/packages/docs/pages/cloud/domains.mdx b/docs/content/cloud/domains.md similarity index 100% rename from packages/docs/pages/cloud/domains.mdx rename to docs/content/cloud/domains.md diff --git a/packages/docs/pages/cloud/environment-variables.mdx b/docs/content/cloud/environment-variables.md similarity index 100% rename from packages/docs/pages/cloud/environment-variables.mdx rename to docs/content/cloud/environment-variables.md diff --git a/packages/docs/pages/cloud/limits.mdx b/docs/content/cloud/limits.md similarity index 100% rename from packages/docs/pages/cloud/limits.mdx rename to docs/content/cloud/limits.md diff --git a/packages/docs/pages/cloud/logs.mdx b/docs/content/cloud/logs.md similarity index 100% rename from packages/docs/pages/cloud/logs.mdx rename to docs/content/cloud/logs.md diff --git a/packages/docs/pages/cloud/pricing.mdx b/docs/content/cloud/pricing.md similarity index 100% rename from packages/docs/pages/cloud/pricing.mdx rename to docs/content/cloud/pricing.md diff --git a/packages/docs/pages/cloud/regions.mdx b/docs/content/cloud/regions.md similarity index 100% rename from packages/docs/pages/cloud/regions.mdx rename to docs/content/cloud/regions.md diff --git a/packages/docs/pages/cloud/security.mdx b/docs/content/cloud/security.md similarity index 100% rename from packages/docs/pages/cloud/security.mdx rename to docs/content/cloud/security.md diff --git a/packages/docs/pages/contributing.mdx b/docs/content/contributing.md similarity index 100% rename from packages/docs/pages/contributing.mdx rename to docs/content/contributing.md diff --git a/packages/docs/pages/examples.md b/docs/content/examples.md similarity index 100% rename from packages/docs/pages/examples.md rename to docs/content/examples.md diff --git a/packages/docs/pages/get-started.mdx b/docs/content/getting-started.md similarity index 72% rename from packages/docs/pages/get-started.mdx rename to docs/content/getting-started.md index 52b1d354..7f7c7407 100644 --- a/packages/docs/pages/get-started.mdx +++ b/docs/content/getting-started.md @@ -1,5 +1,3 @@ -import { Tab, Tabs } from 'nextra-theme-docs'; - This page will guide you through creating a simple JavaScript/TypeScript Edge Function and deploying it on Lagon Cloud using the CLI. The Function will be deployed globally in [multiple regions](/cloud/regions), and will be accessible through a unique URL.
@@ -23,28 +21,23 @@ We will now create a new Function, that listens for `Request`s and replies with Create a new file called `hello.js` / `hello.ts` and add the following code: - - - ```javascript - // hello.js - export function handler(request) { - return new Response('Hello, World!', { - headers: { 'content-type': 'text/html' } - }) - } - ``` - - - ```typescript - // hello.ts - export function handler(request: Request) { - return new Response('Hello, World!', { - headers: { 'content-type': 'text/html' } - }) - } - ``` - - +```javascript +// hello.js +export function handler(request) { + return new Response('Hello, World!', { + headers: { 'content-type': 'text/html' } + }) +} +``` + +```typescript +// hello.ts +export function handler(request: Request) { + return new Response('Hello, World!', { + headers: { 'content-type': 'text/html' } + }) +} +``` ## Deploy the Function @@ -79,36 +72,30 @@ Wait a few seconds, and you should now see a message with an URL, indicating tha Now that we have a Function deployed, we would like to add a new feature and return the name of the user that is making the request. To do so, we will need to update the Function's code: - - - ```javascript {3-4,6} - // hello.js - export function handler(request) { - const url = new URL(request.url) - const name = url.searchParams.get('name') || 'World' - - return new Response(`Hello, ${name}!`, { - headers: { 'content-type': 'text/html' } - }) - } - ``` - - - - ```typescript {3-4,6} - // hello.ts - export function handler(request: Request) { - const url = new URL(request.url) - const name = url.searchParams.get('name') || 'World' - - return new Response(`Hello, ${name}!`, { - headers: { 'content-type': 'text/html' } - }) - } - ``` - - - + +```javascript {3-4,6} +// hello.js +export function handler(request) { + const url = new URL(request.url) + const name = url.searchParams.get('name') || 'World' + + return new Response(`Hello, ${name}!`, { + headers: { 'content-type': 'text/html' } + }) +} +``` + +```typescript {3-4,6} +// hello.ts +export function handler(request: Request) { + const url = new URL(request.url) + const name = url.searchParams.get('name') || 'World' + + return new Response(`Hello, ${name}!`, { + headers: { 'content-type': 'text/html' } + }) +} +``` We can now re-deploy the Function with the same command as before, and append `--prod` to automatically promote this new Deployment to Production: diff --git a/docs/content/index.md b/docs/content/index.md new file mode 100644 index 00000000..6dd1c7e4 --- /dev/null +++ b/docs/content/index.md @@ -0,0 +1,24 @@ +--- +layout: home + +hero: + name: "Lagoss" + text: "An open-source runtime and platform for running JS serverless functions." + tagline: "An open-source runtime and platform for running JS serverless functions." + actions: + - theme: brand + text: Get started + link: /introduction + - theme: alt + text: Deploy it yourself + link: /self-hosting/installation + +features: + - title: OpenSource + details: Published under AGPL 3.0 License + - title: Self-Host + details: No hidden costs + - title: Incredible fast + details: The optimized v8 runtime allows running your JS / TS applications in ms! +--- + diff --git a/packages/docs/pages/index.mdx b/docs/content/introduction.md similarity index 53% rename from packages/docs/pages/index.mdx rename to docs/content/introduction.md index 660bb00b..26f9867c 100644 --- a/packages/docs/pages/index.mdx +++ b/docs/content/introduction.md @@ -1,17 +1,8 @@ -import { Callout } from 'nextra-theme-docs'; - Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions close to users. - - Lagon is in Alpha. Get access to Lagon Cloud via the [waitlist](https://tally.so/r/n9q1Rp) - - -Current status: - -- Dev: In heavy development, features are being added and APIs have breaking changes -- **Alpha**: Missing features and bugs to fix, progressive access to Lagon Cloud ([waitlist](https://tally.so/r/n9q1Rp)) -- ~Beta~: Stable APIs, last features are being added, Lagon Cloud available without a waitlist -- ~General Availability~: Cloud and self-hosted versions available for production usage +::: warning +Lagoss is in Alpha. Get access to Lagon Cloud via the TODO ... +::: ## Features @@ -22,20 +13,8 @@ Current status: - CLI to manage Functions and develop locally - Deploy at the Edge using the Cloud version, or self-host it -## Roadmap - -The roadmap is accessible to anyone on GitHub. Feel free to open an issue to discuss new features that you would like to see implemented. - -[See the roadmap on GitHub](https://github.com/orgs/lagonapp/projects/1) - ## How it works Lagon uses V8 Isolates, which are sandboxed environments used to run plain JavaScript. That means each Function's memory is isolated from each others, and you can run a lot of them at the same time with very few resources. [Node.js](https://nodejs.org/), [Electron](https://www.electronjs.org/), [Deno](https://deno.land/) (and [Deno Deploy](https://deno.com/deploy)), [Cloudflare Workers](https://workers.cloudflare.com/) are also using V8 Isolates to execute JavaScript. Starting an Isolate is a lot faster than starting a whole Node.js process, which allows for almost free cold starts. - -## Sponsors ❤️ - -Thanks a lot to every current and past sponsor! - -![Sponsors list](../../../assets/sponsors.png) diff --git a/packages/docs/public/favicon.ico b/docs/content/public/favicon.ico similarity index 100% rename from packages/docs/public/favicon.ico rename to docs/content/public/favicon.ico diff --git a/docs/content/public/icon-white-black.png b/docs/content/public/icon-white-black.png new file mode 100644 index 0000000000000000000000000000000000000000..7c62e4bb3b8b2a3ba73056f8328a7a6acd50d974 GIT binary patch literal 19949 zcmeIa=UY?D_ddKs(12(Z5ja8u2nwiFsiB60iiM_FP*Iu)A}tUINDGS6qisyW<=Rf$p`n=#`@0nd@X3wly>%Q-m5Mx8V9oq!9AqcYL zF2*Sm~`a>b{iGM*M%I&P)-^iP0+&G-D+v*tT zAV_W`*P7)PxbM!%qdMn2QPX`_AH|0|D=u3UltXk>qRM}%j?g%(InR)x%rgIitN=GqrR1{ zfdkM)+Dj(`_(%N4Nrrz7R3ZjJsM|UIck;h6_}@JE-&**8We=((c#x>1{(hy4+UD=< z&tERT-O({nKl<{+QoshVuYM{KaHkTF|zj?{$=n(%V4$1K; z^qKhDvLS;)!Y%~5n-6r~IJfw#_bbQGo_PNYN4;7eaC%;?39N{1(4!kEiuzeGo{gmF zRYgXc>myaY(1b?Oze_oOR#a@ZuetY?yt`>&-JMh&UHVG2eZVpBwnC?D8Aa*4*c3h& zLu10_@6O|7XKn>jj(WC`qrZ_>lI{jCd~Qn>n%!V7d0*60@xsu=;j+gPHJ@eEnIG`f z7d&Igxl<&SwFq}}yS0^j?E{t9f-iO!=gzm~_H!&AFN;+2+lkm5pra(E<(nO>y8V89 zs6Ad**^yY3kdHRzW5ZKhgKHfH1-OOk+gE2Ur7-Pk2vW~Y^;P;GESM{0OeNn#i|D~s z4z))$(g)YqDJs>y3*^f-Bhi{#4pA5p46AOBj+SasF#*p%L_VeQo9~hPdn{1}_KFg5 zW~6h`sFRMNN2tZ-ctZ;=1Vgii4&ZrET5_KL-Skb{Ci5)>8}1&)Aa-?(oP#E+!?x0W zDB^W}bXk!e)`q|B7stYvhiwtnX!==rSIm(E8BU^K^+dn=FULsqA*S2`*s9QDfzDkE z#`7}82MO*Mdar7Gt<^_-K<8YC8*D;UK8k(9Uk&OCaYtfK(afzjX9F9h4UOIX0cRTW z@ne>v+FZK#1hN+fs5vn@>d0`MBCRh_jd%^3d?S!R zzd2ghobkgpId2(H`wV5`Q0DkIo>mISPdME~RNz>hb)LtM9RJzEc=zeT? zT6G}7SUKh+ihQ4l8QW!vjZQMg*vST9={GdXZ?#57;JHVLHXQEM1!%P6+uOfi)YbSn zcbD7RvSr3Yd&x`mFXW}+XH6|AQv%#&#XSOp-nD&x2}k=RE@1NO2O1-2^4o-y`j~rc zKh0gVF=%0$cZ4_%k9-WBl-|YlJ=uSJH7ncMku6hUu?-btL_@!#ZgD~K)X8JcZ4aOL zOSYq8zVoCM4KHqpqjL6>0@o|2*0tM=`j=L3JV(2fYcD@4ZLRt~qNt?wxUPQSG$Pf= zj<*OYaPpSa++^f2y{(aLpFOM5FMo_piR>;R9%z6e}tl|F;%Fc>fHodv({|L6~7th-9&@h_O*-* zb0hPOxjJ^@V(m@?%+?tr&GN!D3iS5TBNI-Vj8q8P{$K^l=SP}tTU_3={-G@m^skOP zGZZTSa$H+6X3ON_A=5ncn^2$LE8;T+;Y68r@)1s0HGHg-*Rko@D^s?u*_-w1LG-K&E+bl}d~(5>ur&B!(Pm0ua!Nl0da z_FDC3)Yh#k8Ch9b$6r-GK|blz(2vhZ-C1qZEBBGKVuOybSjhYQ~ZRO42@zBWLNgYo-e_>SxK z2eguE@RA4gx>2Uv;p_^#nEpkz9gJxX1#H=uQF@=8LpBBS@A2NEM1 zQC1(bNIrdPw66aYQtS#h-7{U7{}9$9j+lnb&W4S@#}uf}VXvR0p)ZArO_K(E7KM5| zQFc2PTLa9B?_#eXX6~qa=t05~57&Ns0)zGapt6WM6Rtj#Y`hw|IXlmZbni>Ha+Ae3 zgh1;(dQ~vAM|H5UogD{;8`SCUZ1{#xT(X*z&`|v7HMJ--g&rWaXC@)c4Jk=2UL4|o z)^zv+(#OE6(cNbazWDo33YR-$i5F{kh7~$_H<4k*88~(M+hU))EzU#3=T5Qnh|S(yE!wNw;fA$4LPxS+xj0N9(Sq-34$tpN8Z0*9(mJ5s7v$wPXDV0pS~5|_ds$zyB?sj=`;nb4p3A{p=1=*3bO$laz|b%)t4`07 zaevt6iMZ3X8_G({r1{FisF0Azk+qiFx1COheQEQa*Z$U%H*(+qM$@a5C&y-YfBdO{ z;UT^>-HpjVR^#Px3-dix^r_e@vFNa1nGasB6N4|mTwPOW+Lcl=XIne-QpPV+Q26DA z*Ci|H{*jps?F-o}jlX6DD-AalYW@4e>Dnx_#S^KOgk094p`}N|-Dsae$K8Eu@~)7C zi-V`ER&esyYTU1WP?N}=zupl(+aJ4;ojiNX=he+Mx7Vt}?y&RRtY5gwX^{pUKg+;L zK8yR}Yq_%bb;xO9rMsmZq};1lxqoSD-gQHHLg-Bo?k?`$+UMR+msdYOO*mG3#J7@fsyzIpk9>IKKz;V?@s)IM%-Slu zR07=ccOtsaSihoP*33ajNmzI@V`L_5se(N2ddEsPyqIosnp%DG#BKx zvO<;hgm2a?X}NWH{N|F)qf^MCT7_Fxp}}qzX`*k%N(Pw}(v12Y4W>^56>TiRhBs9v zVWqyBaXW3pBHuX37ME%WatTGNS8;m6!v02q=&IdN__2o2-s8~r)6II+Q5Qqy-91+I zPq16&li1)$C5C#zGrj0~5BtRrD4Hg_T8EmG^J2^p^<*rv3>TN(Uzp(?HD==;9QE_snBaDo$0EaG z^Z>%K#GTVU3DmO2#0M#Y-k%xDNG8nr##4#9LO2r)b!FFBl|c=G+|p><#Aqlnm_Uq$ z+3-cpOg)cKx3MTj|59hMc~?3Xd45I9ebUzd2_j&%*UZ5I(=C=h_)IJVe;$L}I6x0b zuc&x8K0WZ@08QyeKfZGJaQYxpwFdU}tkFz7d1T6tEoP=}aDo(xLo5!mtF@acH2cfP zU&y}pm|7bqB8>OSD{h?52sg)H#2^<=(R9OkN&P)bys_rFSJ!(xvwMXxNcRUkIWxD& zO^DJGkihAR(AxCrsp(c%N>zhy;Vxm25(Ap$(93r_T0IS3;*fZc~+vsM0?lLJ- zgRitU`wrCb==G*mj7(cV4f7^wV`y?l8v^9DVKh3 zMO@H4DE9`g`69Z96@Kn*;^EK{9GmaNG=i^X)CeMUV z)$h~@`zfm>F5^p9VzwyxaU2>+g(&9SQH?adnIzr9Jw~a;M%doWVCG0RcfV%gRsLR0 z&5Ijrbtjci^Y}0NjW_!}#DXuH%4T)jWrY7(L_r(rDNd46>fF~ol3!ZLJ;2>F$yj`O zp~L<|(p}Ye_(LM%qw+dI9*32)Q&eZIXCCPqG;aTCHHUx1Tq+T(m?w|X z2ht^keAQ6H)+ce%X1(hCqxp{{gC@c_BC`+N5}57ldGPaaC1t8CabaqCvTmSfGuja6 zFO3?ux`REStXf1U->4gquv0pN?PxPA`I?tb;GCIUHM%I)yQeI^S1-tQ_n7fnW>TB| zQ``&75yi6X8Lp<%@3(G$jSc)3wK`_3#fCrisod>y?Nb#=iG9shMUmKHQF>}%8KwDD zh^u6zU}SoIHbwD+S#X|d0uz72+Ip0SrMuBB;k(WQl&NhwVFPC!TjWDk~V` zxr*4(`cY3S{7V2Dwt@Ke0k4SXtKgK?H26twF6)RN^ zs3=Qi8c@bbmVC%^Gqz%8jO0>+=N>@-@~rpa@rJv9NnpU$J~tm!K&)U_ ziw^W2ZOrJb((?IUJo3C({`goj$4v07`qx_S-=&&1$CWk8w=VOH8MDoX_hE#uop2HR z+)rDLe>CgO^sr4l`}3E;5Uf+qvVmZ?#pZ*17C#v!tJ-X1!(Y&^$84>%N>EEvT5Ei- z==0rz4T6MyZV?4My@!LCV@VaVLM;h9w)Z=$8QOT>-Z8hIzRx=OTs61H*sHku4zUJ< z`m94n**eMWYS#}{99;XYZXHqZElO;PPMEz*w~9+>nrLrI)%8zE_WU)@KBP<2O~0n; zv7Z%`Jk_$gEOez4PY7H%c*n=ZC2w^w3g;fw%R&C*dn&Q5V?rjvGQJ!?ZkSOW6rpy5 z!%?Kc(l4S!7b2JI;(WW3mTNPgP4nLPA((Hp*0-scw)nQ60e3magaWW}o-8k!sj1F0%)3v>(r<~r)8Mn^7I;tb z72K79x6_t7Sp07D`U$7&KO-f?LzgL-CAZZRxObZuMMK;y?ASDl~NlrjaC! zAHxP<_j+ztb43(9iK2YAT)xqNK;=MCnZ`z^Nt3V!I!S__`WZGF1KrgH@lUC-F)13P zPuxV)rwmR-%Ex`qv+tPmh1qV0wwHj}<*&6W+9}ZHHfK97C}lJ+v;1I-Gm+pah%bRb z;a_hVc(8n5$t@zcx>dCV+wsGZJf;zVy~=2s_qnvP^)wGRE29zc&zLh7xtikgWHcde&#RA+T-gXcCjN{YmkH1l0O*(p48Cr|tt9Cz5s$3fiF&RHQn85Kp z)N{AvqL{k$ZS)0)rMSD{!c<{>qBjS5jGB^y|7}1LytKAeW!{iL$0lFByYO~Dwp)s? zdU>QsGmu~=`_#wcC)gzQfuD<5I$skH!P_JLscr)7LkV6NUjJrb&3a|ENo()e%`Pnz zq;U^(kIptJ5Y=mU)>gvIn7mHkDn3R(P8u~yER3jib}=}*T=o5;faOMxBu4GfM)NYW zLZS`gzTJRljM2rD&)>pZVlVFb+|RhSjQ738LsY4~N;Va_n7}$ZpLo98r--w`TUi=me`0K^m5)8{N)yQe78vYs8o_%1~XJ_O8)WgVItFk z9P|}-89oI~b2UrDBrky-k_!JlIae63{*NgRN(mpZ=K>C@<;QTU}<@X`6 z`&88@4zeA0+dQjY@(*%C4#a0BWpCD+r+x8P zO`;B$DxnVZwYib}3<8(I`E2zS#MBVp?P{A#UH5LQ+~}!PTr>`LqeWO@|# ztrxeEO=Wn2nb8ohZx7fY+&*6w~=$eg^h(kFlK zNCjeI!_7e7O-R@@r)1+SNDP@0iEkEO`gF@J6Uv(WBkjj#k6!k9bn`McM={y#?l6qI z&5NF2Yc;bbMNHF1x~MdurB{+fUErsjQXZ#?xtnDfNTLlsfX&Wgi* zg`D#lsikd{vsWohBa=Kan2bY2H#{chjH?2gb&)KGItH`S*)$i;YExvV0fZR~9tizc7hj`DEWG-TteXUE4_*bO|&+6HK^Q@;ZL$hmOaR%GsoTv69s zRZ}(?>*t5`Tly3-Ui8Xh8ZPS7t^dKY;26G}Ey>OqN5bR)x-*V7*~@%_j;@ZW+iAQ- zO)7#@O{#S@eB5jAfEJ}C@dft?GR)J{yMxoh5{8C@L@sb337NB}cutMi8ND(;ZM=n4 zsd4ShUw@UE$D*SfV_xr6%I-wXLobd=_WbezJHU)H*~?dniZ)Li>LJe%*+#$@eH$^)pe{E;>dIBhs78A? zpwKP(a&gSNJ7u3cg`M=8O(#U3S@Zuh=F&Yvd?SeB`umy9hiz0j%#~hCK7v$GSl03r z<`n;E^x44Wm-P{f{`7aN4=edb5i^@hxJCn7wNyzlt~p^Ox~oxcpgT4mT@}8v@>Sfz zgAMOQZyI*VWoK1Bl*3r$!qRYxsd>MnBo`->KB8VQvwI}kFwo14lY1DEy5KV%{L+Y- zTHOSf-Cw%%WqfcN?rl$eD=&|+IH26yRz4XRr4WEsAiEOGqykDO!`AziGR_4Okk|Ce zA58Y%Ms7-MDo>l6QO23${qh*vq_p?>1$YilX>`}HtOnW`x;Spn1o(S zXkxl!*FtzZv?e-S4ns>~+&aDe_;%^B_sAymQ+7t)nb2Qsr8^Xz8&~rNowWS@18@jfI8S_?^P4on;g( z;cXnA+WY%eu`~*TZF|R_BL#(eQT{LGm4x?tDdFN&sV(Sy^;Mq(7@Jhbuga?OaMYJKS4<*C^PQ})H*n1W8aVGPWRbpC5A z6)@7#8t=A#n{O0&m)|)!-89<9{N*FC98x+gTlUN0U$Btc3gFor+dGER(&Vx}QB_wP z6b?DhxV4wnhSPV=6V&O_cf>Bl>m>pPMe9ZYWd`hhp1$V8n~=KDtMJ?Z&+ zML3#~_^O7jh&5o@m9vX5VxQ!X1>Mr8XC;9HEvrQPtC*4H=Q3{}9mYMP07(@IXujNZ4uHQyR{Fs>}J+?usJ9C6*1JWt{B$$#pY0B<14#4+??al#9IbtE0U}kNcF1O zT?FW76oB)pDC9M4*I*}yg4L^}qyo^?g-{iG`CTkbdrXlIfaI%5@+2(c`0LFUk_!(H znR+vqow@v^B86p%5L!74?63OG0?ljNZk8@i=_5p24suZ(5o6!fb`zoF`D)%bIW4!p zPFcUombur&4H-)|#V%qhH}yD+k~!6k)ze21`c=4U%7KKj7fT;u%~Lfuk8_D=B7gXU zM8hhuS^<~klrU7EvRgX1#!q-Mt+f|U%ZmK5ZqUp_pWAWBoSW0sYxc%wsB~pj`h=H2 z?GdQ0Wz~8(P5H3hfFU_|CyRg#&GgE)WSo8?BVpkoK1LjmgYh9Gs?H9wH#V{3C8eR2 zlKk~OmVQuqkVQykSCY;G`E^pYAIk-AJY@?GZ(C30UY=3JSTv##_OAbWC>fA^JZf{S z^I?9fzb_l|$=cQRknhHVdy{!UaU2buMo)~dR1j}Q(E=IMZX_(18wTHS88G&bf)e)# zNOb29T|J&0IUcgem06$eY=b5gt=)>yyL2y%(=?Wdc{{kQh-6|v|FD<^vf(X*brunF z`bpcUllc>Bt-KEAEqB;=;1OtQ_jhVQN#1_!m|9B)iuk+c*IF-dA5t*n^z(q%Hp(6c z!2Vog!`L`Ei+j9^0RTDKK_sJc$f- zGu;ZYmfE%1Sdtx&y_&WVcfnFYFXeJ`?IsN<&4(ikUJ0RT0ZTo9=~Y z$9O@c>39=EjSo>DH805<81b+}K{;>O>IgvW*SqPJS}5fAk+nu05>^_3l2^eJ?Fg+x z>i%8UGGbw+$nS!igG9E=dNlOs)`80Y)e*!PB6QtJ0s|{`smyU>B3F1nLQBRu1}(_x zU}CP@ZC-=Blt%5;^Mj@6bqf%2i^0sT0I)w0GvH}Hch`K4iKo7 ziFX;P|BoH|%}Zj!jX=bX4DD4yXmUQ^33@%LP4LBU@bbW}IZl|)2k40QooSahIFvySH4Lg)Lo~4c=)(oWK)AM z$o^2jYNTr9XgfSY>fUN=(mFFq_X$LAJB}rK58{xbFNNTWjM9(A)aWz?!^@R(_c&c2 zYGNlx5`zRn2B%>16rHL0W9i3a0N50dC;55g7ypHYejjmF1J26)0Bse((ya_mCFpvu zq;i4(tyRkID9mXFjUn1RnB;~~<3yWP9C3C|PMA3hKpd4}_NihJr?WN1;nPw40a#vM zk`_>5Y)I@u@ey->i!jxo?Eqd^k)hFnS4~i z5VuSgt|EZzO}qx+0}oOaUPCzdh#0h;Wx#BkBhouwUOWI}1*K2a$D-nr`<22!E}vu# z>d{2qcfLnZUBRl_^I>1w0lbE3g72w(WQfy#Or1EQ6Qo~LV+OBRiBC-2J!;G&J{A>n z5qN1B4R;v(KJ}=&dRcMWiavcGdiLw`_wVbR@BvBVZ&ich0nwBR`vbkAkUjCF3X;fG z`?YQDLAGCMVP)>{_7jP^u)mM})7iNJ<|Nq!jl2QUcBfX(u|!=1FiTgBH8Q|tQa==% zCp-5O_(zS++3+Rb^^^fj zY~9RzPm+0A#o_bWDhv&1UeQBhkaC#!=)b#N`LRUj?yfAK&vi@_Tj2g4u*-n88#&lwm{VmaP#+3q$AXsEIR7S3^(UXM0J zfNaRbXTi~`vvD+C!5X-iR#67`1wrWVmXH6p?i7TY(nEIYU_@-&sgK{*;x9L_-XcN5 z=0o@Ry4D*E^?FdW`_1cfJ|z$$k+82~#h7$9QvUihrLJ|N3jQuxP$Rn>xVWZbT|nfH4pJHe3-+(KIMvW zBAG#+JsM0PL1}m#DTueTWO`rN4}`WAcN3%b9%A0~A~zQ62!fY$i4yHpL!f(OKIYjY z#=f~}eLVKW4Cu+{T`eyhyMQD|UL1_b*M{J@NqrPa5~W-2U5HIa6K!hQiZH^RR`ytO zqB`tL@|rBy2i~2m+PdLs?TV%EfH?K2_kxc)3hCG#_T9r_;4x6Q5>%(${n!{lYs~Rw z+E7ITyOwaJyB6dbZ1@;j<)#yuO`50`ckf`N)??;;pg?f#~TW%%v0X-L~v;h7OCUK+GiyDj8(hh8q{99)Jy_gAI2aGfzRNuA#?V%s0cN zn_yD0*lIq@MX}@yXzG#pVh&i!#jrQ?<$#!D#I*?4n`C5c{LIpbj9_;_tDH{ImhIb} zAP_V@l5B+j)PN_OQioj-VF zv%Uu<;#}JfQ|!D&n0n*Bh(iCLKkl(3L-p;rOi>Buc`>jrO8fCy20pyMrM@ z)Y5MXcmW|i!J(*r!2@Zymqjqfz|+DuHh$myJ#n5B8IyrK3}GDjD8GF7p^!csdu)3+ zCjgW`Z!uHQ#6k#C-EHn*^NOB8yY(2W)Fb91>1Ll0IW)m2o~ucWqEJ^ z2O%Iu$?9Wrx>7-TP<2^0eI!zQg_eEaARzgm@W^Q8iPY?PKt@;r{{7_s zp4|vtAlVRY3Z6NfCo6$-UHroqds}UXMF=ZSuFw+fMOhpGpV(9j2F&uet#mM&I-J9f zwHRjAcf5odEp>i2y%@as!(vdPR1RW-DywkNy%}k&`G(lCLyIz!|e*9IGll*9EQ@``Mv<}j#SAoz_ffWV6?_%*6=s5n!f-zephg(iw|2cIHS>E$+#SLW#8`~fq7ji-e`a9`=ekR;+n+pj zqMII@%zs?ZP$E+hdMsn$`S(_;{k($!AyjNSTai&#$UUyWNuD?X%jaC8_sGx$SXzV9 z#m0)P^+bR3tbK4(I&K~f(w5|9_;yLhkN4|GJ?e_cZ`q@L&b9Tf+U_yACQS|G#Rp9{ z*FWr*>lEf9|NEvJHM1V}r)bsNXAK&C%%u=eT#Zy?u-n|;@(ftl#w--WBYw4=2{6>; zB*#M3XMBOQe`&Tp*^p(~hSFhN<{jq+;X&dXc#pEAk~yqeqf3`K1vw@D!KbYp-L%+P zOCYcWHX}VFVIlJ_j2XiNnTKJL{Af*!gg}iQ=?dH8k{h>PGy84#kX`CA7dKK_k{SRe zcMX`xP&1qACky$o?>7cL)!ijvhM4a{8Xn7KY>#=%;iMcp3J#R9_J_nH_KWRhE^oQVs(8WR zO5xlvG+xoVpcF!^mj7xA5Ni092OhFaLRM!g-#5Kk`C4 zV%jg8dsx}TM11yoHByN2xzcrlljZpt91ZLAD0)n>g1@8@KB`K_}OUaL4KAXD;!)$deTAUS`Dk3^r> zZ!-5B?_x;@>IXGE;Q|(>sEsEiAr>;w8^Hat2lk$3`44@&KL7Yb(SC!qJ!0`l9myj_ zCmoq=Z@bAwO4@aU@;Sq4eQIX6%Oll=-`SfBvYZHG!lbMNHxtX{_UTZvpn4lR8zJm3J||SWSv8G3qM!_D$W?wv%HHI<<yITOG_o{tZ4;nB|>Rc$at;qQq zk+v2(JteHTmBS`vzQ~ZV>7647mY)0g=8yc*udtN;ss!}xt(Oyo^Uv~AsH@ zs>N(9|I9RSNp$JYcvIK98Vq@BX%>JsrNzaz4Bb>R)c}k=aA~V-giYL2^w8;8lVf0~ z`@B8U-wN#2Orq9ukL8>IvTpYnviI%7q(g_24Z`GPSD$u^g$pO5!eFa-$PlvDzwY3M zX}B9cb?*G7WP>XYc*0RZ866h04y2%Chhlc1=$f_i3#ApE&SL71c`P?rbc6ojvuz}y z3JUCod@#^4A`!*)3+E8E&+D!)qzp$vX}KskV6Bn(qUIMarkM}uhRzXYtUA%Q$lUPp z`SIjs2j#xWXfCP8V$7VQLDFg{yHbw%r4g-&+%UHnl7>U&n?LTcG=m2QH8!-Rnk~m+ zp9?7q!P12ya!oKcel0!+^;;~x*wv(TrJMnYC*G=g?s)x|?f7-;vob(glmvRk7Lf_Q z%msG{>`yZ+_Es!5x@B#?0vL<4<@p&5OV3KLkT_h3IBCsp-ugr7#7TvrP1WirkP-fUesfD8 z*mdoe_psmhq3p$#F8=CYxC_lNI0q|cA2_Q@hoOu5OZjEe2POO*#s%MT8>Raea*wc< zZcKGET?` ziY1@u;P87$!1x$5#>Do6k7fEO{W2T=GI*z~3BCuP`5<`i;g^)I8bfK$`C6b&sKWg^ zT(BgijipW=IfnVvSUTLEBxfGKq?25EnD!3h;$!+>0^Wu?zcor+B8fE)C`xC<1TN3{ z0OT~@n)aE~F6jyneRu61JZ(E;<`uX%>3{e^2$@bu;A}GPi#GcEc_=2`^a-9%3%U1@ zfn$-ImmBur8{)*KT<(P|e}bNQ7v055pYxe7U459uDZsxLI4_V(>> z&vy!#kf~0$7eCZ0w#G(#=ivgq4%g<{Cn#fqhXmBnE_dkzulA*Wma>z6G9st?cc9lK z{`PXFYLGHSm&(BhS9)e16o-Kf@u-)BIZL_z6qjDR^J8VHv-5g_|RDI z+`-_ArF;qSm{Sx0GE!1V-2xQmoAV1y+;M?V$eOWtpH0k^Ni8=0hfOJ;M3lxDyFfk z!^^pUVOi1y%yifMw{aFaOSPXfBuFJg)my02gU6PyC*+QBYthz3KMa(+$R`2X$r8Ft z1|4&$)bQu4)>#C~UXE*!)+_qKNJzVbW3KI{&)QR{cYRQfV+2L```G%k{SiQz{)HLd zJ&+Tjc&GOt6;pxw&d>E$s$()Bfv~W|4ZT(^5nBA{56^bKU>U-i9k0XXC=bfb?!$h4 zp9P$--n5%*P((K3P4y>2-L-4|8bKOR_OvLhet14T4=&X`4ToLiO2jI!{dSUNFD3BYn)T~sSTF9eD3tRv-N~a-kxJr2%ztzzYw|&ea5!Amzcatg>i@r_ zdhQq%5+mZ8!`ELdzZ41jDkq&?!OCx7TUY07fOuRVL?L_DiOVDXM^gmC& z|KiaAz>9v3icY1Ut<>*@Hz%u<6lNZp6DpiO%jI9r4FTZ{rO5R>h*fl1qMw>GlwCvg zll{`!5_&!R0Npq;n5pirFyBxj60{KZ=rXCWw{-aT9=)C!z%MJX4bjA)M%4)xkKI>S zzxlDvmcEa#;!G#YUIhMKrxizib+pXq)~bwNU)F=zuV!9zQ|070vj(a6j?xKy74mJM z#Hl4*2P1hz39P+9ccqF>+@8gHvAS|yY~K$K^}G<_7(bQ~Z%6>44{PSM+a}2D4Rc(Fk{X&1SEbzHoEr^Rzdpr+1)M7tZm|8$Ct6o;9n$mbh)Nr2?9Ea)I8Wiy zQ?rWk*}RPhA_~IXBr!bXhTddN|0Gt<0jFA4=PNDw*)wV?3l|jXeBCf!F4>7`f9)kC z3Hf}_-ffHp$(aaW-EZ}`ClZ254d(ivFck$|<*qUN4YeFW3O_@Zgxr?{-^Z088z*V@ zb6bjfI@T++a+RX}Hg6W)UD|ip_L4@{*5N@cplKQ3Okc$Hv?mCMw@8S~gpnE&ZJhH% zB|2z{U{#J@^PKG(QQWePyH}pGQqFI7;#@DcyCnY^!rNlmL z$L=$Kl6Oj`1(kE!KsBdZ3_3Ixss{BrjDvZmog;Q?=fWg2cpz8dv;c5@sNww}mSfQ_ zfJU8o>LZ$;As~D#(A?f9_P(xrh^yK`W)cgYqR#!%;XNCD8GFab&_GFRbL^91+3ado z-OMr7b19M;g1zcN_PfT6t(ea!*J>#GRf951?L+lVoSyRB{NIhu`O3c-K!e;l$ddAl zU#>h;^$;5PZWdoO*JL2S9HAZQ>{+AYB6h}5#>!O)G7r|u?qUz{>3DrhTF+}*v7t#TD>arTyUcd$;!u12McuN!!%qcGpQ^r7{Q0ga zypl4*H++2`Gbzk16ARkThyBMhv*RNcjoE#;7r$*xDSX>d*Ho$ZogKImB1*Fj9jGs# zzO~s{56Vr^H?|v;umUK1p*N=6B$`uiLu77zTK>R*OG_W~k%=1c;jZtv z4ncg4yfZE{sz}{z!ClSBw>sF%$_D|E6oVW(T=1qoy4S?+oQ~8zK`j?KRENz;9Adn; z_D*5!Kaky&bCB?u+bFBndzAPNm>eW+M22vl|MU;m$7Oo~yCx#ZOZk}f2qgAt>Z{WC z?#2TZfV|~H2~j?RI`E&BnM(scTX#%|ijOjI6T0w(t`O@<%B$5oaF>!`PpTg@n(hvc zN$W*H`D?vm{6pJ$_EA@y0P)2XUnfqE8Lt!bHF`M3?4Z$603Gj7sT%2 z)5ttfT-5E2z3D<+ylLGYtt>c8S*=1BQon}98H4kcLRP3bH?tG z6{#n_zenTNR;B&T0cmhy4jYMGQ;U)8Y1HBvj#M_yl8K4v&!Tjc1-EE{x4@TaJGGo$ zfVTn#L%pdW)~kp!#R7T?dVbmk#!CWphL6*8z6BLS&XYhXv zqUn8(R0UhT1j{`EknUJJlFgDFoaPZu`}{=f)DwXeE>FH^o%gQ=df>Fp`#9j$4AYW( z4n(K_+g*{@B6RR?XtzO(4Swq8olOVspG|hoHLH-#p}E2I@We?{6;QWtppG4w+il;kNU8$4mDDpH&#e) zr?fkk-UY83vu_MN(0=*0Lm|EGn3;-h=~CWtvuvl0W!pC!mmpJhP{#pn#`F2R)j=Hb zB`2Ad_TMg^ek49t{$ZrpqC%7M>qzUBu$6(N*!7gdA3XOdRC}fO3qB?AWn5hy@VJhn zbufZTj5HR2cs1EDgktdO<*P?jpMA>(YwU@;9P zLLnt;M!frGnJO6-bcKf~s8m@j?}gB=1F8&aSpHF>9&}_nbTEK#5;5L7Tj!;bwv~R9 z4H9y0JReYxVgXx7)XREd-$OfC>_o|XJ_^m+Z?(tYD0_2Y(|LY=!~3fQ(r^rCvpF$R zslPd0S^f|y0o)nS-;%TCA(n^@wQV=6Wh-fd8*f2wfJ%yG-VZ$0iLm&2etgnDxAust z2p5=uRTn(y@Yirbs!m$zcBfBr{R zM4c7r#hE|2EQBF`uJN7s9O(6R6M?+DhOd4NG+L&K0 zn`=63l3c*)o^_GMQ)@veX)#|xAa=#F2zQ^*>6)yOJ?lmrzan{nKjf?Ob)Pp+=aDcx zKs^E-xw*DbxS6~$ySaL7{$PQul4##U3bKv#oW)FZfu)T8M{EY!16;-n##eUZzjNaj zPg53D2HtIgRnt8-lf;? zKUeqhkJQBYYA%ONM82@r5Ie82CTI)})Wj_Q+jUm*F_0Rj$l|CVCO#trdC|a*&%|*J zAul96B3NQ(PTD76f)CZR5vUWAeD6ctXjn*9IrI_E=fZ^ZH##;eszp_4%B(`!h%#0N z4U7LmMO6a900PGF@FXL|9eD0@*QBBZ@dU?stT9{q2r&sJ`#Y<6EQ=ICz$v()--epA zw#TxvD2=bAk0X7&Gx6H9V{M?=xu$Lc59*W9B7L4&H(&!Q{@TnK=pRlG z&TB8XX&WMDJoQ~bB%grfpf+d!)frA|8f>K&dwY#AMWTM5%Qer8N^P-pHkMY0<;M9^ z1|Bgp(C>H_8wXWaS=tTcH7JEH6Eo57+?GNu>BnO0N0IypBF63^u&-$>h^Q}e%E1q7 ztn?owO;rYbUV6k&%~&ZHajI7-zmB3iC0|0@<$A_ALcICBMJZ*k+GFI?i{iNT{s8ho z9g2jdqaZuh@y1hZG^lrf28=q~z>LX3=I=gV-&<{5vVPi*MYg_d4WJBUMP+nL7Ie(> zTjHKt)DBB*6xe9`fxq!%%5V(iINb)072#MS02{^md5G%4GlF=rlApOJh%aj&MM?+? zf53@2v*ATdj%DuL?qvA#V)iNIv^@NB0BipOt}uU@fI#8|q)Qt|dQS}WEnbJ19V;gc zy2)#h-+UCt$}|(57rHtev~yh!Fp@Y#65eL~xBMB9`tMt84^Uj$>8xDcyY5PzgXbK$ z&}%Y4_b<#+YY(=bLONIp;Gz+gGhOr3%%QA)v^=aImy(}Lj{!yFLVi@_O-gq{7apv2~$%*l9fKL+utjV$y9+RD3C7tPJVTM zzGLx~5pnTYFe}0KAe{SCy5!0huY=3?yzT?h3Q8S3JU!NJY;?ej(2PFaHg{v5-**tdF_iwnIs zuK3i3kdPOKa1%lPW@MThMe&a2)AHrwo8C8%21lx}`LKRfLjL#R6mz~o8b7Fq&mskazs4{cU;a#V0FlS2BH$me!IF^Q8I~bN}G4lTFY17@5GW)v=VP z8t+6BM0z2;xr)tdPAK&nyAR}lWfhKoDxGf9e)&U?DZd`k89`4@jJIFgcs8=XjN@mp z+ani{?g8BZK1xw|m60CL zGjlk_zjv)AY}3Ks{?ji(r28lhO?>jZIkpOZKSLwjygATs;yx$*Jja%YJCJ1-Q-?$a zT!CLnf=B=yWCS@PLPsIM;r#F9e`D~!dGNor@c+yn{H#R6aZ$q$h7yLs3?V0v86JJ} Ix5b_R50kqA>;M1& literal 0 HcmV?d00001 diff --git a/docs/content/public/icon-white.png b/docs/content/public/icon-white.png new file mode 100644 index 0000000000000000000000000000000000000000..0739d719b7dfcec9e13d5964a9929da0d6335bc4 GIT binary patch literal 13592 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 literal 0 HcmV?d00001 diff --git a/packages/docs/public/images/cron-region.png b/docs/content/public/images/cron-region.png similarity index 100% rename from packages/docs/public/images/cron-region.png rename to docs/content/public/images/cron-region.png diff --git a/packages/docs/public/images/cron.png b/docs/content/public/images/cron.png similarity index 100% rename from packages/docs/public/images/cron.png rename to docs/content/public/images/cron.png diff --git a/packages/docs/public/images/domains-list.png b/docs/content/public/images/domains-list.png similarity index 100% rename from packages/docs/public/images/domains-list.png rename to docs/content/public/images/domains-list.png diff --git a/packages/docs/public/images/env-variables-list.png b/docs/content/public/images/env-variables-list.png similarity index 100% rename from packages/docs/public/images/env-variables-list.png rename to docs/content/public/images/env-variables-list.png diff --git a/packages/docs/public/images/env-variables.png b/docs/content/public/images/env-variables.png similarity index 100% rename from packages/docs/public/images/env-variables.png rename to docs/content/public/images/env-variables.png diff --git a/packages/docs/public/images/my-domains-list.png b/docs/content/public/images/my-domains-list.png similarity index 100% rename from packages/docs/public/images/my-domains-list.png rename to docs/content/public/images/my-domains-list.png diff --git a/packages/docs/public/images/playground.png b/docs/content/public/images/playground.png similarity index 100% rename from packages/docs/public/images/playground.png rename to docs/content/public/images/playground.png diff --git a/packages/docs/public/images/www-domains-list.png b/docs/content/public/images/www-domains-list.png similarity index 100% rename from packages/docs/public/images/www-domains-list.png rename to docs/content/public/images/www-domains-list.png diff --git a/docs/.env.example b/docs/content/public/install/.env.example similarity index 100% rename from docs/.env.example rename to docs/content/public/install/.env.example diff --git a/docs/Caddyfile b/docs/content/public/install/Caddyfile similarity index 100% rename from docs/Caddyfile rename to docs/content/public/install/Caddyfile diff --git a/docs/docker-compose.yml b/docs/content/public/install/docker-compose.yml similarity index 100% rename from docs/docker-compose.yml rename to docs/content/public/install/docker-compose.yml diff --git a/packages/docs/public/og.png b/docs/content/public/og.png similarity index 100% rename from packages/docs/public/og.png rename to docs/content/public/og.png diff --git a/packages/docs/pages/runtime-apis.mdx b/docs/content/runtime-apis.md similarity index 100% rename from packages/docs/pages/runtime-apis.mdx rename to docs/content/runtime-apis.md diff --git a/packages/docs/pages/self-hosted/installation.mdx b/docs/content/self-hosting/configuration.md similarity index 100% rename from packages/docs/pages/self-hosted/installation.mdx rename to docs/content/self-hosting/configuration.md diff --git a/docs/installation.md b/docs/content/self-hosting/installation.md similarity index 100% rename from docs/installation.md rename to docs/content/self-hosting/installation.md diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..5cb30937 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,15 @@ +{ + "name": "@lagoss/docs", + "type": "module", + "devDependencies": { + "vitepress": "^1.0.0-rc.44" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "scripts": { + "dev": "vitepress dev", + "build": "vitepress build", + "preview": "vitepress preview" + } +} diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 00000000..dcd8fc51 --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + /* Linting */ + "skipLibCheck": true, + "strict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/packages/docs/.env.example b/packages/docs/.env.example deleted file mode 100644 index c3fe9e0a..00000000 --- a/packages/docs/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -NEXT_PUBLIC_POSTHOG_KEY= -NEXT_PUBLIC_POSTHOG_HOST=https://app.posthog.com diff --git a/packages/docs/.eslintrc.json b/packages/docs/.eslintrc.json deleted file mode 100644 index 9abfc6b0..00000000 --- a/packages/docs/.eslintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": [ - "next/core-web-vitals", - "../../.eslintrc" - ] -} \ No newline at end of file diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore deleted file mode 100644 index c87c9b39..00000000 --- a/packages/docs/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md deleted file mode 100644 index ac471c9f..00000000 --- a/packages/docs/CHANGELOG.md +++ /dev/null @@ -1,235 +0,0 @@ -# @lagon/docs - -## 1.0.3 - -### Patch Changes - -- [#1000](https://github.com/lagonapp/lagon/pull/1000) [`fa37118`](https://github.com/lagonapp/lagon/commit/fa37118c82d37e770afdb55a1921539e5f1df6c4) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add SvelteKit adapter and example - -## 1.0.2 - -### Patch Changes - -- [#932](https://github.com/lagonapp/lagon/pull/932) [`dd96fd0`](https://github.com/lagonapp/lagon/commit/dd96fd0bf692c01023727d12415d737b21035f7d) Thanks [@akitaSummer](https://github.com/akitaSummer)! - Add `CompressionStream` & `DecompressionStream` APIs - -- [#984](https://github.com/lagonapp/lagon/pull/984) [`bcbfbbb`](https://github.com/lagonapp/lagon/commit/bcbfbbb58e39540c8d6cefef6c757a410dada240) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add sponsors list - -- [#973](https://github.com/lagonapp/lagon/pull/973) [`3a18950`](https://github.com/lagonapp/lagon/commit/3a189507a126354eaf4196f01890707b1fd905d1) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Fix Bangalore region to be ap-west instead of ap-south - -- [#984](https://github.com/lagonapp/lagon/pull/984) [`bcbfbbb`](https://github.com/lagonapp/lagon/commit/bcbfbbb58e39540c8d6cefef6c757a410dada240) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Fix favicon - -- [#971](https://github.com/lagonapp/lagon/pull/971) [`7a2b184`](https://github.com/lagonapp/lagon/commit/7a2b184fd194ac19aeed3aa0ff1f4f6a5326a72a) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add a Drizzle and Turso example - -- [#970](https://github.com/lagonapp/lagon/pull/970) [`fe5a96d`](https://github.com/lagonapp/lagon/commit/fe5a96d9cdf0227fdbb3d20fd7a06ba649da67db) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Nuxt Complex example - -## 1.0.1 - -### Patch Changes - -- [#941](https://github.com/lagonapp/lagon/pull/941) [`2dcce72`](https://github.com/lagonapp/lagon/commit/2dcce72d3d0033472c36d2817d8e13153aeaa1bf) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Support HTTP/2 (along with HTTP/1.1) in `fetch()` - -## 1.0.0 - -### Major Changes - -- [#914](https://github.com/lagonapp/lagon/pull/914) [`00b30bc`](https://github.com/lagonapp/lagon/commit/00b30bcac6176d99a3f0f009e7d21288f8eea126) Thanks [@barbarbar338](https://github.com/barbarbar338)! - Add Sidra example. - -### Patch Changes - -- [#872](https://github.com/lagonapp/lagon/pull/872) [`a90e9e9`](https://github.com/lagonapp/lagon/commit/a90e9e971d3b9288bc6a40d098aa4552fa86307c) Thanks [@anbraten](https://github.com/anbraten)! - Update contributing environment variables setup - -- [#920](https://github.com/lagonapp/lagon/pull/920) [`10d4086`](https://github.com/lagonapp/lagon/commit/10d40869d96f1d4ee590d5144a36941aee8d6b71) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Cron Functions - -- [#899](https://github.com/lagonapp/lagon/pull/899) [`be0dded`](https://github.com/lagonapp/lagon/commit/be0ddedb0e00da72304360a0647225dc4ff4b204) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Update custom domains documentation - -## 0.3.10 - -### Patch Changes - -- [#874](https://github.com/lagonapp/lagon/pull/874) [`be5dbde`](https://github.com/lagonapp/lagon/commit/be5dbdec750c62256d5bfef3496ccb2a409f12fa) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Upstash examples - -## 0.3.9 - -### Patch Changes - -- [#863](https://github.com/lagonapp/lagon/pull/863) [`4e6968a`](https://github.com/lagonapp/lagon/commit/4e6968a3688f52530cb4aed09022fd5dc54c0a80) Thanks [@akitaSummer](https://github.com/akitaSummer)! - Add AES-CTR to `SubtleCrypto#encrypt` & `SubtleCrypto#decrypt` - -* [#861](https://github.com/lagonapp/lagon/pull/861) [`22f5cc1`](https://github.com/lagonapp/lagon/commit/22f5cc1eea6d65963060d289945dc956312a50b3) Thanks [@akitaSummer](https://github.com/akitaSummer)! - Add RSA-PSS, RSASSA-PKCS1-v1_5 & ECDSA to `SubtleCrypto#sign` & `SubtleCrypto#verify` - -## 0.3.8 - -### Patch Changes - -- [#839](https://github.com/lagonapp/lagon/pull/839) [`52b170a`](https://github.com/lagonapp/lagon/commit/52b170a993e43da1bf465d2e5c7dd848c9eb1168) Thanks [@akitaSummer](https://github.com/akitaSummer)! - Add SubtleCrypto#deriveBits - -* [#848](https://github.com/lagonapp/lagon/pull/848) [`cd214f2`](https://github.com/lagonapp/lagon/commit/cd214f2f20aa9bc32f96c0bc7841ac308650d3b7) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Support AES-CBC for `SubtleCrypto#encrypt` & `SubtleCrypto#decrypt` - -- [#836](https://github.com/lagonapp/lagon/pull/836) [`76f8260`](https://github.com/lagonapp/lagon/commit/76f8260156ee23aa64b086a2755f9c7f0f4b3d68) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add a warning that custom domains aren't supported - -* [#836](https://github.com/lagonapp/lagon/pull/836) [`76f8260`](https://github.com/lagonapp/lagon/commit/76f8260156ee23aa64b086a2755f9c7f0f4b3d68) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Improve environment variables with support for copy/pasting a .env file - -## 0.3.7 - -### Patch Changes - -- [#821](https://github.com/lagonapp/lagon/pull/821) [`6b91b4c`](https://github.com/lagonapp/lagon/commit/6b91b4ca976a09520c50c7d647400d1d43b692d2) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Increase assets per Deployment to 1000 for Pro plans - -* [#824](https://github.com/lagonapp/lagon/pull/824) [`eca2255`](https://github.com/lagonapp/lagon/commit/eca2255e19a0e59baf7a6382439fca3519478f9d) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Xata example - -- [#828](https://github.com/lagonapp/lagon/pull/828) [`4bef900`](https://github.com/lagonapp/lagon/commit/4bef9002e9bd5e633327158cad69fdac15dc5977) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Disable ESLint + TypeScript when building Next.js website - -## 0.3.6 - -### Patch Changes - -- [#798](https://github.com/lagonapp/lagon/pull/798) [`b931b92`](https://github.com/lagonapp/lagon/commit/b931b92c4aae5e809ab99438fa3b0338521ed62e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Turso example - -## 0.3.5 - -### Patch Changes - -- [`209ee44`](https://github.com/lagonapp/lagon/commit/209ee449043f90b83df8ac8301d136c10dd44aa3) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Set `process.env.NODE_ENV` to "development" when using `lagon dev` - -* [#782](https://github.com/lagonapp/lagon/pull/782) [`b92e0de`](https://github.com/lagonapp/lagon/commit/b92e0de61c0254e49ac3626de2517081465010be) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Automatically load .env files with `lagon dev` if present in root - -- [#781](https://github.com/lagonapp/lagon/pull/781) [`b5894e2`](https://github.com/lagonapp/lagon/commit/b5894e23da9920c9338f350d25a5276cd70d3267) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add PlanetScale example - -## 0.3.4 - -### Patch Changes - -- [#745](https://github.com/lagonapp/lagon/pull/745) [`82c5737`](https://github.com/lagonapp/lagon/commit/82c5737b4aecba78cf3d88362d9064254d773baa) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add vite-plugin-ssr example - -* [#754](https://github.com/lagonapp/lagon/pull/754) [`9cd29c6`](https://github.com/lagonapp/lagon/commit/9cd29c605ac58f94c6170d13c1f8cb4ca1c0cd0f) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Store logs for 7 days - -## 0.3.3 - -### Patch Changes - -- [#733](https://github.com/lagonapp/lagon/pull/733) [`a75de67`](https://github.com/lagonapp/lagon/commit/a75de673cae0e7d2b2ef140b0e54df63875db27a) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add pricing page - -* [#738](https://github.com/lagonapp/lagon/pull/738) [`78c3787`](https://github.com/lagonapp/lagon/commit/78c3787422bd5806a6ab8ad6a8bb73009ee89257) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Improve Deployments docs - -- [#733](https://github.com/lagonapp/lagon/pull/733) [`a75de67`](https://github.com/lagonapp/lagon/commit/a75de673cae0e7d2b2ef140b0e54df63875db27a) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Update CPU time to request duration - -* [#738](https://github.com/lagonapp/lagon/pull/738) [`78c3787`](https://github.com/lagonapp/lagon/commit/78c3787422bd5806a6ab8ad6a8bb73009ee89257) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Rename Static Files to Assets - -## 0.3.2 - -### Patch Changes - -- [#684](https://github.com/lagonapp/lagon/pull/684) [`9da1136`](https://github.com/lagonapp/lagon/commit/9da113606e60078b62f7cc57ba4a31baafd64025) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add `AsyncLocalStorage` & `AsyncContext` APIs - -* [#688](https://github.com/lagonapp/lagon/pull/688) [`0dffdb2`](https://github.com/lagonapp/lagon/commit/0dffdb215058bdab6617e342b0b17525ff6e4cf7) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Allow `lagon deploy` & `lagon build` to specify files and folders - -## 0.3.1 - -### Patch Changes - -- [#251](https://github.com/lagonapp/lagon/pull/251) [`a3b73c6`](https://github.com/lagonapp/lagon/commit/a3b73c623136db5a4840e1d43138ecd96b66059e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Improve documentation for deployments, static files, npm support - -* [#251](https://github.com/lagonapp/lagon/pull/251) [`a3b73c6`](https://github.com/lagonapp/lagon/commit/a3b73c623136db5a4840e1d43138ecd96b66059e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add sitemap - -- [#251](https://github.com/lagonapp/lagon/pull/251) [`a3b73c6`](https://github.com/lagonapp/lagon/commit/a3b73c623136db5a4840e1d43138ecd96b66059e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Update Montreal region to Beauharnois - -## 0.3.0 - -### Minor Changes - -- [#604](https://github.com/lagonapp/lagon/pull/604) [`73856f5`](https://github.com/lagonapp/lagon/commit/73856f599f623288cd855209dcf1426564dee83f) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Improve functions configuration by saving parameters into a local config file. - - When using `lagon dev`, `lagon build` or `lagon deploy`, you don't need anymore to specify the function's entrypoint and the public directory. These configuration are saved into a local `.lagon/config.json` file. - - Note that `lagon dev` still allows to specify an entrypoint and public directory as before using arguments and options, making it easy to test locally. - -### Patch Changes - -- [#580](https://github.com/lagonapp/lagon/pull/580) [`74efd18`](https://github.com/lagonapp/lagon/commit/74efd186f97b86dd085c7a90e1f35c78507f5bbe) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Use lagon.dev for Lagon-hosted functions - -## 0.2.1 - -### Patch Changes - -- [#578](https://github.com/lagonapp/lagon/pull/578) [`5159a91`](https://github.com/lagonapp/lagon/commit/5159a91a4c2d73fd0f482a60419e68ce055ecfc2) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Headers#getSetCookie() - -## 0.2.0 - -### Minor Changes - -- [#538](https://github.com/lagonapp/lagon/pull/538) [`d48af93`](https://github.com/lagonapp/lagon/commit/d48af93b3547051a4a93542086e5dff5acafcb67) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add an examples page - -### Patch Changes - -- [#552](https://github.com/lagonapp/lagon/pull/552) [`6734a50`](https://github.com/lagonapp/lagon/commit/6734a50c004c556c2e09c57bd7f6991c55fa7156) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Remix integration documentation - -## 0.1.3 - -### Patch Changes - -- [#486](https://github.com/lagonapp/lagon/pull/486) [`d5be717`](https://github.com/lagonapp/lagon/commit/d5be71752372260eeabe363e40b3e5b37a6a2d7c) Thanks [@renovate](https://github.com/apps/renovate)! - Add `FileReader` & `ProgressEvent` docs - -* [#490](https://github.com/lagonapp/lagon/pull/490) [`9a67eb7`](https://github.com/lagonapp/lagon/commit/9a67eb77e5927eb6e0da296df7d9aeb02711a86f) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Limit the number of `fetch()` calls to 20 per execution - -- [#495](https://github.com/lagonapp/lagon/pull/495) [`c8349b7`](https://github.com/lagonapp/lagon/commit/c8349b75f4d84ca54643da799c3d05515daf6420) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add san-francisco-us-west and bangalore-ap-south regions - -## 0.1.2 - -### Patch Changes - -- [#460](https://github.com/lagonapp/lagon/pull/460) [`a7b3e3b`](https://github.com/lagonapp/lagon/commit/a7b3e3b4b30bc41dc7e9fd8357b87c474eb36b1c) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add timers APIs (`setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`, `queueMicrotask`) - -## 0.1.1 - -### Patch Changes - -- [#438](https://github.com/lagonapp/lagon/pull/438) [`462b024`](https://github.com/lagonapp/lagon/commit/462b0243445a79d208470711be173d4c9e25e3a1) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add `Event` & `EventTarget` APIs - -## 0.1.0 - -### Minor Changes - -- [#403](https://github.com/lagonapp/lagon/pull/403) [`5e2ca1b`](https://github.com/lagonapp/lagon/commit/5e2ca1b23fe34e299b9b0f090238538732a68ace) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add Blob and File APIs - -* [#396](https://github.com/lagonapp/lagon/pull/396) [`f538576`](https://github.com/lagonapp/lagon/commit/f538576ee86179e8a53c03dd19e740ff9252f992) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add `navigator.userAgent` API - -### Patch Changes - -- [#374](https://github.com/lagonapp/lagon/pull/374) [`fa2d2a8`](https://github.com/lagonapp/lagon/commit/fa2d2a8b66df18460d7d71b4101d730ff8cc8768) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Fix position of `lagon link` section - -* [#390](https://github.com/lagonapp/lagon/pull/390) [`6c2f557`](https://github.com/lagonapp/lagon/commit/6c2f5577b1997f3b9c46fbfeb7cbedd93a1cb92e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add limits page - -- [#405](https://github.com/lagonapp/lagon/pull/405) [`4b59eff`](https://github.com/lagonapp/lagon/commit/4b59effdb9e32a73cf3b98a8945883ac38c33bd2) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add SHA-1 to CryptoSubtle#digest - -## 0.0.6 - -### Patch Changes - -- [#357](https://github.com/lagonapp/lagon/pull/357) [`4e1372c`](https://github.com/lagonapp/lagon/commit/4e1372ccac668570202b39a53e218151499cb0a7) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Improve contributing guidelines - -* [#365](https://github.com/lagonapp/lagon/pull/365) [`c6dec43`](https://github.com/lagonapp/lagon/commit/c6dec4316bf6c2e155a7b244c0b74842f0b3527e) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add --allow-code-generation docs for lagon dev - -## 0.0.5 - -### Patch Changes - -- [#300](https://github.com/lagonapp/lagon/pull/300) [`314012b`](https://github.com/lagonapp/lagon/commit/314012be1079505cc99ec4024818dfa6e65a85e1) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Complete docs for the new CLI commands - -## 0.0.4 - -### Patch Changes - -- [#222](https://github.com/lagonapp/lagon/pull/222) [`e8c36ac`](https://github.com/lagonapp/lagon/commit/e8c36ac11612a5a41258383cc312dbfe539d789c) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add crypto APIs - -* [#250](https://github.com/lagonapp/lagon/pull/250) [`4837cc0`](https://github.com/lagonapp/lagon/commit/4837cc037c6fe3f1572074b8aa4da6e3fe9909e5) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add AbortController/AbortSignal API - -## 0.0.3 - -### Patch Changes - -- [#238](https://github.com/lagonapp/lagon/pull/238) [`045977c`](https://github.com/lagonapp/lagon/commit/045977cb200281d68c9a834573ca43ff300f9f73) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add --prod option to `lagon deploy` - -## 0.0.2 - -### Patch Changes - -- [#225](https://github.com/lagonapp/lagon/pull/225) [`eebaf9d`](https://github.com/lagonapp/lagon/commit/eebaf9d535c9376cdccacb5a7578eae30835c9e1) Thanks [@QuiiBz](https://github.com/QuiiBz)! - Add vercel audiences diff --git a/packages/docs/README.md b/packages/docs/README.md deleted file mode 100644 index f6f7b488..00000000 --- a/packages/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -## Docs diff --git a/packages/docs/lib/posthog.tsx b/packages/docs/lib/posthog.tsx deleted file mode 100644 index a82c2893..00000000 --- a/packages/docs/lib/posthog.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { ReactNode, useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { PostHogProvider as OriginalPostHogProvider } from 'posthog-js/react'; -import posthog from 'posthog-js'; - -if (typeof window !== 'undefined' /* && process.env.NODE_ENV !== 'development'*/) { - posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY ?? '', { - api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://app.posthog.com', - }); -} - -export function PostHogProvider({ children }: { children: ReactNode }) { - const router = useRouter(); - - useEffect(() => { - const handleRouteChange = () => posthog?.capture('$pageview'); - router.events.on('routeChangeComplete', handleRouteChange); - - return () => { - router.events.off('routeChangeComplete', handleRouteChange); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return {children}; -} diff --git a/packages/docs/next-sitemap.config.js b/packages/docs/next-sitemap.config.js deleted file mode 100644 index b302c65b..00000000 --- a/packages/docs/next-sitemap.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('next-sitemap').IConfig} */ -module.exports = { - siteUrl: 'https://docs.lagon.app', - outDir: 'out', - generateRobotsTxt: true, - generateIndexSitemap: false, -}; diff --git a/packages/docs/next.config.js b/packages/docs/next.config.js deleted file mode 100644 index d1810742..00000000 --- a/packages/docs/next.config.js +++ /dev/null @@ -1,22 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - reactStrictMode: true, - swcMinify: true, - output: 'export', - images: { - unoptimized: true, - }, - eslint: { - ignoreDuringBuilds: true, - }, - typescript: { - ignoreBuildErrors: true, - }, -}; - -const withNextra = require('nextra')({ - theme: 'nextra-theme-docs', - themeConfig: './theme.config.tsx', -}); - -module.exports = withNextra(nextConfig); diff --git a/packages/docs/package.json b/packages/docs/package.json deleted file mode 100644 index 1234d94f..00000000 --- a/packages/docs/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@lagon/docs", - "version": "1.0.3", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "postbuild": "next-sitemap", - "start": "next start", - "lint": "next lint", - "typecheck": "tsc --noEmit" - }, - "dependencies": { - "next": "13.4.12", - "next-sitemap": "^4.0.5", - "nextra": "2.10.0", - "nextra-theme-docs": "2.10.0", - "posthog-js": "^1.55.1", - "react": "18.2.0", - "react-dom": "18.2.0" - }, - "devDependencies": { - "@types/node": "^18.0.0", - "@types/react": "^18.0.9", - "@types/react-dom": "^18.0.5", - "autoprefixer": "^10.4.7", - "eslint": "^8.16.0", - "eslint-config-next": "13.4.12", - "postcss": "^8.4.22", - "tailwindcss": "^3.3.1", - "typescript": "^5.1.3" - } -} diff --git a/packages/docs/pages/_app.tsx b/packages/docs/pages/_app.tsx deleted file mode 100644 index d3f79265..00000000 --- a/packages/docs/pages/_app.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { PostHogProvider } from '../lib/posthog'; -import type { AppProps } from 'next/app'; -import 'nextra-theme-docs/style.css'; -import '../styles/globals.css'; - -const App = ({ Component, pageProps }: AppProps) => { - return ( - - - - ); -}; - -export default App; diff --git a/packages/docs/pages/_meta.json b/packages/docs/pages/_meta.json deleted file mode 100644 index 64b983db..00000000 --- a/packages/docs/pages/_meta.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "index": "Introduction", - "get-started": "Get started", - "runtime-apis": "Runtime APIs", - "cli": "CLI", - "examples": "Examples", - "cloud": "Cloud", - "self-hosted": "Self-hosted", - "contributing": "Contributing" -} diff --git a/packages/docs/pages/cloud/_meta.json b/packages/docs/pages/cloud/_meta.json deleted file mode 100644 index 01673b66..00000000 --- a/packages/docs/pages/cloud/_meta.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "deployments": "Deployments", - "assets": "Assets", - "environment-variables": "Environment variables", - "domains": "Domains", - "logs": "Logs", - "cron": "Cron", - "pricing": "Pricing", - "regions": "Regions", - "limits": "Limits", - "security": "Security" -} diff --git a/packages/docs/pages/self-hosted/_meta.json b/packages/docs/pages/self-hosted/_meta.json deleted file mode 100644 index 0a109ba3..00000000 --- a/packages/docs/pages/self-hosted/_meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "requirements": "Requirements", - "installation": "Installation" -} \ No newline at end of file diff --git a/packages/docs/pages/self-hosted/requirements.mdx b/packages/docs/pages/self-hosted/requirements.mdx deleted file mode 100644 index 8fb6ee0f..00000000 --- a/packages/docs/pages/self-hosted/requirements.mdx +++ /dev/null @@ -1 +0,0 @@ -Work in progress... diff --git a/packages/docs/postcss.config.js b/packages/docs/postcss.config.js deleted file mode 100644 index 33ad091d..00000000 --- a/packages/docs/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/packages/docs/public/logo-black.png b/packages/docs/public/logo-black.png deleted file mode 100644 index 98afedd79f3b8e3e64c4c8a257831a188357a06a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46008 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 Jp6g+P{|i0VS;_za diff --git a/packages/docs/public/logo-white.png b/packages/docs/public/logo-white.png deleted file mode 100644 index 4b67a2f6c84f4f71abd259e9afc1440217d8d894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36251 zcmeFZ`8(9__c;ErFNw;MZ0%wcqwLutyD7{}WS#O9lQm0apAgSvsTc;?%`juF?7~PW zOZFv%lC@+jYwB}PjpytA4}5?7&UJNlnaATk=iKL<``l-p2PT*F_HqhwLJ+jqK>wl{ z1aTlBh_Qp66@0Vbx#uMTpT2==wh8mAo4-9_|C(KR%6S&GFAtZ=sLi6l5AkDQ zI21L9QJ=*Wru3B4dtKN6(=sNsMXY0X(sy9ksIjF=YS5{?yfoNvoE@O~|3Ckqae(j; z2I-PqN2&t?Omwff@06*mO?n-2?pT|lP?C4C>S{Z2Dp3yLS{rhI$i}8Cs2Be}eLeU> zUR?px6~v|wGH9nhy3_8Lbr(&YXrCB8C(hXp-6QiSio!Do>Wl2h1{m^xET?<^T=7Sv z19xA;EQXPA{*n!OA|b6U>8-a!BmMS`n!k|s%$x7s8U!zL{{;tO9JP?tJ7umlMV$CX zllqGX!!5%web3|_J|F2I>8Ci$|%&qFq7Sm7@^ ztc-ohA%~}EzLs7vx=8tdk)8Bw=Ya!vh#HO)h(c@a0kw*C@kLmDn zN&AyS9^4#Jh{zJiY!a)vTCui$9F@)ZcOfP#jD$HhTyAsGTy1{cL??2`vZ?<_{|p^0 zZa;5w$m0V~KK*;eR0{<&W%&C&To+(F;5srewO_-CK~}z28HF;Bq_3q? zIS>t+Wv(gOre6%rlux7Cxa@ds{+;if)k1-D`{zTYvLhOBE~vO3&seg>eHe=VJy%p0 zpUBmb@`omfNMEO{J*KsVl>heXaY75}fw6L3PsmK>Tm7yay?*QJ{dsWe|AM>+Kr*;6 z6Voo5n;M#M7Fn|8jqNd^Q{JVRDLMNfgKzYGB7{bx57NJe)BuOooJVf&w_I#cFRp(5#kwsg5I=e)k0lYcmRL>SVc=2F{U*;Ac{lWNgITl3;G%=z3K2d-nstJZl zr^A~N29kP6F@qmMgB3UzAjQJ+{#o*iEM-@_AfO`q9~ z82o#3mXAdPuJ1}8en<;x9A3iL6(=73P;QL#GF=+RpSh^C z>ikdc)C>T^0)Wt${~rh^EhLxONO_yLl2JA{?$%AMyY!=kc@#zxj4yXR_(wSKy^Fnf zZP93O)%^Kzg>>!po?O#~Qdj>3?oKT!bzF*E zro-XCtEm^*5#3US8_;di?pKsr>f-Wv<#iclZI+a-v%dh z&t&o+rUuIY57-z7;+Y~a3*BX(teBx~@BKD+DID~5-w^)lYsV@c8%D$)g|l=;I0zl? zv996z?lXBT)FGvoaM9C^Ja`lDB^`a;9h7t zUFy)CtRBAeM#4WH&Qgr}8K|;_TK$rLA>&fXa!r>EeaJijE1dbEiO;Su9bt%DQdn*E ziix&PKb`_RCIGwz2&f~eMNLpXJq&A*#R*ob05~maAG3o<GUzq-`yJ75Kmjqkb zP!FT>QAPSQZRnZ-w}&A*qHYI3F5SEM38IL)~fa;-!;J z6TNO)CMyP0=80cJm}VUznHUkK}L84dzukilVS6;L!o~t(;w?z za=OV#J53+8om$v5>jBy;=zhALqy7sh_5^AHcm+k6<}PQ3`OrzyHFCQ7x`*^54yemS z2~9H2UDNImnoc)Q08+E}7^gBrT%EacV&?xN72LkjnjFS~ z`q|u&V3BxqLCyimh8(U-vg?2TJ#+gu2V7UYkFb*i=C?XKQ&Omq8^VcV*Al7qo|=V zB=r8WRq$eUy_fOK-1vkJeK}WHS04^oQQm$Rk--L1aNV+FdOl@Ko*S$mWUV}HMPm?cZv$MdJn#v7XZx`dO1s;Ad) zA6263Cot%J5J1Az^V(r)F1=DHYKxDe`Rt@k;C_Ljqk!N4}t*aLdHR<*Ox?${evvasy%^)I{K}4Hd zyU^-up%x3>l0y?h8m#_EM&x1OY;|y&DIeKAmJsz$o?O`}+Qq{{nuoR?N$D19rKr&f zok$BKt!ZL7{W2qWy{xW1nPmT)zzVAbaNU!vjJ1}%Df-0nJ`9AEe?FSAL0sRy*svQn z6e(COOu@`{oiJ!ZGmP{t({&_qu7rKUKY3QmESR`#oBtm!0(hL~I`YE%t^n01xzf_$ zzxxk&FE1qZkIgD(v}jvc8;f|fOAee-3wa)p1I`v}`-sX3;s-H0A#j!9)rAb#5f#xf zmiEis27!i?v9mCPT`vy8JvPJ6Cm3SpwS|1Bss*2(e;C`nX&`YeB6-B0ml0`f#Y=pG z^1eXsq^k=Azo3Pz=qg{hs&bl< zar8q3P3t?&3)6)(iPtvGpA9iPsI|*FXn6GlU;vHasLQ;GXV$OmBBk=f5Ffx^>U%S} z1?#NUU=<&%*oglHY!kXLgbhHOcog1LGL_M{4ZupduG1L-xm_lb&-}TN^Kl=sJ$Hp| z^#2P8pwS0iec|POlp(cTwMSPm){8eWE^E z`t*;t;p!!Ys6b1$jDeQlBU`l{xIU4-TWoWVNj!){%1^hB{oO3?YDyrHT>7|LKZ1v0 zXIoJMukh8Jp}j{J4T3)|wH-b?ww&3{vmK4@^edcDcr}7#$R8_0pfGJ6m0&sd!t^LC zB5P$P{nJhTo2LtxNT)kH>Pfy;bYBdUFfEqcdXKC_4dO6t2y;b8QnL5x^dIGuS4i)< zo2N!sq4wTbStPc1`!q9Y=KO%lc=qeMXW@@`k(GegN&WK1f*WQl58ma@!{<7 zN<$#KVZ$3d#ni`}A=yqreXzk=^^(`dHeHZ69ByZl&6H2Dk>+t9rZP}t*1=K|ER#n? zniN0#?hMN1D$@0(y;(#X>E3hgkcYpo_6|}=W<}PuAeb9dVyJX`|0~ncF<8d}&o2Jx ztM^Ggx?5P4mzI@rR3hTxt`y3`tOd7$4_e^u}t4jyHt9i z$MyxMH(OnhR7!KU{Ceh9K*w?)_OpEBDxEpvt}B`3o`gl!j2Gab%SodS+-sEbS~(`o zWOj<7apiPsZZOID^)4&LoqGT)8$N5p?|fPFFJ>lAcobn@RIt069f}wwxlbk2IoT`! z!w@;V(qTR}8OeLlS43QzdU6V;OeEzrE$E%HnDn zaaY&ONS0Vbt2$o`;KA|p;CQ?x_dkX%V4@iDD>ue!8nl^KOh3v7|b2v{v1ye7#j%{7t-iAyT!s~ zV<}VGFx)HWZui&yb0Gi&p4ea^2cVZugo+XaJ9YBJS+pMyiq+FHp5Ozw%;rXb6jPM6 zCbgun=WZs9ZPXT9lQ>f`-fAi@DHs#?T{JME$hnwqy9J5e;Uq(U$_q^1z?lu{9@0uK zROg((Fm?=g^t{pd`_UWayJGWhw#LrOmF5X$i38+Ty|;OErObodT(`t_S*eoEg}~oD z-5GN9>V1KLB^%Q5FWSE{qcSWY#bzk{UNCYj(7I{ zSW^A_I<8v~4b*Vz{GJ%%1L@N~M^CfZNdf#I9V5Wd-h|!yHREhg56-C)QH4Ey*u1ko zT={agP7Q2!yzz`#`6m*!KU}7t0Kxk(-7Hkn)_J8IG`mrQIWrL_tm@st9Dc0Od>FHU zO-`5j%SDAKat~11h{q$}Y7vuo1#J%l6VA%}FRxss`&aP0+3Y|n+Y;3!j5}|ykq3bQ z)!9n84W~9|4A>1B#w+w!o6Y3uqzTqNLnZqi`mSTasSuyhXW-3mzp{J*8XdcutT$Fe z`iqlVvR7RWFQt&9E&A1p*T!Q0RkL(JlCwZ}*_c&$2A{_rAEC}3C3={MDWM3Km@QA) zvm+LIVbK+qZ1*zwx>7`Re_fS0q(mxxhYc;u{TBR(i$emkAeQbFG4s5p?`>yXwo+aewdN0 zJ&5+W>vaxZ0U3}MfZ0P1_yn0fe<`rrlnpn)lRx~y-4nzknCDYQ-nE>p4jy$fu0%b7C}E`IBL2`-Fyy0@{`(FOc=HpC6&PjZz~r_~2r>#Av#+ z4Bw}nFGp$r0CbW{81BMu%1AvIHB2-OxZh-MpE85_J^04##mVqim^=@=QYV2In1ZLOl}^sTx95t z8;O#39saAlR5;f$IrOUo505x!`Sbem!*5Xx8P2Vqh<^C@s6a7p5;XSAzcQ0SWnj2b zc*YwyAJ1qsIQ@ODRF@qA9!GX!UtXF-4`197ftwO3eaE7EL1K|mEW&3;S8WfJcAlL4 zAPo7+tX+%42)Jpq)Z-EJ6iRPdJ>7InI0gNCJoy%$ERwLL>`F-6V=Rl_+)izd_`Y0^ zeHsC>48v#tqQzya+;oCXn>)-0f*h&iD>Gx$A{f5;1qhz)rm20$prPBAlqLEtrsrAO zg>pmiu5zG&T3Mj`?HBG6vc3nZ8~jPB32ojz0F45-B7y$CNQbNxq9d~v1&#|W7EOKa zQaaIwC#C^g1y%g;r!z*+D<0hcXUn4IS_{`{!S#z0J|xm|DV6v*-w@lt=Ao$UT}{7* zCM1HQCJ8rb8}mzT&Zkh+*^Ko$&Z~3q6QQ*!Q|~hYe^KL@@;^}xmp&~L(jLm$qCiM) ztWOSm5*qUm!lZjrw;V4xXYgS64zfC5?zQ&c|A&&2kAe%Em+US7sO86WpqBhZmhrRE zqd}MVsN;e@Qv%!Q6mx$Q%p~i{?nQXJpPr%i!7z-57BF*sYyZSpSP7rzc+hTMa3Uy* zsTB`=gqT}xXS{85mkrO0lCnxW+R+mU-Dq`&3AliA$xQ^ET@gOBhDb+Qx5eHKc~_UT zkS_PpFv6w|{yC`&l6%w%3VK*X{Uee9JLNiF9gL z0DVWL5UI@@pKqFV=2L*XiKhNLwFXj`M#s(Z2NDib#GT7>fppP!O5Q-XK0l{rWc5YBod5?)_u= z{V#4R!w)fVY)N8GOW3BC6FG~c214#VEx$oxm};Tgl|^R}_sl*#NkH~zm#$mWx)&N< z%%}@^Pm9>Poxx3% zM7Fm}>3D*;g!!zRHePP4$T{*Tn3f*@W7A&LW+ zUR*O0PZZ4mo@%K(`0Y72M4GRlOWkkKkx16zYI!IZ#80>$eNlYyVbrB)$BlZMak{Wakd>lNu$}I(MzdTRg@gMecBni<6k$PZAUSZ6~eyo zH-#D1a@>=IZdcHcdB#EiJ%}ls{`Z4iAkGAa<{bY)!RiAETaVPIO#!fuzjhhI*?xV| z(-$`zF>e<2>Wan9{g8)7{qANS9<~n_cxHzXx_qA~SZ(I8aGIG24Hd`z-7DnxEYT1N z5+RX0#D`q@aaeRN8ZFPj)K|W6R`i_~kq3&=_E-N4WVV6l z77vlJ(?$w0HE+hlLK4jKc9ZGZc%)uOV`NM&y#$I`{APunm%c|92TA*U97y*mn18>U z)O-w@*bw{t$j?%7H$9DU|AxlGZo7A^D@5A?c*!r1rs{GV1p;3I3McM@EB+>&Y&p8J zI5p1>42mTsp86=hr0*)IrwDa2LgD|RE&eu|R_r=5n!MO>=GQzuE6Sy>5|Ie%5;YyZ zTu_S{I0ylHL9(Z-9YuVUi!>ZH@RM8X$8Xy?DhQ`*xJUiQYmEG?ZGIRB=MnbmG_Zar zOUottyu+5OyT3d4#V*AjXF6h8(LYtOy8QdomhX$05v$^sfn?90j+295#+|>8Ga?^N z_p20*@yty6UHTwa(d`mgE}mL)K7#b=cHyRNF7MP;DlW&s>oIp#HMr?88)5zokcE3u z|E)vD8z<|yVc*GPQ!=@~#{xF^rmlH<3;TSr3tsU!)J$}_IJGH$IQad>%f+hPx(++T z-)di~PR7<}rP!@B_vb=N&kHrNqBexmn8v~px59$=bp@TDl6_Kq`2{1-R;0y0Q!XBO z7W~8Y*Aw|UIn*t^Ip#MD?eoIFl+r~2DKN~D*65uSaIP@c(ml!ZSmRE>J#JBb_Ly`Av_;!^K(t5+9hkG?P%5 zdx0Y>n6A-N4U&pqHJ#=;GbJ%43XEnCXBCD8GSya9mX;i?S;@(eA5!7xYTyiNCQ~)B zAgiX{wu#x*<@CFxNTu&Z0fPd!s_to!Oy=sQK~%$iaH-aOc8U<%2fN?|%k}_TTMCJKU}6-Lm}m)p82rJmWUb zzO-SYZuB!iR42S6-{#ffW2DXUuSfeF0?5?lAktXZeNk6hg?rs5*%{+it6X8M5hq?9 zO&Ofte`JIcFa1iaw@AQ2wXI%XqZ4gW%phDIV)l?wp&~s<{4yWt&XULNKGTJg?60ZP zx43^hfa{{NhS#gRe_Ro^a?{5X6@)wR%*$T}lzd<7E?ujY%%w2!ovch!Bqm%_AHLEu zrP~jyMo=C?HyrF2%EzdR=HEJx)!7!;qQjV`a|;YQwaTVa3W{}N4RJ8G-1bDa745HX z&z6nI+Y)rwrO5e~30qX3pDicDyE@N3-2^Yo_j;fZK zpTAE6N&csL)Wie_XI1JptmpS9 zUoQdWT>xe4#*64P5BH^AKcYZcoH1q7M(UZ9-&yT=U@PY#Qgk3rlxbt0JmiUOJUGV5XR=pG-(IN75emgsRo=@c85*IG zZFa1$Kl~vesNuJC7(+AccTKIN3@elW^JhW+ywiGaS0Z4U00zR|RVAoxcDhB!<4mSx z%*`*?G({n5xi|z>9xN;xic^su@knLx@?&8x!*2RncNkG-UcbfWiPiEUpZ!p~GB-1yC$@^x7TDhm#q%;V} zC)^APeOuAn`v3rm@uZjPKRzUpR240=-S#JcnlO|^2j((N+y<@=#!>hhbD{NY+u3T9 z*Jm+$M78jPhPj0?(wI#NoYj7DhtB!g>5qwwj7x!Y{wpU+pQnfFu&>)4m1}Bn!J8E_ zL6y$)|~-AN$hOC(_16^*BE}q3);q&mtEs#&OJ!Zmeh1a~`b%j~6{h=Z_U! zp2_0=_$!zLackeyp4@mC^!1w;1bIkJ-7mb8slpIZ5#@HyZNEooG$$fY9Ht02}}V(`vLjk@6RKyc)6XsRmMpMHC zyUK${J`Z{7PelI^@;U);lD{GR6ew(Q>p=q_Noa@%cwabS7njO2jN#;%qMe5ckI$jB zQr%zO;2ZSE+o^LClA>=1_)y`ewYyT2_7gq{-#A2DFVmCg__%reS_lg+uqT-Z)a_1& zU2lw*eS;nv$NoMmqYUS_IbY{M{ZaSyxWZf#@4|*)iAr@w&Ag*=8kMgCUNaHj#kc;v z`;LkRa~=~klv@wPE7jUqbLU!P^sOY<{LrfRc_F!x`^H~zU#d!z#R@OPvzQ4!S3Ou? zYHQ!xvl%GFh#Y;l`7|U)3pskVNSc4^5|d^+C`3`~U-GxT;kbmb<}miHinr;*zT_ZC zEW{tmd}-@{s;jjxzMNXj=(gy9%|Gv}h5Tv^*q}rJM`h!f+QT;~tuqXh;!5(S0D9x` zRYoLAVYUo;BdV^HaZn3SmY7+o!F{NO4XzsSCSN~AF=C)L1Qh-0hif0zHA-}#%CTQU zL{a(tAI;p?W8gJ~AwT zy&t(ttzjn!G>{+cBV3Oi8+z)<+2b3K%zY3P%QpJES#rhg9PS&mt&8|jKlIBk8#-tq z0}|)WAP>G^R)`wq%1m-GgQJy|rhG^K;Jj|LbXG_SYEfMr7D@HHmh?vMYB5*)Z#Y1O&alkldeFMFRj$1{^=jm94N@xhNVBHLfzpWr+G zWROBJf9_sPy1NLIYvQM|>qr43gdz2KJpgfS)60VVgF}6S4_1Emsp_PUu_Mn4fTd9r ze4*ykQ!1F>D{5a-2!ffCzleZPuI9rG5M2A@za?CRbd~5k4HI~TMCawXkrRqJ1hIRP zHw--@8+sCAnJjWvzp9E~bc&Rrk$C~6Y^m++$Eb-BosJC{VsLtI2}je%&&mxxj~fmU zu1`xF%5n+{$z1nfcf@i(HJ-A`Bqz0<@)Dv^>mm22EfjZX|3zGI>IhDl^jvZYHc|4f zbk6=?X41sNJ4nvG@SwQ>>u`Y{k$3-4vN#bP7QRQ4@{N*I88AvfAK}MC*q88%bNPgkMZ#c;tG=i4+g?m zi~-pi1M17>_dO9zR=wQM(2@z3KYrJwcl0ZF3UjVtq=-`?6ZaQy&eim;zV>)U$n$)i z4g_h(S*;cVUaK?jpYV$fI}x5)nqfvxw?B`(7h^A#lBHF{Rf6zSB@ip+rEpq#iZ9(HTGymMj58? z$@fEwIf7-hTINQA-c-{*CBpL?Hmo9pd5bBauSXgYzsX!iV8MOdrge%y5U;t|{ID@@ z#P`IBTXM=JSJ=27emTWvzLqo(xlO7DI;Js;#FQ~;dzjhA2!nox2dz9udf)UDzss=T zZrv3HI{N7F`~bt~fUxTpcRuQY1v6LY>_|FX+CjavlexwhUw3}^QSW&)Nsy3eU+WH- zkl}qcO?NP+ljRW9{LxEjkqN?lYCZSR0jkMs4FAy(-;ukD``A++7b=k%y9(XLYcnl| zjVVI_!V}e*=oOGcx~a9&qzIalCi7=68A2G5vA<0{;>PKWaiu5Y$o(C&`HD&WS9NQyOXekkR%bmI}`uT8QY{M*Z&$l*{EMchmCg{kd z@$m}m`sq-6=Pc*Fwdyy1kA4bXM=B2px2PzUI?mO6AKuZ{KsDO`11=rz*$W(xq#1`I z66en2(|-qX4i)QA;Zrw}#m#*-I-m`zH9FwZHmH^e<_`iLzebd+slf2$8rbvO2*QHj z3CpE#vk&J4kHpQ6o#<#8&l-8H!Lb!zZ*)0S-6@l)Jq?ol{>f&`ZAXO!F@(m4N?cY5 zvSH&w2I-aUog1wtDlK67@iMDBQ{A8}S zTeHhc+4{&8&C;;Xo*pobnyoWod26moLCrF#l;L8tz3%&=b61K!9u7I`^vN@Iy}q)5 zuX=N4WWI3n^3X;k;pAzLWa+2#@V+a#*L{J3P}c zL3}`}zuQjV_Lt#jWnuA9W96Sz#Qjy+z$*u1xQbgkD*$3N~ z4xha5t2WbbpJeA{?=daZUak*Y%hrC9?)EG^JbddVAq0n5tnz@bzDRy%z_h9$VZ`Qa+(^`dtYxevf!k2Qail#Vav8tC2uR4Wn ztDHH?O$b4IZ;SaZtSi;OR4V;pm((cTYIMriCh@m_%EZ2R*Czm(C+tLeHv~VVNI}%^ z)q7nZNxFEu7YeWLfWgp14jsJcrzI8c?jcq){*Y&t2 ze&+eha)06PbN|fBfZXWbi;}A;Ovo)PBh~x;1_LDSn*CXAyqvS2SVs=yO=BBh^)KN? zll+z)dJDpc($`;=zd|Yu37-4dz5N!iwfaGs2SqQFivho?1+mpjEjWX#` z1ljVq(ht|Ri7TMWnlD}|XyaZo)ggb6q4}czq}!ElG-s--4>=|NN8!G?4}I7`PcgXl z7li6>KE$?>wcHB&*o~#ML@kBaE`E9TmMD4Q~5&^1my@ZDvQ}E#1g%^8s{3YDw z>$!_wlyt8JhA{fajXYN!NSJp%34bKTOUM^I`?34Ol<(rzB^zOW%l6Qkw_lWI1ht>L z>8N}unbmDmms$GSg0TY!Q>El5bUd0T(?tPlzraf|W`NEeiSo!6ujWJ|Jlq``%{IRJ zX+0c2CE=lg@MbVc<*hp!@wU}^>M9f(H{e_aa}pgLs4jc%>#jH5aNg84GSlMzl^pZ< zFSy98^<2>GEs*1*@|ji%#VOyt7Rm(?9*l>&BG`?8e7xnILa_EZFsfg&I+i>;eJ-=f z3bwH2S%w$KK&`*x4HYVK%U0Czz9t^?Yp9g#?6yuierjj**N+`MDD*inzpL+_3o}WT z3gLV$d`lPs^}f@YtsQ6@?5v;0uGBz;$MOg&sk-K+?Dzalmpdo_Nl+Y2#!dPkc$HmI z#%=swu>Mp7IhCx?^sHc}c6CBmxPe^JU~}d=E{w#TabnsNL*a&KQzvP_NmV@^g4n#b zYR?e*D}IeVAA@v_TkxBkdCuPHun2Q!pV}+e|KXdHy;mWJ(vt%ocB~bkA;B>ON#lq; znErWF9I^;2BqSbH@-Yt$c(3OK%0sfr&5gUgF5sZeSwV;p zvBz~2!c|G&_pokuebM*4`zx@kW<~rvY^apI$i!yq-B?2Ok+q8+k;kn7fg5AT8^~5j z*GO%w7G~bI)z6pz>!%BIJqi+_|JC64kmKAE3`h<8szU>U%fyD1tvj6ixAECp-FzZu z&vAB|NL&Xyy}p!2%y%<(|R&uv#m6|{2vN}imzBa zwa*uVyjJ_7St0njVOt--S~fP~aGyCUa64J~rXs>y*vWF`2aQ0bJ#{npC$=w4VTy1K z6=VgS^yGbn;gsiY?;6PBm4ywp;KY|Xx{my**ATJ~I`p!FLs&XpqjmS!T~tc-_ly9U z2Qpr$qA+u|ivBQa--Y-uI%C$WFG%JT;}5N;?vWc0z$@kZNweCZztq3tS^4B`0a>^f z(*KE!H8z0#WI6*TMis*VO*`%X=isZ=7G%&`2wNiaAsJ9=Piax;;y$%g;DzVs=bTIN zT^dO)c^k+#<+m!gksv~_Wc`}>!}fB)!fi92Gkh?)GPbF`Mc`{@2(E~@O9iSL7hUOg zCa(AtQb^3U`%4zP|_-`0#^w4Keg-#5Rx5FM#Oz8&>(&fJ5_D;MGOZOF_C>2Ugbi z!mL*9JsgGakyU{FS8yy4p)h6O0xT@Q+5&*_knyB5j`Y)GV0CSKxwNUK4lDtf<9*kzdEu-oaE+%(upV zi4_4iy{B&oPem2MPyXP7R{L_6K^xZ4+bbFKhDK$NStwUvG2HK9VWj6O7R(iywX?V( zYx~Z3At{7y);A&>HdXj9zSM8+zAbT$84oAKeYo`bzn-uuU2RMpT}1-#Vw(Km+d`B$ z#0vXR0eoHL!VAn#R>3^Kr_%}R4Vd_OtzfqIonCcz1~Xbg?|t?M7`Y*Sc)=wc#Co&l zzj^8`y*IySJkx!wI`P+La+N!^V5)A;OXW@(CPrrF?OD+==89|Y&Oi6Avkg1wUpJ+p zO%5UT^l^i}X_{sAKMiMrJS>>Jn7`U7JBG67dQ~|g=AL!hp@HR(_cGK z(T7W-l}(7H#cFTv>EqqrKUQAcc-Q*|{e3jsw)oN{l8egIP?+=3v`!zi@WCBBdpqWi z2;71oZ_f;v`;pH_kU}${d1$+FMd7xXvdEHB^~#3w*HXhtb@y|1?BT7JwO$8S%h>B? zUOm)o#9N`79P|aheKPe(-IKX)`o?SG2qlK=k>-gS_{?6-t6uec-OduWui!~;narej zOc3G4!KsfYA?SEF@;(I(M+M*SY9D=X^0Qo=S)=91Z{ahHw^74a$Tx1Od5yDwE~|<3 zSM-YyQs|86X^m_+H?vo745_lW2-%{^jtB%zI?$t+9q2tE@%FY-Cxaq=JR&a$mj2r; z)1fQ*NWOh|>-z2e0d0G{hL)!0AIt^V-d|1nup?%zcfWT3TbV+VGMtTT9)q-<`E2NU zkYW7BJK;w?e%|~8K7*T*tXiOdoR-y^wG5#3l-$T>rl{jH3mfju|HFO+$Y)OmP6Ev$i~s31gV?0%mFFN?srl9YsZ4G9|>YFItgTW zaUC=D?0F05i{wlX`TF~M8p>i*LD=cI8SLWAy_K~(9;p?uqNvM7l?N@a+c}!ToL?bO zNkSQCbF0jEhGk^;X(0#o4?Z20T2}>H;oNg~Rvc6fbQ{~aQyX4B^Tz*`A=cO4HCP=(-kd|ymG1AK&{BD+wIxA7!H zD~d|xgT1Bu&0Hf#V0cG?hH|{4|0EjrLasppFJJXQ*?q{CWh9Igp2tkHtj zf@VCHiVwO;gRFd?OF>7kfrqHDQ}2VSvrEW${zcf-g}5V!o!epE3hH3T%mAN zH^Vw58G{sMf`93vO(L1lD2JlrU`RzI)1I1nlJVuIKb;Pf+1r)(e`KodC+O%U`bmwP0cSonJV7UU3`X7B_Cs~&XQ6(a~=q$ zlNQH-`78($1QUftxjn66d8My>dTheKxg?};meKTi!aSZNp9DjvmP@_|RCdBm>6E7+x`$8TG>(H+Ad;Os zgb^JpPtR5vD(55_KU5zOXdsCQmT{;BT7I|jF=LExPxN(v`m<(ldyY18PU{)_TTckg z)PRkBJ5At6UvbOfYzf15w}k7IVEK*H1Of-23nUkl3ib#leP0}44n6z63ssGMcksa- zpxCK@cxgdC`$K{toDycYT_8Vxx`6Rm5QhRs)Vqj@S@eMR>JM}H4Fp^;4m26Fom7Ss zPaK8XN1Q=P0wTP$c4+mYZjwV?gIT>Y)cBJ!UZ1?z?R%9aMWDeNyR6_wTek;+r}jm7 z^m0L7>&MjKzF_{3`VZ0Zo-(|QYg!*O;rvSOoQdUfLCAYp>XoqjG63^K=MU(57O#_X z@@~JGLuJWbs5$#|DPvHEZ@#Ca?6OdC2=iVH)k_8mx4%$=+2+VxFthtH@;_*Jwt!eyjFkMAKiPgKVj>9b)tCL zKgaV!T^Z$8kDorP?QprhY^euE5C!KePhC+10ly8{4f@chJV)o2q=5(Bs`v(&1CW@c zo&XKa&r3gUyR#cDm#GYWm;7*0v0=0zM41wb$j1~h>&Z;5^$)bJuGB+o(=CGJvzs$) zr$DQcS3DDvr#JMPJ3pw|yul|PKTKTq_jZkN`MGq)r(`Z2IF~$0rwTU}?n)~;=gVCR zEmN^RIQ_Z4VF)X$awK~%;-pMthb+{Nj%&8((FMlrsiFSO$Ib3j7Hp$w3UcO!A@ASz zH}zO2D~^U4&ouqKgXM334+94hpN8*@p#I#T$w2}ry6(hjQJN_><+Zs_2H`jEf>i&f zFS81sL6Um-oJyIQPPBr-j5EItUVXap=N$w8@9z3+-xu#oW<1plugtRYTH3i87iRhpw){GVl31 zhbYVbwmG~0SeZv!?Tu)PHx?TD0Ae8Q6T6(oKLN|J53{tRvsC=@=mGP_%U~|jCR~#b zIXzm}8onGg6*)SW+!e;@;+0uKJ&9g>COldglW9H zftBLJYy9Rjx0-Eu+TS4V`t@x?l?s9B-oHkS*#+`PO)3+Dx$A_X^FrE0@@PUah(RyW z+Im493zKEI{ZgffHG3f4HS$$QfJV`C<<{RJRU0QQ&aFRNGiOH>UOmn*+K>U{{;~V) zAGzxUX|G|?XprNF#IsN_mKQ7DCutNnno_^bV-~#JIt9Qb9jnSQt$F0rld9Me<5sU{1l`1L|2b>s@e_^WUK1ys zPvFiAT00q9sY3)j+WVfQBIvN>y5x5WKR#f4(cA!b*!3cHc~i{RQwC8~*_-nP4fma{ zGn!Wa<-q;&l`4Y=n|6WRpP_6Bxvub`PZ}_XHLG;QN*Am(kAJ=lH6q!Z5t^qW^sQfz zI_ejR;u93{0-m$0%v4b>pwYuCXMnp}4aU=HdLeSvPpnKoVmv$lgwFwJvYXjEj6^Et z9{9ykY53#Wu{++a{S}NjD`88bB#6&3TWPt%6=19z(tEx?-ZC6BaP+tuiAK=r#W$=d&TAOZgue@@WuNmQ zh{{(Bio#%MU$c|ehTqI8oAQ*W-GJ8vue|hREdXdP82bT3aK?x_(?DBvKPcB}#wxrr zQ!a3ig9v+sU&CcISe&Od%9T$^R~=>?>NW-XnmKUxtZ-1Qv?ARG;wIUZBH#U`kv<&W-fCu+r)trYIeal z7t?IwS1Y%s#NB>TsOUh><797UIk!}B(r}yE7%I_z2>}DTih%Oh?2)Phc9|+lQ5y%r@KG=_2l}_w1OUPe z9!8|dn?(N{@x13(km5x7q0N?^wqIkD=BB!2!UAN_pbK8QygEgqsXO~l_U z(D_Z-EzpIH`G4)b_ghm-)CRgk@2DWX=)pr55Gm3X6cp*91t|dz#UNFR^auzRK#o*F zdJSC=q?5=26r@Qg(iM?FFdz`=a3_4<^WDGT{&x2dKJsMt%$}JwYu2oJ*So|ui+?M4 ziic4up8$P#IuEqKv^IFe8WK0Z%XXxk;gfXyb`-3N$m>{~?&Uj{I=w<{^9 zXp&4^5r_c|Kb98nrd$4C5#avymL3wh|86EK>ov73WnGl5598NikiaNWVbBxoh&~L( ztGmHiukni*3n7w2(;ZFaFX|kJ6>J3HwH6Cti1)J)tVHNhuiXa7o{SO-{RXsv_Nz$o zf5g4vX$TmdI)RX5E_GLL?)`P)%kPKCDz=irhE1@acn&_hOVMLwu1tOQJ|J%b(E!r{ z33O%E-tR9C)B19gJN{gfQ!ZGsW4N{AcAojTV4tJ5A8*{U9)kUd3aJ-vnF$D;$NH ztmGpP^(^-=^Rax?!etsd$%kIq8V36uP@HTX8`{)ZQV1gmCd=Yp@tTD402Cj*XkL8T zK@i-A*j+=-8hIZf}nCbGW_P83Swtspiz^H{kDT!b_ z?rd-E^!h%v54D9)9G(1q{w83EyWmIrm`UzDS_)eYm0c*Idc%}qe#Y#E=y_YS$8+_s z3$2xu8ePIa_ij}Nj58!3oK4cb8XDo|4NVp)`2$(V6YGmEcU$t|T(gNSh^Xn+4dT5( z<4TBnXaK@sw(jz#oXz}8h2DNw3~GAs`J|*M1crQQ)Zdkq3|8&&BmT7y@|OZ~Y68sB zHJbDl50E*v-A)&!3I_$W8KNM5`+i*x3$Ub8el|BV`ioJ&rxLH|7NRUXUT5@9=cO53`n5)MXC zZAVFEI)VmZ`3bysB}(Otg2hNX&uiS5HTn`hx0oBJEqr|U4)+RsA=vxXP*FR#Oj9Xj z-KC@r?|1_(9B;;ocA0^V89E~W_2_9EDbitF?S{moGr76_b)vEgiiY(_{Wk|PpQ+T7 zJNgA!?+?G(ka;8CsB;BD9=p>Z2XWrWz&NtuCc^xboa+iE~^TIZD>4 zxsR1H>JYVfI>_UzZYf5X8thdwzkO|l-l+fCpaJ@{Y*splHYj!Cu(x{8(PIiZmK>7f zYV#9UgqM+5{bZX#3*Uj)ZU;fNX`V5_Czhq?qA~EV0O)DgzmFx@f2_NzL>$;b(@rY?QE;|GnqaSDf~x2~)K z++yQL>Sz5%2|uDEF%8y(_RsFbW?ZVSw%m{2c9X zsirE&q75JYOTnj|TM^mS#PFn6Kj?M8zhf49%JlQ@M!zjHOg-s$806F5_Vrq2;qDY# zqhj&Ayqu!L-fy>cV+i>of(b0bL3x3wzc|d+H+5@8Zmw*aZzEED z4JP1gJ_3E=31NL)lrf8b^}q3~^x>w@HN6X%4F;+Y$HA^$t0AO*E9{J!u)zBCim!uz zyA{qIPmJY=f|tPj4wD9;(tGfd-sr4wRQ}mNS$Te1x!INv z&@FTId`*s%Kfi^(CazpRuA0DEGg3J?>RiUU@(j^qIhTUQ`uWmOR3Qb4i~S_CAc>7b z;2xX4`r`hn-{pQ9&Y>JmEhXrY88tCq_a@JcJ_d?pq6yf5scGde6^ z)H7PxaXW{6EV``C;Pa~b6z_86e6mZOc)K&3cRNyrJEDRSQgY?bE-~YWYK1)!vL4pu zjD*+HVQHz3m}KiA@0Jo6q$alneBpSxBLRc#fxqXKYi1L9W4ZJDIfKL$_N%N~3|SqH z<}zum_C8ZT7;e;t19b12W$bOELjLX`u3?=e-4hG{#oeE8HQB)d%PwP6M-)bO%%q2> zKi12gUmx{EL8x?0GP)HmwQp(PugM&1l#cNZe~S=6);FHdtP^2J+aY3$h0?R0a0osk z6wZ9L9Pi!Sv{OHX6>0N;72SZ#OY!&>CSIQP-+yBv=$7prm*vIey!9BGCfWQE;+{0C zHEYsfbOk;Zru6xdCKS6C&Tx0+VMD^U!`s)ho^EqQ2%GrXspXh0_GdbJ&>QDzKSn>Y zZL-&@A{keR4lQf=Yq`^VVAbup|dP(hgYOG~Ab zGu1)L-N37Kc`?XZmDwwKr?h9AY{FX4$XHulzo4oKr#2so)5BS)WEz)BpjoH&-OJz9 zP7gD2q6a+sRHf&y4iSS`x6OXZko6EX&JS%UmH8lkU2s$ob{I>rF!ad^-dlUH8Id~h z(Wh4$siC`V=lwHG`Su5|2{=F9WRzz>rhbbdtX9Ghgs$5fUN^Q|kx_gx01nV-JNM{| zKs&u=YY*CLoaxkL49P#VYh$vrcm#>;cMuK7*P?EeWtqN=BJRdhKfo#JP^MAcfa8N1 z%YSJtcdPb+*sn#!p{Pyu-hZZ+QDdI9B&`-+z#Wf0{CWr5l}$VGY3q#_yvs3Wjcjlc zntbIMTapQ($?pL3!1V{st#~scIIq@TrK0I_^k<$go3%8!(UgTi2uHVL@*66}c1hoG zs9(3;w?k@B*Z&o&a87r_1%QG z%vf7k4$YYzF}3o~R7%U?KG`gyt4O>vd1`QHWFV{&*7%P{KBlFxloe{S@Lz<-5E0V;h0c>?!EgpY|a5~RMj|Q>VV!lCkKTRWE!?Ff-`wd!pfKX zP-ko`KjiHMG@6aX_Y0yxrVLoSz*Xz3Au}*S9$;`|8j0w_)=^ zUQ94-pr@jOh4FV!NGMjWI zNVN%793&phHO)$}PS26Rh^LceEzJ5};5CB=i z?>kTZys@6*;h)XWlx`O1uKhkWKsp+J&?YRD8gi`4JeeJY+xZbpa^8EO$@J%gb%)yh z2W7OA9dYxsJtpbyLRUn5}*Tu?|DS8U2m^eWAYN&W~dcu zB`BnV==Pp63F4l-^m#cssaDN;!ENdN#m{Xa5OQd0L42~+uRRB7Zgkv;=jykdRPr64 z)xf180`RC}5ZGfz`kO3Um*w*45AAY+MDA3(1UqWOb>M52W*4j2L`z5+1tr~_T zeph>be5FPRnpFN4_0$SyKjzcZi>CkLiE?&zIdZX`C$IKYs=K+|9=c{4k{_70FEAsj zRj<10X}VV*es*^6-)TlQsXcuN{e6RG;g_8nH65Vq z?2no(tIsE(zUHzB-#k(MApfAn(9L?J}Ee%RDo3dJq^7}Gl9 z!i4M%9J?a@s$86O~YfK{C%QYVa=`amP23HSe5rq4i4_pM_GDRz31#_2|u1?TF*R|f=0HYd* zLatsyGW%yul_wLl>AZUd6h0K+&JtAk`|mLn9Qhx&@HfK#i!GavBJ+*Y-y zm(A{F5?vBZ;*@LEqI84M`8HIgVBHX^l{G|^Dt=^&whF5F$yVZa#WvWvQbY_IR`#rw z6y978SnfxPtTr6>5{@4@PRL)AV-LJcpku~_|6o2*g$>+s0W8-{Hz3Zgz4!H&q)x^9 z%f%ZBkF>IK<-%^agjxCXWQaCNzdcY@XCy?|&k2CG~O8gg3i+ zG}E4sCs!@K;nE z)sS~MBW~wJ)paCbP|a6kcYRMWcW+guq2p@Seb^t5<$R2dkH-fYA++7c0<*+J`G}XM z5)Llss$yiB}TQDZf*`rFj59+LTF*s%04RneK1Z9K?~m^>8sPQob} zSV;n%s?0(kG-$CozY2lyUItrNBj#CkJ-)e?)7i|sr#|oM%ip!h3=pCIjwVeDH4dYQ z_oCVJG0aG{FXIo}dU&WrXhlF-Dc_dX-YGMWD@qYxZff{hCYHiqZw{(x2 zZtXqn%fmZd1P+yNP73YbP5|>6QzRoE608Ovsw^z=wqHO>bkgc z_DRjO^k$mRgbEh6$wzbs`c)##AH4@nQb;l?#fU8juetbTwVwtH@0p?H4B4a>=x z;5BFJKM|YTr}`XLKH;mkw|>TM`J@n;>?iUI0f7!M8;;S0azHay9J34^F4ld9mkZ5; zWL>N!r#W5*i?zsr=n9j`-9TlP>UCMW(qqBybg;L879Pu$yo8~w()KTSU>aQVM}B3b zr-I+DT8+u7H|?X%5b5Fkv%2GJGK%aXXhbZ-CKhn8#u&+;Pwj&Hyz0+LD zJ`zx5`p!9JwX0|br%?Q_U_zENghXz3{IKw`(rfN(AR*!pakm5ieoC5Go)@l1!}^C% z!N$vU>F;4jfdaJ%UcLdDe{&{0t&aCJE2L@)>we}ALBK8A7{(o*c)3h*k_EN&dzsL3 zd+%WGvhyAk;$D-FVS!R)SJvKaibB?7H?6F_sdURVZ9jRSC$4C;0EmlDvdBK*WnCAS z`2b&kPd@WNxURxn| z_}OQ_GUbohzkafw_x4H}dtT`uaQs{$i&~oDA&$}iZjIPlKOX@!H0j?(Avts1Z4KL4 zxrhPo2BEabl6F>;F^^pr6G`E`K`PNaquY;!X3HcA9H366eA7vF%0N}JgR`fm`Wt$z z|3B9xUo0-G4$9FMPlj>YxqU(yWKkqAiFf2ZVyk5{q&dM$XJFkWd~SlLbMwU6@^yPP_ zA9t&T7Yhnwe!r+KNG$Ig>V1Je3gxY(CTAMEb1E$k*Iz(K5bu^^QUtAj!sIkt^slIZ z?K`{pC+-!c6FfiMe+Sok^4e!Q?C>wysIfa#SFRuJNJpF0L*xI7{H#C79Q0TleVs|w zYOYhLk`p9^ZAnZprzLdG#gzD^c{D@)_!dD=thGXZ1t*7yG}-R-tF1_$gC5+M$XQ1= ztU9oJ=6V(yFTKpiq>(#QCUB(I=FE=XwH=)5oZGG(L})*`+1bX9cI=O%50>dqt7x7B zWL31hX_8XRADe&TEGRWP7er7S=>IzR?>CsD(4TL`Mt`sARC%cF;Eozx0RK|-@cUtN zQ7^kNm=6AC5cOWuj6nxiA`6QV* zT2sUU<2P7f>E-q2WVD9VdRKkz#WSSUW)d3e`tsfg{>kfB-q7Y@3T++B9T(v3GkGp? zHqGWmlqw{ryQ;ixdT-pf*?7q7x-eB^UR&qpp_n?hvB5=??uOPY}KXEM76!XvfzlQ1i~nLpI@~Y zjTECPoh%qtWjePnu9nvTs|@jeBZ>7P%PSO5bJprjB+PqIiRxOTMEqYdG zY9B_yAK;ql*S8Vj5n|V9xi{O6R3Vm28sC@TUEmG^UkX=#Y!aebO{Kl?MMAQ zRN_xD>*Mo(41Aumx)&0|)(=u{STh<056N5Xg?$R^@vf&W|EwYl09fJUTt85)yiC|ASuCXO=a!X+pukY zRwF_BnW4LnC1T6lf;t1I8F3ONg{(KM(55S)VBOt%uLP0AyuV};ye5U1^>Lk!8096G z*y6b~MP{WcGPpC!s9nyF?IOL)uVB|O*C{gY+DmFxky(Geg@)Z@G-`k?HVS+KCVAn= z!La!+d>%wKV*wxU2aM0bzo!VhAMkbnLy$ripX5?|4nuz`-?5ja4qTk1mfF`xqt#Ta zE~@dUFKdVb03xy|cKE&|sy9{?ss^c4%y;wYiU$D`u7@?s(lRjRT-sE^)m9xC8dD({ z;ThpPZDbcZ8br=V(J^GAy|c%C6Xp1%mfMw(wwVAOm7@lWAHJXsPmSWQEq~U30}~`; zonLP){nG^yM@y4cV~PX285G}t&{M%1c!gCoXp-a#S zr(4?Nz}^Pv6N@0p2nJ+d=9!cz{;HT_zkz7GkQ&9S5ccn(t}c0{8di}Dym@>{pLV?X z4FD*z(8}W<<3fHnI-RuTwL$>Fjm6)W%uf0H0&Mh449HpI{?=Muk{E#aYN2n9(weHH z+=85x?|6Q7!5;BvZIU%y>Zx=r=33qI5Bl(efOqkH@MUXDy3#p%mgI*@*qapa&5OTe zYLPQ_3{yAX9~hZ1d6{&Xc^B~Gb{Z=YwX&r`Gl0Cp!$tkYfr`?%W};VYbs{lTpoeTY zAisUT>wGeNZl|V8<)x$VAYDdAen6&8qr4Y2PjVZB#tRv7a?}5e{k;I1`5M4^YSb6P zxdy)%#7qtOB=}XOI3p6Ng+zn)m0=>L9y7c-sOYyI{UNIYJt<=k?GwE$*Gt!@d_cu- zaDam*9mZlecfn=3X(r&!4NQ8JnNK}mTHo)`=0t7la#=P&#j;+0@gYuPJOEXy zUwWgrv(e6)(X^?uyC2NpXu998!jCKf2&r<$`7J26B%%6DN_LUo_8jq09SAKsO=P#P zuiA_^Et5WcbIwo!!p`D{Um&5K0Gn1g)_p})(dO&L_2w2a+p>UnEJooBgmn1w1N6$i zH;Wa?#uf?!Qj(L>^A(Y_ycc`4*xkoEiv4V0`jIc#2DH9L#O9yg4fr%iL-k$)Xok}5GX$k1^^wdTnK z02MJ2e$~#>1o$_S)A;>?6)R(KL0yr>(?4KjVm03E`=2Z=+Hks4H6>43ta=8&rWmgwk+*FD&!)NwYyPs1JbO9lUdJFx!7)(9mchTDQ@qpa& zUsOJ0JgSDp$tK8X!~Sfu;H?uwWeLxcZxLYP3y6~BEAb2b<(5}CA!Plk&Wo_?<23M8 z#aJD+<8KF`zQSjuH{_Yzj0;B9jK&Q(8HJHC1NQ8C zWUFP*wJiBAogej!iy?Df)R324ni0JJO87EtMvs3sp?9k;qKx~cnAf3Wcz?B-3$X5} z;afQ9HbbzO(_Tg9Qi((Epxz7Yd zEOrbQ5M_#!C7|~J(plb@rQ_VS;JUYW?S;1;Y$Lx4ph-Rz$`6)zf7j9f=uR~Yit{o~7R=)X)#uf7UvsxYP484JG9-M!Zz zqqgKPk#*Xw75vzhu3KR~`6RPKwK_n0Htoj)CY#=k1fGE=mIxvyEzI?d-$$tsn;0`n#**-(e6K=eF41Nc zSKy1xnvD$eb9N(BP+|0RTnW-_(9~skki{oW^A1)WYw@vgIoMP zn=ok2Vixi@ukOwA3xkhK^JG?92rys79^*$!n>)N{q~hFMj%>%1Gpa>fGFM*@l*ma- zO~i?fjFIeV;Pq=PyMr+hB!o)I$Fw0Ox$nM~j^LM*@$^^Tj!X+6#R@e_^{%IOnSx7% zU^zufYuh(T0yD{YLi3&g?5!reRv6#9zQxP~jBdXc|LhR3VjY*-u4y@7eS zb08P?0iFyvMX@~z4Wsx8F4B^=L{PsvGf(wQ!d|FG%j-BnOsmXQ@c_;ieZ$nZVGyJN zUw>xYN8U#~k{b`&lOx^~q~5QhWAnS*YU09rDH^^-P&FNJY7#u2s@>xh{igp&lKKx~ zBAeFvi*8VO@X!5oXb|EK1nEln)&@4q(OR$}{UT;a<`@}-a@?@s>5QW^(q2+=y+&~) z;DIMK&l{T;4_5b4fM>vi%TBL+X=pz$p*n3pNaH7J%)&8bm8>@&=#c(!!j$KiI-Q|^ z_T4N9eVI4FUD7+g?};g0sV3d_5Q-b4d*f{2(5{A;PgxTaG#vQ>-u@+q-bPM;f)V)oDMS2q(yzQ;a#U6zDwpS#!Nih8V)ZX%B+iE7TJX+-;Mz7m@L9(qgu1`F#4uf9znQ<7lZjy^Z;tHAR0e0A+wgJwc7P6%tW4jac8$f zJxG`if}*X~`-eX0yfyUr0BF9E3w;3wbODK*6jL~M!c(uUrnyutV1%51A%DDxz?9EdS%@6~n%X9v7< z5oGG60;pWUZ^|$42UU0$l8)JLNT6|NGxzn~pI2cfUi5qPfp_Tw~HLq$}QZ>@j7~|Lqgk6A#pR`P{=F(X|dvZP^c|34zDUU6%zL zVRT0Bt5W$Afvzr_IQ5n@W6~uYMX18o#KWtrSCxmR0p{{fY>8QOUa%EgP1IZW!q#j3 z%=KF7otE3tzGqUL?i%&){C5XLN(A8tsp<(rF-woqmUQa!-4~s9B0H4+qDB4_Q_?}< z>>JUL%rdsgfQp5L`zI#)? zRueBlGmX`etH0-ocUT#rj8`BrgjxITJrVWz_2~8UyS90_n+*DIMLhkT_b6zi%VqiH zOFFepKQkiYr&k!vmJvCaLB zmfWL*(A9i!FL%-tv($Z~8B&n}2a-liLaLL!Elq(XoX8X=XBuU;hI>l|19$l5M1g)A zaG5`YDt7%!2i0;Uvl$lq!Tcfgg$VE!wf65W`Gy!L9ER(7U$ zJN|@rj*}TDi$i48LBbi}nc(!EECrWepcjyw=BgKW)(7zVU`$CP@^61yIf;Oo`+={3 zLsUIaD~FjK!090ofIWi%p?3-ND5=}&ifmkNAyHD1nUK2}9UVP%T916gw3<>KHB?In zfDfc%E~lR(0m;CgWxBfk^#GItfmWb3qxuVsfa2T78-ST+R{JK~#Q^KP+&g-D`Wi|* z$Ts|nD)d~ zo?pPE(J^beb495X)I|XnLP$RR4wGOnpu+9F0b(W^vheCH|Aqn^oi^SI&h$^*X{TTf ze|9<-?qV2^z)iW2v8o{~-asPlb0PDc0b-Pddw&QorNzAc=r|Kt0Q zkS^(pohKr0s+Q7uj;rin=0SxXXELdHGQcpu@WRg-lf^G}<2AS`QG$>tVfjMC|CS&$ z^S#Q{v!XfsDylz`osErxqXsl2JVO)rL1p6?6ljO9T4|dFzoGTX9{s=Zzfv4~jXg^$ z{Q&@kAuofW33(zE{+v#7=`eomdJAH|A zO}Rf878c|{A>@Zu-8MwCo>$Z-iO7@4Cj;pYsY7TtJMh*m0C2c0+5Lj$rps*roCG78IctK6MT^;_#*yyW^Fc!Q=#Xu zB|vdX(tzH`(Mrws)eoi=PF7DpP1g#w8^0s>cTH4rC#9!FE)v*G%a+?!fv>*YVrnc* zkdYe$n+_Cjf>9iBZdZkS$$)D%?f9RqKbqQh=D``Y@&@=qHBk7E=!=daS|9}w&kL!n z-w~MJ0OiG{NRlC<7e`3l88l@usFDXTKXd~?efT8UG-c|&ulGh^DX%U9V9#SJid057 zoO@*x`0tc%m4uptGOjFj=SwMJPRBoD*o75B2Y^=%<`kX(Y+hr|W4C7lo;Kiuop|su ztM|{5&2dmJQ&K$G7_PCWX@-LSY=Ed=Y*8g=rK|51S8uNC!h-1^CO~us2+tVH9IbCE zQ`UGkoAu;Mxbu#vwM!u&3}bgv7nZXrwpM)cg3V0p37eVRC5rfpQHEQ?oM^N~Kp6pn zy%otbs;u46k1s`zZEf0Xfrtj{}2A4b$ zJ=+Ne!R*K9m16A4O>JNU0ZN>Ah@PcSf2T~HuZDh61b|r~>|83J`FQS6AS9^USzE3y z;nGAoo+q0T>P(8m6`IVT&l@J%@awX69Emm^;~GpocPX)&==QS0p}OODYnK$a`S5Lr zYV8s`UrTX$W2!4z3+3}*a)oZYGfhf;6VE$Gk$yl@|m zLSVT}GGv#aBgaheD2CNusZJ$*_DRnF`N9Hx)6a`Oe%S&e={St+4ev3&U&4;bt2>7a z;lQyb3Ua3)+8+V7UMk2)KbzemZ`gnqZ;dC3ea|^k;KRfeZjTJ{P6%m z97d?(F^1((gVD>+a;_7YHjonbQHO>U_l_Z}Q9I%&cn=}8NvGs(KV5g6_`+l?eKYq! zz{GClOoKrFPNc62iy|}nh!VC5A-OeU&W2BX+W+Qfp1WZF5?n)n^#-HOUodKJoWfs_ z+;r|uOSDTKO3^xC#ZA?c)#?{hs;lqWFq^=*5Y7)K*p1Uz>RJxn?b-5#>P2(@wQMXt zd+F-SUP>*0DU6AD(3O(D-?e3fFYO=n4T;FKSbueVcSFi9FU`X;(j)lrw;D*j02mj+ z=&qS#`j5_Pi_ee7F5u_J2I_eM4&(h5!0d@mI0ueAmqAs;{?yc|ki!GDlh3PK+&XRF z>{mA4y*nh!Px_O|FRda117H*n7pP5bqR_@8*Trt9Y36+{t(w(b;ZWbV2@}1JieBvq zFqN-{&Dm4=iwg-}DLrNFo5YI86|IME9d3<1>&(iq2gY3X6qN$4S^t7gtjdmNyYDnd zYOw|ubSPgP-cfC;C~4E9Y@tfG-OEeYnj`snMROpUR>(!;F1F(%w>Yg3w+Xuc^p8HL- zU+v0|zaF2Zg71t`v`a0ksv+67`B`RaS7}rD8n^|y!9P3LdAdt$n4l^V4%zfOBe4eu z2@>nLVE@@-SDdQ9ezqSo{$ncOHEqhH7O##{Wt{Wsnun+g|z$X zvI;09uv|Pt$`CnLL67`(jQYC6QV=C%9-Ok^B#SIR_ox7YTgr9o6MWEjw#^~Qlh1wq zoq(1m-w2FE_NG=x_aapyyg0xxR5nwsr zD;~vPPvx&oCInVO*p45AUy?y1XxOkPN@|J_b$J;+ZDJv&(3eP;~T!b=NEvt0s%cP&) z4*R_RHwZ+y;f`8Zjo+RT1P0S&hf+(yY3g$HV@!U!K)$QU>YpF36(yDPo7N}>PZsN6 zCVw9KU&I90GP^B>Z-L+)WPePFE@ch`@As<;guLYdAADbmjGtKAP?}6t0tP*}1S4(f zR`QjHnoY=y|BZZqkGCbX{20KSWf%+-ZnnQxW2`EMO(u%Au)!TDHUnKX9)9vvhNmmy zAD{Be#G%xQU)8H@4LO=GNE%7K!iCJY2cp8&F0V&}(LoEI$>e+OS07}?=1m0wK%InT zJ0;rz&ofoOU+`gN-b@tHxB0lbbE5k2;V;&cJuvpXsJ;CYOM9*6&7omg-Z!DZx~dh? zhKrbc?dGO-)qLw=N5`qjbeEsne$~2uV7n$+{x$4m2R{^0CIvY&PTfR3T_r~iXbZdVe{-N3d<-=OdbOwAqBWY@l z4KX@`VB24tjEoxTi<@=Pkd-y2hDbld_ehUU!^g3lc((pt*xKEDsi5m3ZM}I=~hag_y zKoRV7Gv#n_bfcP#ZLI8?nq>tLC4G0)cYWA`smhy}zaXr+f{Vrkh$ey{FU!@E$ds;R zNJ)Zd%9}w+lsZh^vt{_kHylcK5}*VV&I~yE3;Lo5R8GU|jQv5b=N>XF-jd%gNa7Y{ z-)s^gn@yIDnq{dn0=wXBcFC^Q;2Bw>Z*VXl6yJSNmvd^)V2}Q3e*7q=}n$M~iL8e|3#RfpneYyYKBQ-0dM1ZXy zAevYVIqZTk^`ImqR21kPA%qR5@M;Wu0OsVfM53CctV0^G?sSr7i`j?_VDo^G)T^SS z>9Cnp%6PZCsS5|ySxdW)BoMRcq41Pedx!Da8c+<&m7=;*PgpI|CF2GtW)2Tcz67b5 zlh!`HE6aovfTnhe&yZC?NpzKz;uo={4GH}1Z>r6hbr8RYgknmXlkF#7F{sP$zJy*VAW;Pg0|N1 z>(}*nZythNOrYD>web6dQG%*=7yie=u?b})^T9|aU|P$;HOE;9_=mwbDp9&)FG(Ju z=nv#!TGj#OiiRa)n3Lb?Ikn!>MoA?CSe#5Ipq$)=0Oyrb6MmPrDMHWhl^8Y%yTCit z+mo7AT<`ZW4POewwg7}2C3p!01DUqo6iy>wM27hZ%)==LOpkV{L}NLra^HG9`7}&P z_qQTtdRQz4C(;G?glSps1?miij0J|_? zDsMOCb;8w zGuqd^U>Y-VdfZY(*=l8Q zS`^EuO2s7;P=!8OVDl;>EwfYydVy$I|2!`K+(YRaoy#7DXsaweSBQq z;N2=py5R*&Z8%HX24}6<2M{evIV|iGO#K^1fmf4IrxQ#dKXB?0@EiEH zO67bxsM6S)vg~*&&BO*s@a71h0p)Ib`WNni$Xf`>40_pM#&eD7o5Vr{$c_bs$#mo~ zO0JHJtRfR-Mwz>NA`0D?Ky?*$IW$;uW}Rk=6P|JkgW}CGsjdlty_3E?m=cBoyyo`f zZdoAE92pc-l97@sXdz3LH<}Vq-mL5yP{;e1xS~*2T{QeoctSwPW8@uJPWp(^xekr-6BcjJ*L9#hr5k*G~^J~KmY*>v4 z`a?MEU=YuH5Q88~%(e@oy!2j55kKR=4?2P)Gpc;% zP)jP#DxX#{-jqZ4G>zQ@15Bw*G&~r{(r8~zuQ;`dCy4)zT)mR+1C%KXpuM+!E8pV% zHG+>v6!?+B^9Nb1W+CK8-gUOc-%Hmb>bx(P^*#F(MH~X4nRLOT4hCHqgxzH@#08~f z9TfUKI@@B5OHyz-vK)WyL`ivny>ra4lHz&GvY)qV-3(C_Ad@FhdSIl$+24o0#rVeh z3PmO;4>p_85T~)CN!$JQf{G zJhg235|ijtH&vlr2YX}puEziT04eFZGbugz`#Sk9;w6=JdLG4Mr9Ag8D$w40XDtmN zt;QP63o`QJ0YV^zto}E+El7 zYoz9bE5LajWuT2uA3$uzM29-vh7ky@Cuh#L)~ou-s@*x&%ajt-0HZ2WOMzeL1Qwht za2ln^=IO&Dm@mPDnR+G}ZQhArEJRN?j3i7STzv_?`_%HG6w(EQDe46LSUxB&J8sF@ zvfKSKW)9S5BTtGb&ZE;O{>?C_!KA)&xvkci$l^P`q&{c5BH*Pxeb9^`?oy_?L?m@2 zqHDCL`)PaF5#sv)4jlx{S=f6UX)fMOo4}&XTihj?W8D#9mN$nA6*g?ptV-q5(P5cccnM-Z`kWQ;})CdGv5;!oh+0 z=KoF&_85F*G(6gpBG6+KSuEBK%7-DmQA{xL|M|B6|KI;_M__;D1m ({ titleTemplate: '%s – Lagon' }), - darkMode: true, - footer: { - text: `${new Date().getFullYear()} © Lagon.`, - }, - logo: () => { - const { resolvedTheme } = useTheme(); - - if (resolvedTheme === 'light' || !resolvedTheme) { - return Logo; - } - - return Logo; - }, - head: ( - <> - - - - - - - - - - ), - chat: { - link: 'https://discord.lagon.dev/', - }, -}; - -export default config; diff --git a/packages/docs/tsconfig.json b/packages/docs/tsconfig.json deleted file mode 100644 index 99710e85..00000000 --- a/packages/docs/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27028cf6..8bccbb82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -250,58 +250,6 @@ importers: specifier: ^5.1.3 version: 5.1.3 - packages/docs: - dependencies: - next: - specifier: 13.4.12 - version: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - next-sitemap: - specifier: ^4.0.5 - version: 4.0.6(@next/env@13.4.12)(next@13.4.12) - nextra: - specifier: 2.10.0 - version: 2.10.0(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) - nextra-theme-docs: - specifier: 2.10.0 - version: 2.10.0(next@13.4.12)(nextra@2.10.0)(react-dom@18.2.0)(react@18.2.0) - posthog-js: - specifier: ^1.55.1 - version: 1.55.1 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@types/node': - specifier: ^18.0.0 - version: 18.11.9 - '@types/react': - specifier: ^18.0.9 - version: 18.0.14 - '@types/react-dom': - specifier: ^18.0.5 - version: 18.0.6 - autoprefixer: - specifier: ^10.4.7 - version: 10.4.7(postcss@8.4.22) - eslint: - specifier: ^8.16.0 - version: 8.19.0 - eslint-config-next: - specifier: 13.4.12 - version: 13.4.12(eslint@8.19.0)(typescript@5.1.3) - postcss: - specifier: ^8.4.22 - version: 8.4.22 - tailwindcss: - specifier: ^3.3.1 - version: 3.3.1(postcss@8.4.22) - typescript: - specifier: ^5.1.3 - version: 5.1.3 - packages/integrations/astro: devDependencies: astro: @@ -4006,10 +3954,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@braintree/sanitize-url@6.0.2: - resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} - dev: false - /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: @@ -4911,18 +4855,6 @@ packages: transitivePeerDependencies: - '@types/react' - /@headlessui/react@1.7.12(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-FhSx5V+Qp0GvbTpaxyS+ymGDDNntCacClWsk/d8Upbr19g3AsPbjfPk4+m2CgJGcuCB5Dz7LpUIOAbvQTyjL2g==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@headlessui/react@1.7.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-snLv2lxwsf2HNTOBNgHYdvoYZ3ChJE8QszPi1d/hl9js8KrFrUulTaQBfSyPbJP5BybVreWh9DxCgz9S0Z6hKQ==} engines: {node: '>=10'} @@ -5173,30 +5105,6 @@ packages: - supports-color dev: false - /@mdx-js/mdx@2.3.0: - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.2 - estree-util-build-jsx: 2.2.0 - estree-util-is-identifier-name: 2.0.1 - estree-util-to-js: 1.1.0 - estree-walker: 3.0.3 - hast-util-to-estree: 2.1.0 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.1.3 - remark-parse: 10.0.1 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.1 - unist-util-stringify-position: 3.0.2 - unist-util-visit: 4.1.2 - vfile: 5.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /@mdx-js/react@2.2.1(react@18.2.0): resolution: {integrity: sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==} peerDependencies: @@ -5215,6 +5123,7 @@ packages: '@types/mdx': 2.0.2 '@types/react': 18.0.26 react: 18.2.0 + dev: true /@monaco-editor/loader@1.3.3(monaco-editor@0.38.0): resolution: {integrity: sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q==} @@ -5238,122 +5147,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@napi-rs/simple-git-android-arm-eabi@0.1.8: - resolution: {integrity: sha512-JJCejHBB1G6O8nxjQLT4quWCcvLpC3oRdJJ9G3MFYSCoYS8i1bWCWeU+K7Br+xT+D6s1t9q8kNJAwJv9Ygpi0g==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-android-arm64@0.1.8: - resolution: {integrity: sha512-mraHzwWBw3tdRetNOS5KnFSjvdAbNBnjFLA8I4PwTCPJj3Q4txrigcPp2d59cJ0TC51xpnPXnZjYdNwwSI9g6g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-darwin-arm64@0.1.8: - resolution: {integrity: sha512-ufy/36eI/j4UskEuvqSH7uXtp3oXeLDmjQCfKJz3u5Vx98KmOMKrqAm2H81AB2WOtCo5mqS6PbBeUXR8BJX8lQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-darwin-x64@0.1.8: - resolution: {integrity: sha512-Vb21U+v3tPJNl+8JtIHHT8HGe6WZ8o1Tq3f6p+Jx9Cz71zEbcIiB9FCEMY1knS/jwQEOuhhlI9Qk7d4HY+rprA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-linux-arm-gnueabihf@0.1.8: - resolution: {integrity: sha512-6BPTJ7CzpSm2t54mRLVaUr3S7ORJfVJoCk2rQ8v8oDg0XAMKvmQQxOsAgqKBo9gYNHJnqrOx3AEuEgvB586BuQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-linux-arm64-gnu@0.1.8: - resolution: {integrity: sha512-qfESqUCAA/XoQpRXHptSQ8gIFnETCQt1zY9VOkplx6tgYk9PCeaX4B1Xuzrh3eZamSCMJFn+1YB9Ut8NwyGgAA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-linux-arm64-musl@0.1.8: - resolution: {integrity: sha512-G80BQPpaRmQpn8dJGHp4I2/YVhWDUNJwcCrJAtAdbKFDCMyCHJBln2ERL/+IEUlIAT05zK/c1Z5WEprvXEdXow==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-linux-x64-gnu@0.1.8: - resolution: {integrity: sha512-NI6o1sZYEf6vPtNWJAm9w8BxJt+LlSFW0liSjYe3lc3e4dhMfV240f0ALeqlwdIldRPaDFwZSJX5/QbS7nMzhw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-linux-x64-musl@0.1.8: - resolution: {integrity: sha512-wljGAEOW41er45VTiU8kXJmO480pQKzsgRCvPlJJSCaEVBbmo6XXbFIXnZy1a2J3Zyy2IOsRB4PVkUZaNuPkZQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-win32-arm64-msvc@0.1.8: - resolution: {integrity: sha512-QuV4QILyKPfbWHoQKrhXqjiCClx0SxbCTVogkR89BwivekqJMd9UlMxZdoCmwLWutRx4z9KmzQqokvYI5QeepA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git-win32-x64-msvc@0.1.8: - resolution: {integrity: sha512-UzNS4JtjhZhZ5hRLq7BIUq+4JOwt1ThIKv11CsF1ag2l99f0123XvfEpjczKTaa94nHtjXYc2Mv9TjccBqYOew==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@napi-rs/simple-git@0.1.8: - resolution: {integrity: sha512-BvOMdkkofTz6lEE35itJ/laUokPhr/5ToMGlOH25YnhLD2yN1KpRAT4blW9tT8281/1aZjW3xyi73bs//IrDKA==} - engines: {node: '>= 10'} - optionalDependencies: - '@napi-rs/simple-git-android-arm-eabi': 0.1.8 - '@napi-rs/simple-git-android-arm64': 0.1.8 - '@napi-rs/simple-git-darwin-arm64': 0.1.8 - '@napi-rs/simple-git-darwin-x64': 0.1.8 - '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.8 - '@napi-rs/simple-git-linux-arm64-gnu': 0.1.8 - '@napi-rs/simple-git-linux-arm64-musl': 0.1.8 - '@napi-rs/simple-git-linux-x64-gnu': 0.1.8 - '@napi-rs/simple-git-linux-x64-musl': 0.1.8 - '@napi-rs/simple-git-win32-arm64-msvc': 0.1.8 - '@napi-rs/simple-git-win32-x64-msvc': 0.1.8 - dev: false - /@ndelangen/get-tarball@3.0.7: resolution: {integrity: sha512-NqGfTZIZpRFef1GoVaShSSRwDC3vde3ThtTeqFdcYd6ipKqnfEVhjK2hUeHjCQUcptyZr2TONqcloFXM+5QBrQ==} dependencies: @@ -5571,10 +5364,6 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false - /@popperjs/core@2.11.6: - resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} - dev: false - /@prisma/client@5.0.0(prisma@5.0.0): resolution: {integrity: sha512-XlO5ELNAQ7rV4cXIDJUNBEgdLwX3pjtt9Q/RHqDpGf43szpNJx2hJnggfFs7TKNx0cOFsl6KJCSfqr5duEU/bQ==} engines: {node: '>=16.13'} @@ -7649,25 +7438,6 @@ packages: '@testing-library/dom': 9.3.1 dev: true - /@theguild/remark-mermaid@0.0.4(react@18.2.0): - resolution: {integrity: sha512-C1gssw07eURtCwzXqZZdvyV/eawQ/cXfARaXIgBU9orffox+/YQ+exxmNu9v16NSGzAVsGF4qEVHvCOcCR/FpQ==} - peerDependencies: - react: ^18.2.0 - dependencies: - mermaid: 10.2.3 - react: 18.2.0 - unist-util-visit: 5.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@theguild/remark-npm2yarn@0.1.1: - resolution: {integrity: sha512-ZKwd/bjQ9V+pESLnu8+q8jqn15alXzJOuVckraebsXwqVBTw53Gmupiw9zCdLNHU829KTYNycJYea6m9HRLuOg==} - dependencies: - npm-to-yarn: 2.0.0 - unist-util-visit: 5.0.0 - dev: false - /@trpc/client@10.18.0(@trpc/server@10.18.0): resolution: {integrity: sha512-2d+6r2C/xygTjDWX9jT66defgHzbQP0Z8vrvyT3XtPjqU6JNlRNuS2ZtB8xDPdOQUUVnndzZ43BMr+Zu49K0OQ==} peerDependencies: @@ -7905,10 +7675,6 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} - dev: false - /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} @@ -7924,14 +7690,6 @@ packages: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} dev: true - /@types/katex@0.11.1: - resolution: {integrity: sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==} - dev: false - - /@types/katex@0.14.0: - resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} - dev: false - /@types/lodash@4.14.182: resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} dev: true @@ -8014,6 +7772,7 @@ packages: /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: true /@types/pretty-hrtime@1.0.1: resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} @@ -8079,10 +7838,6 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - /@types/unist@3.0.0: - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} - dev: false - /@types/update-notifier@6.0.1: resolution: {integrity: sha512-J6x9qtPDKgJGLdTjiswhhiL5QJoZv7eQb44t90mWb4Cf3tnuDRMvg8je9PoxDJZiGog0bfoFVcVHBq4RcItRZg==} dependencies: @@ -8713,10 +8468,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: false - /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -8758,10 +8509,6 @@ packages: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: true - /arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: false - /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -8770,10 +8517,6 @@ packages: readable-stream: 3.6.0 dev: true - /arg@1.0.0: - resolution: {integrity: sha512-Wk7TEzl1KqvTGs/uyhmHO/3XLd3t1UeU4IstvPXVzGPM522cTjqjNZ99esCkcL52sjqjo8e8CTBcWhkxvGzoAw==} - dev: false - /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true @@ -8782,9 +8525,11 @@ packages: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /aria-hidden@1.1.3: resolution: {integrity: sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==} @@ -9692,15 +9437,6 @@ packages: type-detect: 4.0.8 dev: true - /chalk@2.3.0: - resolution: {integrity: sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 4.5.0 - dev: false - /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -9851,14 +9587,6 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - /clipboardy@1.2.2: - resolution: {integrity: sha512-16KrBOV7bHmHdxcQiCvfUFYVFyEah4FI8vYT1Fr7CGSA4G+xBWMEfUEQJS1hxeHGtI9ju1Bzs9uXSbj5HZKArw==} - engines: {node: '>=4'} - dependencies: - arch: 2.2.0 - execa: 0.8.0 - dev: false - /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -9889,11 +9617,6 @@ packages: engines: {node: '>=0.8'} dev: true - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - /clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -9961,14 +9684,10 @@ packages: engines: {node: '>= 6'} dev: true - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + dev: true /common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -10004,10 +9723,6 @@ packages: - supports-color dev: true - /compute-scroll-into-view@2.0.3: - resolution: {integrity: sha512-mj/AjC7WqXeVlUB6zUq5Qrivb6et0kyasDQcbCWLDusYUqaXng+BfOnhCdRqPOa5/dWNn5e9+u40H6w2BYRdNQ==} - dev: false - /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true @@ -10132,18 +9847,6 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cose-base@1.0.3: - resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} - dependencies: - layout-base: 1.0.2 - dev: false - - /cose-base@2.2.0: - resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - dependencies: - layout-base: 2.0.1 - dev: false - /cosmiconfig@7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} @@ -10211,6 +9914,7 @@ packages: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -10322,320 +10026,35 @@ packages: stream-transform: 2.1.3 dev: true - /cytoscape-cose-bilkent@4.1.0(cytoscape@3.25.0): - resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} - peerDependencies: - cytoscape: ^3.2.0 - dependencies: - cose-base: 1.0.3 - cytoscape: 3.25.0 - dev: false - - /cytoscape-fcose@2.2.0(cytoscape@3.25.0): - resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} - peerDependencies: - cytoscape: ^3.2.0 - dependencies: - cose-base: 2.2.0 - cytoscape: 3.25.0 - dev: false + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true - /cytoscape@3.25.0: - resolution: {integrity: sha512-7MW3Iz57mCUo6JQCho6CmPBCbTlJr7LzyEtIkutG255HLVd4XuBg2I9BkTZLI/e4HoaOB/BiAzXuQybQ95+r9Q==} + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} dependencies: - heap: 0.2.7 - lodash: 4.17.21 - dev: false - - /d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - dependencies: - internmap: 2.0.3 + assert-plus: 1.0.0 dev: false - /d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} + /data-uri-to-buffer@4.0.0: + resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + engines: {node: '>= 12'} dev: false - /d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false + /dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dev: true - /d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} + /deasync@0.1.28: + resolution: {integrity: sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg==} + engines: {node: '>=0.11.0'} + requiresBuild: true dependencies: - d3-path: 3.1.0 - dev: false - - /d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - dev: false - - /d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.4 - dev: false - - /d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} - dependencies: - delaunator: 5.0.0 - dev: false - - /d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - dev: false - - /d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - dev: false - - /d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - dev: false - - /d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - dev: false - - /d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - dependencies: - d3-dsv: 3.0.1 - dev: false - - /d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - dev: false - - /d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - dev: false - - /d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.4 - dev: false - - /d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - dev: false - - /d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - dev: false - - /d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - dev: false - - /d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - dev: false - - /d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - dev: false - - /d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - dev: false - - /d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - dev: false - - /d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.4 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - dev: false - - /d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - dev: false - - /d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - dependencies: - d3-path: 3.1.0 - dev: false - - /d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - dependencies: - d3-time: 3.1.0 - dev: false - - /d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.4 - dev: false - - /d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - dev: false - - /d3-transition@3.0.1(d3-selection@3.0.0): - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - dev: false - - /d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - - /d3@7.8.5: - resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.4 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.2 - d3-delaunay: 6.0.4 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.0 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.0.0 - d3-selection: 3.0.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - dev: false - - /dagre-d3-es@7.0.10: - resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} - dependencies: - d3: 7.8.5 - lodash-es: 4.17.21 - dev: false - - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: false - - /data-uri-to-buffer@4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} - engines: {node: '>= 12'} - dev: false - - /dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dev: true - - /dayjs@1.11.8: - resolution: {integrity: sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==} - dev: false - - /deasync@0.1.28: - resolution: {integrity: sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg==} - engines: {node: '>=0.11.0'} - requiresBuild: true - dependencies: - bindings: 1.5.0 - node-addon-api: 1.7.2 - dev: true - optional: true + bindings: 1.5.0 + node-addon-api: 1.7.2 + dev: true + optional: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -10802,12 +10221,6 @@ packages: slash: 3.0.0 dev: true - /delaunator@5.0.0: - resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} - dependencies: - robust-predicates: 3.0.2 - dev: false - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -10964,10 +10377,6 @@ packages: domelementtype: 2.3.0 dev: false - /dompurify@3.0.3: - resolution: {integrity: sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ==} - dev: false - /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -11066,10 +10475,6 @@ packages: /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /elkjs@0.8.2: - resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} - dev: false - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -11366,6 +10771,7 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + dev: true /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} @@ -11756,6 +11162,7 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + dev: true /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} @@ -11822,13 +11229,6 @@ packages: source-map: 0.7.4 dev: false - /estree-util-value-to-estree@1.3.0: - resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} - engines: {node: '>=12.0.0'} - dependencies: - is-plain-obj: 3.0.0 - dev: false - /estree-util-visit@1.2.0: resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} dependencies: @@ -11867,19 +11267,6 @@ packages: safe-buffer: 5.2.1 dev: true - /execa@0.8.0: - resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} - engines: {node: '>=4'} - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: false - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -12181,19 +11568,11 @@ packages: resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} dev: true - /flexsearch@0.7.21: - resolution: {integrity: sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==} - dev: false - /flow-parser@0.203.1: resolution: {integrity: sha512-Nw2M8MPP/Zb+yhvmPDEjzkCXLtgyWGKXZjAYOVftm+wIf3xd4FKa7nRI9v67rODs0WzxMbPc8IPs/7o/dyxo/Q==} engines: {node: '>=0.4.0'} dev: true - /focus-visible@5.2.0: - resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} - dev: false - /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -12469,11 +11848,6 @@ packages: engines: {node: '>=8'} dev: true - /get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - dev: false - /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -12513,25 +11887,13 @@ packages: - supports-color dev: true - /git-up@7.0.0: - resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} - dependencies: - is-ssh: 1.4.0 - parse-url: 8.1.0 - dev: false - - /git-url-parse@13.1.0: - resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} - dependencies: - git-up: 7.0.0 - dev: false - /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: true /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: true /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -12724,6 +12086,7 @@ packages: kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 + dev: true /gunzip-maybe@1.4.2: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} @@ -12773,11 +12136,6 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag@2.0.0: - resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} - engines: {node: '>=0.10.0'} - dev: false - /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -12837,15 +12195,6 @@ packages: safe-buffer: 5.2.1 dev: true - /hash-obj@4.0.0: - resolution: {integrity: sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==} - engines: {node: '>=12'} - dependencies: - is-obj: 3.0.0 - sort-keys: 5.0.0 - type-fest: 1.4.0 - dev: false - /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: @@ -12865,32 +12214,6 @@ packages: web-namespaces: 2.0.1 dev: true - /hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} - dependencies: - hastscript: 7.0.2 - web-namespaces: 2.0.1 - dev: false - - /hast-util-from-html-isomorphic@1.0.0: - resolution: {integrity: sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==} - dependencies: - '@types/hast': 2.3.4 - hast-util-from-dom: 4.2.0 - hast-util-from-html: 1.0.2 - unist-util-remove-position: 4.0.1 - dev: false - - /hast-util-from-html@1.0.2: - resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} - dependencies: - '@types/hast': 2.3.4 - hast-util-from-parse5: 7.1.0 - parse5: 7.1.2 - vfile: 5.3.4 - vfile-message: 3.1.2 - dev: false - /hast-util-from-parse5@7.1.0: resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==} dependencies: @@ -12902,17 +12225,20 @@ packages: vfile: 5.3.4 vfile-location: 4.0.1 web-namespaces: 2.0.1 + dev: true /hast-util-is-element@2.1.2: resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==} dependencies: '@types/hast': 2.3.4 '@types/unist': 2.0.6 + dev: true /hast-util-parse-selector@3.1.0: resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} dependencies: '@types/hast': 2.3.4 + dev: true /hast-util-raw@7.2.2: resolution: {integrity: sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==} @@ -12978,14 +12304,6 @@ packages: zwitch: 2.0.2 dev: true - /hast-util-to-text@3.1.1: - resolution: {integrity: sha512-7S3mOBxACy8syL45hCn3J7rHqYaXkxRfsX6LXEU5Shz4nt4GxdjtMUtG+T6G/ZLUHd7kslFAf14kAN71bz30xA==} - dependencies: - '@types/hast': 2.3.4 - hast-util-is-element: 2.1.2 - unist-util-find-after: 4.0.0 - dev: false - /hast-util-whitespace@2.0.0: resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} @@ -12997,16 +12315,13 @@ packages: hast-util-parse-selector: 3.1.0 property-information: 6.1.1 space-separated-tokens: 2.0.1 + dev: true /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true - /heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - dev: false - /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: @@ -13177,8 +12492,11 @@ packages: /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: safer-buffer: 2.1.2 + dev: true + optional: true /icss-utils@5.1.0(postcss@8.4.24): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} @@ -13279,20 +12597,11 @@ packages: resolution: {integrity: sha512-2qwKP4SqqrsTR6pKxd3VBMfzXHdpCz5rPOYNAGkFIg+Z8U+p/j5yzySN6jN+/VLojckGR+g2rD4hOLho8juz0g==} dev: false - /internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - dev: false - /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} dev: true - /intersection-observer@0.12.2: - resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} - dev: false - /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -13514,11 +12823,6 @@ packages: engines: {node: '>=8'} dev: false - /is-obj@3.0.0: - resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} - engines: {node: '>=12'} - dev: false - /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -13533,11 +12837,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - dev: false - /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -13578,17 +12877,6 @@ packages: call-bind: 1.0.2 dev: true - /is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - dependencies: - protocols: 2.0.1 - dev: false - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: false - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -13872,12 +13160,14 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 + dev: true /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} @@ -13967,6 +13257,7 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -14005,30 +13296,12 @@ packages: object.assign: 4.1.4 dev: true - /katex@0.13.24: - resolution: {integrity: sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==} - hasBin: true - dependencies: - commander: 8.3.0 - dev: false - - /katex@0.16.7: - resolution: {integrity: sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==} - hasBin: true - dependencies: - commander: 8.3.0 - dev: false - /keyv@4.5.0: resolution: {integrity: sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==} dependencies: json-buffer: 3.0.1 dev: false - /khroma@2.0.0: - resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} - dev: false - /kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -14039,6 +13312,7 @@ packages: /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -14071,14 +13345,6 @@ packages: package-json: 8.1.0 dev: false - /layout-base@1.0.2: - resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} - dev: false - - /layout-base@2.0.1: - resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - dev: false - /lazy-universal-dotenv@4.0.0: resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} engines: {node: '>=14.0.0'} @@ -14231,18 +13497,10 @@ packages: p-locate: 5.0.0 dev: true - /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false - /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -14394,6 +13652,7 @@ packages: /markdown-table@3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} + dev: true /markdown-to-jsx@7.2.0(react@18.2.0): resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==} @@ -14404,13 +13663,6 @@ packages: react: 18.2.0 dev: true - /match-sorter@6.3.1: - resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} - dependencies: - '@babel/runtime': 7.22.3 - remove-accents: 0.4.2 - dev: false - /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -14438,6 +13690,7 @@ packages: escape-string-regexp: 5.0.0 unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.1 + dev: true /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} @@ -14456,6 +13709,7 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color + dev: true /mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} @@ -14482,6 +13736,7 @@ packages: ccount: 2.0.1 mdast-util-find-and-replace: 2.2.1 micromark-util-character: 1.1.0 + dev: true /mdast-util-gfm-footnote@1.0.1: resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} @@ -14489,12 +13744,14 @@ packages: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 micromark-util-normalize-identifier: 1.0.0 + dev: true /mdast-util-gfm-strikethrough@1.0.1: resolution: {integrity: sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 + dev: true /mdast-util-gfm-table@1.0.4: resolution: {integrity: sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==} @@ -14504,12 +13761,14 @@ packages: mdast-util-to-markdown: 1.3.0 transitivePeerDependencies: - supports-color + dev: true /mdast-util-gfm-task-list-item@1.0.1: resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 + dev: true /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} @@ -14523,14 +13782,7 @@ packages: mdast-util-to-markdown: 1.3.0 transitivePeerDependencies: - supports-color - - /mdast-util-math@2.0.1: - resolution: {integrity: sha512-ZZtjyRwobsiVg4bY0Q5CzAZztpbjRIA7ZlMMb0PNkwTXOnJTUoHvzBhVG95LIuek5Mlj1l2P+jBvWviqW7G+0A==} - dependencies: - '@types/mdast': 3.0.10 - longest-streak: 3.0.1 - mdast-util-to-markdown: 1.3.0 - dev: false + dev: true /mdast-util-mdx-expression@1.3.0: resolution: {integrity: sha512-9kTO13HaL/ChfzVCIEfDRdp1m5hsvsm6+R8yr67mH+KS2ikzZ0ISGLPTbTswOFpLLlgVHO9id3cul4ajutCvCA==} @@ -14668,30 +13920,6 @@ packages: engines: {node: '>= 8'} dev: true - /mermaid@10.2.3: - resolution: {integrity: sha512-cMVE5s9PlQvOwfORkyVpr5beMsLdInrycAosdr+tpZ0WFjG4RJ/bUHST7aTgHNJbujHkdBRAm+N50P3puQOfPw==} - dependencies: - '@braintree/sanitize-url': 6.0.2 - cytoscape: 3.25.0 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.25.0) - cytoscape-fcose: 2.2.0(cytoscape@3.25.0) - d3: 7.8.5 - dagre-d3-es: 7.0.10 - dayjs: 1.11.8 - dompurify: 3.0.3 - elkjs: 0.8.2 - khroma: 2.0.0 - lodash-es: 4.17.21 - mdast-util-from-markdown: 1.3.1 - non-layered-tidy-tree-layout: 2.0.2 - stylis: 4.2.0 - ts-dedent: 2.2.0 - uuid: 9.0.0 - web-worker: 1.2.0 - transitivePeerDependencies: - - supports-color - dev: false - /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -14725,6 +13953,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-gfm-footnote@1.0.4: resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} @@ -14737,6 +13966,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-gfm-strikethrough@1.0.4: resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} @@ -14747,6 +13977,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-gfm-table@1.0.5: resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} @@ -14756,11 +13987,13 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-gfm-tagfilter@1.0.1: resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} dependencies: micromark-util-types: 1.0.2 + dev: true /micromark-extension-gfm-task-list-item@1.0.3: resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} @@ -14770,6 +14003,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} @@ -14782,18 +14016,7 @@ packages: micromark-extension-gfm-task-list-item: 1.0.3 micromark-util-combine-extensions: 1.0.0 micromark-util-types: 1.0.2 - - /micromark-extension-math@2.0.2: - resolution: {integrity: sha512-cFv2B/E4pFPBBFuGgLHkkNiFAIQv08iDgPH2HCuR2z3AUgMLecES5Cq7AVtwOtZeRrbA80QgMUk8VVW0Z+D2FA==} - dependencies: - '@types/katex': 0.11.1 - katex: 0.13.24 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false + dev: true /micromark-extension-mdx-expression@1.0.3: resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} @@ -15277,35 +14500,6 @@ packages: server-only: 0.0.1 dev: false - /next-mdx-remote@4.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PcVF1r5XTBjiNVXw0GyaIcOwQsklHo36+7ycfmtJb52TIkT0nM4Hzv4wgJwNg7+jvTbap99qWsMwdKUYR9WxAA==} - engines: {node: '>=14', npm: '>=7'} - peerDependencies: - react: '>=16.x <=18.x' - react-dom: '>=16.x <=18.x' - dependencies: - '@mdx-js/mdx': 2.3.0 - '@mdx-js/react': 2.3.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - vfile: 5.3.4 - vfile-matter: 3.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /next-seo@6.0.0(next@13.4.12)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jKKt1p1z4otMA28AyeoAONixVjdYmgFCWwpEFtu+DwRHQDllVX3RjtyXbuCQiUZEfQ9rFPBpAI90vDeLZlMBdg==} - peerDependencies: - next: ^8.1.1-canary.54 || >=9.0.0 - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - next: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /next-sitemap@4.0.6(@next/env@13.4.12)(next@13.4.12): resolution: {integrity: sha512-pZ9tynYe6mRR189qZqcOlWVgM1Gxo07BJQW0AjerKmLwQOt+6FQMdaDgifgCt6jDT3Y3EG/+NUDDZRcd0gbPkA==} engines: {node: '>=14.18'} @@ -15320,18 +14514,6 @@ packages: next: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) dev: false - /next-themes@0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} - peerDependencies: - next: '*' - react: '*' - react-dom: '*' - dependencies: - next: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /next@13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} engines: {node: '>=16.8.0'} @@ -15374,72 +14556,6 @@ packages: - '@babel/core' - babel-plugin-macros - /nextra-theme-docs@2.10.0(next@13.4.12)(nextra@2.10.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uXoqRoewbu0JoqQ1m67aIztWe9/nEhcSeHMimhLxZghKZxkYN0kTR5y5jmrwOHRPuJUTLL2YFwy1rvWJIZS2lw==} - peerDependencies: - next: '>=9.5.3' - nextra: 2.10.0 - react: '>=16.13.1' - react-dom: '>=16.13.1' - dependencies: - '@headlessui/react': 1.7.12(react-dom@18.2.0)(react@18.2.0) - '@popperjs/core': 2.11.6 - clsx: 1.2.1 - flexsearch: 0.7.21 - focus-visible: 5.2.0 - git-url-parse: 13.1.0 - intersection-observer: 0.12.2 - match-sorter: 6.3.1 - next: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - next-seo: 6.0.0(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) - next-themes: 0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) - nextra: 2.10.0(next@13.4.12)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - scroll-into-view-if-needed: 3.0.3 - zod: 3.21.4 - dev: false - - /nextra@2.10.0(next@13.4.12)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-euv93UnWpdth8slMRJLqMrWvCCzR/VTVH6DPrn1JW7hZS03c2lzG2q+fsiYULGiy/kFyysmlxd4Nx5KGB1Txwg==} - engines: {node: '>=16'} - peerDependencies: - next: '>=9.5.3' - react: '>=16.13.1' - react-dom: '>=16.13.1' - dependencies: - '@headlessui/react': 1.7.12(react-dom@18.2.0)(react@18.2.0) - '@mdx-js/mdx': 2.3.0 - '@mdx-js/react': 2.3.0(react@18.2.0) - '@napi-rs/simple-git': 0.1.8 - '@theguild/remark-mermaid': 0.0.4(react@18.2.0) - '@theguild/remark-npm2yarn': 0.1.1 - clsx: 1.2.1 - github-slugger: 2.0.0 - graceful-fs: 4.2.11 - gray-matter: 4.0.3 - katex: 0.16.7 - lodash.get: 4.4.2 - next: 13.4.12(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) - next-mdx-remote: 4.2.1(react-dom@18.2.0)(react@18.2.0) - p-limit: 3.1.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - rehype-katex: 6.0.3 - rehype-pretty-code: 0.9.11(shiki@0.14.2) - remark-gfm: 3.0.1 - remark-math: 5.1.1 - remark-reading-time: 2.0.1 - shiki: 0.14.2 - slash: 3.0.0 - title: 3.5.3 - unist-util-remove: 4.0.0 - unist-util-visit: 5.0.0 - zod: 3.21.4 - transitivePeerDependencies: - - supports-color - dev: false - /nlcst-to-string@2.0.4: resolution: {integrity: sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==} dev: true @@ -15554,10 +14670,6 @@ packages: engines: {node: '>=6.0.0'} dev: false - /non-layered-tidy-tree-layout@2.0.2: - resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} - dev: false - /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -15590,13 +14702,6 @@ packages: engines: {node: '>=12.20'} dev: false - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: false - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -15611,11 +14716,6 @@ packages: path-key: 4.0.0 dev: true - /npm-to-yarn@2.0.0: - resolution: {integrity: sha512-/IbjiJ7vqbxfxJxAZ+QI9CCRjnIbvGxn5KQcSY9xHh0lMKc/Sgqmm7yp7KPmd6TiTZX5/KiSBKlkGHo59ucZbg==} - engines: {node: '>=6.0.0'} - dev: false - /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: @@ -15859,11 +14959,6 @@ packages: p-map: 2.1.0 dev: true - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: false - /p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -15883,6 +14978,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -16019,32 +15115,10 @@ packages: engines: {node: '>= 0.10'} dev: true - /parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false - - /parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} - dependencies: - protocols: 2.0.1 - dev: false - - /parse-url@8.1.0: - resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - dependencies: - parse-path: 7.0.0 - dev: false - /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - dependencies: - entities: 4.4.0 - dev: false - /parseley@0.11.0: resolution: {integrity: sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==} dependencies: @@ -16083,11 +15157,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: false - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -16627,10 +15696,6 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false - /protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - dev: false - /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -17083,10 +16148,6 @@ packages: picomatch: 2.3.1 dev: true - /reading-time@1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - dev: false - /recast@0.21.5: resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} engines: {node: '>= 4'} @@ -17205,17 +16266,6 @@ packages: jsesc: 0.5.0 dev: true - /rehype-katex@6.0.3: - resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} - dependencies: - '@types/hast': 2.3.4 - '@types/katex': 0.14.0 - hast-util-from-html-isomorphic: 1.0.0 - hast-util-to-text: 3.1.1 - katex: 0.16.7 - unist-util-visit: 4.1.2 - dev: false - /rehype-parse@8.0.4: resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} dependencies: @@ -17225,18 +16275,6 @@ packages: unified: 10.1.2 dev: true - /rehype-pretty-code@0.9.11(shiki@0.14.2): - resolution: {integrity: sha512-Eq90eCYXQJISktfRZ8PPtwc5SUyH6fJcxS8XOMnHPUQZBtC6RYo67gGlley9X2nR8vlniPj0/7oCDEYHKQa/oA==} - engines: {node: '>=16'} - peerDependencies: - shiki: '*' - dependencies: - '@types/hast': 2.3.4 - hash-obj: 4.0.0 - parse-numeric-range: 1.3.0 - shiki: 0.14.2 - dev: false - /rehype-raw@6.1.1: resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} dependencies: @@ -17286,15 +16324,7 @@ packages: unified: 10.1.2 transitivePeerDependencies: - supports-color - - /remark-math@5.1.1: - resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-math: 2.0.1 - micromark-extension-math: 2.0.2 - unified: 10.1.2 - dev: false + dev: true /remark-mdx@2.1.3: resolution: {integrity: sha512-3SmtXOy9+jIaVctL8Cs3VAQInjRLGOwNXfrBB9KCT+EpJpKD3PQiy0x8hUNGyjQmdyOs40BqgPU7kYtH9uoR6w==} @@ -17314,15 +16344,6 @@ packages: transitivePeerDependencies: - supports-color - /remark-reading-time@2.0.1: - resolution: {integrity: sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==} - dependencies: - estree-util-is-identifier-name: 2.0.1 - estree-util-value-to-estree: 1.3.0 - reading-time: 1.5.0 - unist-util-visit: 3.1.0 - dev: false - /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: @@ -17348,10 +16369,6 @@ packages: unist-util-visit: 4.1.2 dev: true - /remove-accents@0.4.2: - resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} - dev: false - /renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -17554,10 +16571,6 @@ packages: inherits: 2.0.4 dev: true - /robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - dev: false - /rollup@3.17.2: resolution: {integrity: sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -17583,10 +16596,6 @@ packages: queue-microtask: 1.2.3 dev: true - /rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - dev: false - /s.color@0.0.15: resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} dev: true @@ -17701,18 +16710,13 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: true - /scroll-into-view-if-needed@3.0.3: - resolution: {integrity: sha512-QoCH0lVw0tbA7Rl6sToH7e1tO3n95Oi6JgBgC8hEpNNZUC91MfasJ/4E1ZdbzGueNDZ+Y7ObfRaelKUgTyPbJA==} - dependencies: - compute-scroll-into-view: 2.0.3 - dev: false - /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 + dev: true /selderee@0.10.0: resolution: {integrity: sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==} @@ -17876,6 +16880,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -17886,6 +16891,7 @@ packages: /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -17909,15 +16915,6 @@ packages: vscode-textmate: 6.0.0 dev: true - /shiki@0.14.2: - resolution: {integrity: sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==} - dependencies: - ansi-sequence-parser: 1.1.0 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: false - /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -17979,6 +16976,7 @@ packages: /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + dev: true /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} @@ -17998,13 +16996,6 @@ packages: yargs: 15.4.1 dev: true - /sort-keys@5.0.0: - resolution: {integrity: sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==} - engines: {node: '>=12'} - dependencies: - is-plain-obj: 4.1.0 - dev: false - /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -18068,6 +17059,7 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} @@ -18241,6 +17233,7 @@ packages: /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} + dev: true /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -18252,11 +17245,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: false - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -18329,10 +17317,6 @@ packages: client-only: 0.0.1 react: 18.2.0 - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false - /sucrase@3.29.0: resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} engines: {node: '>=8'} @@ -18352,13 +17336,6 @@ packages: s.color: 0.0.15 dev: true - /supports-color@4.5.0: - resolution: {integrity: sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==} - engines: {node: '>=4'} - dependencies: - has-flag: 2.0.0 - dev: false - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -18666,21 +17643,6 @@ packages: engines: {node: '>=14.0.0'} dev: true - /title@3.5.3: - resolution: {integrity: sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==} - hasBin: true - dependencies: - arg: 1.0.0 - chalk: 2.3.0 - clipboardy: 1.2.2 - titleize: 1.0.0 - dev: false - - /titleize@1.0.0: - resolution: {integrity: sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==} - engines: {node: '>=0.10.0'} - dev: false - /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -18763,6 +17725,7 @@ packages: /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + dev: true /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -19153,13 +18116,6 @@ packages: dependencies: '@types/unist': 2.0.6 - /unist-util-find-after@4.0.0: - resolution: {integrity: sha512-gfpsxKQde7atVF30n5Gff2fQhAc4/HTOV4CvkXpTg9wRfQhZWdXitpyXHWB6YcYgnsxLx+4gGHeVjCTAAp9sjw==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - dev: false - /unist-util-generated@2.0.0: resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} @@ -19170,12 +18126,6 @@ packages: /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - dependencies: - '@types/unist': 3.0.0 - dev: false - /unist-util-modify-children@2.0.0: resolution: {integrity: sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==} dependencies: @@ -19200,14 +18150,6 @@ packages: unist-util-visit: 4.1.2 dev: false - /unist-util-remove@4.0.0: - resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} - dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: false - /unist-util-stringify-position@3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: @@ -19224,26 +18166,12 @@ packages: unist-util-is: 4.1.0 dev: true - /unist-util-visit-parents@4.1.1: - resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - dev: false - /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 - dev: false - /unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} dependencies: @@ -19252,14 +18180,6 @@ packages: unist-util-visit-parents: 3.1.1 dev: true - /unist-util-visit@3.1.0: - resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 4.1.1 - dev: false - /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: @@ -19275,14 +18195,6 @@ packages: unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.1 - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: false - /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -19470,6 +18382,7 @@ packages: /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + dev: true /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} @@ -19535,14 +18448,6 @@ packages: '@types/unist': 2.0.6 vfile: 5.3.4 - /vfile-matter@3.0.1: - resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} - dependencies: - '@types/js-yaml': 4.0.5 - is-buffer: 2.0.5 - js-yaml: 4.1.0 - dev: false - /vfile-message@3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} dependencies: @@ -19784,15 +18689,12 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true /vscode-textmate@6.0.0: resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} dev: true - /vscode-textmate@8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: false - /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} dev: true @@ -19822,16 +18724,13 @@ packages: /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: true /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} dev: false - /web-worker@1.2.0: - resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true @@ -20019,6 +18918,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -20271,6 +19171,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} From 16bc295530afa9dab79a69cda4896066d2de2a47 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 22:59:01 +0100 Subject: [PATCH 05/22] adjust content --- README.md | 4 +- docs/content/cli.md | 110 ++++++++++---------- docs/content/cloud/assets.md | 16 +-- docs/content/cloud/cron.md | 18 ++-- docs/content/cloud/deployments.md | 31 +++--- docs/content/cloud/domains.md | 25 ++--- docs/content/cloud/environment-variables.md | 13 +-- docs/content/cloud/logs.md | 4 +- docs/content/cloud/pricing.md | 4 +- docs/content/cloud/regions.md | 23 +--- docs/content/contributing.md | 11 +- docs/content/examples.md | 58 +++++------ docs/content/getting-started.md | 39 ++++--- docs/content/introduction.md | 12 ++- docs/content/runtime-apis.md | 45 ++++---- 15 files changed, 193 insertions(+), 220 deletions(-) diff --git a/README.md b/README.md index 44d26488..4beebca9 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Lagoss is a fork of [Lagon](https://github.com/lagonapp/lagon) an open-source ru > intention to continue development. There is currently a public testing instance > deployed at . However it should be only used for basic > testing and data might be deleted at any point. If you want a proper setup, -> please deploy your own instance => [Install my own instance](./docs/installation.md). +> please deploy your own instance => [Install my own instance](https://docs.lagoss.com). ## Packages @@ -52,7 +52,7 @@ Starting an Isolate is a lot faster than starting a whole Node.js process, which ## Installation -Learn how you can [install](./docs/installation.md) your own Lagoss instance. +Learn how you can [install](https://docs.lagoss.com) your own Lagoss instance. ## License diff --git a/docs/content/cli.md b/docs/content/cli.md index bf3e6424..00b1beb0 100644 --- a/docs/content/cli.md +++ b/docs/content/cli.md @@ -1,10 +1,8 @@ -import { Callout, Collapse } from 'nextra-theme-docs'; - The easiest way to deploy and manage Functions is through our [Command-line interface](https://en.wikipedia.org/wiki/Command-line_interface). ## Installation -Lagon CLI is available for the following operating systems: +Lagoss CLI is available for the following operating systems: - macOS (Intel and M1) - Linux (x64 and arm64) @@ -14,32 +12,32 @@ We recommend installing the CLI globally, using the package manager of your choi ```bash # NPM -npm install --global @lagon/cli esbuild +npm install --global @lagoss/cli esbuild # Yarn -yarn global add @lagon/cli esbuild +yarn global add @lagoss/cli esbuild # PNPM -pnpm install --global @lagon/cli esbuild +pnpm install --global @lagoss/cli esbuild ``` ## Usage -Once installed, execute the `lagon` CLI to see all the commands available. +Once installed, execute the `lagoss` CLI to see all the commands available. -### `lagon login` +### `lagoss login` -Before being able to deploy and manage Functions, you will need to log in. Make sure you have already [created an account](/cloud/account). If you try to execute a command that requires being logged in, you will be warned and the command will be aborted. +Before being able to deploy and manage Functions, you will need to log in. Make sure you have already [created an account](./cloud/account.md). If you try to execute a command that requires being logged in, you will be warned and the command will be aborted. -To proceed, run `lagon login` and follow the instructions. +To proceed, run `lagoss login` and follow the instructions. -### `lagon logout` +### `lagoss logout` If you want, you can log out at any time. For security, you will be asked to confirm that you want to log out. -To proceed, run `lagon logout` and follow the instructions. +To proceed, run `lagoss logout` and follow the instructions. -### `lagon deploy` +### `lagoss deploy` -Create a new Function or a new Deployment in the given directory. Make sure you are [logged in](#lagon-login) before proceeding. If you are executing the command for the first time: +Create a new Function or a new Deployment in the given directory. Make sure you are [logged in](#lagoss-login) before proceeding. If you are executing the command for the first time: 1. You will be prompted to select an Organization 2. You will be able to link to an existing Function, or create a new one by specifying a name @@ -57,16 +55,16 @@ Examples: ```bash # Deploy the current directory to Production -lagon deploy --prod +lagoss deploy --prod # Deploy the index.ts file -lagon deploy ./index.ts +lagoss deploy ./index.ts # Deploy the my-project directory and override the public directory -lagon deploy ./my-project --public ./my-project/assets +lagoss deploy ./my-project --public ./my-project/assets ``` -### `lagon ls` +### `lagoss ls` -List all the Deployments of the given directory. Make sure you are [logged in](#lagon-login) before proceeding. This command accepts only one argument: +List all the Deployments of the given directory. Make sure you are [logged in](#lagoss-login) before proceeding. This command accepts only one argument: - `[DIRECTORY]` is an optional path to a directory containing the Function. (Default: `.`) @@ -74,14 +72,14 @@ Example: ```bash # List Deployments in the current directory -lagon ls +lagoss ls # List Deployments of the my-project directory -lagon ls ./my-project +lagoss ls ./my-project ``` -### `lagon promote` +### `lagoss promote` -Promote the given Deployment to production. Make sure you are [logged in](#lagon-login) before proceeding. This command accepts the following arguments: +Promote the given Deployment to production. Make sure you are [logged in](#lagoss-login) before proceeding. This command accepts the following arguments: - `` the ID of the Deployment to promote. - `[DIRECTORY]` is an optional path to a directory containing the Function. (Default: `.`) @@ -90,14 +88,14 @@ Example: ```bash # Promote the cl...km Deployment in the current directory -lagon promote claxnlc230738q5pa7iximskm +lagoss promote claxnlc230738q5pa7iximskm # Promote the cl...km Deployment of the my-project directory -lagon promote claxnlc230738q5pa7iximskm ./my-project +lagoss promote claxnlc230738q5pa7iximskm ./my-project ``` -### `lagon undeploy` +### `lagoss undeploy` -Un-deploy a Deployment. Make sure you are [logged in](#lagon-login) before proceeding. This command accepts the following arguments: +Un-deploy a Deployment. Make sure you are [logged in](#lagoss-login) before proceeding. This command accepts the following arguments: - `` the ID of the Deployment to undeploy. - `[DIRECTORY]` is an optional path to a directory containing the Function. (Default: `.`) @@ -106,18 +104,18 @@ Example: ```bash # Undeploy the cl...km Deployment in the current directory -lagon undeploy claxnlc230738q5pa7iximskm +lagoss undeploy claxnlc230738q5pa7iximskm # Undeploy the cl...km Deployment of the my-project directory -lagon undeploy claxnlc230738q5pa7iximskm ./my-project +lagoss undeploy claxnlc230738q5pa7iximskm ./my-project ``` -### `lagon rm` +### `lagoss rm` - - Deleting a Function also deletes permanently all of its Deployments, statistics and logs. - +::: danger +Deleting a Function also deletes permanently all of its Deployments, statistics and logs. +::: -Delete completely a Function. You'll be asked to confirm before proceeding. Make sure you are [logged in](#lagon-login) before proceeding. This command accepts only one argument: +Delete completely a Function. You'll be asked to confirm before proceeding. Make sure you are [logged in](#lagoss-login) before proceeding. This command accepts only one argument: - `[DIRECTORY]` is an optional path to a directory containing the Function. (Default: `.`) @@ -125,12 +123,12 @@ Example: ```bash # Delete the current directory's Function -lagon rm +lagoss rm # Delete the my-project directory's Function -lagon rm ./my-project +lagoss rm ./my-project ``` -### `lagon dev` +### `lagoss dev` Launch a local dev server, using the same Runtime as when deployed to the Cloud. You can either: @@ -145,7 +143,7 @@ This command accepts the following arguments and options: - `--public, -p <>` allows you to specify a path to a directory containing assets to be served statically. - `--hostname ` allows you to specify a custom hostname to start the server on. (Default: `127.0.0.1`) - `--port ` allows you to specify a custom port to start the server on. (Default: `1234`) -- `--env ` allows you to specify a custom path to an environment file to inject [environment variables](/cloud/environment-variables). (Default: `.env`) +- `--env ` allows you to specify a custom path to an environment file to inject [environment variables](./cloud/environment-variables.md). (Default: `.env`) - `--allow-code-generation` allows you to enable code generation from strings (`eval` / `new Function`) - `--prod` allows you to set `process.env.NODE_ENV` to `"production"` instead of `"development"` @@ -153,21 +151,21 @@ Examples: ```bash # Run a local dev server in the current directory -lagon dev +lagoss dev # Run a local dev server with a file entrypoint and some assets -lagon dev ./server.tsx --public ./assets +lagoss dev ./server.tsx --public ./assets # Run a local dev server inside the my-project directory using a custom port -lagon dev ./my-project --port 56565 +lagoss dev ./my-project --port 56565 ``` - - Although the `dev` command uses the same Runtime as when deployed, the local HTTP server itself doesn't have the same - optimizations. As such, you shouldn't run any production environment on it, or run any kind of load tests/benchmarks. - +::: warning +Although the `dev` command uses the same Runtime as when deployed, the local HTTP server itself doesn't have the same +optimizations. As such, you shouldn't run any production environment on it, or run any kind of load tests/benchmarks. +::: -### `lagon build` +### `lagoss build` -For debugging purposes, you can build a Function and see its output without deploying it. Under the hood, `lagon build` does the same steps as `lagon deploy`, but skips the deployment part and instead writes the output to a local `.lagon` folder. +For debugging purposes, you can build a Function and see its output without deploying it. Under the hood, `lagoss build` does the same steps as `lagoss deploy`, but skips the deployment part and instead writes the output to a local `.lagoss` folder. This command accepts the following arguments and options: @@ -178,35 +176,35 @@ This command accepts the following arguments and options: Examples: ```bash -lagon build ./server.tsx --client App.tsx --public ./assets -tree .lagon/ -# .lagon/ +lagoss build ./server.tsx --client App.tsx --public ./assets +tree .lagoss/ +# .lagoss/ # index.js # App.js # assets/ ``` -### `lagon link` +### `lagoss link` -Link a local Function to a deployed one, without triggering a new Deployment. Make sure you are [logged in](#lagon-login) before proceeding. This command accepts only one argument: +Link a local Function to a deployed one, without triggering a new Deployment. Make sure you are [logged in](#lagoss-login) before proceeding. This command accepts only one argument: - `[DIRECTORY]` is an optional path to a directory containing the Function. (Default: `.`) Example: ```bash -lagon link ./index.ts +lagoss link ./index.ts ``` ## Self-hosting configuration -If you are [self-hosting](/self-hosted/installation) Lagon, you will need to update the default site URL to the one used by your installation. To do so, find the configuration file located in `~/.lagon/config.json`: +If you are [self-hosting](./self-hosting/installation.md) Lagoss, you will need to update the default site URL to the one used by your installation. To do so, find the configuration file located in `~/.lagoss/config.json`: ```json { "token": "**************", - "site_url": "https://dash.lagon.app" // Replace this field + "site_url": "https://app.lagoss.com" // Replace this field } ``` -Replace the `site_url` field with the one configured during the installation. To verify if it's working correctly, log in to your installation using `lagon login`. +Replace the `site_url` field with the one configured during the installation. To verify if it's working correctly, log in to your installation using `lagoss login`. diff --git a/docs/content/cloud/assets.md b/docs/content/cloud/assets.md index cc1b0b85..29b000e2 100644 --- a/docs/content/cloud/assets.md +++ b/docs/content/cloud/assets.md @@ -1,6 +1,6 @@ -Lagon can host and serve assets such as images, CSS files, and JavaScript files. These assets are static files that are not generated dynamically by your Function. +Lagoss can host and serve assets such as images, CSS files, and JavaScript files. These assets are static files that are not generated dynamically by your Function. -When deploying a Function, you can specify an assets directory using the [`--public` or `-p`](/cli#lagon-deploy) flag. This directory will be served by Lagon at the root of your Function's URL. +When deploying a Function, you can specify an assets directory using the [`--public` or `-p`](./cli.md#lagoss-deploy) flag. This directory will be served by Lagoss at the root of your Function's URL. ## Automatic assets serving @@ -17,15 +17,15 @@ public/ To deploy this Function with these assets, you can use the `-p` or `--public` flag: ```bash -lagon deploy ./index.ts --public public +lagoss deploy ./index.ts --public public # Same as -lagon deploy ./index.ts -p public +lagoss deploy ./index.ts -p public ``` -Your Function is now deployed to `example.lagon.dev`. You can access the favicon and the image at the following URLs: +Your Function is now deployed to `example.lagoss.com`. You can access the favicon and the image at the following URLs: -- `example.lagon.dev/favicon.ico` -- `example.lagon.dev/images/image.png` +- `example.lagoss.com/favicon.ico` +- `example.lagoss.com/images/image.png` In your HTML, you can reference these files using relative paths: @@ -37,4 +37,4 @@ In your HTML, you can reference these files using relative paths: ## Limits -The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](/cloud/limits). +The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](./cloud/limits.md). diff --git a/docs/content/cloud/cron.md b/docs/content/cloud/cron.md index 72f711f6..adeaf5d7 100644 --- a/docs/content/cloud/cron.md +++ b/docs/content/cloud/cron.md @@ -5,19 +5,19 @@ Instead of providing an HTTP endpoint, you can create a [Cron expression](https: Cron Functions work the same as normal Functions, except that: - Function's `Request` is always empty, meaning the body, URL, and headers are empty -- If the Function's `Response` returns a `200` status code, Lagon will log a success message, optionally logging the `body` if it isn't empty. -- If the Function's `Response` returns a non-`200` status code, Lagon will log an error message optionally logging the `body` if it isn't empty, and retry the execution later. +- If the Function's `Response` returns a `200` status code, Lagoss will log a success message, optionally logging the `body` if it isn't empty. +- If the Function's `Response` returns a non-`200` status code, Lagoss will log an error message optionally logging the `body` if it isn't empty, and retry the execution later. - **Only production deployment are executed** Additionally, Cron Functions aren't accessible via HTTP, either using the default URL or a custom domain. The overview page of a Cron Function is a bit different than an HTTP Function, and shows more information like the time of the last and the next Cron executions. ## Configuration -Head over to the settings tab of your Function in the [Dashboard](https://dash.lagon.app) and scroll to the Cron section. Here, you can configure the Cron expression, which will be empty by default. We recommend using a tool like [Crontab Guru](https://crontab.guru/) to generate Cron expressions: +Head over to the settings tab of your Function in the [Dashboard](https://app.lagoss.com) and scroll to the Cron section. Here, you can configure the Cron expression, which will be empty by default. We recommend using a tool like [Crontab Guru](https://crontab.guru/) to generate Cron expressions: ![Cron](/images/cron.png) -Lagon accepts Cron expressions in the following format: +Lagoss accepts Cron expressions in the following format: ``` ┌───────────── minute (0 - 59) @@ -27,18 +27,18 @@ Lagon accepts Cron expressions in the following format: │ │ │ │ ┌───────────── day of week (0 - 6, Mon - Sun) │ │ │ │ │ * * * * * - + */5 * * * * Run every 5 minutes - + 0 12 * * * Run every day at 12:00 - + 0 12,18 * * * Run every day at 12:00 and 18:00 - + 0 6 * * 1 Run every Monday at 06:00 0 6 * * Mon Run every Monday at 06:00 ``` -You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](/cloud/regions). You can select your preferred region: +You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](./cloud/regions.md). You can select your preferred region: ![Cron region](/images/cron-region.png) diff --git a/docs/content/cloud/deployments.md b/docs/content/cloud/deployments.md index dd0f8e8c..223c6ae1 100644 --- a/docs/content/cloud/deployments.md +++ b/docs/content/cloud/deployments.md @@ -1,46 +1,43 @@ -import { Callout } from 'nextra-theme-docs'; - ## Deploying a new Function -A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](/cloud/domains) always points to the current production Deployment. +A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./cloud/domains.md) always points to the current production Deployment. Your Function always has a single production Deployment and typically has multiple preview Deployments. Each Deployment is immutable, and always accessible via a unique URL. ### Using the CLI -You can deploy a new Function using the `lagon deploy` command: +You can deploy a new Function using the `lagoss deploy` command: ```bash -lagon deploy your-file.ts +lagoss deploy your-file.ts ``` This will create a new Function and a new production Deployment. You can then deploy again this Function using the same command: - - By default, `lagon deploy` will create a preview Deployment. You can use the `--prod` flag to automatically promote - this new Deployment to production. - +::: info +By default, `lagoss deploy` will create a preview Deployment. You can use the `--prod` flag to automatically promote this new Deployment to production. +::: ```bash # Create a preview deployment -lagon deploy your-file.ts +lagoss deploy your-file.ts # Create a production deployment -lagon deploy --prod your-file.ts +lagoss deploy --prod your-file.ts ``` -Follow the [`lagon deploy` documentation](/cli#lagon-deploy) to learn more. +Follow the [`lagoss deploy` documentation](./cli.md#lagoss-deploy) to learn more. ### Using the GitHub Action -If you are using GitHub and want to automate your Deployments with [GitHub Actions](https://github.com/features/actions), you can use the [Lagon GitHub Action](https://github.com/lagonapp/github-action). +If you are using GitHub and want to automate your Deployments with [GitHub Actions](https://github.com/features/actions), you can use the [Lagoss GitHub Action](https://github.com/lagossapp/github-action). -Follow the [Lagon GitHub Action documentation](https://github.com/lagonapp/github-action) to learn more. +Follow the [Lagoss GitHub Action documentation](https://github.com/lagossapp/github-action) to learn more. ### Using the Dashboard -You can also create Functions and Deployments through the [Dashboard](https://dash.lagon.app), using the Playground. +You can also create Functions and Deployments through the [Dashboard](https://app.lagoss.com), using the Playground. -Head over to the [Dashboard](https://dash.lagon.app), and click on the "Create a Function" button. You will be redirected to the Playground, where you can see your new Function, with the code at the left and the deployed result at the right: +Head over to the [Dashboard](https://app.lagoss.com), and click on the "Create a Function" button. You will be redirected to the Playground, where you can see your new Function, with the code at the left and the deployed result at the right: ![Playground](/images/playground.png) @@ -48,6 +45,6 @@ You can now edit the code in the Playground, and click on the "Deploy" button to ## Cold starts -When a Deployment is requested for the first time in a [region](/cloud/regions), Lagon will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. +When a Deployment is requested for the first time in a [region](./cloud/regions.md), Lagoss will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. On subsequent requests, the same Isolate will be reused, allowing for much faster response times. After 15 minutes without any requests, the Isolate is spun down, and the next request will trigger a new cold start. diff --git a/docs/content/cloud/domains.md b/docs/content/cloud/domains.md index 7902beb6..6408e895 100644 --- a/docs/content/cloud/domains.md +++ b/docs/content/cloud/domains.md @@ -1,6 +1,4 @@ -import { Callout } from 'nextra-theme-docs'; - -By default, all Functions are assigned a unique URL, which is a subdomain of `lagon.dev`, pointing to the current production Deployment. The subdomain is always the name of the Function: if your Function is named `my-function`, your unique URL will be `my-function.lagon.dev`. +By default, all Functions are assigned a unique URL, which is a subdomain of `lagoss.com`, pointing to the current production Deployment. The subdomain is always the name of the Function: if your Function is named `my-function`, your unique URL will be `my-function.lagoss.com`. All domains (default and custom) are automatically assigned an SSL certificate, provided by [Let's Encrypt](https://letsencrypt.org/). They are also automatically renewed before they expire. As such, the first request to a Function using a brand-new custom domain may take a few seconds to generate the SSL certificate. @@ -12,25 +10,24 @@ You can add custom domains or subdomains to your Functions, pointing to the curr ![Domains](/images/domains-list.png) -To add a new custom domain or subdomain, click on "Add domain" button at the right, fill in the domain or subdomain and validate. Next, follow the instructions below to [point your domain or subdomain to Lagon](#pointing-your-domain-to-lagon). +To add a new custom domain or subdomain, click on "Add domain" button at the right, fill in the domain or subdomain and validate. Next, follow the instructions below to [point your domain or subdomain to Lagoss](#pointing-your-domain-to-lagoss). -## Pointing your domain to Lagon +## Pointing your domain to Lagoss -Now that you've added a custom domain or subdomain, you must update the DNS settings of your domain to point to Lagon. You can do this by adding a CNAME record, pointing to your Function's default domain. +Now that you've added a custom domain or subdomain, you must update the DNS settings of your domain to point to Lagoss. You can do this by adding a CNAME record, pointing to your Function's default domain. ### For a domain - - Apex domains (root domains) are not supported. You can redirect your apex domain to a `www` subdomain, and then point - the `www` subdomain to Lagon. - +::: warning +Apex domains (root domains) are not supported. You can redirect your apex domain to a `www` subdomain, and then point the `www` subdomain to Lagoss. +::: Let's say that you have the following: - A domain `www.domain.com` -- A Function named `awesome-function` (which has the default subdomain `awesome-function.lagon.dev`) +- A Function named `awesome-function` (which has the default subdomain `awesome-function.lagoss.com`) -You should now add a new CNAME record named `www`, pointing to `awesome-function.lagon.dev`. After adding this record, go back to the settings tab of your Function, and you should now see your custom domain validated: +You should now add a new CNAME record named `www`, pointing to `awesome-function.lagoss.com`. After adding this record, go back to the settings tab of your Function, and you should now see your custom domain validated: ![Custom domains](/images/www-domains-list.png) @@ -39,9 +36,9 @@ You should now add a new CNAME record named `www`, pointing to `awesome-function Let's say that you have the following: - A subdomain `my.domain.com` -- A Function named `awesome-function` (which has the default subdomain `awesome-function.lagon.dev`) +- A Function named `awesome-function` (which has the default subdomain `awesome-function.lagoss.com`) -You should now add a new CNAME record named `my`, pointing to `awesome-function.lagon.dev`. After adding this record, go back to the settings tab of your Function, and you should now see your custom subdomain validated: +You should now add a new CNAME record named `my`, pointing to `awesome-function.lagoss.com`. After adding this record, go back to the settings tab of your Function, and you should now see your custom subdomain validated: ![Custom domains](/images/my-domains-list.png) diff --git a/docs/content/cloud/environment-variables.md b/docs/content/cloud/environment-variables.md index abb0ec47..9f384c3a 100644 --- a/docs/content/cloud/environment-variables.md +++ b/docs/content/cloud/environment-variables.md @@ -1,5 +1,3 @@ -import { Callout } from 'nextra-theme-docs'; - You can use Environment Variables to store configuration options, or sensitive information such as API keys, passwords, and tokens. Environment variables are injected to [`process.env`](http://localhost:3000/runtime-apis#processenv) when your Function is executed. You can access them the same way you would access them in Node.js: @@ -14,11 +12,11 @@ export function handler(request: Request): Response { } ``` -By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagon dev`](/cli#lagon-dev). +By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagoss dev`](./cli.md#lagoss-dev). ## Development -During development, `.env` files are automatically detected and loaded. You can also manually specify the `--env` flag of the [`dev` command](http://localhost:3000/cli#lagon-dev) to use a custom path for your environment file. +During development, `.env` files are automatically detected and loaded. You can also manually specify the `--env` flag of the [`dev` command](http://localhost:3000/cli#lagoss-dev) to use a custom path for your environment file. ## Adding environment variables @@ -28,10 +26,9 @@ Enter a key and value, then click on "Add". You can keep adding Environment Vari You can also copy and paste an entire `.env` file, which will be automatically parsed and added to your Environment Variables. - - After submitting, your Function's current production Deployment will automatically be updated with the new environment - variables: you don't need to manually trigger another Deployment! - +::: info +After submitting, your Function's current production Deployment will automatically be updated with the new environment variables: you don't need to manually trigger another Deployment! +::: ![Environment Variables](/images/env-variables.png) diff --git a/docs/content/cloud/logs.md b/docs/content/cloud/logs.md index 6a344b0b..4f078001 100644 --- a/docs/content/cloud/logs.md +++ b/docs/content/cloud/logs.md @@ -1,4 +1,4 @@ -You can use the [`console` API](/runtime-apis#console) to log messages, objects, errors, warnings, debug information and more. +You can use the [`console` API](./runtime-apis.md#console) to log messages, objects, errors, warnings, debug information and more. Four levels of logs are accepted: @@ -9,7 +9,7 @@ Four levels of logs are accepted: ## When developing -Using [`lagon dev`](/cli#lagon-dev), logs are displayed in the terminal. +Using [`lagoss dev`](./cli.md#lagoss-dev), logs are displayed in the terminal. ## When deployed diff --git a/docs/content/cloud/pricing.md b/docs/content/cloud/pricing.md index 6eab968f..c799c3ed 100644 --- a/docs/content/cloud/pricing.md +++ b/docs/content/cloud/pricing.md @@ -1,4 +1,4 @@ -A plan belongs to an Organization. Additionally, [limits](/cloud/limits) apply to each plan. +A plan belongs to an Organization. Additionally, [limits](./cloud/limits.md) apply to each plan. ## Personal @@ -25,4 +25,4 @@ You get access to all of the features in the Personal plan, plus: ## Enterprise -This plan is designed for customers that require custom limits and/or need a large volume of requests. [Contact us](mailto:contact@lagon.app) to learn more. +This plan is designed for customers that require custom limits and/or need a large volume of requests. TODO diff --git a/docs/content/cloud/regions.md b/docs/content/cloud/regions.md index 8f171732..4ef034b1 100644 --- a/docs/content/cloud/regions.md +++ b/docs/content/cloud/regions.md @@ -1,26 +1,11 @@ -Lagon is currently deployed in 14 regions all around the world. We increase the number of regions regularly, and you can also [request a new Region](#request-a-new-region). +Lagoss is currently deployed in one region. We use multiple hosting providers to prevent a single point of failure and provide resiliency in the case of an outage from one of our providers. Users are routed to the region that is geographically closest to them when they request a Function, using a mix of Anycast and GeoIP. -You can access the Region that is responding to the current requests using the [`X-Lagon-Region` header](/runtime-apis#additional-headers). +You can access the Region that is responding to the current requests using the [`X-Lagon-Region` header](./runtime-apis.md#additional-headers). ## List of regions -- Ashburn, Virginia (`ashburn-us-east`) -- Hillsboro, Oregon (`hillsboro-us-west`) -- San Francisco, California (`san-francisco-us-west`) -- Beauharnois, Canada (`beauharnois-ca-east`) -- London, United Kingdon (`london-eu-west`) -- Paris, France (`paris-eu-west`) -- Nuremberg, Germany (`nuremberg-eu-central`) -- Helsinki, Finland (`helsinki-eu-north`) -- Warsaw, Poland (`warsaw-eu-east`) -- Bangalore, India (`bangalore-ap-west`) -- Singapore (`singapore-ap-south`) -- Sydney, Australia (`sydney-ap-south`) -- Tokio, Japan (`tokio-ap-east`) -- Johannesburg, South Africa (`johannesburg-af-south`) +- Germany, Nuernberg (`local`) -## Request a new region - -If you would like to see a new region, please [fill out this form](https://tally.so/r/mDqAYN). We will prioritize the regions that are the most requested. +TODO \ No newline at end of file diff --git a/docs/content/contributing.md b/docs/content/contributing.md index f1273224..7f333022 100644 --- a/docs/content/contributing.md +++ b/docs/content/contributing.md @@ -1,13 +1,8 @@ -import { Callout } from 'nextra-theme-docs'; - Thanks for wanting to contribute! That means a lot to us. You can contribute in many ways, with or without any coding required. -If you encounter any issues, you can join [our Discord](https://discord.lagon.dev/) so we can help you. - - - Need some good first issues to start with? Check out the [good first issue - label](https://github.com/lagonapp/lagon/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) on GitHub! - +::: info +Need some good first issues to start with? Check out the [good first issue label](https://github.com/lagossapp/lagoss/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) on GitHub! +::: ## Non-code contributions diff --git a/docs/content/examples.md b/docs/content/examples.md index fca79cc5..1ee4ca71 100644 --- a/docs/content/examples.md +++ b/docs/content/examples.md @@ -1,120 +1,120 @@ -We have set up many examples using different libraries and frameworks. Each example has a `lagon-dev` script that uses [`lagon dev`](/cli#lagon-dev) to start the example locally, in a few seconds. +We have set up many examples using different libraries and frameworks. Each example has a `lagoss-dev` script that uses [`lagoss dev`](./cli.md#lagoss-dev) to start the example locally, in a few seconds. ## Basics ### Fetch an API -This example uses [`fetch()`](/runtime-apis#fetch) to fetch an API and return the result. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/fetch-api) +This example uses [`fetch()`](./runtime-apis.md#fetch) to fetch an API and return the result. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/fetch-api) ### Reply with HTML -This example replies with HTML, setting the proper `Content-Type` header. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/reply-with-html) +This example replies with HTML, setting the proper `Content-Type` header. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/reply-with-html) ### Reply with JSON -This example replies with JSON, setting the proper `Content-Type` header. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/reply-with-json) +This example replies with JSON, setting the proper `Content-Type` header. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/reply-with-json) ## Libraries ### Drizzle with Turso -This example uses [Drizzle](https://github.com/drizzle-team/drizzle-orm), a TypeScript ORM that has a SQL-like syntax with [Turso](https://turso.tech) as a distributed SQLite database, with typesafe queries and migrations. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/drizzle-turso) +This example uses [Drizzle](https://github.com/drizzle-team/drizzle-orm), a TypeScript ORM that has a SQL-like syntax with [Turso](https://turso.tech) as a distributed SQLite database, with typesafe queries and migrations. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/drizzle-turso) ### HatTip -This example uses [HatTip](https://github.com/hattipjs/hattip), a minimalist express-like library that runs anywhere, via Lagon's adapter. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/hattip) +This example uses [HatTip](https://github.com/hattipjs/hattip), a minimalist express-like library that runs anywhere, via Lagoss's adapter. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/hattip) ### Hono -This example uses [Hono](https://honojs.dev), a small, simple, and ultrafast web framework, via Lagon's adapter. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/hono) +This example uses [Hono](https://honojs.dev), a small, simple, and ultrafast web framework, via Lagoss's adapter. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/hono) ### Nitro -This example uses [Nitro](https://nitro.unjs.io/), a library to build and deploy universal JavaScript servers, via Lagon's preset. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/nitro) +This example uses [Nitro](https://nitro.unjs.io/), a library to build and deploy universal JavaScript servers, via Lagoss's preset. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/nitro) ### Neon -This example uses [Neon](https://neon.tech) with their Serverless driver (`@neondatabase/serverless`) to make PostgreSQL queries on the edge. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/neon) +This example uses [Neon](https://neon.tech) with their Serverless driver (`@neondatabase/serverless`) to make PostgreSQL queries on the edge. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/neon) ### PlanetScale Serverless Driver -This example uses [PlanetScale](https://planetscale.com) with their Serverless Driver (`@planetscale/database`) to make SQL queries on the edge. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/planetscale) +This example uses [PlanetScale](https://planetscale.com) with their Serverless Driver (`@planetscale/database`) to make SQL queries on the edge. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/planetscale) ### Preact CSR -This example uses [Preact](https://preactjs.com) to client-side render an app. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/preact) +This example uses [Preact](https://preactjs.com) to client-side render an app. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/preact) ### Preact SRR -This example uses [Preact](https://preactjs.com) to server-side render an app and hydrate on the client. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/preact-ssr) +This example uses [Preact](https://preactjs.com) to server-side render an app and hydrate on the client. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/preact-ssr) ### React CSR -This example uses [React](https://reactjs.org) to client-side render an app. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/react) +This example uses [React](https://reactjs.org) to client-side render an app. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/react) ### React SSR -This example uses [React](https://reactjs.org) to server-side render an app and hydrate on the client. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/react-ssr) +This example uses [React](https://reactjs.org) to server-side render an app and hydrate on the client. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/react-ssr) ### React SSR with streaming -This example uses [React](https://reactjs.org) to server-side render an app, stream the HTML, and hydrate on the client. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/react-streaming) +This example uses [React](https://reactjs.org) to server-side render an app, stream the HTML, and hydrate on the client. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/react-streaming) ### Satori -This example uses [Satori](https://github.com/vercel/satori) to render React and HTML/CSS to SVG. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/satori) +This example uses [Satori](https://github.com/vercel/satori) to render React and HTML/CSS to SVG. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/satori) ### Sidra -This example uses [Sidra](https://npmjs.com/sidra), a library to create servers using TypeScript decorators with NestJS-like API. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/sidra) +This example uses [Sidra](https://npmjs.com/sidra), a library to create servers using TypeScript decorators with NestJS-like API. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/sidra) ### Turso -This example uses [Turso](https://turso.tech) to make SQLite queries on the edge. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/turso) +This example uses [Turso](https://turso.tech) to make SQLite queries on the edge. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/turso) ### tRPC -This example uses [tRPC](https://trpc.io) server, to build typesafe APIs. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/trpc) +This example uses [tRPC](https://trpc.io) server, to build typesafe APIs. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/trpc) ### Upstash Redis -This example uses [Upstash Redis](https://github.com/upstash/upstash-redis) to make Redis requests over HTTP. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/upstash) +This example uses [Upstash Redis](https://github.com/upstash/upstash-redis) to make Redis requests over HTTP. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/upstash) ### Upstash Rate Limit -This example uses [Upstash Rate Limit](https://github.com/upstash/ratelimit) to easily create rate limits via Redis over HTTP. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/upstash-ratelimit) +This example uses [Upstash Rate Limit](https://github.com/upstash/ratelimit) to easily create rate limits via Redis over HTTP. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/upstash-ratelimit) ### vite-plugin-ssr -This example uses [vite-plugin-ssr](https://vite-plugin-ssr.com/) to render static and dynamic React pages. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/vite-plugin-ssr) +This example uses [vite-plugin-ssr](https://vite-plugin-ssr.com/) to render static and dynamic React pages. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/vite-plugin-ssr) ### Xata -This example uses [Xata](https://xata.io), a modern serverless type-safe database. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/xata) +This example uses [Xata](https://xata.io), a modern serverless type-safe database. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/xata) ## Frameworks ### Astro -This example uses [Astro](https://astro.build), a static site generator, with both SSR via Lagon's adapter and prerendering. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/astro) +This example uses [Astro](https://astro.build), a static site generator, with both SSR via Lagoss's adapter and prerendering. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/astro) ### Nuxt -This example uses [Nuxt](https://nuxt.com), the intuitive web framework for Vue, with SSR via Lagon's preset. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/nuxt) +This example uses [Nuxt](https://nuxt.com), the intuitive web framework for Vue, with SSR via Lagoss's preset. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/nuxt) ### Nuxt Complex -This example uses [Nuxt](https://nuxt.com) with multiple pages, layouts, api routes and more. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/nuxt-complex) +This example uses [Nuxt](https://nuxt.com) with multiple pages, layouts, api routes and more. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/nuxt-complex) ### Rakkas -This example uses [Rakkas](https://rakkasjs.org), a React framework powered by Vite, with SSR via Lagon's adapter. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/rakkas) +This example uses [Rakkas](https://rakkasjs.org), a React framework powered by Vite, with SSR via Lagoss's adapter. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/rakkas) ### Remix -This example uses [Remix](https://remix.run), a full-stack React framework, with SSR via Lagon's integration. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/remix) +This example uses [Remix](https://remix.run), a full-stack React framework, with SSR via Lagoss's integration. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/remix) ### SvelteKit -This example uses [SvelteKit](https://kit.svelte.dev), the Svelte framework, with SSR via Lagon's adapter. [See the code](https://github.com/lagonapp/lagon/tree/main/examples/sveltekit) +This example uses [SvelteKit](https://kit.svelte.dev), the Svelte framework, with SSR via Lagoss's adapter. [See the code](https://github.com/lagossapp/lagoss/tree/main/examples/sveltekit) diff --git a/docs/content/getting-started.md b/docs/content/getting-started.md index 7f7c7407..80cda739 100644 --- a/docs/content/getting-started.md +++ b/docs/content/getting-started.md @@ -1,18 +1,16 @@ -This page will guide you through creating a simple JavaScript/TypeScript Edge Function and deploying it on Lagon Cloud using the CLI. The Function will be deployed globally in [multiple regions](/cloud/regions), and will be accessible through a unique URL. - -
+This page will guide you through creating a simple JavaScript/TypeScript Edge Function and deploying it to Lagoss using the CLI. The Function will be accessible through a unique URL. ## Installation -The first step is to install the Lagon CLI. For more information about it, read the [CLI documentation](/cli). +The first step is to install the Lagoss CLI. For more information about it, read the [CLI documentation](./cli.md). ```bash # NPM -npm install --global @lagon/cli esbuild +npm install --global @lagoss/cli esbuild # Yarn -yarn global add @lagon/cli esbuild +yarn global add @lagoss/cli esbuild # PNPM -pnpm install --global @lagon/cli esbuild +pnpm install --global @lagoss/cli esbuild ``` ## Create a new Function @@ -41,10 +39,12 @@ export function handler(request: Request) { ## Deploy the Function -Head over to the Dashboard at [https://dash.lagon.app](https://dash.lagon.app) and create an account. Once you're logged in, go back to a terminal and login with your newly created account: +TODO: point users to self-hosting + +Head over to the Dashboard at [https://app.lagoss.com](https://app.lagoss.com) and create an account. Once you're logged in, go back to a terminal and login with your newly created account: ```bash -lagon login +lagoss login ``` This command will open a new tab in your browser, where you can copy an authentication token. Paste it in the terminal and press enter. You should now be logged in! @@ -53,18 +53,16 @@ Now, let's deploy our Function: ```bash # JavaScript -lagon deploy hello.js +lagoss deploy hello.js # TypeScript -lagon deploy hello.ts +lagoss deploy hello.ts ``` You will be asked to select the Organization where you want to deploy this Function. Press enter to select the one you just created. Then, you will be asked to either **link this Function to an existing one**, or **create a new Function**. Here, we don't have any Function created yet, so press `n` to create a new one. Enter the name to give for this new Function, and press enter. -Wait a few seconds, and you should now see a message with an URL, indicating that your Function has been deployed successfully! You can now `curl` this URL, or access it directly in your browser. [Learn more about the Runtime APIs](/runtime-apis). - -
+Wait a few seconds, and you should now see a message with an URL, indicating that your Function has been deployed successfully! You can now `curl` this URL, or access it directly in your browser. [Learn more about the Runtime APIs](./runtime-apis.md). ## Going further @@ -72,7 +70,6 @@ Wait a few seconds, and you should now see a message with an URL, indicating tha Now that we have a Function deployed, we would like to add a new feature and return the name of the user that is making the request. To do so, we will need to update the Function's code: - ```javascript {3-4,6} // hello.js export function handler(request) { @@ -101,24 +98,24 @@ We can now re-deploy the Function with the same command as before, and append `- ```bash # JavaScript -lagon deploy hello.js --prod +lagoss deploy hello.js --prod # TypeScript -lagon deploy hello.ts --prod +lagoss deploy hello.ts --prod ``` Try to access your Function's URL again with `/?name=Your name`, and you should see the new message! ### Debugging -During development, you can use [`lagon dev`](/cli#lagon-dev) to launch a local development server that will automatically watch your Function's code: +During development, you can use [`lagoss dev`](./cli.md#lagoss-dev) to launch a local development server that will automatically watch your Function's code: ```bash # JavaScript -lagon dev hello.js +lagoss dev hello.js # TypeScript -lagon dev hello.ts +lagoss dev hello.ts ``` Running the above code will start a local server on port `1234` by default. You can now access your Function at [http://localhost:1234](http://localhost:1234). -You can also use the [`console` API](/runtime-apis#console) to log messages, objects and more. When using [`lagon dev`](/cli#lagon-dev), the logs are displayed in your terminal. When the Function is deployed, the logs are accessible in the Dashboard. [Learn more about logs](/cloud/logs). +You can also use the [`console` API](./runtime-apis.md#console) to log messages, objects and more. When using [`lagoss dev`](./cli.md#lagoss-dev), the logs are displayed in your terminal. When the Function is deployed, the logs are accessible in the Dashboard. [Learn more about logs](./cloud/logs.md). diff --git a/docs/content/introduction.md b/docs/content/introduction.md index 26f9867c..584f3fe4 100644 --- a/docs/content/introduction.md +++ b/docs/content/introduction.md @@ -1,7 +1,11 @@ -Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions close to users. +Lagoss is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions close to users. -::: warning -Lagoss is in Alpha. Get access to Lagon Cloud via the TODO ... +::: info +The project was forked from [Lagoss](https://github.com/lagossapp/lagoss) with the +intention to continue development. There is currently a public testing instance +deployed at . However it should be only used for basic +testing and data might be deleted at any point. If you want a proper setup, +please deploy your own instance => [Install my own instance](./self-hosting/installation.md). ::: ## Features @@ -15,6 +19,6 @@ Lagoss is in Alpha. Get access to Lagon Cloud via the TODO ... ## How it works -Lagon uses V8 Isolates, which are sandboxed environments used to run plain JavaScript. That means each Function's memory is isolated from each others, and you can run a lot of them at the same time with very few resources. [Node.js](https://nodejs.org/), [Electron](https://www.electronjs.org/), [Deno](https://deno.land/) (and [Deno Deploy](https://deno.com/deploy)), [Cloudflare Workers](https://workers.cloudflare.com/) are also using V8 Isolates to execute JavaScript. +Lagoss uses V8 Isolates, which are sandboxed environments used to run plain JavaScript. That means each Function's memory is isolated from each others, and you can run a lot of them at the same time with very few resources. [Node.js](https://nodejs.org/), [Electron](https://www.electronjs.org/), [Deno](https://deno.land/) (and [Deno Deploy](https://deno.com/deploy)), [Cloudflare Workers](https://workers.cloudflare.com/) are also using V8 Isolates to execute JavaScript. Starting an Isolate is a lot faster than starting a whole Node.js process, which allows for almost free cold starts. diff --git a/docs/content/runtime-apis.md b/docs/content/runtime-apis.md index 393bb6f9..da4c5fd9 100644 --- a/docs/content/runtime-apis.md +++ b/docs/content/runtime-apis.md @@ -1,6 +1,4 @@ -import { Callout } from 'nextra-theme-docs'; - -The following APIs are the same as the native Web APIS you already know. We also follow the [WinterCG](https://wintercg.org/) conventions. Lagon's Runtime uses the V8 engine and is written in both Rust and TypeScript. +The following APIs are the same as the native Web APIS you already know. We also follow the [WinterCG](https://wintercg.org/) conventions. Lagoss's Runtime uses the V8 engine and is written in both Rust and TypeScript. ## Handler @@ -18,7 +16,7 @@ Starting from this simple code, you can do whatever you wish, using the Web APIs The `Request` object coming from the `handler` function also contains additional headers: -- `X-Lagon-Region`: the [region](/cloud/regions) where this Function is executing +- `X-Lagon-Region`: the [region](./cloud/regions.md) where this Function is executing - `X-Forwarded-For`: the IP address of the client that made the request You can access them the same as any other header: @@ -34,13 +32,13 @@ export function handler(request: Request) { The `X-Lagon-Region` header is also automatically added to each response, making it easy to identify which Region served the request. - - When developing locally using [`lagon dev`](/cli#lagon-dev), the `X-Lagon-Region` header will be set to `local`. - +::: info +When developing locally using [`lagoss dev`](./cli.md#lagoss-dev), the `X-Lagon-Region` header will be set to `local`. +::: ## NPM support -Lagon's Runtime supports any NPM package. The only requirement is that the package must not use Node.js-specific APIs (e.g `Buffer`, `fs`, `path`, etc.). This is because Lagon's Runtime **is not Node.js**, but a browser-like environment. +Lagoss's Runtime supports any NPM package. The only requirement is that the package must not use Node.js-specific APIs (e.g `Buffer`, `fs`, `path`, etc.). This is because Lagoss's Runtime **is not Node.js**, but a browser-like environment. ## Global objects @@ -69,7 +67,7 @@ The standard `Blob` object. [See the documentation on MDN](https://developer.moz ### Compression Stream APIs -Lagon supports all three compression formats: `gzip`, `deflate` and `deflate-raw`. +Lagoss supports all three compression formats: `gzip`, `deflate` and `deflate-raw`. #### `CompressionStream` @@ -89,7 +87,7 @@ Similar to the standard `console` object on the browser and Node.js, except that - `warn` - `error` -You can log multiple objects, and use string substitution. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/console#outputting_text_to_the_console). See the [Logs](/cloud/logs) documentation to learn more. +You can log multiple objects, and use string substitution. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/console#outputting_text_to_the_console). See the [Logs](./cloud/logs.md) documentation to learn more. ### `crypto` @@ -107,8 +105,9 @@ The standard `getRandomValues()` method. [See the documentation on MDN](https:// The standard `CryptoSubtle` object. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto). - - The following table summarizes the supported algorithms on each method: +::: info + +The following table summarizes the supported algorithms on each method: | | `sign()`, `verify()` | `encrypt()`, `decrypt()` | `digest()` | `deriveBits()`, `deriveKey()` | `wrapKey()`, `unwrapKey()` | | ----------------- | -------------------- | ------------------------ | ---------- | ----------------------------- | -------------------------- | @@ -129,7 +128,7 @@ The standard `CryptoSubtle` object. [See the documentation on MDN](https://devel | PBKDF2 | | | | ✅ | | | AES-KW | | | | | ❌ | - +::: ### `CustomEvent` @@ -145,7 +144,9 @@ The standard `EventTarget` object. [See the documentation on MDN](https://develo ### Fetch APIs -Looking for the `fetch()` method? [Jump to fetch()](#fetch). +::: info +Looking for the `fetch()` method? [Jump to fetch()](#fetch). +::: #### `Headers` @@ -166,7 +167,9 @@ You can pass a [`ReadableStream`](#readablestream) object as the `body` of a `Re The standard `URL` object. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/URL). -This URL implementation only supports URLs with a scheme. +::: warning +This URL implementation only supports URLs with a scheme. +::: #### `URLSearchParams` @@ -186,13 +189,13 @@ The standard `FormData` object. [See the documentation on MDN](https://developer ### `navigator.userAgent` -`navigator.userAgent` is a fixed string that can be used to detect the current runtime. Its value is always `Lagon/VERSION`, where `VERSION` is the current version of the Lagon Runtime. +`navigator.userAgent` is a fixed string that can be used to detect the current runtime. Its value is always `Lagoss/VERSION`, where `VERSION` is the current version of the Lagoss Runtime. ### `process.env` -The only usage of `process` is to access environment variables. By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagon dev`](/cli#lagon-dev). +The only usage of `process` is to access environment variables. By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagoss dev`](./cli.md#lagoss-dev). -[Learn more about environment variables](/cloud/environment-variables). +[Learn more about environment variables](./cloud/environment-variables.md). ### `ProgressEvent` @@ -250,9 +253,9 @@ The standard `clearTimeout` method. [See the documentation on MDN](https://devel The standard `fetch` method. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch). - - `fetch()` supports both HTTP/1.1 and HTTP/2. Additionally, there are [some limits](/cloud/limits#functions) in place to prevent abuses. - +::: info +`fetch()` supports both HTTP/1.1 and HTTP/2. Additionally, there are [some limits](./cloud/limits.md#functions) in place to prevent abuses. +::: ### `queueMicrotask()` From 1288171ca60f47571d853c9d18943d077db5a857 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:00:34 +0100 Subject: [PATCH 06/22] rename to usage --- docs/content/cli.md | 4 ++-- docs/content/getting-started.md | 2 +- docs/content/runtime-apis.md | 8 ++++---- docs/content/{cloud => usage}/assets.md | 2 +- docs/content/{cloud => usage}/cron.md | 2 +- docs/content/{cloud => usage}/deployments.md | 4 ++-- docs/content/{cloud => usage}/domains.md | 0 docs/content/{cloud => usage}/environment-variables.md | 0 docs/content/{cloud => usage}/limits.md | 0 docs/content/{cloud => usage}/logs.md | 0 docs/content/{cloud => usage}/pricing.md | 2 +- docs/content/{cloud => usage}/regions.md | 0 docs/content/{cloud => usage}/security.md | 0 13 files changed, 12 insertions(+), 12 deletions(-) rename docs/content/{cloud => usage}/assets.md (98%) rename docs/content/{cloud => usage}/cron.md (97%) rename docs/content/{cloud => usage}/deployments.md (94%) rename docs/content/{cloud => usage}/domains.md (100%) rename docs/content/{cloud => usage}/environment-variables.md (100%) rename docs/content/{cloud => usage}/limits.md (100%) rename docs/content/{cloud => usage}/logs.md (100%) rename docs/content/{cloud => usage}/pricing.md (90%) rename docs/content/{cloud => usage}/regions.md (100%) rename docs/content/{cloud => usage}/security.md (100%) diff --git a/docs/content/cli.md b/docs/content/cli.md index 00b1beb0..08b3d14e 100644 --- a/docs/content/cli.md +++ b/docs/content/cli.md @@ -25,7 +25,7 @@ Once installed, execute the `lagoss` CLI to see all the commands available. ### `lagoss login` -Before being able to deploy and manage Functions, you will need to log in. Make sure you have already [created an account](./cloud/account.md). If you try to execute a command that requires being logged in, you will be warned and the command will be aborted. +Before being able to deploy and manage Functions, you will need to log in. Make sure you have already [created an account](./usage/account.md). If you try to execute a command that requires being logged in, you will be warned and the command will be aborted. To proceed, run `lagoss login` and follow the instructions. @@ -143,7 +143,7 @@ This command accepts the following arguments and options: - `--public, -p <>` allows you to specify a path to a directory containing assets to be served statically. - `--hostname ` allows you to specify a custom hostname to start the server on. (Default: `127.0.0.1`) - `--port ` allows you to specify a custom port to start the server on. (Default: `1234`) -- `--env ` allows you to specify a custom path to an environment file to inject [environment variables](./cloud/environment-variables.md). (Default: `.env`) +- `--env ` allows you to specify a custom path to an environment file to inject [environment variables](./usage/environment-variables.md). (Default: `.env`) - `--allow-code-generation` allows you to enable code generation from strings (`eval` / `new Function`) - `--prod` allows you to set `process.env.NODE_ENV` to `"production"` instead of `"development"` diff --git a/docs/content/getting-started.md b/docs/content/getting-started.md index 80cda739..cbdbb191 100644 --- a/docs/content/getting-started.md +++ b/docs/content/getting-started.md @@ -118,4 +118,4 @@ lagoss dev hello.ts Running the above code will start a local server on port `1234` by default. You can now access your Function at [http://localhost:1234](http://localhost:1234). -You can also use the [`console` API](./runtime-apis.md#console) to log messages, objects and more. When using [`lagoss dev`](./cli.md#lagoss-dev), the logs are displayed in your terminal. When the Function is deployed, the logs are accessible in the Dashboard. [Learn more about logs](./cloud/logs.md). +You can also use the [`console` API](./runtime-apis.md#console) to log messages, objects and more. When using [`lagoss dev`](./cli.md#lagoss-dev), the logs are displayed in your terminal. When the Function is deployed, the logs are accessible in the Dashboard. [Learn more about logs](./usage/logs.md). diff --git a/docs/content/runtime-apis.md b/docs/content/runtime-apis.md index da4c5fd9..032353c7 100644 --- a/docs/content/runtime-apis.md +++ b/docs/content/runtime-apis.md @@ -16,7 +16,7 @@ Starting from this simple code, you can do whatever you wish, using the Web APIs The `Request` object coming from the `handler` function also contains additional headers: -- `X-Lagon-Region`: the [region](./cloud/regions.md) where this Function is executing +- `X-Lagon-Region`: the [region](./usage/regions.md) where this Function is executing - `X-Forwarded-For`: the IP address of the client that made the request You can access them the same as any other header: @@ -87,7 +87,7 @@ Similar to the standard `console` object on the browser and Node.js, except that - `warn` - `error` -You can log multiple objects, and use string substitution. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/console#outputting_text_to_the_console). See the [Logs](./cloud/logs.md) documentation to learn more. +You can log multiple objects, and use string substitution. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/console#outputting_text_to_the_console). See the [Logs](./usage/logs.md) documentation to learn more. ### `crypto` @@ -195,7 +195,7 @@ The standard `FormData` object. [See the documentation on MDN](https://developer The only usage of `process` is to access environment variables. By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagoss dev`](./cli.md#lagoss-dev). -[Learn more about environment variables](./cloud/environment-variables.md). +[Learn more about environment variables](./usage/environment-variables.md). ### `ProgressEvent` @@ -254,7 +254,7 @@ The standard `clearTimeout` method. [See the documentation on MDN](https://devel The standard `fetch` method. [See the documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch). ::: info -`fetch()` supports both HTTP/1.1 and HTTP/2. Additionally, there are [some limits](./cloud/limits.md#functions) in place to prevent abuses. +`fetch()` supports both HTTP/1.1 and HTTP/2. Additionally, there are [some limits](./usage/limits.md#functions) in place to prevent abuses. ::: ### `queueMicrotask()` diff --git a/docs/content/cloud/assets.md b/docs/content/usage/assets.md similarity index 98% rename from docs/content/cloud/assets.md rename to docs/content/usage/assets.md index 29b000e2..96dac0f1 100644 --- a/docs/content/cloud/assets.md +++ b/docs/content/usage/assets.md @@ -37,4 +37,4 @@ In your HTML, you can reference these files using relative paths: ## Limits -The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](./cloud/limits.md). +The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](./usage/limits.md). diff --git a/docs/content/cloud/cron.md b/docs/content/usage/cron.md similarity index 97% rename from docs/content/cloud/cron.md rename to docs/content/usage/cron.md index adeaf5d7..04a063ac 100644 --- a/docs/content/cloud/cron.md +++ b/docs/content/usage/cron.md @@ -38,7 +38,7 @@ Lagoss accepts Cron expressions in the following format: 0 6 * * Mon Run every Monday at 06:00 ``` -You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](./cloud/regions.md). You can select your preferred region: +You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](./usage/regions.md). You can select your preferred region: ![Cron region](/images/cron-region.png) diff --git a/docs/content/cloud/deployments.md b/docs/content/usage/deployments.md similarity index 94% rename from docs/content/cloud/deployments.md rename to docs/content/usage/deployments.md index 223c6ae1..65ae4a86 100644 --- a/docs/content/cloud/deployments.md +++ b/docs/content/usage/deployments.md @@ -1,6 +1,6 @@ ## Deploying a new Function -A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./cloud/domains.md) always points to the current production Deployment. +A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./usage/domains.md) always points to the current production Deployment. Your Function always has a single production Deployment and typically has multiple preview Deployments. Each Deployment is immutable, and always accessible via a unique URL. @@ -45,6 +45,6 @@ You can now edit the code in the Playground, and click on the "Deploy" button to ## Cold starts -When a Deployment is requested for the first time in a [region](./cloud/regions.md), Lagoss will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. +When a Deployment is requested for the first time in a [region](./usage/regions.md), Lagoss will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. On subsequent requests, the same Isolate will be reused, allowing for much faster response times. After 15 minutes without any requests, the Isolate is spun down, and the next request will trigger a new cold start. diff --git a/docs/content/cloud/domains.md b/docs/content/usage/domains.md similarity index 100% rename from docs/content/cloud/domains.md rename to docs/content/usage/domains.md diff --git a/docs/content/cloud/environment-variables.md b/docs/content/usage/environment-variables.md similarity index 100% rename from docs/content/cloud/environment-variables.md rename to docs/content/usage/environment-variables.md diff --git a/docs/content/cloud/limits.md b/docs/content/usage/limits.md similarity index 100% rename from docs/content/cloud/limits.md rename to docs/content/usage/limits.md diff --git a/docs/content/cloud/logs.md b/docs/content/usage/logs.md similarity index 100% rename from docs/content/cloud/logs.md rename to docs/content/usage/logs.md diff --git a/docs/content/cloud/pricing.md b/docs/content/usage/pricing.md similarity index 90% rename from docs/content/cloud/pricing.md rename to docs/content/usage/pricing.md index c799c3ed..8540f6e6 100644 --- a/docs/content/cloud/pricing.md +++ b/docs/content/usage/pricing.md @@ -1,4 +1,4 @@ -A plan belongs to an Organization. Additionally, [limits](./cloud/limits.md) apply to each plan. +A plan belongs to an Organization. Additionally, [limits](./usage/limits.md) apply to each plan. ## Personal diff --git a/docs/content/cloud/regions.md b/docs/content/usage/regions.md similarity index 100% rename from docs/content/cloud/regions.md rename to docs/content/usage/regions.md diff --git a/docs/content/cloud/security.md b/docs/content/usage/security.md similarity index 100% rename from docs/content/cloud/security.md rename to docs/content/usage/security.md From 74480dd711a56abc25c221fbf18266c701968e8c Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:01:57 +0100 Subject: [PATCH 07/22] adjust tagline --- docs/content/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/index.md b/docs/content/index.md index 6dd1c7e4..fd048b31 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -3,8 +3,8 @@ layout: home hero: name: "Lagoss" - text: "An open-source runtime and platform for running JS serverless functions." - tagline: "An open-source runtime and platform for running JS serverless functions." + text: "serverless JS / TS functions." + tagline: "Lagoss is a for of Langon an open-source runtime and platform for running JS / TS serverless functions." actions: - theme: brand text: Get started From 373892c6d1e1e364727a60573b33726b6bb96451 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:19:11 +0100 Subject: [PATCH 08/22] fix dead links --- docs/.vitepress/config.ts | 5 +++++ docs/content/usage/account.md | 1 + docs/content/usage/assets.md | 4 ++-- docs/content/usage/cron.md | 2 +- docs/content/usage/deployments.md | 6 +++--- docs/content/usage/environment-variables.md | 2 +- docs/content/usage/logs.md | 4 ++-- docs/content/usage/pricing.md | 2 +- docs/content/usage/regions.md | 2 +- 9 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 docs/content/usage/account.md diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 65073fe7..957012de 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -8,6 +8,11 @@ export default defineConfig({ srcDir: 'content', + ignoreDeadLinks: [ + // ignore all localhost links + /^https?:\/\/localhost/, + ], + themeConfig: { logo: '/icon-white.png', diff --git a/docs/content/usage/account.md b/docs/content/usage/account.md new file mode 100644 index 00000000..30404ce4 --- /dev/null +++ b/docs/content/usage/account.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/docs/content/usage/assets.md b/docs/content/usage/assets.md index 96dac0f1..77fb8857 100644 --- a/docs/content/usage/assets.md +++ b/docs/content/usage/assets.md @@ -1,6 +1,6 @@ Lagoss can host and serve assets such as images, CSS files, and JavaScript files. These assets are static files that are not generated dynamically by your Function. -When deploying a Function, you can specify an assets directory using the [`--public` or `-p`](./cli.md#lagoss-deploy) flag. This directory will be served by Lagoss at the root of your Function's URL. +When deploying a Function, you can specify an assets directory using the [`--public` or `-p`](../cli.md#lagoss-deploy) flag. This directory will be served by Lagoss at the root of your Function's URL. ## Automatic assets serving @@ -37,4 +37,4 @@ In your HTML, you can reference these files using relative paths: ## Limits -The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](./usage/limits.md). +The number of assets per Deployment is limited to 100 for Personal plans, and 1000 for Pro plans. The size of each asset is also limited to prevent abuses. [Learn more about the assets limits](./limits.md). diff --git a/docs/content/usage/cron.md b/docs/content/usage/cron.md index 04a063ac..ecda0dee 100644 --- a/docs/content/usage/cron.md +++ b/docs/content/usage/cron.md @@ -38,7 +38,7 @@ Lagoss accepts Cron expressions in the following format: 0 6 * * Mon Run every Monday at 06:00 ``` -You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](./usage/regions.md). You can select your preferred region: +You can then click "Update" and your Function will be automatically executed at the given interval. Cron Functions only run in a single [region](./regions.md). You can select your preferred region: ![Cron region](/images/cron-region.png) diff --git a/docs/content/usage/deployments.md b/docs/content/usage/deployments.md index 65ae4a86..2adc2cf9 100644 --- a/docs/content/usage/deployments.md +++ b/docs/content/usage/deployments.md @@ -1,6 +1,6 @@ ## Deploying a new Function -A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./usage/domains.md) always points to the current production Deployment. +A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./domains.md) always points to the current production Deployment. Your Function always has a single production Deployment and typically has multiple preview Deployments. Each Deployment is immutable, and always accessible via a unique URL. @@ -25,7 +25,7 @@ lagoss deploy your-file.ts lagoss deploy --prod your-file.ts ``` -Follow the [`lagoss deploy` documentation](./cli.md#lagoss-deploy) to learn more. +Follow the [`lagoss deploy` documentation](../cli.md#lagoss-deploy) to learn more. ### Using the GitHub Action @@ -45,6 +45,6 @@ You can now edit the code in the Playground, and click on the "Deploy" button to ## Cold starts -When a Deployment is requested for the first time in a [region](./usage/regions.md), Lagoss will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. +When a Deployment is requested for the first time in a [region](./regions.md), Lagoss will spin up a new V8 Isolate, triggering a cold start. This might take a few milliseconds, depending on the size of your Deployment. On subsequent requests, the same Isolate will be reused, allowing for much faster response times. After 15 minutes without any requests, the Isolate is spun down, and the next request will trigger a new cold start. diff --git a/docs/content/usage/environment-variables.md b/docs/content/usage/environment-variables.md index 9f384c3a..92e6ff6e 100644 --- a/docs/content/usage/environment-variables.md +++ b/docs/content/usage/environment-variables.md @@ -12,7 +12,7 @@ export function handler(request: Request): Response { } ``` -By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagoss dev`](./cli.md#lagoss-dev). +By default, it will only contain the `NODE_ENV` variable, which is set to `"production"` when deployed, and to `"development"` when using [`lagoss dev`](../cli.md#lagoss-dev). ## Development diff --git a/docs/content/usage/logs.md b/docs/content/usage/logs.md index 4f078001..97f3c348 100644 --- a/docs/content/usage/logs.md +++ b/docs/content/usage/logs.md @@ -1,4 +1,4 @@ -You can use the [`console` API](./runtime-apis.md#console) to log messages, objects, errors, warnings, debug information and more. +You can use the [`console` API](../runtime-apis.md#console) to log messages, objects, errors, warnings, debug information and more. Four levels of logs are accepted: @@ -9,7 +9,7 @@ Four levels of logs are accepted: ## When developing -Using [`lagoss dev`](./cli.md#lagoss-dev), logs are displayed in the terminal. +Using [`lagoss dev`](../cli.md#lagoss-dev), logs are displayed in the terminal. ## When deployed diff --git a/docs/content/usage/pricing.md b/docs/content/usage/pricing.md index 8540f6e6..e73f37b2 100644 --- a/docs/content/usage/pricing.md +++ b/docs/content/usage/pricing.md @@ -1,4 +1,4 @@ -A plan belongs to an Organization. Additionally, [limits](./usage/limits.md) apply to each plan. +A plan belongs to an Organization. Additionally, [limits](./limits.md) apply to each plan. ## Personal diff --git a/docs/content/usage/regions.md b/docs/content/usage/regions.md index 4ef034b1..930c0c62 100644 --- a/docs/content/usage/regions.md +++ b/docs/content/usage/regions.md @@ -2,7 +2,7 @@ Lagoss is currently deployed in one region. We use multiple hosting providers to prevent a single point of failure and provide resiliency in the case of an outage from one of our providers. Users are routed to the region that is geographically closest to them when they request a Function, using a mix of Anycast and GeoIP. -You can access the Region that is responding to the current requests using the [`X-Lagon-Region` header](./runtime-apis.md#additional-headers). +You can access the Region that is responding to the current requests using the [`X-Lagon-Region` header](../runtime-apis.md#additional-headers). ## List of regions From dfdd82eead180171b4d08b5b631790b52a005015 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:23:30 +0100 Subject: [PATCH 09/22] fix some installation details --- docs/content/public/install/.env.example | 2 +- docs/content/public/install/docker-compose.yml | 10 ++++------ docs/content/self-hosting/installation.md | 9 +++++---- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/content/public/install/.env.example b/docs/content/public/install/.env.example index 538469b3..bedb2efd 100644 --- a/docs/content/public/install/.env.example +++ b/docs/content/public/install/.env.example @@ -1,5 +1,5 @@ # Version of lagoss to use (https://github.com/lagossapp/lagoss/releases) -VERSION=latest +LAGOSS_VERSION=latest LAGON_ROOT_DOMAIN=your-domain.com diff --git a/docs/content/public/install/docker-compose.yml b/docs/content/public/install/docker-compose.yml index c414f926..d002fecd 100644 --- a/docs/content/public/install/docker-compose.yml +++ b/docs/content/public/install/docker-compose.yml @@ -46,7 +46,7 @@ services: restart: unless-stopped dashboard: - image: lagon/dashboard:${VERSION:-latest} + image: ghcr.io/lagoss/dashboard:${LAGOSS_VERSION:-latest} environment: DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 @@ -68,7 +68,7 @@ services: restart: unless-stopped serverless: - image: lagon/serverless:${VERSION:-latest} + image: ghcr.io/lagoss/serverless:${LAGOSS_VERSION:-latest} environment: DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 @@ -92,14 +92,12 @@ services: restart: unless-stopped caddy: - build: - context: . - dockerfile: dockerfile.caddy + image: caddy ports: - 80:80 # - 443:443 volumes: - - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro + - ./Caddyfile:/etc/caddy/Caddyfile:ro restart: unless-stopped volumes: diff --git a/docs/content/self-hosting/installation.md b/docs/content/self-hosting/installation.md index 73ff6918..964a0dcf 100644 --- a/docs/content/self-hosting/installation.md +++ b/docs/content/self-hosting/installation.md @@ -15,13 +15,13 @@ Deploying your own instance of Lagoss is straightforward and only requires some ```bash # download docker-compose.yml -wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/docker-compose.yml +wget https://docs.lagoss.com/install/docker-compose.yml # download .env file -wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/.env.example -O .env +wget https://docs.lagoss.com/install/.env.example -O .env # download Caddyfile -wget https://raw.githubusercontent.com/lagossapp/lagoss/main/docs/Caddyfile +wget https://docs.lagoss.com/install/Caddyfile ``` ### Create Github OAuth app @@ -32,7 +32,8 @@ TODO describe creating a OAuth app ### Configure your settings in `.env` -TODO +Inside the `.env` file are all necessary options needed to deploy a basic +Lagoss instance. For more advanced options checkout [all configuration options](configuration.md). ### Start setup From 99fac44b9496fc99d15a976494319d3d6418397b Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:27:15 +0100 Subject: [PATCH 10/22] fix links, cname and no-jekyll --- docs/.vitepress/config.ts | 20 ++++++++++---------- docs/content/public/.nojekyll | 0 docs/content/public/CNAME | 1 + 3 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 docs/content/public/.nojekyll create mode 100644 docs/content/public/CNAME diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 957012de..caee0304 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -46,16 +46,16 @@ export default defineConfig({ text: 'Usage', collapsed: false, items: [ - { text: 'Deployments', link: '/cloud/deployments' }, - { text: 'Assets', link: '/cloud/assets' }, - { text: 'Environment variables', link: '/cloud/environment-variables' }, - { text: 'Domains', link: '/cloud/domains' }, - { text: 'Logs', link: '/cloud/logs' }, - { text: 'Cron', link: '/cloud/cron' }, - // { text: 'Pricing', link: '/cloud/pricing' }, - // { text: 'Regions', link: '/cloud/regions' }, - { text: 'Limits', link: '/cloud/limits' }, - { text: 'Security', link: '/cloud/security' }, + { text: 'Deployments', link: '/usage/deployments' }, + { text: 'Assets', link: '/usage/assets' }, + { text: 'Environment variables', link: '/usage/environment-variables' }, + { text: 'Domains', link: '/usage/domains' }, + { text: 'Logs', link: '/usage/logs' }, + { text: 'Cron', link: '/usage/cron' }, + // { text: 'Pricing', link: '/usage/pricing' }, + // { text: 'Regions', link: '/usage/regions' }, + { text: 'Limits', link: '/usage/limits' }, + { text: 'Security', link: '/usage/security' }, ], }, { diff --git a/docs/content/public/.nojekyll b/docs/content/public/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docs/content/public/CNAME b/docs/content/public/CNAME new file mode 100644 index 00000000..ebefb2b6 --- /dev/null +++ b/docs/content/public/CNAME @@ -0,0 +1 @@ +docs.lagoss.com \ No newline at end of file From a66f629398836c3dbd6fcfb97c1632b5e1e92f6a Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:30:42 +0100 Subject: [PATCH 11/22] add headlines --- docs/content/cli.md | 2 ++ docs/content/contributing.md | 2 ++ docs/content/examples.md | 2 ++ docs/content/getting-started.md | 2 ++ docs/content/introduction.md | 2 ++ docs/content/runtime-apis.md | 2 ++ docs/content/self-hosting/configuration.md | 2 ++ docs/content/usage/account.md | 2 ++ docs/content/usage/assets.md | 2 ++ docs/content/usage/cron.md | 2 ++ docs/content/usage/deployments.md | 2 ++ docs/content/usage/domains.md | 2 ++ docs/content/usage/environment-variables.md | 2 ++ docs/content/usage/limits.md | 2 ++ docs/content/usage/logs.md | 2 ++ docs/content/usage/pricing.md | 2 ++ docs/content/usage/regions.md | 2 ++ docs/content/usage/security.md | 2 ++ 18 files changed, 36 insertions(+) diff --git a/docs/content/cli.md b/docs/content/cli.md index 08b3d14e..69104dcb 100644 --- a/docs/content/cli.md +++ b/docs/content/cli.md @@ -1,3 +1,5 @@ +# CLI + The easiest way to deploy and manage Functions is through our [Command-line interface](https://en.wikipedia.org/wiki/Command-line_interface). ## Installation diff --git a/docs/content/contributing.md b/docs/content/contributing.md index 7f333022..1e1abf63 100644 --- a/docs/content/contributing.md +++ b/docs/content/contributing.md @@ -1,3 +1,5 @@ +# Contributing + Thanks for wanting to contribute! That means a lot to us. You can contribute in many ways, with or without any coding required. ::: info diff --git a/docs/content/examples.md b/docs/content/examples.md index 1ee4ca71..7e22a82c 100644 --- a/docs/content/examples.md +++ b/docs/content/examples.md @@ -1,3 +1,5 @@ +# Examples + We have set up many examples using different libraries and frameworks. Each example has a `lagoss-dev` script that uses [`lagoss dev`](./cli.md#lagoss-dev) to start the example locally, in a few seconds. ## Basics diff --git a/docs/content/getting-started.md b/docs/content/getting-started.md index cbdbb191..424ca8e9 100644 --- a/docs/content/getting-started.md +++ b/docs/content/getting-started.md @@ -1,3 +1,5 @@ +# Getting started + This page will guide you through creating a simple JavaScript/TypeScript Edge Function and deploying it to Lagoss using the CLI. The Function will be accessible through a unique URL. ## Installation diff --git a/docs/content/introduction.md b/docs/content/introduction.md index 584f3fe4..f2dff33b 100644 --- a/docs/content/introduction.md +++ b/docs/content/introduction.md @@ -1,3 +1,5 @@ +# Introduction + Lagoss is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Serverless Functions close to users. ::: info diff --git a/docs/content/runtime-apis.md b/docs/content/runtime-apis.md index 032353c7..d6c67d79 100644 --- a/docs/content/runtime-apis.md +++ b/docs/content/runtime-apis.md @@ -1,3 +1,5 @@ +# Runtime APIs + The following APIs are the same as the native Web APIS you already know. We also follow the [WinterCG](https://wintercg.org/) conventions. Lagoss's Runtime uses the V8 engine and is written in both Rust and TypeScript. ## Handler diff --git a/docs/content/self-hosting/configuration.md b/docs/content/self-hosting/configuration.md index 8fb6ee0f..17f29652 100644 --- a/docs/content/self-hosting/configuration.md +++ b/docs/content/self-hosting/configuration.md @@ -1 +1,3 @@ +# Configuration + Work in progress... diff --git a/docs/content/usage/account.md b/docs/content/usage/account.md index 30404ce4..00c0c48a 100644 --- a/docs/content/usage/account.md +++ b/docs/content/usage/account.md @@ -1 +1,3 @@ +# Account + TODO \ No newline at end of file diff --git a/docs/content/usage/assets.md b/docs/content/usage/assets.md index 77fb8857..9ab80470 100644 --- a/docs/content/usage/assets.md +++ b/docs/content/usage/assets.md @@ -1,3 +1,5 @@ +# Assets + Lagoss can host and serve assets such as images, CSS files, and JavaScript files. These assets are static files that are not generated dynamically by your Function. When deploying a Function, you can specify an assets directory using the [`--public` or `-p`](../cli.md#lagoss-deploy) flag. This directory will be served by Lagoss at the root of your Function's URL. diff --git a/docs/content/usage/cron.md b/docs/content/usage/cron.md index ecda0dee..97488b60 100644 --- a/docs/content/usage/cron.md +++ b/docs/content/usage/cron.md @@ -1,3 +1,5 @@ +# Cron + Instead of providing an HTTP endpoint, you can create a [Cron expression](https://en.wikipedia.org/wiki/Cron) to automatically execute your Function at the given interval. ## How it works diff --git a/docs/content/usage/deployments.md b/docs/content/usage/deployments.md index 2adc2cf9..7d4a7260 100644 --- a/docs/content/usage/deployments.md +++ b/docs/content/usage/deployments.md @@ -1,3 +1,5 @@ +# Deployments + ## Deploying a new Function A Function is bound to Deployments: **Production** and **Preview** deployments. [Default and custom Domains](./domains.md) always points to the current production Deployment. diff --git a/docs/content/usage/domains.md b/docs/content/usage/domains.md index 6408e895..540f3710 100644 --- a/docs/content/usage/domains.md +++ b/docs/content/usage/domains.md @@ -1,3 +1,5 @@ +# Domains + By default, all Functions are assigned a unique URL, which is a subdomain of `lagoss.com`, pointing to the current production Deployment. The subdomain is always the name of the Function: if your Function is named `my-function`, your unique URL will be `my-function.lagoss.com`. All domains (default and custom) are automatically assigned an SSL certificate, provided by [Let's Encrypt](https://letsencrypt.org/). They are also automatically renewed before they expire. As such, the first request to a Function using a brand-new custom domain may take a few seconds to generate the SSL certificate. diff --git a/docs/content/usage/environment-variables.md b/docs/content/usage/environment-variables.md index 92e6ff6e..26dd1de5 100644 --- a/docs/content/usage/environment-variables.md +++ b/docs/content/usage/environment-variables.md @@ -1,3 +1,5 @@ +# Environment variables + You can use Environment Variables to store configuration options, or sensitive information such as API keys, passwords, and tokens. Environment variables are injected to [`process.env`](http://localhost:3000/runtime-apis#processenv) when your Function is executed. You can access them the same way you would access them in Node.js: diff --git a/docs/content/usage/limits.md b/docs/content/usage/limits.md index 13b5d6ef..57b2df86 100644 --- a/docs/content/usage/limits.md +++ b/docs/content/usage/limits.md @@ -1,3 +1,5 @@ +# Limits + We have several limits in place to ensure that our service is available to everyone. Some limits depend on the plan you're subscribed to, while others are the same for everyone. You can contact us if you need to increase some limits. diff --git a/docs/content/usage/logs.md b/docs/content/usage/logs.md index 97f3c348..418ffaed 100644 --- a/docs/content/usage/logs.md +++ b/docs/content/usage/logs.md @@ -1,3 +1,5 @@ +# Logs + You can use the [`console` API](../runtime-apis.md#console) to log messages, objects, errors, warnings, debug information and more. Four levels of logs are accepted: diff --git a/docs/content/usage/pricing.md b/docs/content/usage/pricing.md index e73f37b2..fac380ee 100644 --- a/docs/content/usage/pricing.md +++ b/docs/content/usage/pricing.md @@ -1,3 +1,5 @@ +# Pricing + A plan belongs to an Organization. Additionally, [limits](./limits.md) apply to each plan. ## Personal diff --git a/docs/content/usage/regions.md b/docs/content/usage/regions.md index 930c0c62..c2c05999 100644 --- a/docs/content/usage/regions.md +++ b/docs/content/usage/regions.md @@ -1,3 +1,5 @@ +# Regions + Lagoss is currently deployed in one region. We use multiple hosting providers to prevent a single point of failure and provide resiliency in the case of an outage from one of our providers. Users are routed to the region that is geographically closest to them when they request a Function, using a mix of Anycast and GeoIP. diff --git a/docs/content/usage/security.md b/docs/content/usage/security.md index 8fb6ee0f..393da106 100644 --- a/docs/content/usage/security.md +++ b/docs/content/usage/security.md @@ -1 +1,3 @@ +# Security + Work in progress... From 245738ae91d91c85a9cb1848f333452bbe83c6d5 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 11:45:36 +0100 Subject: [PATCH 12/22] update docs pkg --- {packages/docs => docs}/CHANGELOG.md | 0 docs/package.json | 2 ++ packages/docs/package.json | 33 ---------------------------- 3 files changed, 2 insertions(+), 33 deletions(-) rename {packages/docs => docs}/CHANGELOG.md (100%) delete mode 100644 packages/docs/package.json diff --git a/packages/docs/CHANGELOG.md b/docs/CHANGELOG.md similarity index 100% rename from packages/docs/CHANGELOG.md rename to docs/CHANGELOG.md diff --git a/docs/package.json b/docs/package.json index 5cb30937..b01b4192 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,5 +1,7 @@ { "name": "@lagoss/docs", + "version": "1.0.3", + "private": true, "type": "module", "devDependencies": { "vitepress": "^1.0.0-rc.44" diff --git a/packages/docs/package.json b/packages/docs/package.json deleted file mode 100644 index 9aac2a13..00000000 --- a/packages/docs/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@lagoss/docs", - "version": "1.0.3", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "postbuild": "next-sitemap", - "start": "next start", - "lint": "next lint", - "typecheck": "tsc --noEmit" - }, - "dependencies": { - "next": "13.4.12", - "next-sitemap": "^4.0.5", - "nextra": "2.10.0", - "nextra-theme-docs": "2.10.0", - "posthog-js": "^1.55.1", - "react": "18.2.0", - "react-dom": "18.2.0" - }, - "devDependencies": { - "@types/node": "^18.0.0", - "@types/react": "^18.0.9", - "@types/react-dom": "^18.0.5", - "autoprefixer": "^10.4.7", - "eslint": "^8.16.0", - "eslint-config-next": "13.4.12", - "postcss": "^8.4.22", - "tailwindcss": "^3.3.1", - "typescript": "^5.1.3" - } -} From b41a0bbcdb69ebec913863859a54280a32264f68 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:34:11 +0100 Subject: [PATCH 13/22] update name --- CODE_OF_CONDUCT.md | 3 +-- README.md | 9 +++++---- docs/content/public/install/.env.example | 10 +++++----- docs/content/public/install/docker-compose.yml | 10 +++++----- docs/content/runtime-apis.md | 8 ++++---- docs/content/usage/regions.md | 2 +- packages/dashboard/locales/en.ts | 4 ++-- packages/dashboard/locales/fr.ts | 4 ++-- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5170f45d..adc8be44 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -59,8 +59,7 @@ representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -contact@lagon.app. +reported to the community leaders responsible for enforcement at lagoss[at]ju60.de. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/README.md b/README.md index 8e9839b2..4b0902d0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Lagoss logo +

Lagoss

Deploy Serverless Functions at the Edge
@@ -23,9 +24,9 @@ Lagoss is a fork of [Lagon](https://github.com/lagonapp/lagon) an open-source ru > [!NOTE] > The project was forked from [Lagon](https://github.com/lagonapp/lagon) with the > intention to continue development. There is currently a public testing instance -> deployed at . However it should be only used for basic -> testing and data might be deleted at any point. If you want a proper setup, -> please deploy your own instance => [Install my own instance](https://docs.lagoss.com). +> deployed at . However it should be used for basic +> testing only and data might be deleted at any point. If you want a proper setup, +> please deploy your own instance => [Install my own instance](https://docs.lagoss.com/self-hosting/installation). ## Packages @@ -59,7 +60,7 @@ Starting an Isolate is a lot faster than starting a whole Node.js process, which ## Installation -Learn how you can [install](https://docs.lagoss.com) your own Lagoss instance. +Learn how you can [install](https://docs.lagoss.com/self-hosting/installation) your own Lagoss instance. ## License diff --git a/docs/content/public/install/.env.example b/docs/content/public/install/.env.example index bedb2efd..5b44dafd 100644 --- a/docs/content/public/install/.env.example +++ b/docs/content/public/install/.env.example @@ -1,17 +1,17 @@ # Version of lagoss to use (https://github.com/lagossapp/lagoss/releases) LAGOSS_VERSION=latest -LAGON_ROOT_DOMAIN=your-domain.com +LAGOSS_ROOT_DOMAIN=your-domain.com MYSQL_PASSWORD= S3_ROOT_SECRET_ACCESS_KEY= CLICKHOUSE_PASSWORD= # Dashboard settings -LAGON_RESTRICT_LOGIN=false -NEXT_PUBLIC_LAGON_ROOT_DOMAIN=your-domain.com -LAGON_BLACKLISTED_FUNCTIONS_NAMES=app,dash,www,docs -NEXT_PUBLIC_LAGON_ROOT_SCHEM=http +LAGOSS_RESTRICT_LOGIN=false +NEXT_PUBLIC_LAGOSS_ROOT_DOMAIN=your-domain.com +LAGOSS_BLACKLISTED_FUNCTIONS_NAMES=app,dash,www,docs +NEXT_PUBLIC_LAGOSS_ROOT_SCHEM=http NEXTAUTH_URL=https://app.your-domain.com NEXTAUTH_SECRET= GITHUB_CLIENT_ID= diff --git a/docs/content/public/install/docker-compose.yml b/docs/content/public/install/docker-compose.yml index d002fecd..facc5934 100644 --- a/docs/content/public/install/docker-compose.yml +++ b/docs/content/public/install/docker-compose.yml @@ -42,7 +42,7 @@ services: MINIO_ROOT_USER: lagoss MINIO_ROOT_PASSWORD: ${S3_ROOT_SECRET_ACCESS_KEY} entrypoint: sh - command: -c 'mkdir -p /data/lagon && minio server /data --console-address ":9001" --address ":9002"' + command: -c 'mkdir -p /data/lagoss && minio server /data --console-address ":9001" --address ":9002"' restart: unless-stopped dashboard: @@ -58,7 +58,7 @@ services: CLICKHOUSE_USER: lagoss CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} CLICKHOUSE_DATABASE: lagoss - LAGON_REGION: local + LAGOSS_REGION: local env_file: .env depends_on: - redis @@ -80,9 +80,9 @@ services: CLICKHOUSE_USER: lagoss CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} CLICKHOUSE_DATABASE: lagoss - LAGON_REGION: local - LAGON_ISOLATES_CACHE_SECONDS: 60 - LAGON_LISTEN_ADDR: 0.0.0.0:4000 + LAGOSS_REGION: local + LAGOSS_ISOLATES_CACHE_SECONDS: 60 + LAGOSS_LISTEN_ADDR: 0.0.0.0:4000 env_file: .env depends_on: - redis diff --git a/docs/content/runtime-apis.md b/docs/content/runtime-apis.md index d6c67d79..00c9697d 100644 --- a/docs/content/runtime-apis.md +++ b/docs/content/runtime-apis.md @@ -18,24 +18,24 @@ Starting from this simple code, you can do whatever you wish, using the Web APIs The `Request` object coming from the `handler` function also contains additional headers: -- `X-Lagon-Region`: the [region](./usage/regions.md) where this Function is executing +- `X-Lagoss-Region`: the [region](./usage/regions.md) where this Function is executing - `X-Forwarded-For`: the IP address of the client that made the request You can access them the same as any other header: ```typescript {2-3} export function handler(request: Request) { - const region = request.headers.get('x-lagon-region'); + const region = request.headers.get('x-lagoss-region'); const ip = request.headers.get('x-forwarded-for'); return new Response(`Region: ${region}, User IP: ${ip}`); } ``` -The `X-Lagon-Region` header is also automatically added to each response, making it easy to identify which Region served the request. +The `X-Lagoss-Region` header is also automatically added to each response, making it easy to identify which Region served the request. ::: info -When developing locally using [`lagoss dev`](./cli.md#lagoss-dev), the `X-Lagon-Region` header will be set to `local`. +When developing locally using [`lagoss dev`](./cli.md#lagoss-dev), the `X-Lagoss-Region` header will be set to `local`. ::: ## NPM support diff --git a/docs/content/usage/regions.md b/docs/content/usage/regions.md index c2c05999..c6b08b7a 100644 --- a/docs/content/usage/regions.md +++ b/docs/content/usage/regions.md @@ -4,7 +4,7 @@ Lagoss is currently deployed in one region. We use multiple hosting providers to prevent a single point of failure and provide resiliency in the case of an outage from one of our providers. Users are routed to the region that is geographically closest to them when they request a Function, using a mix of Anycast and GeoIP. -You can access the Region that is responding to the current requests using the [`X-Lagon-Region` header](../runtime-apis.md#additional-headers). +You can access the Region that is responding to the current requests using the [`X-Lagoss-Region` header](../runtime-apis.md#additional-headers). ## List of regions diff --git a/packages/dashboard/locales/en.ts b/packages/dashboard/locales/en.ts index 729edac5..7df8fc3e 100644 --- a/packages/dashboard/locales/en.ts +++ b/packages/dashboard/locales/en.ts @@ -83,7 +83,7 @@ export default { 'settings.transfer.success': 'Ownership of this Organization transferred successfully.', 'settings.transfer.notAvailable': 'Not available yet.', 'settings.transfer.notAvailable.description': - 'Please email contact@lagon.app if you want to transfer your Organization.', + 'Please email lagoss[at]ju60.de if you want to transfer your Organization.', 'settings.usage.title': 'Usage', 'settings.usage.description': @@ -133,7 +133,7 @@ export default { 'profile.delete.modal.confirm': 'Confirm with your email', 'profile.delete.modal.submit': 'Delete Account', 'profile.delete.notAvailable': 'Not available yet.', - 'profile.delete.notAvailable.description': 'Please email contact@lagon.app if you want to delete your Account.', + 'profile.delete.notAvailable.description': 'Please email lagoss[at]ju60.de if you want to delete your Account.', 'cli.title': 'Log in to the CLI', 'cli.description': 'This is your verification code to login in the CLI. Copy it and paste it in your terminal.', diff --git a/packages/dashboard/locales/fr.ts b/packages/dashboard/locales/fr.ts index 298f5396..2d2061ad 100644 --- a/packages/dashboard/locales/fr.ts +++ b/packages/dashboard/locales/fr.ts @@ -87,7 +87,7 @@ export default defineLocale({ 'settings.transfer.success': "La propriété de l'Organisation a été transférée.", 'settings.transfer.notAvailable': 'Non disponible.', 'settings.transfer.notAvailable.description': - "Merci d'envoyer un email à contact@lagon.app si vous voulez transférer votre Organisation.", + "Merci d'envoyer un email à lagoss[at]ju60.de si vous voulez transférer votre Organisation.", 'settings.usage.title': 'Utilisation', 'settings.usage.description': @@ -139,7 +139,7 @@ export default defineLocale({ 'profile.delete.modal.submit': 'Supprimer ce Compte', 'profile.delete.notAvailable': 'Non disponible.', 'profile.delete.notAvailable.description': - "Merci d'envoyer un email à contact@lagon.app si vous voulez supprimer votre Compte.", + "Merci d'envoyer un email à lagoss[at]ju60.de si vous voulez supprimer votre Compte.", 'cli.title': 'Connexion à la CLI', 'cli.description': From e73dd6bce558cb14b78cb5e39e5f1e04d918245e Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:40:08 +0100 Subject: [PATCH 14/22] update image names --- docs/content/public/install/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/public/install/docker-compose.yml b/docs/content/public/install/docker-compose.yml index facc5934..051cfbf1 100644 --- a/docs/content/public/install/docker-compose.yml +++ b/docs/content/public/install/docker-compose.yml @@ -46,7 +46,7 @@ services: restart: unless-stopped dashboard: - image: ghcr.io/lagoss/dashboard:${LAGOSS_VERSION:-latest} + image: ghcr.io/lagossapp/dashboard:${LAGOSS_VERSION:-latest} environment: DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 @@ -68,7 +68,7 @@ services: restart: unless-stopped serverless: - image: ghcr.io/lagoss/serverless:${LAGOSS_VERSION:-latest} + image: ghcr.io/lagossapp/serverless:${LAGOSS_VERSION:-latest} environment: DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 From a9adb07fbb4c04fb7b9c4f0aa545652165f49a20 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 16:11:38 +0100 Subject: [PATCH 15/22] remove funding --- .github/FUNDING.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 04340888..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [QuiiBz] From d5c2eefee3cbde2dae2f2a33bd6b200e8f0334c7 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 16:15:18 +0100 Subject: [PATCH 16/22] update version --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index b01b4192..8a4827f3 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@lagoss/docs", - "version": "1.0.3", + "version": "1.1.0", "private": true, "type": "module", "devDependencies": { From 06db8b3aabab10e8abbd4d8d33c36a9c8f642295 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 22:14:19 +0100 Subject: [PATCH 17/22] update install conf --- docs/content/public/install/.env.example | 19 +++++++++++----- .../content/public/install/docker-compose.yml | 22 ++++++++++--------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/docs/content/public/install/.env.example b/docs/content/public/install/.env.example index 5b44dafd..7e5d3c5b 100644 --- a/docs/content/public/install/.env.example +++ b/docs/content/public/install/.env.example @@ -2,17 +2,26 @@ LAGOSS_VERSION=latest LAGOSS_ROOT_DOMAIN=your-domain.com +LAGOSS_ROOT_SCHEM=http MYSQL_PASSWORD= -S3_ROOT_SECRET_ACCESS_KEY= +S3_SECRET_ACCESS_KEY= CLICKHOUSE_PASSWORD= +##### # Dashboard settings -LAGOSS_RESTRICT_LOGIN=false -NEXT_PUBLIC_LAGOSS_ROOT_DOMAIN=your-domain.com -LAGOSS_BLACKLISTED_FUNCTIONS_NAMES=app,dash,www,docs -NEXT_PUBLIC_LAGOSS_ROOT_SCHEM=http NEXTAUTH_URL=https://app.your-domain.com NEXTAUTH_SECRET= + GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= + +LAGOSS_RESTRICT_LOGIN=false +LAGOSS_BLACKLISTED_FUNCTIONS_NAMES=app,dash,www,docs,status + +##### +# Serverless settings +LAGOSS_ISOLATES_CACHE_SECONDS=60 + +# only change if you are deploying multiple serverless instances +LAGOSS_REGION=default diff --git a/docs/content/public/install/docker-compose.yml b/docs/content/public/install/docker-compose.yml index 051cfbf1..527e68f3 100644 --- a/docs/content/public/install/docker-compose.yml +++ b/docs/content/public/install/docker-compose.yml @@ -26,7 +26,7 @@ services: soft: 262144 hard: 262144 environment: - CLICKHOUSE_DB: lagoss + CLICKHOUSE_DB: serverless CLICKHOUSE_USER: lagoss CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} @@ -40,7 +40,7 @@ services: - minio:/data environment: MINIO_ROOT_USER: lagoss - MINIO_ROOT_PASSWORD: ${S3_ROOT_SECRET_ACCESS_KEY} + MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY} entrypoint: sh command: -c 'mkdir -p /data/lagoss && minio server /data --console-address ":9001" --address ":9002"' restart: unless-stopped @@ -48,17 +48,19 @@ services: dashboard: image: ghcr.io/lagossapp/dashboard:${LAGOSS_VERSION:-latest} environment: - DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss + DATABASE_URL: mysql://lagoss:${MYSQL_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 S3_ENDPOINT: http://minio:9002 S3_REGION: unknown + S3_BUCKET: lagoss S3_ACCESS_KEY_ID: lagoss - S3_SECRET_ACCESS_KEY: ${S3_ROOT_SECRET_ACCESS_KEY} + S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY} CLICKHOUSE_URL: http://clickhouse:8123 CLICKHOUSE_USER: lagoss CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} - CLICKHOUSE_DATABASE: lagoss - LAGOSS_REGION: local + CLICKHOUSE_DATABASE: serverless # TODO: allow to set this + NEXT_PUBLIC_LAGOSS_ROOT_DOMAIN: ${LAGOSS_ROOT_DOMAIN} + NEXT_PUBLIC_LAGOSS_ROOT_SCHEM: ${LAGOSS_ROOT_SCHEM} env_file: .env depends_on: - redis @@ -70,19 +72,19 @@ services: serverless: image: ghcr.io/lagossapp/serverless:${LAGOSS_VERSION:-latest} environment: - DATABASE_URL: mysql://lagoss:${MYSQL_ROOT_PASSWORD}@mariadb/lagoss + DATABASE_URL: mysql://lagoss:${MYSQL_PASSWORD}@mariadb/lagoss REDIS_URL: redis://redis:6379 S3_ENDPOINT: http://minio:9002 S3_REGION: unknown + S3_BUCKET: lagoss S3_ACCESS_KEY_ID: lagoss S3_SECRET_ACCESS_KEY: ${S3_ROOT_SECRET_ACCESS_KEY} CLICKHOUSE_URL: http://clickhouse:8123 CLICKHOUSE_USER: lagoss CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} - CLICKHOUSE_DATABASE: lagoss - LAGOSS_REGION: local - LAGOSS_ISOLATES_CACHE_SECONDS: 60 + CLICKHOUSE_DATABASE: serverless LAGOSS_LISTEN_ADDR: 0.0.0.0:4000 + PROMETHEUS_LISTEN_ADDR: 0.0.0.0:9000 env_file: .env depends_on: - redis From ba41b27f7c9dc7e3b98eb5a11023f34867d4bdd3 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Wed, 28 Feb 2024 22:14:29 +0100 Subject: [PATCH 18/22] update changeset conf --- .changeset/config.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.changeset/config.json b/.changeset/config.json index 7db3ab3d..a6d5a185 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -11,5 +11,9 @@ "linked": [], "access": "public", "baseBranch": "main", - "updateInternalDependencies": "patch" + "updateInternalDependencies": "patch", + "privatePackages": { + "version": true, + "tag": true + } } From 79005459ba5563826a2c0535d5c287b2aafc6327 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:46:13 +0100 Subject: [PATCH 19/22] add link to dashboard --- docs/.vitepress/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index caee0304..a40b629a 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -19,6 +19,7 @@ export default defineConfig({ nav: [ { text: 'Home', link: '/' }, { text: 'Docs', link: '/introduction' }, + { text: 'Dashboard', link: 'https://app.lagoss.com' }, ], sidebar: [ From 6a4736529113555c189b3d0a59d67778af2d9507 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Sun, 3 Mar 2024 12:19:58 +0100 Subject: [PATCH 20/22] update --- {docs => packages/docs}/.gitignore | 0 {docs => packages/docs}/.vitepress/config.ts | 0 packages/docs/.vitepress/lagoss.js | 5 + {docs => packages/docs}/CHANGELOG.md | 0 {docs => packages/docs}/content/cli.md | 0 .../docs}/content/contributing.md | 0 {docs => packages/docs}/content/examples.md | 0 .../docs}/content/getting-started.md | 0 {docs => packages/docs}/content/index.md | 0 .../docs}/content/introduction.md | 0 .../docs}/content/public/.nojekyll | 0 {docs => packages/docs}/content/public/CNAME | 0 .../docs}/content/public/favicon.ico | Bin .../docs}/content/public/icon-white-black.png | Bin .../docs}/content/public/icon-white.png | Bin .../content/public/images/cron-region.png | Bin .../docs}/content/public/images/cron.png | Bin .../content/public/images/domains-list.png | Bin .../public/images/env-variables-list.png | Bin .../content/public/images/env-variables.png | Bin .../content/public/images/my-domains-list.png | Bin .../content/public/images/playground.png | Bin .../public/images/www-domains-list.png | Bin .../docs}/content/public/install/.env.example | 0 .../docs}/content/public/install/Caddyfile | 0 .../content/public/install/docker-compose.yml | 0 {docs => packages/docs}/content/public/og.png | Bin .../docs}/content/runtime-apis.md | 0 .../content/self-hosting/configuration.md | 0 .../content/self-hosting/installation.md | 0 .../docs}/content/usage/account.md | 0 .../docs}/content/usage/assets.md | 0 {docs => packages/docs}/content/usage/cron.md | 0 .../docs}/content/usage/deployments.md | 0 .../docs}/content/usage/domains.md | 0 .../content/usage/environment-variables.md | 0 .../docs}/content/usage/limits.md | 0 {docs => packages/docs}/content/usage/logs.md | 0 .../docs}/content/usage/pricing.md | 0 .../docs}/content/usage/regions.md | 0 .../docs}/content/usage/security.md | 0 {docs => packages/docs}/package.json | 13 +- {docs => packages/docs}/tsconfig.json | 0 pnpm-lock.yaml | 1052 ++++++++++++++++- 44 files changed, 1039 insertions(+), 31 deletions(-) rename {docs => packages/docs}/.gitignore (100%) rename {docs => packages/docs}/.vitepress/config.ts (100%) create mode 100644 packages/docs/.vitepress/lagoss.js rename {docs => packages/docs}/CHANGELOG.md (100%) rename {docs => packages/docs}/content/cli.md (100%) rename {docs => packages/docs}/content/contributing.md (100%) rename {docs => packages/docs}/content/examples.md (100%) rename {docs => packages/docs}/content/getting-started.md (100%) rename {docs => packages/docs}/content/index.md (100%) rename {docs => packages/docs}/content/introduction.md (100%) rename {docs => packages/docs}/content/public/.nojekyll (100%) rename {docs => packages/docs}/content/public/CNAME (100%) rename {docs => packages/docs}/content/public/favicon.ico (100%) rename {docs => packages/docs}/content/public/icon-white-black.png (100%) rename {docs => packages/docs}/content/public/icon-white.png (100%) rename {docs => packages/docs}/content/public/images/cron-region.png (100%) rename {docs => packages/docs}/content/public/images/cron.png (100%) rename {docs => packages/docs}/content/public/images/domains-list.png (100%) rename {docs => packages/docs}/content/public/images/env-variables-list.png (100%) rename {docs => packages/docs}/content/public/images/env-variables.png (100%) rename {docs => packages/docs}/content/public/images/my-domains-list.png (100%) rename {docs => packages/docs}/content/public/images/playground.png (100%) rename {docs => packages/docs}/content/public/images/www-domains-list.png (100%) rename {docs => packages/docs}/content/public/install/.env.example (100%) rename {docs => packages/docs}/content/public/install/Caddyfile (100%) rename {docs => packages/docs}/content/public/install/docker-compose.yml (100%) rename {docs => packages/docs}/content/public/og.png (100%) rename {docs => packages/docs}/content/runtime-apis.md (100%) rename {docs => packages/docs}/content/self-hosting/configuration.md (100%) rename {docs => packages/docs}/content/self-hosting/installation.md (100%) rename {docs => packages/docs}/content/usage/account.md (100%) rename {docs => packages/docs}/content/usage/assets.md (100%) rename {docs => packages/docs}/content/usage/cron.md (100%) rename {docs => packages/docs}/content/usage/deployments.md (100%) rename {docs => packages/docs}/content/usage/domains.md (100%) rename {docs => packages/docs}/content/usage/environment-variables.md (100%) rename {docs => packages/docs}/content/usage/limits.md (100%) rename {docs => packages/docs}/content/usage/logs.md (100%) rename {docs => packages/docs}/content/usage/pricing.md (100%) rename {docs => packages/docs}/content/usage/regions.md (100%) rename {docs => packages/docs}/content/usage/security.md (100%) rename {docs => packages/docs}/package.json (81%) rename {docs => packages/docs}/tsconfig.json (100%) diff --git a/docs/.gitignore b/packages/docs/.gitignore similarity index 100% rename from docs/.gitignore rename to packages/docs/.gitignore diff --git a/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts similarity index 100% rename from docs/.vitepress/config.ts rename to packages/docs/.vitepress/config.ts diff --git a/packages/docs/.vitepress/lagoss.js b/packages/docs/.vitepress/lagoss.js new file mode 100644 index 00000000..cc1bd7c7 --- /dev/null +++ b/packages/docs/.vitepress/lagoss.js @@ -0,0 +1,5 @@ +export function handler(request) { + return new Response('Hello, World!', { + headers: { 'content-type': 'text/html' }, + }); +} diff --git a/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md similarity index 100% rename from docs/CHANGELOG.md rename to packages/docs/CHANGELOG.md diff --git a/docs/content/cli.md b/packages/docs/content/cli.md similarity index 100% rename from docs/content/cli.md rename to packages/docs/content/cli.md diff --git a/docs/content/contributing.md b/packages/docs/content/contributing.md similarity index 100% rename from docs/content/contributing.md rename to packages/docs/content/contributing.md diff --git a/docs/content/examples.md b/packages/docs/content/examples.md similarity index 100% rename from docs/content/examples.md rename to packages/docs/content/examples.md diff --git a/docs/content/getting-started.md b/packages/docs/content/getting-started.md similarity index 100% rename from docs/content/getting-started.md rename to packages/docs/content/getting-started.md diff --git a/docs/content/index.md b/packages/docs/content/index.md similarity index 100% rename from docs/content/index.md rename to packages/docs/content/index.md diff --git a/docs/content/introduction.md b/packages/docs/content/introduction.md similarity index 100% rename from docs/content/introduction.md rename to packages/docs/content/introduction.md diff --git a/docs/content/public/.nojekyll b/packages/docs/content/public/.nojekyll similarity index 100% rename from docs/content/public/.nojekyll rename to packages/docs/content/public/.nojekyll diff --git a/docs/content/public/CNAME b/packages/docs/content/public/CNAME similarity index 100% rename from docs/content/public/CNAME rename to packages/docs/content/public/CNAME diff --git a/docs/content/public/favicon.ico b/packages/docs/content/public/favicon.ico similarity index 100% rename from docs/content/public/favicon.ico rename to packages/docs/content/public/favicon.ico diff --git a/docs/content/public/icon-white-black.png b/packages/docs/content/public/icon-white-black.png similarity index 100% rename from docs/content/public/icon-white-black.png rename to packages/docs/content/public/icon-white-black.png diff --git a/docs/content/public/icon-white.png b/packages/docs/content/public/icon-white.png similarity index 100% rename from docs/content/public/icon-white.png rename to packages/docs/content/public/icon-white.png diff --git a/docs/content/public/images/cron-region.png b/packages/docs/content/public/images/cron-region.png similarity index 100% rename from docs/content/public/images/cron-region.png rename to packages/docs/content/public/images/cron-region.png diff --git a/docs/content/public/images/cron.png b/packages/docs/content/public/images/cron.png similarity index 100% rename from docs/content/public/images/cron.png rename to packages/docs/content/public/images/cron.png diff --git a/docs/content/public/images/domains-list.png b/packages/docs/content/public/images/domains-list.png similarity index 100% rename from docs/content/public/images/domains-list.png rename to packages/docs/content/public/images/domains-list.png diff --git a/docs/content/public/images/env-variables-list.png b/packages/docs/content/public/images/env-variables-list.png similarity index 100% rename from docs/content/public/images/env-variables-list.png rename to packages/docs/content/public/images/env-variables-list.png diff --git a/docs/content/public/images/env-variables.png b/packages/docs/content/public/images/env-variables.png similarity index 100% rename from docs/content/public/images/env-variables.png rename to packages/docs/content/public/images/env-variables.png diff --git a/docs/content/public/images/my-domains-list.png b/packages/docs/content/public/images/my-domains-list.png similarity index 100% rename from docs/content/public/images/my-domains-list.png rename to packages/docs/content/public/images/my-domains-list.png diff --git a/docs/content/public/images/playground.png b/packages/docs/content/public/images/playground.png similarity index 100% rename from docs/content/public/images/playground.png rename to packages/docs/content/public/images/playground.png diff --git a/docs/content/public/images/www-domains-list.png b/packages/docs/content/public/images/www-domains-list.png similarity index 100% rename from docs/content/public/images/www-domains-list.png rename to packages/docs/content/public/images/www-domains-list.png diff --git a/docs/content/public/install/.env.example b/packages/docs/content/public/install/.env.example similarity index 100% rename from docs/content/public/install/.env.example rename to packages/docs/content/public/install/.env.example diff --git a/docs/content/public/install/Caddyfile b/packages/docs/content/public/install/Caddyfile similarity index 100% rename from docs/content/public/install/Caddyfile rename to packages/docs/content/public/install/Caddyfile diff --git a/docs/content/public/install/docker-compose.yml b/packages/docs/content/public/install/docker-compose.yml similarity index 100% rename from docs/content/public/install/docker-compose.yml rename to packages/docs/content/public/install/docker-compose.yml diff --git a/docs/content/public/og.png b/packages/docs/content/public/og.png similarity index 100% rename from docs/content/public/og.png rename to packages/docs/content/public/og.png diff --git a/docs/content/runtime-apis.md b/packages/docs/content/runtime-apis.md similarity index 100% rename from docs/content/runtime-apis.md rename to packages/docs/content/runtime-apis.md diff --git a/docs/content/self-hosting/configuration.md b/packages/docs/content/self-hosting/configuration.md similarity index 100% rename from docs/content/self-hosting/configuration.md rename to packages/docs/content/self-hosting/configuration.md diff --git a/docs/content/self-hosting/installation.md b/packages/docs/content/self-hosting/installation.md similarity index 100% rename from docs/content/self-hosting/installation.md rename to packages/docs/content/self-hosting/installation.md diff --git a/docs/content/usage/account.md b/packages/docs/content/usage/account.md similarity index 100% rename from docs/content/usage/account.md rename to packages/docs/content/usage/account.md diff --git a/docs/content/usage/assets.md b/packages/docs/content/usage/assets.md similarity index 100% rename from docs/content/usage/assets.md rename to packages/docs/content/usage/assets.md diff --git a/docs/content/usage/cron.md b/packages/docs/content/usage/cron.md similarity index 100% rename from docs/content/usage/cron.md rename to packages/docs/content/usage/cron.md diff --git a/docs/content/usage/deployments.md b/packages/docs/content/usage/deployments.md similarity index 100% rename from docs/content/usage/deployments.md rename to packages/docs/content/usage/deployments.md diff --git a/docs/content/usage/domains.md b/packages/docs/content/usage/domains.md similarity index 100% rename from docs/content/usage/domains.md rename to packages/docs/content/usage/domains.md diff --git a/docs/content/usage/environment-variables.md b/packages/docs/content/usage/environment-variables.md similarity index 100% rename from docs/content/usage/environment-variables.md rename to packages/docs/content/usage/environment-variables.md diff --git a/docs/content/usage/limits.md b/packages/docs/content/usage/limits.md similarity index 100% rename from docs/content/usage/limits.md rename to packages/docs/content/usage/limits.md diff --git a/docs/content/usage/logs.md b/packages/docs/content/usage/logs.md similarity index 100% rename from docs/content/usage/logs.md rename to packages/docs/content/usage/logs.md diff --git a/docs/content/usage/pricing.md b/packages/docs/content/usage/pricing.md similarity index 100% rename from docs/content/usage/pricing.md rename to packages/docs/content/usage/pricing.md diff --git a/docs/content/usage/regions.md b/packages/docs/content/usage/regions.md similarity index 100% rename from docs/content/usage/regions.md rename to packages/docs/content/usage/regions.md diff --git a/docs/content/usage/security.md b/packages/docs/content/usage/security.md similarity index 100% rename from docs/content/usage/security.md rename to packages/docs/content/usage/security.md diff --git a/docs/package.json b/packages/docs/package.json similarity index 81% rename from docs/package.json rename to packages/docs/package.json index 8a4827f3..eb3529fe 100644 --- a/docs/package.json +++ b/packages/docs/package.json @@ -3,15 +3,16 @@ "version": "1.1.0", "private": true, "type": "module", - "devDependencies": { - "vitepress": "^1.0.0-rc.44" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, "scripts": { "dev": "vitepress dev", "build": "vitepress build", "preview": "vitepress preview" + }, + "devDependencies": { + "vitepress": "^1.0.0-rc.44", + "@lagoss/cli": "workspace:*" + }, + "peerDependencies": { + "typescript": "^5.0.0" } } diff --git a/docs/tsconfig.json b/packages/docs/tsconfig.json similarity index 100% rename from docs/tsconfig.json rename to packages/docs/tsconfig.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c6b31a0..235a678f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -250,6 +250,19 @@ importers: specifier: ^5.1.3 version: 5.1.3 + packages/docs: + dependencies: + typescript: + specifier: ^5.0.0 + version: 5.1.3 + devDependencies: + '@lagoss/cli': + specifier: workspace:* + version: link:../../crates/cli + vitepress: + specifier: ^1.0.0-rc.44 + version: 1.0.0-rc.44(@algolia/client-search@4.22.1)(search-insights@2.13.0)(typescript@5.1.3) + packages/integrations/astro: devDependencies: astro: @@ -386,6 +399,140 @@ importers: packages: + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: true + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: true + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: true + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: true + + /@algolia/cache-browser-local-storage@4.22.1: + resolution: {integrity: sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: true + + /@algolia/cache-common@4.22.1: + resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} + dev: true + + /@algolia/cache-in-memory@4.22.1: + resolution: {integrity: sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: true + + /@algolia/client-account@4.22.1: + resolution: {integrity: sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-analytics@4.22.1: + resolution: {integrity: sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-common@4.22.1: + resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} + dependencies: + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-personalization@4.22.1: + resolution: {integrity: sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-search@4.22.1: + resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/logger-common@4.22.1: + resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} + dev: true + + /@algolia/logger-console@4.22.1: + resolution: {integrity: sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==} + dependencies: + '@algolia/logger-common': 4.22.1 + dev: true + + /@algolia/requester-browser-xhr@4.22.1: + resolution: {integrity: sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: true + + /@algolia/requester-common@4.22.1: + resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} + dev: true + + /@algolia/requester-node-http@4.22.1: + resolution: {integrity: sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: true + + /@algolia/transporter@4.22.1: + resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} + dependencies: + '@algolia/cache-common': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + dev: true + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -1950,6 +2097,14 @@ packages: dependencies: '@babel/types': 7.22.5 + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -4099,6 +4254,49 @@ packages: engines: {node: '>=10.0.0'} dev: true + /@docsearch/css@3.5.2: + resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} + dev: true + + /@docsearch/js@3.5.2(@algolia/client-search@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} + dependencies: + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(search-insights@2.13.0) + preact: 10.8.2 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: true + + /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@docsearch/css': 3.5.2 + algoliasearch: 4.22.1 + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + dev: true + /@emmetio/abbreviation@2.2.3: resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} dependencies: @@ -4123,6 +4321,15 @@ packages: react: 18.2.0 dev: true + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.16.17: resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} engines: {node: '>=12'} @@ -4149,6 +4356,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.16.17: resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} engines: {node: '>=12'} @@ -4175,6 +4391,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.16.17: resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} engines: {node: '>=12'} @@ -4201,6 +4426,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.16.17: resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} engines: {node: '>=12'} @@ -4227,6 +4461,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.16.17: resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} engines: {node: '>=12'} @@ -4253,6 +4496,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.16.17: resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} engines: {node: '>=12'} @@ -4279,6 +4531,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.16.17: resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} engines: {node: '>=12'} @@ -4305,6 +4566,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.16.17: resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} engines: {node: '>=12'} @@ -4331,6 +4601,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.16.17: resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} engines: {node: '>=12'} @@ -4357,6 +4636,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.16.17: resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} engines: {node: '>=12'} @@ -4383,6 +4671,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.16.17: resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} engines: {node: '>=12'} @@ -4409,6 +4706,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.16.17: resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} engines: {node: '>=12'} @@ -4435,6 +4741,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.16.17: resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} engines: {node: '>=12'} @@ -4461,6 +4776,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.16.17: resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} engines: {node: '>=12'} @@ -4487,6 +4811,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.16.17: resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} engines: {node: '>=12'} @@ -4513,6 +4846,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.16.17: resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} engines: {node: '>=12'} @@ -4539,6 +4881,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.16.17: resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} engines: {node: '>=12'} @@ -4565,6 +4916,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.16.17: resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} engines: {node: '>=12'} @@ -4591,6 +4951,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.16.17: resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} engines: {node: '>=12'} @@ -4617,6 +4986,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.16.17: resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} engines: {node: '>=12'} @@ -4643,6 +5021,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.16.17: resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} engines: {node: '>=12'} @@ -4669,6 +5056,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.16.17: resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} engines: {node: '>=12'} @@ -4695,6 +5091,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.19.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5799,23 +6204,127 @@ packages: '@redis/client': 1.5.6 dev: false - /@remix-run/router@1.3.1: - resolution: {integrity: sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==} - engines: {node: '>=14'} - dev: false + /@remix-run/router@1.3.1: + resolution: {integrity: sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==} + engines: {node: '>=14'} + dev: false + + /@remix-run/server-runtime@1.12.0: + resolution: {integrity: sha512-7I0165Ns/ffPfCEfuiqD58lMderTn2s/sew1xJ34ONa21mG/7+5T7diHIgxKST8rS3816JPmlwSqUaHgwbmO6Q==} + engines: {node: '>=14'} + dependencies: + '@remix-run/router': 1.3.1 + '@types/cookie': 0.4.1 + '@types/react': 18.0.26 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.4.2 + set-cookie-parser: 2.5.1 + source-map: 0.7.4 + dev: false + + /@rollup/rollup-android-arm-eabi@4.12.0: + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.12.0: + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.12.0: + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.12.0: + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.12.0: + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.12.0: + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.12.0: + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.12.0: + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.12.0: + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.12.0: + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.12.0: + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true - /@remix-run/server-runtime@1.12.0: - resolution: {integrity: sha512-7I0165Ns/ffPfCEfuiqD58lMderTn2s/sew1xJ34ONa21mG/7+5T7diHIgxKST8rS3816JPmlwSqUaHgwbmO6Q==} - engines: {node: '>=14'} - dependencies: - '@remix-run/router': 1.3.1 - '@types/cookie': 0.4.1 - '@types/react': 18.0.26 - '@web3-storage/multipart-parser': 1.0.0 - cookie: 0.4.2 - set-cookie-parser: 2.5.1 - source-map: 0.7.4 - dev: false + /@rollup/rollup-win32-ia32-msvc@4.12.0: + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.12.0: + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true /@rushstack/eslint-patch@1.1.4: resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==} @@ -5843,6 +6352,16 @@ packages: selderee: 0.10.0 dev: false + /@shikijs/core@1.1.7: + resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==} + dev: true + + /@shikijs/transformers@1.1.7: + resolution: {integrity: sha512-lXz011ao4+rvweps/9h3CchBfzb1U5OtP5D51Tqc9lQYdLblWMIxQxH6Ybe1GeGINcEVM4goMyPrI0JvlIp4UQ==} + dependencies: + shiki: 1.1.7 + dev: true + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true @@ -7481,6 +8000,10 @@ packages: /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: @@ -7567,10 +8090,21 @@ packages: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} dev: true + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + dev: true + /@types/lodash@4.14.182: resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} dev: true + /@types/markdown-it@13.0.7: + resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.2 + dev: true + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: @@ -7717,6 +8251,10 @@ packages: boxen: 7.0.0 dev: true + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + dev: true + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -7989,6 +8527,17 @@ packages: eslint-visitor-keys: 3.4.1 dev: true + /@vitejs/plugin-vue@5.0.4(vite@5.1.4)(vue@3.4.21): + resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.1.4 + vue: 3.4.21(typescript@5.1.3) + dev: true + /@vitest/expect@0.33.0: resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} dependencies: @@ -8038,6 +8587,181 @@ packages: vscode-uri: 2.1.2 dev: true + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + dependencies: + '@babel/parser': 7.24.0 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/compiler-sfc@3.4.21: + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + dependencies: + '@babel/parser': 7.24.0 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.7 + postcss: 8.4.35 + source-map-js: 1.0.2 + dev: true + + /@vue/compiler-ssr@3.4.21: + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/devtools-api@7.0.16(vue@3.4.21): + resolution: {integrity: sha512-fZG2CG8624qphMf4aj59zNHckMx1G3lxODUuyM9USKuLznXCh66TP+tEbPOCcml16hA0GizJ4D8w6F34hrfbcw==} + dependencies: + '@vue/devtools-kit': 7.0.16(vue@3.4.21) + transitivePeerDependencies: + - vue + dev: true + + /@vue/devtools-kit@7.0.16(vue@3.4.21): + resolution: {integrity: sha512-IA8SSGiZbNgOi4wLT3mRvd71Q9KE0KvMfGk6haa2GZ6bL2K/xMA8Fvvj3o1maspfUXrGcCXutaqbLqbGx/espQ==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@vue/devtools-shared': 7.0.16 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + vue: 3.4.21(typescript@5.1.3) + dev: true + + /@vue/devtools-shared@7.0.16: + resolution: {integrity: sha512-Lew4FrGjDjmanaUWSueNE1Rre83k7jQpttc17MaoVw0eARWU5DgZ1F/g9GNUMZXVjbP9rwE+LL3gd9XfXCfkvA==} + dependencies: + rfdc: 1.3.1 + dev: true + + /@vue/reactivity@3.4.21: + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + dependencies: + '@vue/shared': 3.4.21 + dev: true + + /@vue/runtime-core@3.4.21: + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/runtime-dom@3.4.21: + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + dev: true + + /@vue/server-renderer@3.4.21(vue@3.4.21): + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.1.3) + dev: true + + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + dev: true + + /@vueuse/core@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.21): + resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.21) + focus-trap: 7.5.4 + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + dev: true + + /@vueuse/shared@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + /@web3-storage/multipart-parser@1.0.0: resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} dev: false @@ -8336,6 +9060,25 @@ packages: uri-js: 4.4.1 dev: true + /algoliasearch@4.22.1: + resolution: {integrity: sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==} + dependencies: + '@algolia/cache-browser-local-storage': 4.22.1 + '@algolia/cache-common': 4.22.1 + '@algolia/cache-in-memory': 4.22.1 + '@algolia/client-account': 4.22.1 + '@algolia/client-analytics': 4.22.1 + '@algolia/client-common': 4.22.1 + '@algolia/client-personalization': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/logger-console': 4.22.1 + '@algolia/requester-browser-xhr': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/requester-node-http': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -8629,7 +9372,7 @@ packages: strip-ansi: 7.0.1 supports-esm: 1.0.0 tsconfig-resolver: 3.0.1 - typescript: 4.9.4 + typescript: 5.1.3 unist-util-visit: 4.1.1 vfile: 5.3.4 vite: 4.1.2 @@ -9897,6 +10640,10 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: true + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -10442,6 +11189,11 @@ packages: engines: {node: '>=0.12'} dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} @@ -10644,6 +11396,37 @@ packages: '@esbuild/win32-x64': 0.18.7 dev: true + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + 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 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -11105,6 +11888,10 @@ packages: - supports-color dev: true + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: @@ -11443,6 +12230,12 @@ packages: engines: {node: '>=0.4.0'} dev: true + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + dependencies: + tabbable: 6.2.0 + dev: true + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -11619,6 +12412,14 @@ packages: requiresBuild: true optional: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -12162,6 +12963,10 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: true + /hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + dev: true + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -13430,6 +14235,13 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -13465,6 +14277,10 @@ packages: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} dev: true + /mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + dev: true + /markdown-table@3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: true @@ -14064,6 +14880,10 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + /minisearch@6.3.0: + resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + dev: true + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -14071,6 +14891,10 @@ packages: minipass: 3.3.4 yallist: 4.0.0 + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: true + /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} @@ -14142,6 +14966,12 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -14911,6 +15741,10 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false @@ -15164,6 +15998,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /posthog-js@1.55.1: resolution: {integrity: sha512-WQGAypu0X3aFsphobMxBuF1T9pMFMEAuGx0GKwmbIFkCp8773CJUrYE/7/EkBfu483LTL7s8Gsbax0IQ79h/kQ==} dependencies: @@ -15182,7 +16025,6 @@ packages: /preact@10.8.2: resolution: {integrity: sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==} - dev: false /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} @@ -16207,6 +17049,10 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} hasBin: true @@ -16258,6 +17104,29 @@ packages: optionalDependencies: fsevents: 2.3.2 + /rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 + fsevents: 2.3.3 + dev: true + /rrweb-snapshot@1.1.14: resolution: {integrity: sha512-eP5pirNjP5+GewQfcOQY4uBiDnpqxNRc65yKPW0eSoU1XamDfc4M8oqpXGMyUyvLyxFDB0q0+DChuxxiU2FXBQ==} dev: false @@ -16383,6 +17252,10 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: true + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + dev: true + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -16589,6 +17462,12 @@ packages: vscode-textmate: 6.0.0 dev: true + /shiki@1.1.7: + resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==} + dependencies: + '@shikijs/core': 1.1.7 + dev: true + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -16734,6 +17613,11 @@ packages: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true + /speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -17094,6 +17978,10 @@ packages: tslib: 2.6.0 dev: true + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: true + /tailwindcss@3.3.1(postcss@8.4.22): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} @@ -17664,17 +18552,10 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - /typescript@5.1.3: resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} engines: {node: '>=14.17'} hasBin: true - dev: true /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} @@ -18208,6 +19089,41 @@ packages: optionalDependencies: fsevents: 2.3.2 + /vite@5.1.4: + resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vitefu@0.2.4(vite@4.1.2): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: @@ -18230,6 +19146,61 @@ packages: vite: 4.3.9(@types/node@18.11.18) dev: false + /vitepress@1.0.0-rc.44(@algolia/client-search@4.22.1)(search-insights@2.13.0)(typescript@5.1.3): + resolution: {integrity: sha512-tO5taxGI7fSpBK1D8zrZTyJJERlyU9nnt0jHSt3fywfq3VKn977Hg0wUuTkEmwXlFYwuW26+6+3xorf4nD3XvA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4.3.2 + postcss: ^8.4.35 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + dependencies: + '@docsearch/css': 3.5.2 + '@docsearch/js': 3.5.2(@algolia/client-search@4.22.1)(search-insights@2.13.0) + '@shikijs/core': 1.1.7 + '@shikijs/transformers': 1.1.7 + '@types/markdown-it': 13.0.7 + '@vitejs/plugin-vue': 5.0.4(vite@5.1.4)(vue@3.4.21) + '@vue/devtools-api': 7.0.16(vue@3.4.21) + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.21) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 6.3.0 + shiki: 1.1.7 + vite: 5.1.4 + vue: 3.4.21(typescript@5.1.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + dev: true + /vitest@0.33.0: resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} @@ -18363,6 +19334,37 @@ packages: resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==} dev: true + /vue-demi@0.14.7(vue@3.4.21): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.1.3) + dev: true + + /vue@3.4.21(typescript@5.1.3): + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21) + '@vue/shared': 3.4.21 + typescript: 5.1.3 + dev: true + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: From 5ffd3095f42db60a7795f05021d7a3c8b7f52bf2 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Sun, 3 Mar 2024 16:03:46 +0100 Subject: [PATCH 21/22] update --- .changeset/purple-rice-suffer.md | 5 +++++ packages/docs/.vitepress/lagoss.js | 5 ----- packages/docs/.vitepress/lagoss.ts | 8 ++++++++ packages/docs/content/public/.nojekyll | 0 packages/docs/content/public/CNAME | 1 - packages/docs/package.json | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 .changeset/purple-rice-suffer.md delete mode 100644 packages/docs/.vitepress/lagoss.js create mode 100644 packages/docs/.vitepress/lagoss.ts delete mode 100644 packages/docs/content/public/.nojekyll delete mode 100644 packages/docs/content/public/CNAME diff --git a/.changeset/purple-rice-suffer.md b/.changeset/purple-rice-suffer.md new file mode 100644 index 00000000..31d23f6d --- /dev/null +++ b/.changeset/purple-rice-suffer.md @@ -0,0 +1,5 @@ +--- +'@lagoss/ui': minor +--- + +Updated docs to vitepress, added self-hosting instructions and adjusted README diff --git a/packages/docs/.vitepress/lagoss.js b/packages/docs/.vitepress/lagoss.js deleted file mode 100644 index cc1bd7c7..00000000 --- a/packages/docs/.vitepress/lagoss.js +++ /dev/null @@ -1,5 +0,0 @@ -export function handler(request) { - return new Response('Hello, World!', { - headers: { 'content-type': 'text/html' }, - }); -} diff --git a/packages/docs/.vitepress/lagoss.ts b/packages/docs/.vitepress/lagoss.ts new file mode 100644 index 00000000..01b4d1e4 --- /dev/null +++ b/packages/docs/.vitepress/lagoss.ts @@ -0,0 +1,8 @@ +export function handler(request: Request) { + return new Response('', { + status: 302, + headers: { + location: '/404.html', + }, + }); +} diff --git a/packages/docs/content/public/.nojekyll b/packages/docs/content/public/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/docs/content/public/CNAME b/packages/docs/content/public/CNAME deleted file mode 100644 index ebefb2b6..00000000 --- a/packages/docs/content/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -docs.lagoss.com \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index eb3529fe..f8ab24e0 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@lagoss/docs", - "version": "1.1.0", + "version": "1.1.1", "private": true, "type": "module", "scripts": { From 4c3808d7254a5fc8ff26f288f476167d0f992d4e Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Sun, 3 Mar 2024 16:15:04 +0100 Subject: [PATCH 22/22] feat(docs): add ci docs --- packages/docs/.vitepress/config.ts | 9 +++++++++ packages/docs/content/ci/github-actions.md | 5 +++++ packages/docs/content/ci/gitlab-ci.md | 3 +++ packages/docs/content/ci/index.md | 9 +++++++++ packages/docs/content/ci/woodpecker.md | 3 +++ 5 files changed, 29 insertions(+) create mode 100644 packages/docs/content/ci/github-actions.md create mode 100644 packages/docs/content/ci/gitlab-ci.md create mode 100644 packages/docs/content/ci/index.md create mode 100644 packages/docs/content/ci/woodpecker.md diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index a40b629a..abaa25e0 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -57,6 +57,15 @@ export default defineConfig({ // { text: 'Regions', link: '/usage/regions' }, { text: 'Limits', link: '/usage/limits' }, { text: 'Security', link: '/usage/security' }, + { + text: 'CI', + collapsed: true, + items: [ + { text: 'Github Actions', link: '/ci/github-actions' }, + { text: 'Gitlab CI', link: '/ci/gitlab-ci' }, + { text: 'Woodpecker', link: '/ci/woodpecker' }, + ], + }, ], }, { diff --git a/packages/docs/content/ci/github-actions.md b/packages/docs/content/ci/github-actions.md new file mode 100644 index 00000000..59b415f1 --- /dev/null +++ b/packages/docs/content/ci/github-actions.md @@ -0,0 +1,5 @@ +# Deploy using Github Actions + +https://github.com/lagossapp/github-action/tree/latest + +Work in progress ... diff --git a/packages/docs/content/ci/gitlab-ci.md b/packages/docs/content/ci/gitlab-ci.md new file mode 100644 index 00000000..1c153d42 --- /dev/null +++ b/packages/docs/content/ci/gitlab-ci.md @@ -0,0 +1,3 @@ +# Deploy using Gitlab CI + +Work in progress ... diff --git a/packages/docs/content/ci/index.md b/packages/docs/content/ci/index.md new file mode 100644 index 00000000..5636ad1f --- /dev/null +++ b/packages/docs/content/ci/index.md @@ -0,0 +1,9 @@ +# Automatic deployment using CI + +You can use your existing CI system to automatically deploy your project to lagoss. + +Currently following CI systems are supported, but most other systems should work by using the [@lagoss/cli](../cli.md): + +- [Github actions](github-actions.md) +- [Gitlab CI](gitlab-ci.md) +- [Woodpecker CI](woodpecker.md) diff --git a/packages/docs/content/ci/woodpecker.md b/packages/docs/content/ci/woodpecker.md new file mode 100644 index 00000000..98ea961b --- /dev/null +++ b/packages/docs/content/ci/woodpecker.md @@ -0,0 +1,3 @@ +# Deploy using Woodpecker CI + +Work in progress ...