diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..d9b274d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,15 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[{package.json,package-lock.json,.*rc,*.yml,*.yaml}]
+indent_style = space
+indent_size = 2
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.env-example b/.env-example
deleted file mode 100644
index 200b33a..0000000
--- a/.env-example
+++ /dev/null
@@ -1,6 +0,0 @@
-TWITTER_STREAM_KEY=xxx
-TWITCH_STREAM_KEY=xxx
-YOUTUBE_STREAM_KEY=xxx
-MUX_TOKEN_ID=xxx
-MUX_TOKEN_SECRET=xxx
-ADMIN_SECRET=xxx
diff --git a/.github/ISSUE_TEMPLATE/website-issue.md b/.github/ISSUE_TEMPLATE/website-issue.md
index ec583e6..e8a7fbe 100644
--- a/.github/ISSUE_TEMPLATE/website-issue.md
+++ b/.github/ISSUE_TEMPLATE/website-issue.md
@@ -5,4 +5,3 @@ title: ''
labels: ''
assignees: ''
---
-
diff --git a/.github/workflows/begin-deploy.yml b/.github/workflows/begin-deploy.yml
deleted file mode 100644
index da17f7c..0000000
--- a/.github/workflows/begin-deploy.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: Node CI
-
-# Push tests pushes; PR tests merges
-on: [ push, pull_request ]
-
-defaults:
- run:
- shell: bash
-
-jobs:
- deploy_staging:
- name: Deploy staging
- if: github.ref == 'refs/heads/main' && github.event_name == 'push' # Don't run twice for PRs (for now)
- runs-on: ubuntu-latest
- concurrency:
- group: staging_${{ github.repository }}
-
- steps:
- - name: Check out repo
- uses: actions/checkout@v3
-
- - name: Set up Node.js
- uses: actions/setup-node@v3
- with:
- node-version: lts/*
-
- - name: Install
- run: npm install
-
- - name: Deploy to staging
- uses: beginner-corp/actions/deploy@main
- with:
- begin_token: ${{ secrets.BEGIN_TOKEN }}
- begin_env_name: staging
-
- deploy_production:
- name: Deploy production
- if: startsWith(github.ref, 'refs/tags/v') && github.event_name == 'push' # Don't run twice for PRs (for now)
- runs-on: ubuntu-latest
- concurrency:
- group: production_${{ github.repository }}
-
- steps:
- - name: Check out repo
- uses: actions/checkout@v3
-
- - name: Set up Node.js
- uses: actions/setup-node@v3
- with:
- node-version: lts/*
-
- - name: Install
- run: npm install
-
- - name: Deploy to production
- uses: beginner-corp/actions/deploy@main
- with:
- begin_token: ${{ secrets.BEGIN_TOKEN }}
- begin_env_name: production
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..b18ee1a
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,44 @@
+# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
+
+# Simple workflow for deploying static content to GitHub Pages
+name: Deploy
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ['main']
+ paths:
+ - 'src/**/*'
+ - 'index.html'
+ - 'vite.config.js'
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow one concurrent deployment
+concurrency:
+ group: 'pages'
+ cancel-in-progress: true
+
+jobs:
+ build:
+ uses: ./.github/workflows/main.yml
+
+ deploy:
+ needs: build
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..104f049
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,26 @@
+name: Main CI
+
+on:
+ pull_request:
+ branches:
+ - '**'
+ workflow_call:
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Use Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: '.node-version'
+ cache: 'npm'
+ - run: npm ci
+ - run: npm run lint
+ - run: npm run build
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: dist
diff --git a/.gitignore b/.gitignore
index 808afb6..2b762f8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,143 @@
-node_modules/
-*.log
+.astro
.DS_Store
public/static.json
src/shared/static.json
-.env
tmp
-.enhance
\ No newline at end of file
+.enhance
+
+##################################################
+#
+# Node .gitignore
+#
+##################################################
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
diff --git a/.node-version b/.node-version
index e65243f..1d9b783 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-16.19.0
+22.12.0
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index e84e4e8..0000000
--- a/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-# .npmrc
-engine-strict=true
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..1521c8b
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+dist
diff --git a/.prettierrc b/.prettierrc
index 2e6199c..a353cab 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -3,5 +3,13 @@
"singleQuote": true,
"semi": false,
"arrowParens": "avoid",
- "trailingComma": "none"
+ "plugins": ["prettier-plugin-astro"],
+ "overrides": [
+ {
+ "files": "*.astro",
+ "options": {
+ "parser": "astro"
+ }
+ }
+ ]
}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..30810fa
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["astro-build.astro-vscode"]
+}
diff --git a/README.md b/README.md
index a8375a8..4eeee2f 100644
--- a/README.md
+++ b/README.md
@@ -1,66 +1,42 @@
# SeattleJS Website
-## Platform and Services
-
-This website is built on [Enhance](https://enhance.dev) and deploys to [Begin](https://begin.com).
+## Getting started
-It currently depends on the following external services:
+- clone this repo
+- `npm i`
+- `npm start` to start dev server
+- `npm run build` to build production assets
+- `npm run format` for format all code files
-- [Customer.io](https://customer.io) - Mailing list
+## Platform and Services
-## Enhance Structure
+This website is built on [Astro](https://astro.build/) and deploys to [GitHub Pages](https://pages.github.com/).
-Enhance is an opinionated HTML web framework that renders pages on the server and supports [progressive enhancement](https://enhance.dev/docs/learn/why-enhance) on the client for SPA-like experiences.
+## Astro Structure
-An Enhace app has two top-level directories: `app` and `public`.
+Astro is an HTML web framework that supports file-based routing and is statically rendered by default but can be configured to support client-side islands and server rendering and functions.
-### The `app` Directory
+An Astro app has two top-level directories: `src` and `public`.
-The `app` directory contains all the code for our application, in addition to Markdown files that power many of the static webpages.
+### The `src` Directory
-Disclaimer: Enhance is a new and rapidly changing web framework. We will do our best to keep this README up to date, but please reference the Enhance docs as the source of truth.
+The `src` directory contains all the code for our application, in addition to Markdown files that power many of the static webpages. All subdirectories (expect for `pages`) are our custom directories and not required by Astro.
Here's a brief rundown of each subdirectory and its purpose:
-- `api` - controllers for paths in our web app, they generally call APIs and load data, which is passed to the view logic in `pages`
-- `elements` - custom elements that render and expand on the server
-- `md` - static Markdown files
-- `pages` - views (generally in HTML) that, if needed, render data passed from their API controller
+- `pages` - routes that Astro will generate into HTML files for us to upload to GitHub pages. Each file in this directory will be a separate page on the site. The file name will be the path of the page. For example, `pages/speakers.astro` will be the `/speakers` page on the site. Markdown files are also converted to HTML and served as is
+- `components` - Resuable custom Astro components that pages will import and render
+- `data` - JSON files that include data that pages can import and render
+- `images` - Images that Astro components will import and render. These images are not by default served unless an Astro page/component imports it and renders it
+- `layouts` - Astro components that contain the layout our of site that other pages render into
+- `scripts` - Client-side JavaScript files that Astro pages will render scripts to run in the browser
+- `styles` - CSS files that Astro pages will import and render to the browser
+- `utils` - Server-side JavaScript files that Astro pages will invoke to render pages on the server
### The `public` Directory
-This contains static files (images, css, etc).
-
-Enhance makes all of these files available via the special `/_public/` path off the root. In addition, this project has turned on fingerprinting, so when you deploy a file to the cloud (i.e. `/images/logo.png`), its filename is re-written with a unique hash attached (i.e. `/images/logo-abc123.png`) and when you reference this file in your markup (using just `/images/logo.png`), Enhance will re-write the response to the client on-the-fly to reference the filename with the attached hash.
-
-## App Design
-
-For the most part, file-based routing makes it pretty clear what paths are supported by our app. For instance, the existence of `pages/speakers.mjs` tells you that the app supports a `/speakers` web page.
-
-Pages that require data to render are paired with an identically names JS file in the `api` directory. At the moment, all of the data is being stored as static JS data in the API files, but this may change in the future.
-
-There are two files named `$stub.mjs` that live in the `api` and `pages` directories. The dollar sign ($) functions as a wildcard and catches paths that are not defined by named files. This enables us to render Markdown files from the `md` directory based on the path requested:
-
-- `/foo` will render `md/foo.md`
-- `/foo/bar` will render `md/foo/bar.md`
-
-If there is no Markdown file that matches the path, a 404 error will be returned.
-
-
-## Install
-
-- clone this repo
-- `npm i`
-- install the Begin CLI, see instructions [here](https://begin.com/docs/getting-started/installing-the-begin-cli)
-
-## Setup
-
-If you need to run/test the mailing list subscription action (`POST /signup`) you will need to configure the following environment variables: `CIO_SITE_ID`, `CIO_API_KEY`, `CIO_APP_KEY`
-
-## Run dev server
-
-`npm start`
+This contains static files (images, css, etc) that are served as is. Astro does not modify these files. Many of these files are nested under a `_public` directory. This is done to preserve existing URLs that our previous site setup.
-## Making contributions
+## Contributions
If you would like to make a contribution, please fork this repo and send us a pull request.
diff --git a/app.arc b/app.arc
deleted file mode 100644
index 357857f..0000000
--- a/app.arc
+++ /dev/null
@@ -1,12 +0,0 @@
-@app
-seattlejs
-
-@static
-folder public
-fingerprint true
-
-@plugins
-enhance/arc-plugin-enhance
-
-@begin
-appID B8HTG2J3
diff --git a/app/api/$$.mjs b/app/api/$$.mjs
deleted file mode 100644
index 4538032..0000000
--- a/app/api/$$.mjs
+++ /dev/null
@@ -1,38 +0,0 @@
-import { existsSync, readFileSync } from 'fs'
-import fm from 'front-matter'
-import { join } from 'path'
-
-export async function get(req) {
- let { path } = req
- let page = path.substr(1)
- let filePath = join(
- process.cwd(),
- 'node_modules',
- '@architect',
- 'views',
- 'md',
- `${page}.md`
- )
- if (!existsSync(filePath)) {
- return {
- statusCode: 404,
- json: {
- path,
- notFound: true
- }
- }
- } else {
- let file = readFileSync(filePath).toString()
- // pull out any front-matter key/values
- let { attributes, body } = fm(file)
- let title = attributes.title
- return {
- json: {
- path,
- title,
- attributes,
- body
- }
- }
- }
-}
diff --git a/app/api/admin.mjs b/app/api/admin.mjs
deleted file mode 100644
index 7c6b8fe..0000000
--- a/app/api/admin.mjs
+++ /dev/null
@@ -1,25 +0,0 @@
-import data from '@begin/data'
-
-export async function post(req) {
- let { secret, playbackId, _destroy } = req.body
- let json
- if (secret === process.env.ADMIN_SECRET && playbackId) {
- await data.set({ table: "admin", key: "playbackId", value: playbackId })
- json = {
- "result": "success"
- }
- }
- else if (secret === process.env.ADMIN_SECRET && _destroy != undefined){
- await data.destroy({ table: "admin", key: "playbackId" })
- json = {
- "result": "deleted"
- }
- }
- else {
- json = {
- "error": "not authorized"
- }
- }
- return { json }
-}
-
diff --git a/app/api/conf.mjs b/app/api/conf.mjs
deleted file mode 100644
index 273e888..0000000
--- a/app/api/conf.mjs
+++ /dev/null
@@ -1,16 +0,0 @@
-import data from '../data/conf-2023.json' assert { type: 'json' }
-export async function get() {
- return {
- json: {
- title: 'SeattleJS Conf',
- description: 'SeattleJS Conf is a very special 1-day conference bringing together ~300 web developers to learn, network and have fun!',
- sharing: {
- image: '/_public/images/seattlejsconf-sharing.png'
- },
- event,
- organizers: event.organizers
- }
- }
-}
-
-export const event = data
diff --git a/app/api/events.mjs b/app/api/events.mjs
deleted file mode 100644
index c93c106..0000000
--- a/app/api/events.mjs
+++ /dev/null
@@ -1,21 +0,0 @@
-import data from '../data/events.json' assert { type: 'json' }
-import { inflateSponsors } from './sponsors.mjs'
-import { inflateTalk } from './talks.mjs'
-export async function get() {
- return {
- json: { data }
- }
-}
-
-export const events = data
-
-export function inflateEvent(event) {
- let inflatedEvent = { ...event }
- if (event.talks) {
- inflatedEvent.talks = event.talks.map(inflateTalk)
- }
- if (event.sponsors) {
- inflatedEvent.sponsors = event.sponsors.map(inflateSponsors)
- }
- return inflatedEvent
-}
diff --git a/app/api/events/$id.mjs b/app/api/events/$id.mjs
deleted file mode 100644
index cd7e0e5..0000000
--- a/app/api/events/$id.mjs
+++ /dev/null
@@ -1,26 +0,0 @@
-import events from '../../data/events.json' assert { type: 'json' }
-import { inflateEvent } from '../events.mjs'
-
-export async function get(req) {
- let { path, query } = req
- const event = events.find(e => e.id === req.params.id)
- let display = "page"
- if (query && Object.hasOwn(query, "email")) display = "email"
- if (!event) {
- return {
- statusCode: 404,
- json: {
- path,
- notFound: true
- }
- }
- }
- else {
- return {
- json: {
- event: inflateEvent(event),
- display
- }
- }
- }
-}
diff --git a/app/api/index.mjs b/app/api/index.mjs
deleted file mode 100644
index d21ca55..0000000
--- a/app/api/index.mjs
+++ /dev/null
@@ -1,20 +0,0 @@
-import { events, inflateEvent } from './events.mjs'
-import { organizers } from './organizers.mjs'
-import { sponsors } from './sponsors.mjs'
-
-function filterFutureEvents() {
- const TWELVE_HOURS = 1000 * 60 * 60 * 12
- return events.filter(
- t => new Date(`${t.date}T21:00-08:00`).getTime() + TWELVE_HOURS > Date.now()
- )
-}
-
-/**
- * Load upcoming events + all organizers + all sponsors
- */
-export async function get() {
- let filteredEvents = filterFutureEvents().map(inflateEvent)
- return {
- json: { events: filteredEvents, organizers, sponsors }
- }
-}
diff --git a/app/api/live.mjs b/app/api/live.mjs
deleted file mode 100644
index 1c5ec1d..0000000
--- a/app/api/live.mjs
+++ /dev/null
@@ -1,24 +0,0 @@
-import data from '@begin/data'
-import confData from '../data/conf-2023.json' assert { type: 'json' }
-
-export async function get(req) {
- let playbackId = await data.get({ table: "admin", key: "playbackId" })
-
- return {
- json: {
- title: 'SeattleJS Conf',
- description: 'SeattleJS Conf is a very special 1-day conference bringing together ~300 web developers to learn, network and have fun!',
- sharing: {
- image: '/_public/images/seattlejsconf-sharing.png'
- },
- event,
- organizers: event.organizers,
- playbackId:
- req.query.playbackId // if a playbackId is passed in the query string, it takes precendence
- || (req.query.test != undefined ? 'v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM' : undefined) // next if "test" is used
- || ( playbackId ? playbackId.value : undefined ) // lastly, the value from the database, if it exists
- }
- }
-}
-
-export const event = confData
\ No newline at end of file
diff --git a/app/api/organizers.mjs b/app/api/organizers.mjs
deleted file mode 100644
index 8159397..0000000
--- a/app/api/organizers.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import data from '../data/organizers.json' assert { type: 'json' }
-export async function get() {
- return {
- json: { data }
- }
-}
-
-export const organizers = data
diff --git a/app/api/signup.mjs b/app/api/signup.mjs
deleted file mode 100644
index 87bbc4d..0000000
--- a/app/api/signup.mjs
+++ /dev/null
@@ -1,54 +0,0 @@
-import fetch from 'node-fetch'
-//import validator from 'email-validator'
-
-export async function addToCustomerIO(first_name, last_name, email_address) {
- // set customer.io REST API header
- let headers = {
- Authorization: `Basic ${Buffer.from(
- process.env.CIO_SITE_ID + ':' + process.env.CIO_API_KEY
- ).toString('base64')}`,
- 'Content-Type': 'application/json'
- }
- // set the payload for the create/update API call
- let created_at = Math.floor(Date.now() / 1000)
- let body = JSON.stringify({
- 'list-seattlejs': created_at,
- first_name,
- last_name
- })
- // call REST API to update customer
- await fetch(
- `https://track.customer.io/api/v1/customers/${encodeURIComponent(
- email_address
- )}`,
- {
- method: 'PUT',
- headers,
- body
- }
- )
-}
-
-export async function get() {
- return {
- location: '/404'
- }
-}
-
-export async function post(/*req*/) {
- // For the time being, we are disabling this capability until we can protect it from bots better
- /*
- let { first_name, last_name, email_address } = req.body
- if (email_address && validator.validate(email_address)) {
- if (email_address === first_name) {
- return { status: 400, text: 'No thank you, bot' }
- } else {
- await addToCustomerIO(first_name, last_name, email_address)
- return { location: '/signup-next-steps' }
- }
- } else {
- return { status: 400, text: 'You must provide an email address' }
- }
- */
- return { status: 501, text: 'This endpoint is disabled' }
-}
diff --git a/app/api/speakers.mjs b/app/api/speakers.mjs
deleted file mode 100644
index 9a86072..0000000
--- a/app/api/speakers.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import data from '../data/speakers.json' assert { type: 'json' }
-export async function get() {
- return {
- json: { data }
- }
-}
-
-export const speakers = data
diff --git a/app/api/speakers/$id.mjs b/app/api/speakers/$id.mjs
deleted file mode 100644
index aa8e434..0000000
--- a/app/api/speakers/$id.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-import { speakers } from '../speakers.mjs'
-
-export async function get(req) {
- let { id } = req.params
- let speaker = speakers.find(s => s.id === id)
- return {
- json: { speaker }
- }
-}
diff --git a/app/api/sponsors.mjs b/app/api/sponsors.mjs
deleted file mode 100644
index cc0c772..0000000
--- a/app/api/sponsors.mjs
+++ /dev/null
@@ -1,13 +0,0 @@
-import data from '../data/sponsors.json' assert { type: 'json' }
-
-export async function get() {
- return {
- json: { data }
- }
-}
-
-export const sponsors = data
-
-export function inflateSponsors(sponsor_id) {
- return sponsors.find(s => s.id === sponsor_id)
-}
diff --git a/app/api/talks.mjs b/app/api/talks.mjs
deleted file mode 100644
index d1c4562..0000000
--- a/app/api/talks.mjs
+++ /dev/null
@@ -1,28 +0,0 @@
-import data from '../data/talks.json' assert { type: 'json' }
-import speakers from '../data/speakers.json' assert { type: 'json' }
-
-export async function get() {
- return {
- json: data.map(t => {
- let speaker = speakers.find(s => s.id === t.speaker_id)
- return {
- id: t.id,
- event_id: t.event_id,
- title: t.title,
- abstract: t.abstract,
- speaker
- }
- })
- }
-}
-
-export const talks = data
-
-export function inflateTalk(talk_id) {
- let talk = talks.find(t => t.id === talk_id)
- let inflatedTalk = { ...talk }
- if (inflatedTalk.speaker_id) {
- inflatedTalk.speaker = speakers.find(s => s.id === talk.speaker_id)
- }
- return inflatedTalk
-}
diff --git a/app/api/talks/$id.mjs b/app/api/talks/$id.mjs
deleted file mode 100644
index 07ff49f..0000000
--- a/app/api/talks/$id.mjs
+++ /dev/null
@@ -1,28 +0,0 @@
-import { talks } from '../talks.mjs'
-import { speakers } from '../speakers.mjs'
-import conf from '../../data/conf-2023.json' assert { type: 'json' }
-
-export async function get(req) {
- const { id } = req.params
- const social = req.query.social !== undefined
- let sharing, talk, title, description
-
- talk = talks.find(t => t.id === id)
- if (!talk) {
- talk = conf.talks.find(t => t.id === id)
- title = `SeattleJS Conf 2023 - ${ talk.title }`
- sharing = {
- image: `/_public/images/social/${ talk.id }.png`,
- }
- }
- else {
- // inflate the speaker property
- talk.speaker = speakers.find(s => s.id === talk.speaker_id)
- }
-
- description = talk.abstract
-
- return {
- json: { talk, title, description, sharing, social }
- }
-}
diff --git a/app/api/webhooks/tito.mjs b/app/api/webhooks/tito.mjs
deleted file mode 100644
index bd86ed4..0000000
--- a/app/api/webhooks/tito.mjs
+++ /dev/null
@@ -1,65 +0,0 @@
-//import { addToCustomerIO } from "../signup.mjs"
-
-import * as crypto from 'crypto'
-
-/* TODO: this code block (addToCustomerIO) is copied from ../signup.mjs because (for some reason) importing this function
-from that module threw an error */
-import fetch from 'node-fetch'
-export async function addToCustomerIO(first_name, last_name, email_address) {
- // set customer.io REST API headers
- let headers = {
- Authorization: `Basic ${Buffer.from(
- process.env.CIO_SITE_ID + ':' + process.env.CIO_API_KEY
- ).toString('base64')}`,
- 'Content-Type': 'application/json'
- }
- // set the payload for the create/update API call
- let created_at = Math.floor(Date.now() / 1000)
- let body = JSON.stringify({
- 'list-seattlejs': created_at,
- first_name,
- last_name
- })
- // call REST API to update customer
- return await fetch(
- `https://track.customer.io/api/v1/customers/${encodeURIComponent(
- email_address
- )}`,
- {
- method: 'PUT',
- headers,
- body
- }
- )
-}
-/* END TODO */
-
-// process webhook requests from Tito.io, the ticketing system for SeattleJS meetups. Add these users to our mailing list.
-export async function post(req) {
- let { first_name, last_name, email } = req.body
- // authenticate the token passed in the header
- let titoSig = req.headers['Tito-Signature'] || req.headers['tito-signature']
- console.log(req.headers)
- let hash = crypto
- .createHmac('sha256', process.env.TITO_WEBHOOK_KEY)
- .update(req.rawBody)
- .digest('base64')
- // the hash of the POST body and the value of tito sig don't match, this is a bad request
- if (hash !== titoSig) {
- console.log(
- 'ERROR!!! the Tito sig and the calculated hash value did not match ',
- process.env.TITO_WEBHOOK_KEY,
- titoSig,
- hash
- )
- return {
- statusCode: 401,
- body: JSON.stringify({ message: 'not authorized' })
- }
- }
- // else, let's process the webhook!
- else {
- await addToCustomerIO(first_name, last_name, email)
- return { json: { ok: true } }
- }
-}
diff --git a/app/api/workshops/$id.mjs b/app/api/workshops/$id.mjs
deleted file mode 100644
index 5e349f9..0000000
--- a/app/api/workshops/$id.mjs
+++ /dev/null
@@ -1,19 +0,0 @@
-import conf from '../../data/conf-2023.json' assert { type: 'json' }
-
-export async function get(req) {
- const { id } = req.params
- const social = req.query.social !== undefined
- let sharing, workshop, title, description
-
- workshop = conf.workshops.find(w => w.id === id)
- title = `SeattleJS Conf 2023 - ${ workshop.title }`
- sharing = {
- image: `/_public/images/social/${ workshop.id }.png`,
- }
-
- description = workshop.abstract
-
- return {
- json: { workshop, title, description, sharing, social }
- }
-}
diff --git a/app/data/events.json b/app/data/events.json
deleted file mode 100644
index 8d731c8..0000000
--- a/app/data/events.json
+++ /dev/null
@@ -1,378 +0,0 @@
-[
- {
- "id": "may-2022",
- "link": "https://ti.to/event-loop/seattlejs-may-2022",
- "title": "SeattleJS May 2022",
- "date": "2022-05-11",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": [
- "amber-hoak-may-2022"
- ]
- },
- {
- "id": "june-2022",
- "link": "https://ti.to/event-loop/seattlejs-june-2022",
- "title": "SeattleJS June 2022",
- "date": "2022-06-08",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": [
- "jamund-ferguson-june-2022"
- ]
- },
- {
- "id": "july-2022",
- "link": "https://ti.to/event-loop/seattlejs-july-2022",
- "title": "SeattleJS July 2022",
- "date": "2022-07-13",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": []
- },
- {
- "id": "august-2022",
- "link": "https://ti.to/event-loop/seattlejs-august-2022",
- "title": "SeattleJS August 2022",
- "date": "2022-08-10",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": []
- },
- {
- "id": "september-2022",
- "link": "https://ti.to/event-loop/seattlejs-september-2022",
- "title": "SeattleJS September 2022",
- "date": "2022-09-14",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": []
- },
- {
- "id": "october-2022",
- "link": "https://ti.to/event-loop/seattlejs-october-2022",
- "title": "SeattleJS October 2022",
- "date": "2022-10-12",
- "sponsors": [
- "svb"
- ],
- "talks": [
- "rachel-lee-nabors-october-2022"
- ]
- },
- {
- "id": "november-2022",
- "link": "https://ti.to/event-loop/seattlejs-november-2022",
- "title": "SeattleJS November 2022",
- "date": "2022-11-09",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": [
- "matthew-bauer-november-2022",
- "brian-gershon-november-2022"
- ]
- },
- {
- "id": "december-2022",
- "link": "https://ti.to/event-loop/seattlejs-december-2022",
- "title": "SeattleJS December 2022 - Holiday Party Edition",
- "date": "2022-12-14",
- "sponsors": [
- "collective-seattle"
- ],
- "talks": []
- },
- {
- "id": "january-2023",
- "link": "https://ti.to/event-loop/seattlejs-january-2023",
- "title": "SeattleJS January 2023",
- "date": "2023-01-11",
- "sponsors": [
- "aws-skills-center-seattle"
- ],
- "talks": [
- "calvin-kipperman-january-2023",
- "josh-scotland-january-2023",
- "tim-obrien-january-2023"
- ],
- "description": "Join us and celebrate a great start to 2023 with your fellow web devs!\n\nTHANK YOU to the folks at AWS Skills Center Seattle for sponsoring this month! ❤️\n\nTickets are $5 and go up to $10 the day of, so don't delay!"
- },
- {
- "id": "february-2023",
- "link": "https://ti.to/event-loop/seattlejs-february-2023",
- "title": "SeattleJS February 2023",
- "date": "2023-02-08",
- "sponsors": [
- "collective-seattle",
- "remix"
- ],
- "talks": [
- "brian-tran-february-2023",
- "lupe-canaviri-maydana-februrary-2023",
- "jacob-ebey-february-2023"
- ],
- "description": "Join us and celebrate a great start to 2023 with your fellow web devs!\n\nTickets are $5 and go up to $10 the day of, so don't delay!"
- },
- {
- "id": "march-2023",
- "link": "https://ti.to/event-loop/seattlejs-march-2023",
- "title": "SeattleJS March 2023",
- "date": "2023-03-08",
- "sponsors": [
- "appwrite"
- ],
- "talks": [
- "aaroh-mankad-march-2023",
- "mason-lynass-march-2023",
- "chris-griffing-march-2023"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
- },
- {
- "id": "april-2023",
- "link": "https://ti.to/event-loop/seattlejs-april-2023",
- "title": "SeattleJS April 2023",
- "date": "2023-04-12",
- "sponsors": [
- "amplication"
- ],
- "talks": [
- "michael-solati-april-2023",
- "philip-swan-april-2023",
- "catherine-johnson-april-2023"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
- },
- {
- "id": "may-2023",
- "link": "https://ti.to/event-loop/seattlejs-may-2023",
- "title": "SeattleJS May 2023",
- "date": "2023-05-10",
- "sponsors": [],
- "talks": [
- "spenser-solys-may-2023",
- "tiger-oakes-may-2023"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
- },
- {
- "id": "june-2023",
- "link": "https://ti.to/event-loop/seattlejs-june-2023",
- "title": "SeattleJS June 2023",
- "date": "2023-06-14",
- "sponsors": [
- "courier"
- ],
- "talks": [
- "cristina-rodriguez-june-2023",
- "aiden-bai-june-2023",
- "dm-liao-june-2023"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
- },
- {
- "id": "july-2023",
- "link": "https://ti.to/event-loop/seattlejs-july-2023",
- "title": "SeattleJS July 2023",
- "date": "2023-07-12",
- "sponsors": [
- "twilio"
- ],
- "talks": [
- "chris-griffing-july-2023",
- "michael-fitzgerald-july-2023",
- "geoff-rich-july-2023"
- ],
- "description": ""
- },
- {
- "id": "september-2023",
- "link": "https://ti.to/event-loop/seattlejs-september-2023",
- "title": "SeattleJS September 2023",
- "date": "2023-09-13",
- "sponsors": [
- "runme.dev"
- ],
- "talks": [
- "jan-miksovsky-september-2023",
- "peli-de-halleux-september-2023",
- "ben-lower-september-2023"
- ],
- "description": ""
- },
- {
- "id": "october-2023",
- "link": "https://ti.to/event-loop/seattlejs-october-2023",
- "title": "SeattleJS October 2023",
- "date": "2023-10-11",
- "sponsors": [
- "courier"
- ],
- "talks": [
- "caleb-diehl-october-2023",
- "alan-gonzalez-october-2023"
- ],
- "description": "Thanks to [Gearhouse](https://joingearhouse.com) for hosting us this month. We will be at their Capitol Hill location for October.\n\n 📍 [800 E Thomas St, Seattle, WA 98102](https://maps.app.goo.gl/LRVEp4yudBrHHRue7)\n\n Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
- },
- {
- "id": "november-2023",
- "link": "https://ti.to/event-loop/seattlejs-november-2023",
- "title": "SeattleJS November 2023",
- "date": "2023-11-08",
- "sponsors": [
- "polaris"
- ],
- "talks": [
- "mike-ryan-november-2023",
- "doug-wade-november-2023"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "holiday-party-2023",
- "link": "https://ti.to/event-loop/seattlejs-holiday-party-2023",
- "title": "SeattleJS Holiday Party 2023",
- "date": "2023-12-13",
- "sponsors": [
- "seekout"
- ],
- "talks": [],
- "description": "Join us for our annual SeattleJS Holiday Party! Come hang out with your fellow web developers and celebrate the holidays in style at The Collective. Consider bringing a plus one, the more the merrier!\n Tickets are $5 and go up to $10 the day of, so don't delay!"
- },
- {
- "id": "january-2024",
- "link": "https://ti.to/event-loop/seattlejs-january-2024",
- "title": "SeattleJS January 2024",
- "date": "2024-01-10",
- "sponsors": [],
- "talks": [],
- "description": "Join your fellow web devs for an evening of networking and fun!\n\n📅 Wednesday, January 10\n\n🕠 5:30pm - 8pm\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "february-2024",
- "link": "https://ti.to/event-loop/seattlejs-february-2024",
- "title": "SeattleJS February 2024",
- "date": "2024-02-14",
- "sponsors": [
- "datastax"
- ],
- "talks": [
- "dm-liao-february-2024",
- "fx-wood-february-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "march-2024",
- "link": "https://ti.to/event-loop/seattlejs-march-2024",
- "title": "SeattleJS March 2024",
- "date": "2024-03-13",
- "sponsors": [
- "fireproof"
- ],
- "talks": [
- "shruti-kapoor-march-2024",
- "eric-jensen-march-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "april-2024",
- "link": "https://ti.to/event-loop/seattlejs-april-2024",
- "title": "SeattleJS April 2024",
- "date": "2024-04-10",
- "sponsors": [],
- "talks": [
- "herrington-darkholme-april-2024",
- "john-pham-april-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below. Drink tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "may-2024",
- "link": "https://ti.to/event-loop/seattlejs-may-2024",
- "title": "SeattleJS May 2024",
- "date": "2024-05-08",
- "sponsors": [
- "sentry"
- ],
- "talks": [
- "allan-deutsch-may-2024",
- "sarah-guthals-phd-may-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below. Drink tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
- },
- {
- "id": "july-2024",
- "link": "https://lu.ma/0ouxs9r2",
- "title": "SeattleJS July 2024",
- "date": "2024-07-10",
- "sponsors": [],
- "talks": [
- "chris-griffing-july-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this time, NOT our previous location!\n\n"
- },
- {
- "id": "august-2024",
- "link": "https://lu.ma/510fwjo4",
- "title": "SeattleJS August 2024",
- "date": "2024-08-14",
- "sponsors": [],
- "talks": [
- "ben-van-citters-august-2024",
- "allan-deutsch-august-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this month!\n\n"
- },
- {
- "id": "september-2024",
- "title": "SeattleJS September 2024",
- "date": "2024-09-11",
- "sponsors": [],
- "talks": [
- "nicholas-patti-september-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Startup Hall on UW campus this month!\n\n"
- },
- {
- "id": "october-2024",
- "title": "SeattleJS October 2024",
- "date": "2024-10-09",
- "sponsors": [],
- "talks": [
- "erik-marks-october-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this month!\n\n"
- },
- {
- "id": "november-2024",
- "title": "SeattleJS November 2024",
- "date": "2024-11-13",
- "sponsors": [],
- "talks": [
- "cat-johnson-november-2024",
- "stacy-davis1-november-2024"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Startup Hall on UW campus this month!\n\n"
- },
- {
- "id": "january-2025",
- "link": "https://lu.ma/s4s4mqxy",
- "title": "SeattleJS January 2025",
- "date": "2025-01-08",
- "sponsors": [],
- "talks": [
- "justin-castilla-january-2025",
- "peli-de-halleux-january-2025",
- "andrew-enyeart-january-2025"
- ],
- "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Just The Tap in Belltown this month!\n\n"
- }
-]
\ No newline at end of file
diff --git a/app/data/speakers.json b/app/data/speakers.json
deleted file mode 100644
index 78ce047..0000000
--- a/app/data/speakers.json
+++ /dev/null
@@ -1,367 +0,0 @@
-[
- {
- "id": "amber-hoak",
- "name": "Amber Hoak",
- "company": "Microsoft Research",
- "twitter": "amber_hoak",
- "photo": "amber-hoak.jpg"
- },
- {
- "id": "jamund-ferguson",
- "name": "Jamund Ferguson",
- "company": "PayPal",
- "twitter": "xjamundx",
- "photo": "jamund-ferguson.jpg"
- },
- {
- "id": "rachel-lee-nabors",
- "name": "Rachel Lee Nabors",
- "company": "AWS Amplify",
- "twitter": "rachelnabors",
- "photo": "rachel-lee-nabors.jpg"
- },
- {
- "id": "matthew-bauer",
- "name": "Matthew Bauer",
- "company": "WebPinata",
- "twitter": "LotusBladeStorm",
- "photo": "matthew-bauer.jpg"
- },
- {
- "id": "brian-gershon",
- "name": "Brian Gershon",
- "company": "Freelance",
- "twitter": "brianfive",
- "photo": "brian-gershon.jpg"
- },
- {
- "id": "calvin-kipperman",
- "name": "Calvin Kipperman",
- "company": "Lyft",
- "twitter": "emnudge",
- "photo": "calvin-kipperman.jpg"
- },
- {
- "id": "tim-obrien",
- "name": "Tim O\"Brien",
- "company": "Wagner Custom Skis",
- "twitter": "tobrien",
- "photo": "tim-obrien.jpg"
- },
- {
- "id": "josh-scotland",
- "name": "Josh Scotland",
- "company": "Startup",
- "photo": "josh-scotland.jpg"
- },
- {
- "id": "brian-tran",
- "name": "Brian Tran",
- "company": "REMAX",
- "photo": "brian-tran.jpg",
- "twitter": "_briantran_"
- },
- {
- "id": "lupe-canaviri-maydana",
- "name": "Lupe Canaviri Maydana",
- "company": "Microsoft",
- "photo": "lupe-canaviri-maydana.png",
- "twitter": "luucamay_"
- },
- {
- "id": "jacob-ebey",
- "name": "Jacob Ebey",
- "company": "Remix / Shopify",
- "photo": "jacob-ebey.jpg",
- "twitter": "ebey_jacob"
- },
- {
- "id": "aaroh-mankad",
- "name": "Aaroh Mankad",
- "company": "Plaid",
- "photo": "aaroh-mankad.jpg",
- "twitter": "aarohmankad"
- },
- {
- "id": "chris-griffing",
- "name": "Chris Griffing",
- "company": "GitKraken",
- "photo": "chris-griffing.jpg",
- "twitter": "cmgriffing"
- },
- {
- "id": "mason-lynass",
- "name": "Mason Lynass",
- "company": "Freelance",
- "photo": "mason-lynass.jpg"
- },
- {
- "id": "catherine-johnson",
- "name": "Catherine Johnson",
- "company": "Microsoft",
- "photo": "catherine-johnson.jpg",
- "twitter": ""
- },
- {
- "id": "philip-swan",
- "name": "Philip Swan",
- "company": "The Atlantis Project",
- "photo": "philip-swan.png",
- "twitter": "tetheredring"
- },
- {
- "id": "michael-solati",
- "name": "Michael Solati",
- "company": "Amplication",
- "photo": "michael-solati.jpg",
- "twitter": "michaelsolati"
- },
- {
- "id": "spenser-solys",
- "name": "Spenser Solys",
- "company": "Project Archer",
- "photo": "spenser-solys.jpg",
- "twitter": "scub3d"
- },
- {
- "id": "tiger-oakes",
- "name": "Tiger Oakes",
- "company": "Microsoft",
- "photo": "tiger-oakes.jpg",
- "twitter": "Not_Woods"
- },
- {
- "id": "dm-liao",
- "name": "DM Liao",
- "company": "n/a",
- "photo": "dm-liao.jpg",
- "url": "https://amorphic.space",
- "pronouns": "they/them/theirs"
- },
- {
- "id": "aiden-bai",
- "name": "Aiden Bai",
- "company": "Dimension.dev",
- "photo": "aiden-bai.jpg",
- "twitter": "aidenybai",
- "pronouns": "he/him/his",
- "url": "https://aidenybai.com"
- },
- {
- "id": "cristina-rodriguez",
- "name": "Cristina Rodriguez",
- "company": "Techtonica.org",
- "photo": "cristina-rodriguez.jpg",
- "twitter": "yosola",
- "pronouns": "she/her/ella",
- "url": "https://www.linkedin.com/in/crissrodriguez/"
- },
- {
- "id": "geoff-rich",
- "name": "Geoff Rich",
- "company": "Ordergroove",
- "twitter": "geoffrich_",
- "pronouns": "he/him",
- "photo": "geoff-rich.jpg"
- },
- {
- "id": "alan-balasundaram",
- "name": "Alan Balasundaram",
- "company": "Expert Opinion MD",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "alan-balasundaram.jpg"
- },
- {
- "id": "michael-fitzgerald",
- "name": "Michael Fitzgerald",
- "company": "Fresh Consulting",
- "twitter": "fitzgerald1337",
- "pronouns": "he/him/his",
- "photo": "michael-fitzgerald.png"
- },
- {
- "id": "jan-miksovsky",
- "name": "Jan Miksovsky",
- "company": "Independent",
- "mastadon": "https://fosstodon.org/@JanMiksovsky",
- "pronouns": "he/him",
- "photo": "jan-miksovsky.jpg"
- },
- {
- "id": "peli-de-halleux",
- "name": "Peli de Halleux",
- "company": "Microsoft",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "peli-de-halleux.jpg"
- },
- {
- "id": "ben-lower",
- "name": "ben lower",
- "company": "Fixie",
- "twitter": "benlower",
- "pronouns": "he/him/his",
- "photo": "ben-lower.jpg"
- },
- {
- "id": "caleb-diehl",
- "name": "Caleb Diehl",
- "company": "The Associated Press",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "caleb-diehl.jpg"
- },
- {
- "id": "alan-gonzalez",
- "name": "Alan Gonzalez",
- "company": "DevMatch",
- "twitter": "_alanboy",
- "pronouns": "he/him",
- "photo": "alan-gonzalez.jpg"
- },
- {
- "id": "mike-ryan",
- "name": "Mike Ryan",
- "company": "Polaris",
- "twitter": "mikeryandev",
- "pronouns": "he/him",
- "photo": "mike-ryan.jpg"
- },
- {
- "id": "doug-wade",
- "name": "Doug Wade",
- "company": "Skilljar",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "doug-wade.jpg"
- },
- {
- "id": "fx-wood",
- "name": "FX Wood",
- "company": "Looking for Opportunities",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "fx-wood.jpg"
- },
- {
- "id": "shruti-kapoor",
- "name": "Shruti Kapoor",
- "company": "Slack",
- "twitter": "shrutikapoor08",
- "pronouns": "she/her",
- "photo": "shruti-kapoor.jpg"
- },
- {
- "id": "j-chris-anderson",
- "name": "J Chris Anderson",
- "company": "Fireproof",
- "twitter": "jchris",
- "pronouns": "he/him",
- "photo": "j-chris-anderson.jpg"
- },
- {
- "id": "eric-jensen",
- "name": "Eric Jensen",
- "company": "Fireproof ",
- "twitter": "",
- "pronouns": "he/him",
- "photo": "eric-jensen.jpg"
- },
- {
- "id": "herrington-darkholme",
- "name": "Herrington Darkholme",
- "company": "Freelance",
- "twitter": "hd_nvim",
- "pronouns": "he/him/his",
- "photo": "herrington-darkholme.jpg"
- },
- {
- "id": "john-pham",
- "name": "John Pham",
- "company": "Vercel",
- "twitter": "johnphamous",
- "pronouns": "he/him/his",
- "photo": "john-pham.jpg"
- },
- {
- "id": "allan-deutsch",
- "name": "Allan Deutsch",
- "company": "The Startup",
- "twitter": "allandeutsch",
- "pronouns": "he/him",
- "photo": "allan-deutsch.png"
- },
- {
- "id": "sarah-guthals-phd",
- "name": "Sarah Guthals, PhD",
- "company": "Sentry",
- "twitter": "drguthals",
- "pronouns": "she/her/hers",
- "photo": "sarah-guthals-phd.png"
- },
- {
- "id": "josh-franklin",
- "name": "Josh Franklin",
- "company": "N/A",
- "twitter": "joshfranklin26",
- "pronouns": "he/him/his",
- "photo": "josh-franklin.jpg"
- },
- {
- "id": "ben-van-citters",
- "name": "Ben Van Citters",
- "company": "Algorithms & Beauty",
- "twitter": "",
- "pronouns": "He/him",
- "photo": "ben-van-citters.jpg"
- },
- {
- "id": "nicholas-patti",
- "name": "Nicholas Patti",
- "company": "Freelance",
- "twitter": "nickspatties",
- "pronouns": "he/him/his",
- "photo": "nicholas-patti.jpg"
- },
- {
- "id": "stacy-davis1",
- "name": "Stacy Davis",
- "company": "Species360",
- "twitter": "",
- "pronouns": "she/her/hers",
- "photo": "stacy-davis1.jpg"
- },
- {
- "id": "erik-marks",
- "name": "Erik Marks",
- "company": "Consensys / MetaMask",
- "twitter": "rekmarks",
- "pronouns": "he/they",
- "photo": "erik-marks.jpg"
- },
- {
- "id": "cat-johnson",
- "name": "Cat Johnson",
- "company": "Khan Academy",
- "twitter": "cat_themachines",
- "pronouns": "she/her",
- "photo": "cat-johnson.jpg"
- },
- {
- "id": "justin-castilla",
- "name": "Justin Castilla",
- "company": "Elastic",
- "twitter": "CastillaCodes",
- "pronouns": "He/Him/His",
- "photo": "justin-castilla.png"
- },
- {
- "id": "andrew-enyeart",
- "name": "Andrew Enyeart",
- "company": "22days",
- "twitter": "andrew_enyeart",
- "pronouns": "he/him",
- "photo": "andrew-enyeart.png"
- }
-]
\ No newline at end of file
diff --git a/app/data/sponsors.json b/app/data/sponsors.json
deleted file mode 100644
index ba7758b..0000000
--- a/app/data/sponsors.json
+++ /dev/null
@@ -1,108 +0,0 @@
-[
- {
- "id": "collective-seattle",
- "url": "https://www.collectiveseattle.com",
- "image": "collective.webp"
- },
- {
- "id": "svb",
- "url": "https://www.svb.com/startup-banking",
- "image": "svb.svg"
- },
- {
- "id": "aws-skills-center-seattle",
- "url": "https://aws.amazon.com/training/skills-centers/seattle-skills-center/",
- "image": "aws-skills-center-seattle.png"
- },
- {
- "id": "formidable",
- "url": "https://formidable.com",
- "image": "formidable.svg"
- },
- {
- "id": "customer-io",
- "url": "https://customer.io/",
- "image": "customer-io.svg"
- },
- {
- "id": "remix",
- "url": "https://remix.run/",
- "image": "remix.png"
- },
- {
- "id": "appwrite",
- "name": "Appwrite",
- "url": "https://appwrite.io",
- "image": "appwrite.jpg",
- "copy": "Appwrite is a secure open-source backend server provides the core APIs required to build web and mobile applications. Appwrite provides authentication, database, storage, functions, and advanced real-time capabilities."
- },
- {
- "id": "amplication",
- "name": "Amplication",
- "url": "https://amplication.com",
- "image": "amplication.png",
- "copy": "Amplication is an opensource based SaaS backend development solution that empowers professional developers to accelerate the development of Node.js applications. By using Amplication to build repetitive backend services, development teams will yield significant increases in developer productivity, reliability, and consistency of delivering critical applications to production."
- },
- {
- "id": "twilio",
- "name": "Twilio",
- "url": "https://www.twilio.com/en-us",
- "image": "twilio.png",
- "copy": "Twilio is the customer layer for the internet, powering the most engaging interactions companies build for their customers. We provide simple tools that solve hard problems, delivered as a developer-first cloud platform with global reach and no shenanigans pricing."
- },
- {
- "id": "aws",
- "name": "AWS",
- "url": "https://docs.amplify.aws/",
- "image": "aws.png",
- "copy": ""
- },
- {
- "id": "courier",
- "name": "Courier",
- "url": "https://courier.com?utm_campaign=devrel-meetups&utm_source=meetups&utm_medium=website",
- "image": "courier.png",
- "copy": ""
- },
- {
- "id": "runme.dev",
- "name": "Runme",
- "url": "https://runme.dev",
- "image": "runme.png",
- "copy": ""
- },
- {
- "id": "polaris",
- "url": "https://getpolaris.ai",
- "copy": "Polaris is an AI-powered site reliability tool that helps you detect incidents in real-time. Its tiny JavaScript SDK lets you instrument key user workflows to create indicators of reliability and latency. Apply thresholds to your indicators to define performance objectives and be alerted when your app begins to experience degradations.",
- "image": "polaris.png"
- },
- {
- "id": "seekout",
- "name": "SeekOut",
- "url": "https://www.seekout.com/",
- "copy": "Grow the talent you have.\nFind the talent you need.\nSeekOut empowers great people and companies to grow together—with actionable insights at every step of your talent journey. ",
- "image": "seekout.png"
- },
- {
- "id": "datastax",
- "name": "DataStax",
- "url": "https://www.datastax.com/",
- "copy": "DataStax is your one-stop shop for building on GenAI.",
- "image": "datastax.png"
- },
- {
- "id": "fireproof",
- "name": "Fireproof",
- "url": "https://fireproof.storage/",
- "copy": "Fireproof is an [embedded database for collaborative applications](https://use-fireproof.com/). Install it in your front-end app, or use it in any serverless cloud or edge function. Fireproof’s document API includes live updates, flexible queries, binary attachments, encrypted block replication, and multi-user sync. Fireproof enables developers to ship interactive features faster in any deployment environment.\n\nDeploy your app however you like. Install the Fireproof module into your browser or server app code and sync using remixable open-source adapters. Experience live updates across peers so everyone can collaborate together, with any backend. Render dynamic HTML and interact with APIs from the edge. Connect with the community to add support for more backends.",
- "image": "fireproof.png"
- },
- {
- "id": "sentry",
- "name": "Sentry",
- "url": "https://sentry.io/welcome/",
- "copy": "Sentry is the application monitoring platform for development teams to holistically monitor their code health from the frontend to the backend to see clearer, solve quicker, and learn continuously.",
- "image": "sentry.png"
- }
-]
\ No newline at end of file
diff --git a/app/data/talks.json b/app/data/talks.json
deleted file mode 100644
index 76c09ff..0000000
--- a/app/data/talks.json
+++ /dev/null
@@ -1,621 +0,0 @@
-[
- {
- "id": "amber-hoak-may-2022",
- "speaker_id": "amber-hoak",
- "event_id": "may-2022",
- "title": "Stumbling through ML in JavaScript: the good, the bad, and the computationally intensive",
- "abstract": "Does Tensorflow make you tense? Let's unpack how you can get started with ML in the browser, no math required. Learn how to build models on the browser, why we would use client-side ML, and what ML tooling (and lack of tooling) is in the js ecosystem."
- },
- {
- "id": "jamund-ferguson-june-2022",
- "speaker_id": "jamund-ferguson",
- "event_id": "june-2022",
- "title": "🧟 Web Performance Horror Stories🧛",
- "abstract": "Experience the cringe inducing horror caused by excessively slow web performance. Be shocked to hear about megabytes of CSS going unused, endlessly duplicated polyfills, input fields freezing the main thread for 50ms per keystroke and assorted other terrors. Together we'll dissect these performance poltergeists and vanquish them from our apps forever."
- },
- {
- "id": "rachel-lee-nabors-october-2022",
- "speaker_id": "rachel-lee-nabors",
- "event_id": "october-2022",
- "title": "The Human API",
- "abstract": "The only thing harder than writing scalable, usable code is teaching others how to wield it. As the sum of human knowledge continues to grow, so too do the challenges of teaching each other what we need to know not only to build toward the future but also to contribute to the tools of its construction. If only it were possible to transfer knowledge from one engineer directly into the minds of other engineers, like a human RAID! Rachel Lee Nabors loves building such mechanisms for knowledge transfer, from video guides to documentation to curricula. In this talk, they will discuss what doesn't work, what has worked on projects like React and React Native, and what can work for any other open source project today. Teaching is hard. But there are solid ways to approach knowledge transfer at scale."
- },
- {
- "id": "matthew-bauer-november-2022",
- "speaker_id": "matthew-bauer",
- "event_id": "november-2022",
- "title": "Two left feet and an earthquake in Vue: Composition API or Options API?",
- "abstract": "Vue 3 is controversial. There were many people drawn to vue 2 and not all of them are able to find footing inside Vue 3, despite that being the main version pushed forward. With that being said Evan and the team at Vue have decided to include the options API & composition API as both valid approaches to writing vue applications, but what does that mean for the average user or the user at the end of the bell curve?"
- },
- {
- "id": "brian-gershon-november-2022",
- "speaker_id": "brian-gershon",
- "event_id": "november-2022",
- "title": "Tales of a Transition to Tailwind CSS",
- "abstract": "After some doubts, I gave Tailwind CSS a try and discovered a new love for styling my web applications. I'll discuss some reasons you'll like it, and also introduce component frameworks built on Tailwind."
- },
- {
- "id": "calvin-kipperman-january-2023",
- "speaker_id": "calvin-kipperman",
- "event_id": "january-2023",
- "title": "React Is Holding Me Hostage",
- "abstract": "A love & horror story - why React isn't a good model for building interactive applications and why I'm still a React developer."
- },
- {
- "id": "tim-obrien-january-2023",
- "speaker_id": "tim-obrien",
- "event_id": "january-2023",
- "title": "Were Your Skis Cut with Javascript?",
- "type": "lightning",
- "abstract": "Just a quick snapshot of how you can use React and Express and Javascript to manufacture skis. What are the pros and cons of using Javascript to generate CNC files and what's worked and not worked? Looking to show a quick demo and also looking for people interested in contributing."
- },
- {
- "id": "josh-scotland-january-2023",
- "speaker_id": "josh-scotland",
- "event_id": "january-2023",
- "title": "Supercharge Your Coding With ChatGPT",
- "type": "lightning",
- "abstract": "Learn how to use ChatGPT, a powerful AI programming tool, to enhance your coding skills and boost your productivity. In this demo, we'll explore the capabilities and limitations of ChatGPT to see firsthand how it might revolutionize your workflow."
- },
- {
- "id": "brian-tran-february-2023",
- "speaker_id": "brian-tran",
- "event_id": "february-2023",
- "title": "I want my data and I want it now!",
- "type": "lightning",
- "abstract": "A quick talk about stream processing using NodeJS and some other use cases including displaying the data in real-time over WebSockets and React."
- },
- {
- "id": "lupe-canaviri-maydana-februrary-2023",
- "speaker_id": "lupe-canaviri-maydana",
- "event_id": "february-2023",
- "title": "Playwright, everyone can write test",
- "type": "lightning",
- "abstract": "In 5 mins I will show you how to create your first end to end test with Playwright"
- },
- {
- "id": "jacob-ebey-february-2023",
- "speaker_id": "jacob-ebey",
- "event_id": "february-2023",
- "title": "\"Promises\" over the wire",
- "abstract": "Learn how Remix's `defer()` feature utilizes native language features, a single HTTP request and a few react tricks to deliver, what I believe will be, the next big trend in \"full stack frameworks\"."
- },
- {
- "id": "aaroh-mankad-march-2023",
- "speaker_id": "aaroh-mankad",
- "event_id": "march-2023",
- "title": "Tinkering with Framer Motion",
- "type": "lightning",
- "abstract": "I've been learning how to use Framer Motion recently, and wanted to walk through how it works, what you can use it for, and go through a couple of the examples from the documentation!"
- },
- {
- "id": "mason-lynass-march-2023",
- "speaker_id": "mason-lynass",
- "event_id": "march-2023",
- "title": "useSound - a creative, versatile tool to use audio & sound effects in React",
- "type": "lightning",
- "abstract": "useSound is a custom React hook developed by Josh Comeau, designed to creatively implement audio assets in React applications. I'll talk about installation and setup, differences between useSound and HTMLAudioElement, and quickly showcase a simple musical instrument built in React!"
- },
- {
- "id": "chris-griffing-march-2023",
- "speaker_id": "chris-griffing",
- "event_id": "march-2023",
- "title": "Porting Boring Avatars using Mitosis",
- "abstract": "boringavatars.com is an awesome avatars library, but it's only for React. People have ported it to other frameworks but they are one-offs. I decided to use Mitosis from builder.io to make \"one repo to rule them all\". In this talk, I will go over the process and some of the issues I encountered along the way."
- },
- {
- "id": "philip-swan-april-2023",
- "speaker_id": "philip-swan",
- "event_id": "april-2023",
- "title": "The Tethered Ring Space Infrastructure Interactive 3D Architecture Model in three.js",
- "abstract": "The Tethered Ring a game-changing architecture for making space safe, sustainable, and affordable for everyone - which clearly is not going to happen if we keep on using chemical rockets. An on-line interactive three.js-based JavaScript model captures the engineering, science, and economics behind the technology. Now anyone with internet access can review the code and contribute to the project. Come and be inspired!",
- "type": "regular"
- },
- {
- "id": "catherine-johnson-april-2023",
- "speaker_id": "catherine-johnson",
- "event_id": "april-2023",
- "title": "How to Build Accessible React Components",
- "abstract": "Hope you are strapped in for some accessibility! In this session we will breakdown how you can use built-in React tools and web accessibility guidelines to create flexible and accessible components for your website.",
- "type": "regular"
- },
- {
- "id": "michael-solati-april-2023",
- "speaker_id": "michael-solati",
- "event_id": "april-2023",
- "title": "0 to 100 with Lighthouse",
- "abstract": "There are a slew of tools to help developers improve their web applications: one of them is Google's Lighthouse. In this session you'll learn about what Lighthouse is, and see how you can use Lighthouse CI as part of your build and testing process.",
- "type": "lightning"
- },
- {
- "id": "spenser-solys-may-2023",
- "speaker_id": "spenser-solys",
- "event_id": "may-2023",
- "title": "Augmented Reality Business Card",
- "abstract": "I made a \"business card\" using AFrame + AR.js. Just want to show it off",
- "type": "lightning"
- },
- {
- "id": "tiger-oakes-may-2023",
- "speaker_id": "tiger-oakes",
- "event_id": "may-2023",
- "title": "Hacking an e-reader to show my tea menu",
- "abstract": "E-Readers are great and use so little power! I wanted to have a tea menu to show guests and for my own reference. I'll share how to generate an e-book with all your drinks in Deno, as well as rendering a custom cover page with SVG. Wow your friends by turning an old device into a smart home tea menu.",
- "type": "lightning"
- },
- {
- "id": "aiden-bai-june-2023",
- "speaker_id": "aiden-bai",
- "event_id": "june-2023",
- "title": "Virtual DOM: Back in Block",
- "abstract": "Is the Virtual DOM pure overhead? In this tech talk, Aiden Bai explores the performance implications of the Virtual DOM in frameworks like React and presents an alternative approach called the \"block virtual DOM.\" Aiden delves into the origins of the Virtual DOM, its purpose in addressing performance issues, and the process of diffing and reconciliation. The talk introduces the Block virtual DOM, which takes a different approach to diffing by using static analysis and dirty checking.",
- "topics": [
- "reactjs",
- "millionjs",
- "nextjs",
- "performance",
- "rendering",
- "javascript",
- "typescript"
- ],
- "type": "lightning"
- },
- {
- "id": "dm-liao-june-2023",
- "speaker_id": "dm-liao",
- "event_id": "june-2023",
- "title": "Using the web to make interactive fanfiction",
- "abstract": "Over the pandemic, people developed a wide variety of hobbies to fill the time, and for me, that was writing a ridiculous amount of fanfiction. One of the most ambitious pieces was an interactive, choice-based and animated story written using Ink and 'set' with Preact and InkJS, and this talk goes through some of the creative and technical decisions I made to get them to play nicely with each other.",
- "topics": [
- "preactjs",
- "inkjs",
- "immutable data",
- "text parsing",
- "interactive fiction"
- ],
- "type": "regular"
- },
- {
- "id": "cristina-rodriguez-june-2023",
- "speaker_id": "cristina-rodriguez",
- "event_id": "june-2023",
- "title": "Overcoming Blank Page Syndrome with your Template",
- "abstract": "How many times have you thought of a great idea for a project but were not quite sure how to start coding that project? Using templates can help beginning engineers overcome the overwhelm and fear that can come with starting projects. The goal of this talk is to share with everyone who is self-learning to code that templates and automation are their friends, especially for that tedious work of your initial setup. There is no need to start every project from scratch.",
- "topics": [
- "javascript",
- "templates",
- "projects",
- "front-end",
- "backend",
- "react",
- "vite"
- ],
- "type": "lightning"
- },
- {
- "id": "geoff-rich-july-2023",
- "speaker_id": "geoff-rich",
- "event_id": "july-2023",
- "title": "Web development, streamlined: an introduction to SvelteKit",
- "abstract": "SvelteKit is an exciting new web framework that recently launched version 1.0. It combines the well-loved Svelte JavaScript framework with everything you need to build a modern web app: routing, type-safe data loading, progressively-enhanced forms, a speedy Vite-powered dev experience, and more. In this talk, I’ll give a crash course on SvelteKit and how you can use it to build fast, resilient web apps of all shapes and sizes.",
- "topics": [
- "javascript",
- " svelte",
- " sveltekit "
- ],
- "type": "regular"
- },
- {
- "id": "chris-griffing-july-2023",
- "speaker_id": "chris-griffing",
- "event_id": "july-2023",
- "title": "Protecting the Environment (Variables) via AST",
- "abstract": "How can we use the AST to detect unused env vars. Geller is a simple tool to do that. Let's dig into how it works and how it crawls the JS/TS AST.",
- "topics": [
- "AST",
- " CI/CD",
- " Dev Tools"
- ],
- "type": "lightning"
- },
- {
- "id": "michael-fitzgerald-july-2023",
- "speaker_id": "michael-fitzgerald",
- "event_id": "july-2023",
- "title": "Promise Concurrency in JavaScript",
- "abstract": "Exploring ways to optimize resolving promises in JavasScript. A few slides with concepts and execution of code snippets with barebones performance measurement. Presenting to spark further discussion and generate feedback / input from others, not to lecture as the expert on the matter.",
- "topics": [
- "javascript",
- " promises",
- " performance",
- " concurrency"
- ],
- "type": "lightning"
- },
- {
- "id": "jan-miksovsky-september-2023",
- "speaker_id": "jan-miksovsky",
- "event_id": "september-2023",
- "title": "Graphs All the Way Down",
- "abstract": "Distinct APIs for objects, files, sites, and resources obscure the fact that they're all just graphs. I'll introduce a research project leveraging recent JS features and a new coding pattern for graphs to let you quickly transform graphs of anything into a site or other artifact in a natural, expressive way.",
- "topics": [
- "front-end development",
- "static site generators",
- "documentation pipelines"
- ],
- "type": "regular"
- },
- {
- "id": "peli-de-halleux-september-2023",
- "speaker_id": "peli-de-halleux",
- "event_id": "september-2023",
- "title": "DeviceScript - TypeScript for Tiny IoT Devices",
- "abstract": "Bring your TypeScript skillz to embedded (ESP32, RP2040) using DeviceScript.",
- "topics": [
- "embedded",
- "typescript"
- ],
- "type": "regular"
- },
- {
- "id": "ben-lower-september-2023",
- "speaker_id": "ben-lower",
- "event_id": "september-2023",
- "title": "Giving LLMs Tools and Ability to do Generative UI",
- "abstract": "I will show how to enable LLMs to take actions using tools defined using JSX components. Additionally, I will show how to give the LLM the ability to create UI dynamically at runtime to move beyond simple text-based chat experiences.",
- "topics": [
- "AI",
- "LLM",
- "JavaScript",
- "React",
- "JSX"
- ],
- "type": "lightning"
- },
- {
- "id": "caleb-diehl-october-2023",
- "speaker_id": "caleb-diehl",
- "event_id": "october-2023",
- "title": "Tracking Wildfires for The Associated Press with Maplibre and the ESRI API",
- "abstract": "Millions of readers rely on the Associated Press's wildfire tracker to get live information about large wildfires across the United States. I am a data visualization developer at the AP and will go over some design, architecture, and data viz decisions we made during a major UI overhaul (which goes live at the end of June). I'll discuss how attendees can build similar interactive maps in React / TypeScript using the same free, open-source mapping libraries and APIs. ",
- "topics": [
- "Data visualization",
- "interactive mapping"
- ],
- "type": "lightning"
- },
- {
- "id": "alan-gonzalez-october-2023",
- "speaker_id": "alan-gonzalez",
- "event_id": "october-2023",
- "title": "A new type of coding interviews",
- "abstract": "Technical interviews are either inapplicable leet-code questions or time-consuming take-home projects. This talk presents a new approach that brings the best of both worlds, allowing people to showcase applicable skills. Software Engineering interviews in the browser!",
- "topics": [
- "hiring",
- "coding interviews",
- "leet-code",
- "take-homes",
- "webassembly"
- ],
- "type": "lightning"
- },
- {
- "id": "mike-ryan-november-2023",
- "speaker_id": "mike-ryan",
- "event_id": "november-2023",
- "title": "The User Experience of Site Reliability",
- "abstract": "From CPU-pegged servers to misconfigured load balancers, outages in our systems all result in the same thing: degraded user experience. Let's explore strategies for measuring, managing, and improving reliability in our applications from the perspective of end users.",
- "topics": [
- "site reliability",
- "observability",
- "user experience"
- ],
- "type": "regular"
- },
- {
- "id": "doug-wade-november-2023",
- "speaker_id": "doug-wade",
- "event_id": "november-2023",
- "title": "Dual publishing JavaScript packages to deno and node",
- "abstract": "Learn how take a JavaScript module written for deno and build, test, type check, and publish it for both deno and nodejs using dnt, the Deno to Node Transform build tool",
- "topics": [
- "Deno",
- "nodejs",
- "npm",
- "package management"
- ],
- "type": "regular"
- },
- {
- "id": "fx-wood-february-2024",
- "speaker_id": "fx-wood",
- "event_id": "february-2024",
- "title": "Why You Should Use A DateTime Library (Maybe)",
- "abstract": "There are some interesting complexities when it comes to working with time. Also some fun stuff about timestamps.",
- "topics": [
- "luxon",
- "datetime",
- "DateTimeFormat"
- ],
- "type": "lightning"
- },
- {
- "id": "dm-liao-february-2024",
- "speaker_id": "dm-liao",
- "event_id": "february-2024",
- "title": "Using React with the Godot game engine",
- "abstract": "Godot is a game engine and editor that is written in C++ and allows you to script games using its custom GDScript language, or C#. So, naturally, I decided that I wanted to make game UI in Javascript using React, and it turns out that that's not that uncommon of an idea! And also not that terrible of an idea! This talk will go through some of the nitty gritty of getting C# and JS to talk to each other, and then creating a custom React renderer to render Godot UI elements.",
- "topics": [
- "React",
- "Godot",
- "game engine"
- ],
- "type": "regular"
- },
- {
- "id": "shruti-kapoor-march-2024",
- "speaker_id": "shruti-kapoor",
- "event_id": "march-2024",
- "title": "Building an AI Web App with LangChain and OpenAI",
- "abstract": "Learn how to build a web app with LangChain and OpenAI. Build the front-end, back-end and create an AI service that integrates with OpenAI to power a web app. ",
- "topics": [
- "front-end",
- "back-end",
- "AI "
- ],
- "type": "regular"
- },
- {
- "id": "j-chris-anderson-march-2024",
- "speaker_id": "j-chris-anderson",
- "event_id": "march-2024",
- "title": "Local-first database application starter kits",
- "abstract": "I'm building a browser-database based on what I learned from CouchDB. It empowers front-end devs to ship data-driven features without getting tied to a backend. Later you can connect almost any cloud for multi-user live collaboration.",
- "topics": [
- "database",
- "react",
- "sync",
- "crdt",
- "local-first"
- ],
- "type": "regular"
- },
- {
- "id": "eric-jensen-march-2024",
- "speaker_id": "eric-jensen",
- "event_id": "march-2024",
- "title": "Fireproof: A JavaScript database for web applications",
- "abstract": "Fireproof is a pure JS database with zero setup. Build without constraints, plug in and launch in one step. Come learn about the newest way to create web apps!",
- "topics": [
- "database",
- "sync",
- "local-first"
- ],
- "type": "regular"
- },
- {
- "id": "herrington-darkholme-april-2024",
- "speaker_id": "herrington-darkholme",
- "event_id": "april-2024",
- "title": "Benchmark Rusty Parsers: demystify native tooling performance in JavaScript",
- "abstract": "Native parsers used in JavaScript are not always faster due to extra work across languages. This talk will review several parsers written in JS/Rust and demonstrate the perf characteristics of native programs in NodeJS.\nAvoiding Rust overhead and using multi-core are crucial for performance.\n\nhttps://rs-perf-talk.vercel.app/",
- "topics": [
- "javascript",
- "napi",
- "rust"
- ],
- "type": "regular"
- },
- {
- "id": "john-pham-april-2024",
- "speaker_id": "john-pham",
- "event_id": "april-2024",
- "title": "Delightful Design",
- "abstract": "In this talk, we'll explore how to craft delightful experiences that enhance user engagement, focusing on performance, accessibility, and impressing the user, as seen in products like Vercel, Linear, and Raycast. You'll learn that anyone, regardless of design expertise, can achieve such delightful design.",
- "topics": [
- "design"
- ],
- "type": "regular"
- },
- {
- "id": "allan-deutsch-may-2024",
- "speaker_id": "allan-deutsch",
- "event_id": "may-2024",
- "title": "Adding nominal type safety to your TS code using branded types",
- "abstract": "Typescript and JavaScript are *structurally* typed - objects of the same shape are assignable. Nominal types can only be assigned to other objects of the same *named type*. Type branding is a technique that brings the safety of nominal typing to typescript.",
- "topics": [
- "Typescript",
- "type safety",
- "validation"
- ],
- "type": "lightning"
- },
- {
- "id": "sarah-guthals-phd-may-2024",
- "speaker_id": "sarah-guthals-phd",
- "event_id": "may-2024",
- "title": "Deconstructing Distributed Tracing",
- "abstract": "Distributed Tracing is a powerful and modern debugging technique that allows you to track the flow and timing of requests as they navigate through every part of your system. Learn the reason why Distributed Tracing exists and how to leverage it.",
- "topics": [
- "performance",
- "tracing",
- "monitoring"
- ],
- "type": "regular"
- },
- {
- "id": "josh-franklin-july-2024",
- "speaker_id": "josh-franklin",
- "event_id": "july-2024",
- "title": "\"Efficiently\" Sharing Data Through URLs",
- "abstract": "What is the most efficient way to store data in a URL? Let's deep dive into how URLs work and write some custom encoding algorithms to find out how much data can be stored in them. Knowing this may allow you to replace your database entirely for some use cases.",
- "topics": [
- "How URLs work",
- "encoding/decoding algorithms",
- "when to store data in URLs vs. a backend"
- ],
- "type": "regular"
- },
- {
- "id": "chris-griffing-july-2024",
- "speaker_id": "chris-griffing",
- "event_id": "july-2024",
- "title": "A Different Kind of Serverless: A History of WASM and case study for SQLite and Whisper.cpp running purely in the browser with no server-side logic",
- "abstract": "You can build applications with a local-first focus. We will cover what WASM is, how it came to be and some of its history, as well as a case study focused on an app I made for myself. In the case study, we dig into how you might use WASM to run Whisper.cpp for Speech-to-text and also use WASM to host a local SQLite database. The only reason we need a network connection at all for this application is to get the initial JS payload and to download the Whisper models from a remote store since they can get quite large.",
- "topics": [
- "WASM",
- "JS",
- "SQLite",
- "Speech-to-text"
- ],
- "type": "regular"
- },
- {
- "id": "ben-van-citters-august-2024",
- "speaker_id": "ben-van-citters",
- "event_id": "august-2024",
- "title": "Undo/Redo a postmortem",
- "abstract": "Some thoughts about distributed undo/redo architecture. I did it and you can too!",
- "topics": [
- "JavaScript",
- "undo",
- "patterns",
- "rest",
- "crud"
- ],
- "type": "regular"
- },
- {
- "id": "allan-deutsch-august-2024",
- "speaker_id": "allan-deutsch",
- "event_id": "august-2024",
- "title": "Classy coding: JavaScript OOP through the ages",
- "abstract": "Embark on a journey through the history of JavaScript to learn how a variety of OOP challenges were overcome in the past. We will conclude our journey with clean modern syntax and a deeper understanding of classes, objects, and the chain of changes that helped us get here.",
- "topics": [
- "javascript",
- "inheritance",
- "prototype chains",
- "JS runtime",
- "classes",
- "OOP",
- "object-oriented programming"
- ],
- "type": "lightning"
- },
- {
- "id": "nicholas-patti-september-2024",
- "speaker_id": "nicholas-patti",
- "event_id": "september-2024",
- "title": "Planning the ultimate Limp Bizkit experience with Playwright",
- "abstract": "How can my friend and I get on stage to perform guitar and bass with Limp Bizkit? The answer lies in the data, and Playwright can help us grab it!",
- "topics": [
- "Playwright",
- "NodeJS",
- "data scraping",
- "data analysis"
- ],
- "type": "lightning"
- },
- {
- "id": "stacy-davis1-october-2024",
- "speaker_id": "stacy-davis1",
- "event_id": "october-2024",
- "title": "Translation: Tokens of Clarity",
- "abstract": "How does someone even get started with translating? What are some of the details involved? Join me to learn more about translation and localization in a React app, and insights taken from experience leading a translation initiative.",
- "topics": [
- "Translation",
- "localization",
- "React"
- ],
- "type": "regular"
- },
- {
- "id": "erik-marks-october-2024",
- "speaker_id": "erik-marks",
- "event_id": "october-2024",
- "title": "How to use eval() in production (and remain gainfully employed)",
- "abstract": "If you know anything about eval(), it's probably that you should avoid using it at all costs. However, what if using eval() could make your JavaScript program more secure? This is what Hardened JavaScript does, and in this talk we will explore how.",
- "topics": [
- "JavaScript",
- "security",
- "extensibility",
- "plugins",
- "Hardened JavaScript",
- "Secure EcmaScript",
- "SES"
- ],
- "type": "lightning"
- },
- {
- "id": "cat-johnson-november-2024",
- "speaker_id": "cat-johnson",
- "event_id": "november-2024",
- "title": "Nested Interactive Elements: A Nightmare in Accessibility",
- "abstract": "There have been numerous remarkable new UX experiences developed over the years. However, few are aware of the challenges involved in building structures with nested interactive elements. We will explore some of these prevalent web UX patterns and delve into the hidden challenges they present. While we may be able to mitigate some of these issues, others serve as horror stories in accessibility.",
- "topics": [
- "Accessibility",
- "HTML",
- "CSS"
- ],
- "type": "lightning"
- },
- {
- "id": "stacy-davis1-november-2024",
- "speaker_id": "stacy-davis1",
- "event_id": "november-2024",
- "title": "Translation: Tokens of Clarity",
- "abstract": "How does someone even get started with translating? What are some of the details involved? Join me to learn more about translation and localization in a React app, and insights taken from experience leading a translation initiative.",
- "topics": [
- "Translation",
- "localization",
- "React"
- ],
- "type": "lightning"
- },
- {
- "id": "justin-castilla-january-2025",
- "speaker_id": "justin-castilla",
- "event_id": "january-2025",
- "title": "Observability now: Open Telemetry is here and we should know about it.",
- "abstract": "Observability provides a wrangling of logs, traces, and metrics from your application into an organized analytics engine. We need to understand the basics and opportunities it provides. With open source software, we can get it up and running in no time!",
- "topics": [
- "observability",
- "data collection",
- "analytics",
- "performance",
- "AI",
- "data storage",
- "machine learning"
- ],
- "type": "lightning"
- },
- {
- "id": "peli-de-halleux-january-2025",
- "speaker_id": "peli-de-halleux",
- "event_id": "january-2025",
- "title": "GenAIScript - Generative AI Scripting",
- "abstract": "GenAIScript is a JavaScript-ish environment with convenient tooling for file ingestion, prompt development and structured data extraction. We will be building LLM scripts of all sorts during the talk. https://microsoft.github.io/genaiscript ",
- "topics": [
- "genai",
- "llm"
- ],
- "type": "lightning"
- },
- {
- "id": "andrew-enyeart-january-2025",
- "speaker_id": "andrew-enyeart",
- "event_id": "january-2025",
- "title": "Hard Things & Magical Incantations of Overcoming",
- "abstract": "We all face hard things. Wielding simple, powerful phrases—magical incantations, if you will—can help us take action in the face of discomfort and fear. Learn how to harness identity and habit to tackle your own unique challenges with courage.",
- "topics": [
- "job hunting",
- "courage",
- "mindset",
- "identity",
- "discomfort",
- "personal growth",
- "persistence"
- ],
- "type": "lightning"
- }
-]
\ No newline at end of file
diff --git a/app/elements/events-list.mjs b/app/elements/events-list.mjs
deleted file mode 100644
index 81e4c88..0000000
--- a/app/elements/events-list.mjs
+++ /dev/null
@@ -1,40 +0,0 @@
-export default function EventsList({ html, state }) {
- const { store } = state
- const events = store.data.sort((a,b) => new Date(b.date) - new Date(a.date))
-
- if (events.length > 0) {
- return html`
-
-
- `
- }else {
- return `
- Wait for it...
- `
- }
- }
diff --git a/app/elements/list-events.mjs b/app/elements/list-events.mjs
deleted file mode 100644
index a211f09..0000000
--- a/app/elements/list-events.mjs
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function ListEvents({ html, state = {} }) {
- const { store = {} } = state
- const { events } = store
- if (events.length === 0) {
- return ''
- } else {
- return html`
- ${events.map(e => html` `).join('')}
- `
- }
-}
diff --git a/app/elements/list-links.mjs b/app/elements/list-links.mjs
deleted file mode 100644
index 676952e..0000000
--- a/app/elements/list-links.mjs
+++ /dev/null
@@ -1,30 +0,0 @@
-export default function ListLinks({ html, state = {} }) {
- const { attrs } = state
- const { links } = attrs
- const { linkedin, twitter, url, github } = { ...links }
- return html`
-
-
- `
-}
diff --git a/app/elements/list-organizers.mjs b/app/elements/list-organizers.mjs
deleted file mode 100644
index a0b18a1..0000000
--- a/app/elements/list-organizers.mjs
+++ /dev/null
@@ -1,45 +0,0 @@
-export default function ListOrganizers({ html, state = {} }) {
- const { store = {} } = state
- const { organizers } = store
- return html`
-
- ${organizers
- .map(
- o => html`
-
-
-
-
-
${o.full_name}
- ${o.role ? `${o.role}
` : ''}
-
-
-
`
- )
- .join('')}
- `
-}
diff --git a/app/elements/list-sponsors.mjs b/app/elements/list-sponsors.mjs
deleted file mode 100644
index 8e7c766..0000000
--- a/app/elements/list-sponsors.mjs
+++ /dev/null
@@ -1,35 +0,0 @@
-export default function ListSponsors({ html, state = {} }) {
- const { store = {} } = state
- let { event, sponsors } = store
- if (event) {
- sponsors = event.sponsors
- }
- if (sponsors.length > 0) {
- return html`
-
- ${sponsors
- .map(
- s => html`
-
-
`
- )
- .join('')}
- `
- }
-}
diff --git a/app/elements/list-talks.mjs b/app/elements/list-talks.mjs
deleted file mode 100644
index d4920ff..0000000
--- a/app/elements/list-talks.mjs
+++ /dev/null
@@ -1,23 +0,0 @@
-export default function ListTalks({ html, state = {} }) {
- const { store, attrs } = state
- let { events, event } = store
- let { event_id } = attrs
- if (event_id && events) {
- event = events.find(e => e.id === event_id)
- }
- let { talks } = event
- return html`
-
- ${ talks.length === 0
- ? `There are no talks at the moment, maybe propose one ?
`
- : talks.map(t => ` `).join('')}
-`}
diff --git a/app/elements/live-reactions.mjs b/app/elements/live-reactions.mjs
deleted file mode 100644
index 096f074..0000000
--- a/app/elements/live-reactions.mjs
+++ /dev/null
@@ -1,266 +0,0 @@
-export default function LiveReactions({ html }) {
- return html`
-
-
-
-
-
-
- ❤️
-
-
-
- 🔥
-
-
-
- 🐙
-
-
-
- 🚀
-
-
-
- `
-}
diff --git a/app/elements/my-404.mjs b/app/elements/my-404.mjs
deleted file mode 100644
index 5b03c80..0000000
--- a/app/elements/my-404.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-export default function My404({ html }) {
- return html`
-
-
-
-`}
\ No newline at end of file
diff --git a/app/elements/my-footer.mjs b/app/elements/my-footer.mjs
deleted file mode 100644
index 29cc446..0000000
--- a/app/elements/my-footer.mjs
+++ /dev/null
@@ -1,48 +0,0 @@
-export default function MyFooter({ html }) {
- return html`
-
-
-
-
-
-
-
- `
-}
diff --git a/app/elements/my-header.mjs b/app/elements/my-header.mjs
deleted file mode 100644
index 4dbea49..0000000
--- a/app/elements/my-header.mjs
+++ /dev/null
@@ -1,167 +0,0 @@
-export default function MyHeader({ html }) {
- return html`
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `
-}
diff --git a/app/elements/my-layout.mjs b/app/elements/my-layout.mjs
deleted file mode 100644
index 5b29337..0000000
--- a/app/elements/my-layout.mjs
+++ /dev/null
@@ -1,19 +0,0 @@
-export default function ({ html }) {
- return html`
-
-
-
-
-
-
- `
-}
diff --git a/app/elements/page-layout.mjs b/app/elements/page-layout.mjs
deleted file mode 100644
index 010ec52..0000000
--- a/app/elements/page-layout.mjs
+++ /dev/null
@@ -1,12 +0,0 @@
-export default function ({ html, state }) {
- return html`
-
-
-
- `
-}
diff --git a/app/elements/person-detail.mjs b/app/elements/person-detail.mjs
deleted file mode 100644
index 3f85660..0000000
--- a/app/elements/person-detail.mjs
+++ /dev/null
@@ -1,45 +0,0 @@
-export default function PersonDetail({ html, state = {} }) {
- const { attrs } = state
- let { name, company, twitter, photo, pronouns, location, url, linkedin } =
- attrs
- let links = { twitter, url, linkedin }
- return html`
-
- About ${name}
-
-
-
- ${pronouns && `
Pronouns ${pronouns}
`}
- ${location && `
Location ${location}
`}
- ${company && `
Company ${company}
`}
- ${(twitter || url || linkedin) &&
- html`
Links
-
`}
-
-
- `
-}
diff --git a/app/elements/view-event.mjs b/app/elements/view-event.mjs
deleted file mode 100644
index 33042b1..0000000
--- a/app/elements/view-event.mjs
+++ /dev/null
@@ -1,37 +0,0 @@
-import { marked } from 'marked'
-
-export default function ViewEvent({ html, state = {} }) {
- const { attrs, store } = state
- let { events } = store
- let { id } = attrs
- let event = events.find(e => e.id === id)
-
- return html`
- ${event.title}
- ${marked(event.description)}
- ${event.sponsors.length > 0 ? html`Thanks to our Sponsors ❤️ ` : ''}
- ${event.sponsors
- .map(
- s =>
- ` `
- )
- .join('')}
-
-
-
- `
-}
diff --git a/app/elements/view-speaker.mjs b/app/elements/view-speaker.mjs
deleted file mode 100644
index f22c81e..0000000
--- a/app/elements/view-speaker.mjs
+++ /dev/null
@@ -1,14 +0,0 @@
-export default function ViewSpeaker({ html, state = {} }) {
- const { attrs } = state
- let { name, company, twitter, photo } = attrs
- return html`
-
-
${ name }
-
-
${company}
-
- `
-}
diff --git a/app/elements/view-sponsor.mjs b/app/elements/view-sponsor.mjs
deleted file mode 100644
index f73d072..0000000
--- a/app/elements/view-sponsor.mjs
+++ /dev/null
@@ -1,25 +0,0 @@
-export default function ViewSponsor({ html, state = {} }) {
- const { attrs } = state
- let { url, name, image, tier } = attrs
- return html`
-
-
-
-
- `
-}
diff --git a/app/elements/view-talk.mjs b/app/elements/view-talk.mjs
deleted file mode 100644
index d40c01d..0000000
--- a/app/elements/view-talk.mjs
+++ /dev/null
@@ -1,86 +0,0 @@
-//import { marked } from 'marked'
-
-export default function ViewTalk({ html, state = {} }) {
- const { attrs, store } = state
- let { events, event } = store
- let { id, event_id, url } = attrs
- if (!event) {
- event = events.find(e => e.id === event_id)
- }
-
- let talk = event.talks.find(t => t.id === id)
-
- let { title, speaker, type } = talk
- let { name, company, photo, location } = speaker
- return html`
-
-
- `
-}
diff --git a/app/head.mjs b/app/head.mjs
deleted file mode 100644
index a2dd44b..0000000
--- a/app/head.mjs
+++ /dev/null
@@ -1,49 +0,0 @@
-function getBaseUrl() {
- let url
- if (process.env.ARC_ENV === 'testing') {
- url = 'http://localhost:3333'
- }
- else {
- url = `https://${ process.env.ARC_ENV === 'staging' ? 'staging.' : '' }seattlejs.com`
- }
- return url
-}
-
-export default function Head(state) {
- const { store, req /*, status, error*/ } = state
- const { path } = req
- const baseUrl = getBaseUrl()
- const { title, description, sharing } = store
- return `
-
-
-
-
-
- ${title ? title : `SeattleJS`}
-
-
-
-
-
- ${ sharing
- ? `
-
-
-
-
-
-
-
-
-
- `: ''
- }
- ${ path === '/conf'
- ? `
- `
- : ``
- }
-
- `
-}
diff --git a/app/pages/$$.mjs b/app/pages/$$.mjs
deleted file mode 100644
index 0393c1a..0000000
--- a/app/pages/$$.mjs
+++ /dev/null
@@ -1,18 +0,0 @@
-import { marked } from 'marked'
-
-/**
- * Page view: catchall for pages authored in markdown
- */
-export default function ({ html, state }) {
- let { store } = state
- let { attributes, body } = store
- let title = attributes?.title
- return html`
-
- `
-}
diff --git a/app/pages/404.html b/app/pages/404.html
deleted file mode 100644
index faf0a50..0000000
--- a/app/pages/404.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/app/pages/conf.mjs b/app/pages/conf.mjs
deleted file mode 100644
index e24e07b..0000000
--- a/app/pages/conf.mjs
+++ /dev/null
@@ -1,105 +0,0 @@
-import { marked } from 'marked'
-
-export default function ({ html, state }) {
- let { store = {} } = state
- let { event } = store
- return html`
-
-
-
-
-
-
-
-
SeattleJS Conf is a very special 1-day conference bringing together ~300 web developers to learn, network and have fun!
-
The talks, from industry exports, will cover the latest and greatest in web technologies, from CSS View Transitions to Deno 2.0 to AI.
-
The event is being hosted by AWS and will feature a post-conference karaoke party at Optimism Brewing that you won't want to miss!
-
When
-
- Tuesday, August 8, 2023
- Doors open at 8am
- Talks run from 9am - 5pm
- Closing Party runs from 7pm - midnight
-
-
Where
-
-
-
Speakers
-
- ${event.talks
- .sort(() => Math.random() - 0.5) // randomize our array of speakers!
- .map(
- t => html` `
- )
- .join('')}
-
-
Sponsors
-
-
Training Workshops
-
- We are hosting Training Workshops before and after the conference. These are full-day workshops and are designed to level up your skills as a web developer.
- ${ event.workshops.map(w => html`
-
-
-
-
-
-
-
${ marked(w.short || w.abstract) }
-
-
- `).join('')}
-
-
Organizers
-
-
Scholarships
-
We are accepting applications for our Scholarship Program! If you are an under-represented minority in tech or need financial aid in order to attend this event, please consider applying. We want everyone to be able to attend this event! And if you are in a position to help fund this program, please consider making a donation below when you buy your ticket ❤️
-
Tickets
-
-
-
-
- `
-}
diff --git a/app/pages/events.mjs b/app/pages/events.mjs
deleted file mode 100644
index ac8c0bd..0000000
--- a/app/pages/events.mjs
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function events({ html }) {
-
- return html`
-
-
-
- `
-}
diff --git a/app/pages/events/$id.mjs b/app/pages/events/$id.mjs
deleted file mode 100644
index 3c6b781..0000000
--- a/app/pages/events/$id.mjs
+++ /dev/null
@@ -1,91 +0,0 @@
-import { marked } from "marked"
-
-export default function ({ html, state = {} }) {
- let { store = {} } = state
- let { event, display } = store
-
- let {
- id,
- title,
- sponsors,
- talks,
- description,
- date,
- location
- } = event
-
- let hasTalks = talks && talks.length > 0
- let hasSponsors = sponsors && sponsors.length > 0
- if (display === "email") {
- let eventDate = new Date(date)
- let eventDateStr = `${eventDate.getFullYear()}-${eventDate.getMonth() + 1}`
-
- if (!location) {
- if (eventDateStr < "2024-07") {
- location = "The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109"
- } else {
- location = "Silicon Valley Bank, 920 5th Ave Suite 300, Seattle, WA 98104";
- }
- }
-
- return html`
-
-
-
Copy HTML to clipboard
-
-
GREETING TEXT
-
- ${hasSponsors ? sponsors.map(s => `
-
-
-
-
Special thanks to our friends at ${s.name} for sponsoring snacks for this month's event! 😎
- `).join('') : null}
-
- 🗓 ${eventDate.toLocaleDateString(undefined, {weekday: "long", month: "long", day: "numeric"})}
- ⏰ 5:30pm - 8:30pm
- 📍 ${location}
- 🎟 RSVP
-
-
- ${hasTalks ? talks.map(t => `
-
${t.title} by ${t.speaker.name}
-
- ${t.abstract && `
${marked(t.abstract)}
` }
- `).join('') : null }
-
-
See you all on ${eventDate.toLocaleDateString(undefined, {month: "long", day: "numeric"})}
-
-
-
- `
- }
- return html`
-
- ${title}
- ${description && `${marked(description)}
` }
- Thanks to our Sponsors ❤️
- ${hasSponsors ? html` ` : null}
- ${hasTalks ? html` `: html`No talks were given durring this event.
`}
-
-
- `
-}
diff --git a/app/pages/index.html b/app/pages/index.html
deleted file mode 100644
index ab7fb54..0000000
--- a/app/pages/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
Upcoming Meetups
-
-
-
Speaking at the SeattleJS Meetup
-
No matter who you are and what your experience level is, you can give a talk at SeattleJS. Please consider submitting an idea to our Call for Presenters !
-
Sponsors
-
-
If your company would like to sponsor an upcoming meetup, please email us at info@seattlejs.com .
-
Organizers
-
-
-
diff --git a/app/pages/live.mjs b/app/pages/live.mjs
deleted file mode 100644
index 55cb0cb..0000000
--- a/app/pages/live.mjs
+++ /dev/null
@@ -1,166 +0,0 @@
-function renderSpeaker(time, talk = { speaker: {}}) {
- return /*html*/`
-
-
${ time }
-
-
-
${ talk.speaker.name }
-
-
`
-}
-
-export default function ({ html, state }) {
- let { store = {} } = state
- let { event = {}, playbackId } = store
- let talks = event.talks || []
- return html`
-
-
-
-
- ${ playbackId ? /*html*/`
-
-
-
-
-
`
- : /*html*/`
-
Livestream will begin on August 8 at 9:00am PT.
- `}
-
-
Schedule
-
-
Conference
-
Talk Room
-
- ${ renderSpeaker("09:30", talks.find(t => t.speaker.id === 'kevin-whinnery'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'eve-porcello'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'ben-ilegbodu'))}
-
- ${ renderSpeaker("11:15", talks.find(t => t.speaker.id === 'adam-argyle'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'erik-hanchett'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'daphne-liu'))}
-
Lunch Room
-
-
12:40
-
Lunch by
-
-
Talk Room
- ${ renderSpeaker("13:45", talks.find(t => t.speaker.id === 'lizzie-siegle'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'john-pham'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'luis-montes'))}
-
- ${ renderSpeaker("15:35", talks.find(t => t.speaker.id === 'christina-zhu'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'josh-goldberg'))}
- ${ renderSpeaker("", talks.find(t => t.speaker.id === 'jason-lengstorf'))}
-
-
After Party
-
-
-
-
-
-
-
-
- `
-}
diff --git a/app/pages/speakers.mjs b/app/pages/speakers.mjs
deleted file mode 100644
index e88bb1c..0000000
--- a/app/pages/speakers.mjs
+++ /dev/null
@@ -1,21 +0,0 @@
-export default function ({ html, state = {} }) {
- let { store = {} } = state
- let { speakers } = store
- return html`
-
-
-
Speaker List
-
-
- ${speakers
- .map(
- s =>
- /*html*/ `${s.name} `
- )
- .join('')}
-
-
-
-
- `
-}
diff --git a/app/pages/speakers/$id.mjs b/app/pages/speakers/$id.mjs
deleted file mode 100644
index 6bad56f..0000000
--- a/app/pages/speakers/$id.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-export default function ({ html, state = {} }) {
- let { store = {} } = state
- let { speaker } = store
- return html`
-
- ${JSON.stringify(speaker, null, 2)}
-
- `
-}
diff --git a/app/pages/talks.mjs b/app/pages/talks.mjs
deleted file mode 100644
index 99b23b9..0000000
--- a/app/pages/talks.mjs
+++ /dev/null
@@ -1,30 +0,0 @@
-export default function ({ html, state = {} }) {
- let { store } = state
- let talks = [...Object.values(store)]
-
- return html`
-
-
-
-
Past Talks
-
-
- ${talks
- .map(
- t => /*html*/ `${t.title} - Speaker: ${t.speaker.name} `
- )
- .join('')}
-
-
-
-
- `
-}
diff --git a/app/pages/talks/$id.mjs b/app/pages/talks/$id.mjs
deleted file mode 100644
index 360058a..0000000
--- a/app/pages/talks/$id.mjs
+++ /dev/null
@@ -1,50 +0,0 @@
-import { marked } from 'marked'
-
-export default function ({ html, state = {} }) {
- const { store = {} } = state
- const { talk, social } = store
- const { title, abstract, topics, speaker } = talk
- const { name, photo } = speaker
- if (social) {
- return html`
-
-
-
-
-
- ${ name }
-
-
- ${ title }
-
-
- `
- }
- else {
- // set the "photo" property with an absolute path (so that the element will work)
- let speakerClone = { ...speaker }
- speakerClone.photo = '/_public/images/speakers/' + speaker.photo
- const speakerProps = Object.keys(speakerClone).map(key => `${key}="${speakerClone[key]}"`).join(' ')
- return html`
-
-
- ${ title }
- ${topics ? html`${ topics.map(t => `
${ t }
`).join('') }
` : null }
- ${ marked.parse(abstract) }
-
-
- `
- }
-}
diff --git a/app/pages/workshops/$id.mjs b/app/pages/workshops/$id.mjs
deleted file mode 100644
index 267436b..0000000
--- a/app/pages/workshops/$id.mjs
+++ /dev/null
@@ -1,51 +0,0 @@
-import { marked } from 'marked'
-
-export default function ({ html, state = {} }) {
- const { store = {} } = state
- const { workshop, social } = store
- const { title, abstract, topics, speaker } = workshop
- const { name, photo } = speaker
- if (social) {
- return html`
-
-
-
-
-
- ${ name }
-
-
- ${ title }
-
-
- `
- }
- else {
- // set the "photo" property with an absolute path (so that the element will work)
- let speakerClone = { ...speaker }
- speakerClone.photo = '/_public/images/speakers/' + speaker.photo
- const speakerProps = Object.keys(speakerClone).map(key => `${key}="${speakerClone[key]}"`).join(' ')
- return html`
-
-
- ${ title }
- ${ topics.map(t => `
${ t }
`).join('') }
- ${ marked.parse(abstract) }
-
-
-
- `
- }
-}
diff --git a/astro.config.ts b/astro.config.ts
new file mode 100644
index 0000000..1d5c220
--- /dev/null
+++ b/astro.config.ts
@@ -0,0 +1,21 @@
+import preact from '@astrojs/preact'
+import { defineConfig } from 'astro/config'
+
+function setLayout() {
+ return function (_, file) {
+ file.data.astro.frontmatter.layout =
+ file.data.astro.frontmatter.layout || '@/layouts/MarkdownLayout.astro'
+ }
+}
+
+// https://astro.build/config
+export default defineConfig({
+ site: 'https://seattlejs.com/',
+ integrations: [preact()],
+ markdown: {
+ remarkPlugins: [setLayout],
+ },
+ server: {
+ port: 3333,
+ },
+})
diff --git a/config.json b/config.json
deleted file mode 100644
index 5f08d73..0000000
--- a/config.json
+++ /dev/null
@@ -1 +0,0 @@
-{"staging":true}
diff --git a/crawl.mjs b/crawl.mjs
new file mode 100644
index 0000000..e81d039
--- /dev/null
+++ b/crawl.mjs
@@ -0,0 +1,43 @@
+import fs from 'fs'
+
+const queue = ['https://seattlejs.com/', 'https://seattlejs.com/events']
+/** @type {Set} */
+// eslint-disable-next-line no-undef
+const visited = new Set()
+
+async function crawl() {
+ while (queue.length) {
+ let url = queue.shift()
+ if (!url || visited.has(url)) continue
+
+ visited.add(url)
+ console.log(`Crawling ${url}`)
+
+ let res = await fetch(url)
+ let text = await res.text()
+ let matches = text.match(/https?:\/\/[^'"\s)]+/g) || []
+
+ const links = text.match(/href="([^"]+)"/g) || []
+ matches = matches.concat(
+ ...links
+ .map(m => {
+ const url = m.match(/href="([^"]+)"/)[1]
+ if (url.match(/^https?:\/\/seattlejs.com/)) return url
+ if (url.startsWith('/')) return `https://seattlejs.com${url}`
+ return null
+ })
+ .filter(m => !!m),
+ )
+
+ // console.log(matches)
+
+ for (let match of matches) {
+ if (match.match(/^https?:\/\/seattlejs.com/)) {
+ queue.push(match)
+ }
+ }
+ }
+}
+
+await crawl()
+fs.writeFileSync('urls.json', JSON.stringify(Array.from(visited), null, 2))
diff --git a/app/md/email-templates/accepted.md b/docs/email-templates/accepted.md
similarity index 100%
rename from app/md/email-templates/accepted.md
rename to docs/email-templates/accepted.md
diff --git a/app/md/email-templates/details-confirmation.md b/docs/email-templates/details-confirmation.md
similarity index 100%
rename from app/md/email-templates/details-confirmation.md
rename to docs/email-templates/details-confirmation.md
diff --git a/app/md/organizer-notes/2023-01-04.md b/docs/organizer-notes/2023-01-04.md
similarity index 99%
rename from app/md/organizer-notes/2023-01-04.md
rename to docs/organizer-notes/2023-01-04.md
index 246809f..eb2f3ce 100644
--- a/app/md/organizer-notes/2023-01-04.md
+++ b/docs/organizer-notes/2023-01-04.md
@@ -4,7 +4,7 @@
### Lu.ma page
-https://lu.ma/seattlejs
+https://lu.ma/seattlejs
We use this for ticketing and RSVPs. It's a good way to track who is coming to the event.
diff --git a/app/md/organizer-notes/2024-08.md b/docs/organizer-notes/2024-08.md
similarity index 100%
rename from app/md/organizer-notes/2024-08.md
rename to docs/organizer-notes/2024-08.md
diff --git a/package-lock.json b/package-lock.json
index cd34449..e41c7a1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,42 +1,34 @@
{
"name": "seattle-js",
- "version": "3.3.96",
+ "version": "4.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "seattle-js",
- "version": "3.3.96",
- "license": "MIT",
- "dependencies": {
- "@architect/functions": "latest",
- "@aws-sdk/client-apigatewaymanagementapi": "^3.382.0",
- "@aws-sdk/client-dynamodb": "^3.382.0",
- "@aws-sdk/client-s3": "^3.383.0",
- "@aws-sdk/client-sns": "^3.382.0",
- "@aws-sdk/client-sqs": "^3.382.0",
- "@aws-sdk/client-ssm": "^3.382.0",
- "@aws-sdk/lib-dynamodb": "^3.382.0",
- "@begin/data": "^4.0.2",
- "@enhance/arc-plugin-enhance": "^11.0.4",
- "@liveblocks/client": "^1.1.8",
- "esbuild": "^0.18.17",
- "front-matter": "^4.0.2",
- "marked": "^4.0.12",
- "node-fetch": "^2.6.7"
+ "version": "4.0.0",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/check": "^0.9.4",
+ "@astrojs/preact": "^4.0.1",
+ "@astrojs/ts-plugin": "^1.10.4",
+ "@liveblocks/client": "^2.15.1",
+ "astro": "^5.1.1",
+ "marked": "^15.0.4",
+ "preact": "^10.25.3"
},
"devDependencies": {
- "@babel/eslint-parser": "^7.19.1",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
- "@begin/deploy": "^0.22.4",
- "aws-sdk": "^2.1429.0",
- "dotenv": "^16.3.1",
- "eslint": "latest",
+ "@types/node": "^22.10.4",
+ "eslint": "^8.46.0",
"eslint-config-prettier": "^8.6.0",
- "prettier": "^2.8.3"
+ "patch-package": "^8.0.0",
+ "prettier": "^3.4.2",
+ "prettier-plugin-astro": "^0.14.1",
+ "typescript": "^5.7.2"
},
"engines": {
- "node": ">=16.19.0"
+ "node": ">=22.12.0"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -52,8 +44,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
- "peer": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -62,3810 +52,1762 @@
"node": ">=6.0.0"
}
},
- "node_modules/@apidevtools/json-schema-ref-parser": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.0.tgz",
- "integrity": "sha512-teB30tFooE3iQs2HQIKJ02D8UZA1Xy1zaczzhUjJs0CymYxeC0g+y5rCY2p8NHBM6DBUVoR8rSM4kHLj1WE9mQ==",
- "dev": true,
+ "node_modules/@astrojs/check": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.4.tgz",
+ "integrity": "sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==",
+ "license": "MIT",
"dependencies": {
- "@jsdevtools/ono": "^7.1.3",
- "@types/json-schema": "^7.0.6",
- "call-me-maybe": "^1.0.1",
- "js-yaml": "^4.1.0"
+ "@astrojs/language-server": "^2.15.0",
+ "chokidar": "^4.0.1",
+ "kleur": "^4.1.5",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "astro-check": "dist/bin.js"
+ },
+ "peerDependencies": {
+ "typescript": "^5.0.0"
}
},
- "node_modules/@architect/asap": {
- "version": "7.0.10",
- "resolved": "https://registry.npmjs.org/@architect/asap/-/asap-7.0.10.tgz",
- "integrity": "sha512-oJjYDranGTCkp21bziF/fIxJfLTucitqg/ar5mmLPHyroNG3XF3SUIMvuNd1GNIe4oy40wvGEXvTToKYvUeOLA==",
+ "node_modules/@astrojs/check/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
"dependencies": {
- "@aws-lite/client": "~0.21.1",
- "@aws-lite/s3": "^0.1.21"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": ">=16"
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@architect/create": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@architect/create/-/create-5.0.3.tgz",
- "integrity": "sha512-wLHLdZnArRR08HoEFCUtnvxSDjWexkhqrzK7NgeswjMMr5mK4y0zagarte0oaXSIhjCN+x79GWCkH49bKdsVBA==",
- "dev": true,
+ "node_modules/@astrojs/check/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@astrojs/compiler": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz",
+ "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/internal-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.2.tgz",
+ "integrity": "sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/language-server": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.4.tgz",
+ "integrity": "sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==",
+ "license": "MIT",
"dependencies": {
- "@architect/inventory": "~4.0.5",
- "@architect/utils": "~4.0.6",
- "chalk": "4.1.2",
- "lambda-runtimes": "~2.0.2",
- "minimist": "~1.2.8"
+ "@astrojs/compiler": "^2.10.3",
+ "@astrojs/yaml2ts": "^0.2.2",
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@volar/kit": "~2.4.7",
+ "@volar/language-core": "~2.4.7",
+ "@volar/language-server": "~2.4.7",
+ "@volar/language-service": "~2.4.7",
+ "fast-glob": "^3.2.12",
+ "muggle-string": "^0.4.1",
+ "volar-service-css": "0.0.62",
+ "volar-service-emmet": "0.0.62",
+ "volar-service-html": "0.0.62",
+ "volar-service-prettier": "0.0.62",
+ "volar-service-typescript": "0.0.62",
+ "volar-service-typescript-twoslash-queries": "0.0.62",
+ "volar-service-yaml": "0.0.62",
+ "vscode-html-languageservice": "^5.2.0",
+ "vscode-uri": "^3.0.8"
},
"bin": {
- "arc-create": "src/cli.js"
+ "astro-ls": "bin/nodeServer.js"
},
- "engines": {
- "node": ">=16"
+ "peerDependencies": {
+ "prettier": "^3.0.0",
+ "prettier-plugin-astro": ">=0.11.0"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ }
}
},
- "node_modules/@architect/create/node_modules/@architect/inventory": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@architect/inventory/-/inventory-4.0.5.tgz",
- "integrity": "sha512-lDmH3iOejxWDLolI8tFuLgaqgT1ANuB4TrS3qHno43v+Tx+EEi5Nw6HWJ8LJ6onuStpzNWTMJtSssaJgJUSHrQ==",
- "dev": true,
+ "node_modules/@astrojs/markdown-remark": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.0.1.tgz",
+ "integrity": "sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/prism": "3.2.0",
+ "github-slugger": "^2.0.0",
+ "hast-util-from-html": "^2.0.3",
+ "hast-util-to-text": "^4.0.2",
+ "import-meta-resolve": "^4.1.0",
+ "js-yaml": "^4.1.0",
+ "mdast-util-definitions": "^6.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-stringify": "^10.0.1",
+ "remark-gfm": "^4.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.1.1",
+ "remark-smartypants": "^3.0.2",
+ "shiki": "^1.23.1",
+ "unified": "^11.0.5",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.1",
+ "vfile": "^6.0.3"
+ }
+ },
+ "node_modules/@astrojs/preact": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-4.0.1.tgz",
+ "integrity": "sha512-aEtC1HDsBRvXCNn+NGh68Kgk5NuhHTCu6NuESo5oZ9nhFPb0Ar+Y4JKH5R+HWTVWdoOTG6+wGPwdymEMg31ElA==",
+ "license": "MIT",
"dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/parser": "~7.0.1",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/ssm": "^0.2.3",
- "lambda-runtimes": "~2.0.2"
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+ "@preact/preset-vite": "2.8.2",
+ "@preact/signals": "^1.3.0",
+ "babel-plugin-transform-hook-names": "^1.0.2",
+ "preact-render-to-string": "^6.5.11",
+ "vite": "^6.0.5"
},
"engines": {
- "node": ">=16"
- }
- },
- "node_modules/@architect/create/node_modules/@architect/parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-7.0.1.tgz",
- "integrity": "sha512-T4Rr/eQbtg/gPvS4HcXR7zYxLJ3gEh6pSKj0s/Y1IrvJY9QG4BDAVZgE7AYGfzqymwIF0pUI2mQ91CLi2CTnQw==",
- "dev": true,
- "engines": {
- "node": ">=16"
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ },
+ "peerDependencies": {
+ "preact": "^10.6.5"
}
},
- "node_modules/@architect/create/node_modules/@architect/utils": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz",
- "integrity": "sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==",
- "dev": true,
+ "node_modules/@astrojs/preact/node_modules/@preact/preset-vite": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.8.2.tgz",
+ "integrity": "sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==",
+ "license": "MIT",
"dependencies": {
- "@aws-lite/client": "^0.21.1",
- "chalk": "4.1.2",
- "glob": "~10.3.12",
- "path-sort": "~0.1.0",
- "restore-cursor": "3.1.0",
- "run-series": "~1.1.9",
- "run-waterfall": "~1.1.7",
- "sha": "~3.0.0"
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@prefresh/vite": "^2.4.1",
+ "@rollup/pluginutils": "^4.1.1",
+ "babel-plugin-transform-hook-names": "^1.0.2",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "magic-string": "0.30.5",
+ "node-html-parser": "^6.1.10",
+ "resolve": "^1.22.8",
+ "source-map": "^0.7.4",
+ "stack-trace": "^1.0.0-pre2"
},
- "engines": {
- "node": ">=16"
+ "peerDependencies": {
+ "@babel/core": "7.x",
+ "vite": "2.x || 3.x || 4.x || 5.x"
}
},
- "node_modules/@architect/create/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
+ "node_modules/@astrojs/preact/node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">= 8.0.0"
}
},
- "node_modules/@architect/create/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
+ "node_modules/@astrojs/preact/node_modules/magic-string": {
+ "version": "0.30.5",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+ "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@architect/create/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
+ "node_modules/@astrojs/prism": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz",
+ "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "prismjs": "^1.29.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
}
},
- "node_modules/@architect/create/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
+ "node_modules/@astrojs/telemetry": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz",
+ "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==",
+ "license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
+ "ci-info": "^4.1.0",
+ "debug": "^4.3.7",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "is-docker": "^3.0.0",
+ "is-wsl": "^3.1.0",
+ "which-pm-runs": "^1.1.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
}
},
- "node_modules/@architect/create/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "node_modules/@astrojs/telemetry/node_modules/ci-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz",
+ "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
},
- "node_modules/@architect/create/node_modules/glob": {
- "version": "10.3.16",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
- "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
+ "node_modules/@astrojs/telemetry/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
"bin": {
- "glob": "dist/esm/bin.mjs"
+ "is-docker": "cli.js"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@architect/create/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@architect/create/node_modules/jackspeak": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
- "dev": true,
+ "node_modules/@astrojs/telemetry/node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "license": "MIT",
"dependencies": {
- "@isaacs/cliui": "^8.0.2"
+ "is-inside-container": "^1.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=16"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@architect/create/node_modules/lambda-runtimes": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lambda-runtimes/-/lambda-runtimes-2.0.2.tgz",
- "integrity": "sha512-pGILm2NHRLtQr1f3E3Kbidou8H9bUFoAxB4pUNAv4NOnw+X4N3MQkoWjNY5f7JS+KJQjsr4mpFuCCqrH6wHf+Q==",
- "dev": true,
+ "node_modules/@astrojs/ts-plugin": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/ts-plugin/-/ts-plugin-1.10.4.tgz",
+ "integrity": "sha512-rapryQINgv5VLZF884R/wmgX3mM9eH1PC/I3kkPV9rP6lEWrRN1YClF3bGcDHFrf8EtTLc0Wqxne1Uetpevozg==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.10.3",
+ "@astrojs/yaml2ts": "^0.2.2",
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@volar/language-core": "~2.4.7",
+ "@volar/typescript": "~2.4.7",
+ "semver": "^7.3.8",
+ "vscode-languageserver-textdocument": "^1.0.11"
+ }
+ },
+ "node_modules/@astrojs/ts-plugin/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=10"
}
},
- "node_modules/@architect/create/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dev": true,
+ "node_modules/@astrojs/yaml2ts": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz",
+ "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==",
+ "license": "MIT",
+ "dependencies": {
+ "yaml": "^2.5.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/create/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
+ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/create/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/@babel/core": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz",
+ "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.9",
+ "@babel/helper-compilation-targets": "^7.22.9",
+ "@babel/helper-module-transforms": "^7.22.9",
+ "@babel/helpers": "^7.22.6",
+ "@babel/parser": "^7.22.7",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.8",
+ "@babel/types": "^7.22.5",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/@architect/functions": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@architect/functions/-/functions-8.1.6.tgz",
- "integrity": "sha512-ZDRJ+0O3pYPFjbLcKomlcoulM9vebA8pxbhdzG1QUslgcrtkRDuW1Vo/6x96joaOr57VId03wewwsrNEwbWdcw==",
+ "node_modules/@babel/generator": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
+ "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
+ "license": "MIT",
"dependencies": {
- "@aws-lite/apigatewaymanagementapi": "^0.0.8",
- "@aws-lite/client": "^0.21.7",
- "@aws-lite/dynamodb": "^0.3.4",
- "@aws-lite/sns": "^0.0.6",
- "@aws-lite/sqs": "^0.2.2",
- "@aws-lite/ssm": "^0.2.3",
- "cookie": "^0.6.0",
- "cookie-signature": "^1.2.1",
- "csrf": "^3.1.0",
- "node-webtokens": "^1.0.4",
- "run-parallel": "^1.2.0",
- "run-waterfall": "^1.1.7",
- "uid-safe": "^2.1.5"
+ "@babel/parser": "^7.26.3",
+ "@babel/types": "^7.26.3",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/hydrate/-/hydrate-4.0.6.tgz",
- "integrity": "sha512-ZAJxtZ8bp32hTn6ATa/mqFk2KTLrqyagjmWF9fjyGayxKjSVGBrZvYNA8N23K/uqAK2BN1M6cWmNS2j6W4vTBQ==",
- "dev": true,
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "license": "MIT",
"dependencies": {
- "@architect/inventory": "~4.0.5",
- "@architect/utils": "~4.0.6",
- "acorn-loose": "~8.4.0",
- "chalk": "4.1.2",
- "cpr": "~3.0.1",
- "esquery": "~1.5.0",
- "glob": "~10.3.12",
- "minimist": "~1.2.8",
- "run-series": "~1.1.9",
- "symlink-or-copy": "~1.3.1"
- },
- "bin": {
- "arc-hydrate": "src/cli.js"
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/@architect/inventory": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@architect/inventory/-/inventory-4.0.5.tgz",
- "integrity": "sha512-lDmH3iOejxWDLolI8tFuLgaqgT1ANuB4TrS3qHno43v+Tx+EEi5Nw6HWJ8LJ6onuStpzNWTMJtSssaJgJUSHrQ==",
- "dev": true,
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz",
+ "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==",
"dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/parser": "~7.0.1",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/ssm": "^0.2.3",
- "lambda-runtimes": "~2.0.2"
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.5",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@architect/hydrate/node_modules/@architect/parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-7.0.1.tgz",
- "integrity": "sha512-T4Rr/eQbtg/gPvS4HcXR7zYxLJ3gEh6pSKj0s/Y1IrvJY9QG4BDAVZgE7AYGfzqymwIF0pUI2mQ91CLi2CTnQw==",
- "dev": true,
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/@architect/utils": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz",
- "integrity": "sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==",
- "dev": true,
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "license": "MIT",
"dependencies": {
- "@aws-lite/client": "^0.21.1",
- "chalk": "4.1.2",
- "glob": "~10.3.12",
- "path-sort": "~0.1.0",
- "restore-cursor": "3.1.0",
- "run-series": "~1.1.9",
- "run-waterfall": "~1.1.7",
- "sha": "~3.0.0"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
+ "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
"dependencies": {
- "color-convert": "^2.0.1"
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.5"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@architect/hydrate/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@architect/hydrate/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@architect/hydrate/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "license": "MIT",
"engines": {
- "node": ">=7.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@architect/hydrate/node_modules/glob": {
- "version": "10.3.16",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
- "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
- "dev": true,
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
+ "@babel/types": "^7.22.5"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@architect/hydrate/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/jackspeak": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
- "dev": true,
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dependencies": {
- "@isaacs/cliui": "^8.0.2"
+ "@babel/types": "^7.22.5"
},
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/lambda-runtimes": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lambda-runtimes/-/lambda-runtimes-2.0.2.tgz",
- "integrity": "sha512-pGILm2NHRLtQr1f3E3Kbidou8H9bUFoAxB4pUNAv4NOnw+X4N3MQkoWjNY5f7JS+KJQjsr4mpFuCCqrH6wHf+Q==",
- "dev": true,
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "license": "MIT",
"engines": {
- "node": ">=14"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "license": "MIT",
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/hydrate/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/@babel/helpers": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+ "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.6",
+ "@babel/types": "^7.22.5"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/@architect/parser": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-6.0.3.tgz",
- "integrity": "sha512-g03zlsXO0YBVMDFbXHRL3JpVpru4kUeaQIe53tNhs1C9+fMguNCSWq1tNSmwqhBYq43O/R3hleg8VSOI0NFwgA==",
- "dev": true,
- "engines": {
- "node": ">=14"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/sandbox": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/@architect/sandbox/-/sandbox-6.0.5.tgz",
- "integrity": "sha512-VJcFxVhSbrhisTMqq2ukbj4NlN18eJgYYqEMnCk9UAdIyHBBoEAP4YmroyFCHv7CsutFUMhjDQP9+9deQje+6w==",
- "dev": true,
+ "node_modules/@babel/parser": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
+ "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+ "license": "MIT",
"dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/create": "~5.0.3",
- "@architect/hydrate": "~4.0.6",
- "@architect/inventory": "~4.0.5",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/dynamodb": "^0.3.4",
- "@begin/hashid": "~1.0.0",
- "chalk": "4.1.2",
- "chokidar": "~3.6.0",
- "depstatus": "~1.1.1",
- "dynalite": "~3.2.2",
- "finalhandler": "~1.2.0",
- "glob": "~10.3.12",
- "http-proxy": "~1.18.1",
- "lambda-runtimes": "~2.0.2",
- "minimist": "~1.2.8",
- "router": "~1.3.8",
- "run-parallel": "~1.2.0",
- "run-series": "~1.1.9",
- "send": "~0.18.0",
- "server-destroy": "~1.0.1",
- "tmp": "~0.2.3",
- "tree-kill": "~1.2.2",
- "update-notifier-cjs": "~5.1.6",
- "ws": "~8.17.0"
+ "@babel/types": "^7.26.3"
},
"bin": {
- "sandbox": "src/cli/cli.js"
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.0.0"
}
},
- "node_modules/@architect/sandbox/node_modules/@architect/inventory": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@architect/inventory/-/inventory-4.0.5.tgz",
- "integrity": "sha512-lDmH3iOejxWDLolI8tFuLgaqgT1ANuB4TrS3qHno43v+Tx+EEi5Nw6HWJ8LJ6onuStpzNWTMJtSssaJgJUSHrQ==",
- "dev": true,
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+ "license": "MIT",
"dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/parser": "~7.0.1",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/ssm": "^0.2.3",
- "lambda-runtimes": "~2.0.2"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=16"
- }
- },
- "node_modules/@architect/sandbox/node_modules/@architect/parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-7.0.1.tgz",
- "integrity": "sha512-T4Rr/eQbtg/gPvS4HcXR7zYxLJ3gEh6pSKj0s/Y1IrvJY9QG4BDAVZgE7AYGfzqymwIF0pUI2mQ91CLi2CTnQw==",
- "dev": true,
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@architect/sandbox/node_modules/@architect/utils": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz",
- "integrity": "sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==",
- "dev": true,
- "dependencies": {
- "@aws-lite/client": "^0.21.1",
- "chalk": "4.1.2",
- "glob": "~10.3.12",
- "path-sort": "~0.1.0",
- "restore-cursor": "3.1.0",
- "run-series": "~1.1.9",
- "run-waterfall": "~1.1.7",
- "sha": "~3.0.0"
+ "node": ">=6.9.0"
},
- "engines": {
- "node": ">=16"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@architect/sandbox/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
+ "license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@architect/sandbox/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@architect/sandbox/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
+ "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@babel/plugin-transform-react-jsx": "^7.25.9"
},
"engines": {
- "node": ">=10"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@architect/sandbox/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/sandbox/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@architect/sandbox/node_modules/glob": {
- "version": "10.3.16",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
- "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
- "dev": true,
+ "node_modules/@babel/traverse": {
+ "version": "7.26.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz",
+ "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
+ "license": "MIT",
"dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.3",
+ "@babel/parser": "^7.26.3",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.3",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@architect/sandbox/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/sandbox/node_modules/jackspeak": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
- "dev": true,
+ "node_modules/@babel/types": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
+ "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
+ "license": "MIT",
"dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/@architect/sandbox/node_modules/lambda-runtimes": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lambda-runtimes/-/lambda-runtimes-2.0.2.tgz",
- "integrity": "sha512-pGILm2NHRLtQr1f3E3Kbidou8H9bUFoAxB4pUNAv4NOnw+X4N3MQkoWjNY5f7JS+KJQjsr4mpFuCCqrH6wHf+Q==",
- "dev": true,
"engines": {
- "node": ">=14"
+ "node": ">=6.9.0"
}
},
- "node_modules/@architect/sandbox/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dev": true,
+ "node_modules/@emmetio/abbreviation": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz",
+ "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "@emmetio/scanner": "^1.0.4"
}
},
- "node_modules/@architect/sandbox/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/@architect/sandbox/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/@emmetio/css-abbreviation": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz",
+ "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==",
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "@emmetio/scanner": "^1.0.4"
}
},
- "node_modules/@aws-crypto/crc32": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
- "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
+ "node_modules/@emmetio/css-parser": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz",
+ "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==",
+ "license": "MIT",
"dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@emmetio/stream-reader": "^2.2.0",
+ "@emmetio/stream-reader-utils": "^0.1.0"
}
},
- "node_modules/@aws-crypto/crc32c": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz",
- "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==",
+ "node_modules/@emmetio/html-matcher": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz",
+ "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==",
+ "license": "ISC",
"dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^2.6.2"
+ "@emmetio/scanner": "^1.0.0"
}
},
- "node_modules/@aws-crypto/sha1-browser": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz",
- "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==",
- "dependencies": {
- "@aws-crypto/supports-web-crypto": "^5.2.0",
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
- }
+ "node_modules/@emmetio/scanner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz",
+ "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==",
+ "license": "MIT"
},
- "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": {
+ "node_modules/@emmetio/stream-reader": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
+ "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz",
+ "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==",
+ "license": "MIT"
},
- "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "node_modules/@emmetio/stream-reader-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz",
+ "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==",
+ "license": "MIT"
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-browser": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
- "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
- "dependencies": {
- "@aws-crypto/sha256-js": "^5.2.0",
- "@aws-crypto/supports-web-crypto": "^5.2.0",
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/sha256-js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
- "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
- "dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/supports-web-crypto": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
- "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
- "dependencies": {
- "tslib": "^2.6.2"
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/util": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
- "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/apigatewaymanagementapi": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/@aws-lite/apigatewaymanagementapi/-/apigatewaymanagementapi-0.0.8.tgz",
- "integrity": "sha512-uAb9G/XlmhvUAFT9iZukqXP6rGAQTOVIcG/3h8nB9E9Y/S0nzIqpszrhMnan+qT7hpCOe3Lz8OLcKsyopgD7wg==",
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/client": {
- "version": "0.21.10",
- "resolved": "https://registry.npmjs.org/@aws-lite/client/-/client-0.21.10.tgz",
- "integrity": "sha512-fOn3lg1ynBAxqcELRf084bNJ6gu+GGoNyC+hwitW/hg3Vc1z1ZbK5HWWTrDw8HdM/fEQ0UN++g7GXVN1GVctdQ==",
- "dependencies": {
- "aws4": "^1.13.0"
- },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/dynamodb": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@aws-lite/dynamodb/-/dynamodb-0.3.5.tgz",
- "integrity": "sha512-+gekgTcFmiOcZCfo62cgHcpCQYHo69wfPbI2nv4uN24YjO6nSjrwNHFZlJMPxAD1aKSPkTVoSbAVvBdzxlEu4Q==",
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/s3": {
- "version": "0.1.22",
- "resolved": "https://registry.npmjs.org/@aws-lite/s3/-/s3-0.1.22.tgz",
- "integrity": "sha512-9OL95fTvHV80JvFTxLx8hhWQ6DgwHUts02KpXITA8syCDnYgua2rNcpwQ5b6GZzpL7yNXU0dud/Y6edThbffig==",
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/sns": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/@aws-lite/sns/-/sns-0.0.6.tgz",
- "integrity": "sha512-TWApAplmlO15vQzq3GX6X9FMki6c1x6bq0X2PWgq5tiwVEFhNuuxs463uTEHoDmd7gGBgE0l8WhUgS6FPDOHfA==",
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/sqs": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/@aws-lite/sqs/-/sqs-0.2.2.tgz",
- "integrity": "sha512-GciHF5z1z8vW7kODjZI4ZsInClXRfLu7S6uB+keAcHezOKAMeJ8hHwGipV4ZV6p1xb3L8YkScLQOqZH032uvuQ==",
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-lite/ssm": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@aws-lite/ssm/-/ssm-0.2.3.tgz",
- "integrity": "sha512-pywo0EBU6LnLWicXHlWX7dSz3odJN7hK3pgtudSs5XFGONrcVKy4k0Zc+x85fixIf3/ZZAdB66ctT3D5li3Xpw==",
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-apigatewaymanagementapi": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewaymanagementapi/-/client-apigatewaymanagementapi-3.624.0.tgz",
- "integrity": "sha512-9rBrw7tkTexRPMgD11muW0HEswLp1X4LJEJYeqjsiBog8JwSDAvnT/kG63z3Hm1hu4tdwSIoWAFl7tF1TujfXw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-dynamodb": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.624.0.tgz",
- "integrity": "sha512-/xssTNmwL+au3JIRQLHwz6O1kF8R9lfmL1PocQ+9sxcL4titU9TGslUotvZjdbklp3LzfusQh9Svx5g8EaONSw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-endpoint-discovery": "3.620.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "@smithy/util-waiter": "^3.1.2",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
- },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-s3": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.624.0.tgz",
- "integrity": "sha512-A18tgTKC4ZTAwV8i3pkyAL1XDLgH7WGS5hZA/0FOntI5l+icztGZFF8CdeYWEAFnZA7SfHK6vmtEbIQDOzTTAA==",
- "dependencies": {
- "@aws-crypto/sha1-browser": "5.2.0",
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-bucket-endpoint": "3.620.0",
- "@aws-sdk/middleware-expect-continue": "3.620.0",
- "@aws-sdk/middleware-flexible-checksums": "3.620.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-location-constraint": "3.609.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-sdk-s3": "3.624.0",
- "@aws-sdk/middleware-ssec": "3.609.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/signature-v4-multi-region": "3.624.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@aws-sdk/xml-builder": "3.609.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/eventstream-serde-browser": "^3.0.5",
- "@smithy/eventstream-serde-config-resolver": "^3.0.3",
- "@smithy/eventstream-serde-node": "^3.0.4",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-blob-browser": "^3.1.2",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/hash-stream-node": "^3.1.2",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/md5-js": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-stream": "^3.1.3",
- "@smithy/util-utf8": "^3.0.0",
- "@smithy/util-waiter": "^3.1.2",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-sns": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.624.0.tgz",
- "integrity": "sha512-GjK1rTAQmSVd7Q2QYdWf0GT8hNoR2LjDaGlCyJUDzdvtpVMriV1Yvq5p8ACgc4qkArEIVNZ0iaPgzpn56OOEBA==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-sqs": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.624.0.tgz",
- "integrity": "sha512-2LSbsvstex9rIQDXNHJRYDz4mUcbep4ompvTADX8+7JlovzjKIODYiV5p35nq9rX/68HxxeSsPt8oz0zb8ESjw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-sdk-sqs": "3.622.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/md5-js": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-ssm": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.624.0.tgz",
- "integrity": "sha512-k30vbnYN/REYT/bckVz1pry2wjEKOr4R1GqIub2e2YDacHBkQp4CkxPpFXvPomW4Uc62GT4OliKGg+s8E1VTSg==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/client-sts": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "@smithy/util-waiter": "^3.1.2",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
- },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.624.0.tgz",
- "integrity": "sha512-EX6EF+rJzMPC5dcdsu40xSi2To7GSvdGQNIpe97pD9WvZwM9tRNQnNM4T6HA4gjV1L6Jwk8rBlG/CnveXtLEMw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.624.0.tgz",
- "integrity": "sha512-Ki2uKYJKKtfHxxZsiMTOvJoVRP6b2pZ1u3rcUb2m/nVgBPUfLdl8ZkGpqE29I+t5/QaS/sEdbn6cgMUZwl+3Dg==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.624.0"
- }
- },
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.624.0.tgz",
- "integrity": "sha512-k36fLZCb2nfoV/DKK3jbRgO/Yf7/R80pgYfMiotkGjnZwDmRvNN08z4l06L9C+CieazzkgRxNUzyppsYcYsQaw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/client-sso-oidc": "3.624.0",
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/credential-provider-node": "3.624.0",
- "@aws-sdk/middleware-host-header": "3.620.0",
- "@aws-sdk/middleware-logger": "3.609.0",
- "@aws-sdk/middleware-recursion-detection": "3.620.0",
- "@aws-sdk/middleware-user-agent": "3.620.0",
- "@aws-sdk/region-config-resolver": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@aws-sdk/util-user-agent-browser": "3.609.0",
- "@aws-sdk/util-user-agent-node": "3.614.0",
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/core": "^2.3.2",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/hash-node": "^3.0.3",
- "@smithy/invalid-dependency": "^3.0.3",
- "@smithy/middleware-content-length": "^3.0.5",
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-body-length-browser": "^3.0.0",
- "@smithy/util-body-length-node": "^3.0.0",
- "@smithy/util-defaults-mode-browser": "^3.0.14",
- "@smithy/util-defaults-mode-node": "^3.0.14",
- "@smithy/util-endpoints": "^2.0.5",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@aws-sdk/core": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.624.0.tgz",
- "integrity": "sha512-WyFmPbhRIvtWi7hBp8uSFy+iPpj8ccNV/eX86hwF4irMjfc/FtsGVIAeBXxXM/vGCjkdfEzOnl+tJ2XACD4OXg==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
"dependencies": {
- "@smithy/core": "^2.3.2",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/signature-v4": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-middleware": "^3.0.3",
- "fast-xml-parser": "4.4.1",
- "tslib": "^2.6.2"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.620.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz",
- "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
+ "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
+ "dev": true,
"engines": {
- "node": ">=16.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.622.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz",
- "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-stream": "^3.1.3",
- "tslib": "^2.6.2"
- },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
+ "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
+ "dev": true,
"engines": {
- "node": ">=16.0.0"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.624.0.tgz",
- "integrity": "sha512-mMoNIy7MO2WTBbdqMyLpbt6SZpthE6e0GkRYpsd0yozPt0RZopcBhEh+HG1U9Y1PVODo+jcMk353vAi61CfnhQ==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
+ "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
+ "dev": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.620.1",
- "@aws-sdk/credential-provider-http": "3.622.0",
- "@aws-sdk/credential-provider-process": "3.620.1",
- "@aws-sdk/credential-provider-sso": "3.624.0",
- "@aws-sdk/credential-provider-web-identity": "3.621.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/credential-provider-imds": "^3.2.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
},
"engines": {
- "node": ">=16.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.624.0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.624.0.tgz",
- "integrity": "sha512-vYyGK7oNpd81BdbH5IlmQ6zfaQqU+rPwsKTDDBeLRjshtrGXOEpfoahVpG9PX0ibu32IOWp4ZyXBNyVrnvcMOw==",
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dev": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.620.1",
- "@aws-sdk/credential-provider-http": "3.622.0",
- "@aws-sdk/credential-provider-ini": "3.624.0",
- "@aws-sdk/credential-provider-process": "3.620.1",
- "@aws-sdk/credential-provider-sso": "3.624.0",
- "@aws-sdk/credential-provider-web-identity": "3.621.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/credential-provider-imds": "^3.2.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "type-fest": "^0.20.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.620.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz",
- "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@eslint/js": {
+ "version": "8.46.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
+ "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
+ "dev": true,
"engines": {
- "node": ">=16.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.624.0.tgz",
- "integrity": "sha512-A02bayIjU9APEPKr3HudrFHEx0WfghoSPsPopckDkW7VBqO4wizzcxr75Q9A3vNX+cwg0wCN6UitTNe6pVlRaQ==",
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+ "dev": true,
"dependencies": {
- "@aws-sdk/client-sso": "3.624.0",
- "@aws-sdk/token-providers": "3.614.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=10.10.0"
}
},
- "node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.621.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz",
- "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
"engines": {
- "node": ">=16.0.0"
+ "node": ">=12.22"
},
- "peerDependencies": {
- "@aws-sdk/client-sts": "^3.621.0"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@aws-sdk/endpoint-cache": {
- "version": "3.572.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz",
- "integrity": "sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q==",
- "dependencies": {
- "mnemonist": "0.38.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
},
- "node_modules/@aws-sdk/lib-dynamodb": {
- "version": "3.382.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.382.0.tgz",
- "integrity": "sha512-vi8fRdOpb+/Ii2CCOOchgcPtZ3IcVhT4vZchg1rDq/6MdIN9PX2Fe2j+rmxdovL7PpIw/Kh4XKe1A2Uh9T+fDQ==",
- "dependencies": {
- "@aws-sdk/util-dynamodb": "3.382.0",
- "tslib": "^2.5.0"
- },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=14.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "peerDependencies": {
- "@aws-sdk/client-dynamodb": "^3.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-bucket-endpoint": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz",
- "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-arn-parser": "3.568.0",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-config-provider": "^3.0.0",
- "tslib": "^2.6.2"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
},
- "engines": {
- "node": ">=16.0.0"
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
}
},
- "node_modules/@aws-sdk/middleware-endpoint-discovery": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz",
- "integrity": "sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ==",
- "dependencies": {
- "@aws-sdk/endpoint-cache": "3.572.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-expect-continue": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz",
- "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "engines": {
- "node": ">=16.0.0"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz",
- "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==",
- "dependencies": {
- "@aws-crypto/crc32": "5.2.0",
- "@aws-crypto/crc32c": "5.2.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/is-array-buffer": "^3.0.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz",
- "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-location-constraint": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz",
- "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz",
- "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz",
- "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.624.0.tgz",
- "integrity": "sha512-HUiaZ6+JXcG0qQda10ZxDGJvbT71YUp1zX+oikIsfTUeq0N75O82OY3Noqd7cyjEVtsGSo/y0e6U3aV1hO+wPw==",
- "dependencies": {
- "@aws-sdk/core": "3.624.0",
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-arn-parser": "3.568.0",
- "@smithy/core": "^2.3.2",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/signature-v4": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-stream": "^3.1.3",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-sdk-sqs": {
- "version": "3.622.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.622.0.tgz",
- "integrity": "sha512-kOPX94jlVcvH7Wutzag99L+BSjT6LjXxW7Ntc02/oywYX6Gft4YdbeUYdcGYYHWDy/IT6jJ2wMJfFUEEh8U/9A==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-hex-encoding": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-ssec": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz",
- "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.620.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz",
- "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@aws-sdk/util-endpoints": "3.614.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
},
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
}
},
- "node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.614.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz",
- "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.3",
- "tslib": "^2.6.2"
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
},
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
}
},
- "node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.624.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.624.0.tgz",
- "integrity": "sha512-gu1SfCyUPnq4s0AI1xdAl0whHwhkTyltg4QZWc4vnZvEVudCpJVVxEcroUHYQIO51YyVUT9jSMS1SVRe5VqPEw==",
- "dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.624.0",
- "@aws-sdk/types": "3.609.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/signature-v4": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
},
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
}
},
- "node_modules/@aws-sdk/token-providers": {
- "version": "3.614.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz",
- "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==",
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
"dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "@emnapi/runtime": "^1.2.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "peerDependencies": {
- "@aws-sdk/client-sso-oidc": "^3.614.0"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/types": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
- "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@aws-sdk/util-arn-parser": {
- "version": "3.568.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz",
- "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==",
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@aws-sdk/util-dynamodb": {
- "version": "3.382.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.382.0.tgz",
- "integrity": "sha512-9Hlk8M1xprs6MWiBhr0tKZIiP4lxnnjcT/WTIvs/9p8YCal2byI6O7MSkae5nBh3g34the4CGbyAcqvEF4D+Yg==",
- "dependencies": {
- "tslib": "^2.5.0"
- },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@aws-sdk/util-endpoints": {
- "version": "3.614.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz",
- "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==",
- "dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-endpoints": "^2.0.5",
- "tslib": "^2.6.2"
- },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
"engines": {
- "node": ">=16.0.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@aws-sdk/util-locate-window": {
- "version": "3.568.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz",
- "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz",
- "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==",
+ "node_modules/@liveblocks/client": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/@liveblocks/client/-/client-2.15.1.tgz",
+ "integrity": "sha512-R4zpISMYxQzMQxCbGWldVCDmvtz8I/32ihyqG/SYccK1UfJxrlFaHyy0Y8DvxYoKLnlmfddqJ6phkuSWodEEMg==",
+ "license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/types": "^3.3.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
+ "@liveblocks/core": "2.15.1"
}
},
- "node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.614.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz",
- "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==",
+ "node_modules/@liveblocks/core": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/@liveblocks/core/-/core-2.15.1.tgz",
+ "integrity": "sha512-/rVOTgE8ACFOSyIKJ8uMyF/NKANqB3bCymfa3yhB9vrQ7CPKfAkhjyD7TFfHiWqthyYQeOaio6084wijHnpV6w==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dependencies": {
- "@aws-sdk/types": "3.609.0",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
+ "node": ">= 8"
}
},
- "node_modules/@aws-sdk/xml-builder": {
- "version": "3.609.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz",
- "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"engines": {
- "node": ">=16.0.0"
+ "node": ">= 8"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
- "dev": true,
- "peer": true,
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">= 8"
}
},
- "node_modules/@babel/compat-data": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
- "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
+ "node_modules/@oslojs/encoding": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz",
+ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==",
+ "license": "MIT"
},
- "node_modules/@babel/core": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz",
- "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==",
- "dev": true,
- "peer": true,
+ "node_modules/@preact/signals": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@preact/signals/-/signals-1.3.1.tgz",
+ "integrity": "sha512-nNvSF2O7RDzxp1Rm7SkA5QhN1a2kN8pGE8J5o6UjgDof0F0Vlg6d6HUUVxxqZ1uJrN9xnH2DpL6rpII3Es0SsQ==",
+ "license": "MIT",
"dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.9",
- "@babel/helper-compilation-targets": "^7.22.9",
- "@babel/helper-module-transforms": "^7.22.9",
- "@babel/helpers": "^7.22.6",
- "@babel/parser": "^7.22.7",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.8",
- "@babel/types": "^7.22.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.1"
+ "@preact/signals-core": "^1.7.0"
},
- "engines": {
- "node": ">=6.9.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
},
+ "peerDependencies": {
+ "preact": "10.x"
+ }
+ },
+ "node_modules/@preact/signals-core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.8.0.tgz",
+ "integrity": "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/babel"
+ "url": "https://opencollective.com/preact"
}
},
- "node_modules/@babel/eslint-parser": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.9.tgz",
- "integrity": "sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==",
- "dev": true,
+ "node_modules/@prefresh/babel-plugin": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.5.1.tgz",
+ "integrity": "sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==",
+ "license": "MIT"
+ },
+ "node_modules/@prefresh/core": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.5.3.tgz",
+ "integrity": "sha512-nDzxj0tA1/M6APNAWqaxkZ+3sTdPHESa+gol4+Bw7rMc2btWdkLoNH7j9rGhUb8SThC0Vz0VoXtq+U+9azGLHg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "preact": "^10.0.0"
+ }
+ },
+ "node_modules/@prefresh/utils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.2.0.tgz",
+ "integrity": "sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==",
+ "license": "MIT"
+ },
+ "node_modules/@prefresh/vite": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.4.6.tgz",
+ "integrity": "sha512-miYbTl2J1YNaQJWyWHJzyIpNh7vKUuXC1qCDRzPeWjhQ+9bxeXkUBGDGd9I1f37R5GQYi1S65AN5oR0BR2WzvQ==",
+ "license": "MIT",
"dependencies": {
- "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ "@babel/core": "^7.22.1",
+ "@prefresh/babel-plugin": "0.5.1",
+ "@prefresh/core": "^1.5.1",
+ "@prefresh/utils": "^1.2.0",
+ "@rollup/pluginutils": "^4.2.1"
},
"peerDependencies": {
- "@babel/core": ">=7.11.0",
- "eslint": "^7.5.0 || ^8.0.0"
+ "preact": "^10.4.0",
+ "vite": ">=2.0.0"
}
},
- "node_modules/@babel/generator": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz",
- "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==",
- "dev": true,
- "peer": true,
+ "node_modules/@prefresh/vite/node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.23.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
},
"engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz",
- "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.9",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
- "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
- "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.6",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz",
- "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==",
- "dev": true,
- "peer": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
- "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz",
- "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.5",
- "@babel/types": "^7.23.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz",
- "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@begin/api": {
- "version": "1.9.4",
- "resolved": "https://registry.npmjs.org/@begin/api/-/api-1.9.4.tgz",
- "integrity": "sha512-QRhRqTrYXLxITiaYOOwTfhx6ueauaOqM2T2uEPnYBNTMJmvDgHi8cZ8v4EbI5dUk7txcRkBkZOWT4zfpSHV/aA==",
- "dev": true,
- "dependencies": {
- "@begin/chunker": "^1.1.2",
- "tiny-json-http": "^7.5.1",
- "zip-dir": "^2.0.0"
- }
- },
- "node_modules/@begin/chunker": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@begin/chunker/-/chunker-1.1.2.tgz",
- "integrity": "sha512-FVrND64Jd/Ad6Cmkr7hMccRAqhoQjTp0x5MZlhJcvILnyyxxKRuegl73qsu36YFXPLatZcNP6IVNZH6d935wFA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@begin/data": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@begin/data/-/data-4.0.2.tgz",
- "integrity": "sha512-qMHXC5SY0cRCoewsgKWBzRDS5A6Jgn2yYFKamfCfMgCvPI/wK81Enodgjuv76PoluLqlzma9c9UA33KujsXzMw==",
- "dependencies": {
- "@begin/hashid": "^1.0.0",
- "run-parallel": "^1.2.0",
- "run-waterfall": "^1.1.7"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@begin/deploy": {
- "version": "0.22.5",
- "resolved": "https://registry.npmjs.org/@begin/deploy/-/deploy-0.22.5.tgz",
- "integrity": "sha512-EgX1LkqLoNEr9B0dGhs09Vnd/0MCXnoZ0lBPn28LKcIFG2QOuwBsuZwEkrnaMJ0iYfoaF618RZPot7D+DzGnBg==",
- "dev": true,
- "dependencies": {
- "@architect/inventory": "4.0.5",
- "@architect/parser": "7.0.1",
- "@architect/utils": "4.0.6",
- "@begin/api": "1.9.4",
- "@colors/colors": "1.6.0",
- "@enhance/cli": "1.2.0",
- "@enhance/starter-project": "8.0.0",
- "enquirer": "2.4.1",
- "minimist": "1.2.8",
- "node-machine-id": "1.1.12",
- "restore-cursor": "3.1.0",
- "strip-ansi": "6.0.1",
- "tiny-json-http": "7.5.1",
- "tmp": "0.2.3",
- "update-notifier-cjs": "5.1.6",
- "ws": "8.17.1"
- },
- "bin": {
- "begin": "src/index.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@begin/deploy/node_modules/@architect/inventory": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@architect/inventory/-/inventory-4.0.5.tgz",
- "integrity": "sha512-lDmH3iOejxWDLolI8tFuLgaqgT1ANuB4TrS3qHno43v+Tx+EEi5Nw6HWJ8LJ6onuStpzNWTMJtSssaJgJUSHrQ==",
- "dev": true,
- "dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/parser": "~7.0.1",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/ssm": "^0.2.3",
- "lambda-runtimes": "~2.0.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@begin/deploy/node_modules/@architect/parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-7.0.1.tgz",
- "integrity": "sha512-T4Rr/eQbtg/gPvS4HcXR7zYxLJ3gEh6pSKj0s/Y1IrvJY9QG4BDAVZgE7AYGfzqymwIF0pUI2mQ91CLi2CTnQw==",
- "dev": true,
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@begin/deploy/node_modules/@architect/utils": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz",
- "integrity": "sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==",
- "dev": true,
- "dependencies": {
- "@aws-lite/client": "^0.21.1",
- "chalk": "4.1.2",
- "glob": "~10.3.12",
- "path-sort": "~0.1.0",
- "restore-cursor": "3.1.0",
- "run-series": "~1.1.9",
- "run-waterfall": "~1.1.7",
- "sha": "~3.0.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@begin/deploy/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@begin/deploy/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@begin/deploy/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@begin/deploy/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@begin/deploy/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@begin/deploy/node_modules/glob": {
- "version": "10.3.16",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
- "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@begin/deploy/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@begin/deploy/node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "dev": true,
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/@begin/deploy/node_modules/lambda-runtimes": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lambda-runtimes/-/lambda-runtimes-2.0.2.tgz",
- "integrity": "sha512-pGILm2NHRLtQr1f3E3Kbidou8H9bUFoAxB4pUNAv4NOnw+X4N3MQkoWjNY5f7JS+KJQjsr4mpFuCCqrH6wHf+Q==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@begin/deploy/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@begin/deploy/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/@begin/deploy/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@begin/hashid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@begin/hashid/-/hashid-1.0.0.tgz",
- "integrity": "sha512-w+U9klEtRkt7hyW/f+/SvwPgJ4CTMO2ENddisX9dGgLUZKu+iKpb/IhYnQWIt9/Nnm/5DkApmiHGimPs621wwA=="
- },
- "node_modules/@begin/parse5": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/@begin/parse5/-/parse5-0.0.4.tgz",
- "integrity": "sha512-1H5S1AcFqpQfBMG0z4z7URFb5jWCrILIH9MkXSmTsyYd4hj4kgJnpXHGELJE9HnXH1maI/WfHi5j+udDVkvZ9g==",
- "dependencies": {
- "parse5": "^7.0.0"
- }
- },
- "node_modules/@colors/colors": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
- "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
- "dev": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/@enhance/arc-plugin-enhance": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@enhance/arc-plugin-enhance/-/arc-plugin-enhance-11.0.4.tgz",
- "integrity": "sha512-awwLK/AGv2aBFWaUpk/syucPEL+/xfgtfz5nczfsd+6WDAL4bpjbjjWmxln/GPG/BJK39Huz5bCAjCX3VzicdA==",
- "dependencies": {
- "@architect/asap": "^7.0.10",
- "@architect/functions": "^8.1.6",
- "@begin/data": "^5.0.5",
- "@enhance/arc-plugin-rollup": "^2.0.0",
- "@enhance/enhance-style-transform": "^0.1.2",
- "@enhance/import-transform": "^4.0.1",
- "@enhance/ssr": "^4.0.3",
- "glob": "^9.3.5",
- "header-timers": "^0.3.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@enhance/arc-plugin-enhance/node_modules/@begin/data": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@begin/data/-/data-5.0.5.tgz",
- "integrity": "sha512-/OVW944vm6rw7qp9CcVbswzcdXTzVNcVTvn5ajFtAFCE9WwjsvjmhOnyMzEAWkb1eePbB6FmQC9+PX/XjKpI6g==",
- "dependencies": {
- "@aws-lite/client": "^0.21.5",
- "@aws-lite/dynamodb": "^0.3.4",
- "@aws-lite/ssm": "^0.2.3",
- "@begin/hashid": "^1.0.0",
- "run-parallel": "^1.2.0",
- "run-waterfall": "^1.1.7"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@enhance/arc-plugin-enhance/node_modules/@enhance/ssr": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@enhance/ssr/-/ssr-4.0.3.tgz",
- "integrity": "sha512-WJoF8Bv9EXovJXpB0JyXavqkz5KTwPKSQG8nHxtT++F+Pm6iIdtUQjNG+VVSBmOryC0pq/sZNtBxiC0g9xzksQ==",
- "dependencies": {
- "@begin/parse5": "^0.0.4",
- "nanoid": "^4.0.1"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@enhance/arc-plugin-enhance/node_modules/header-timers": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/header-timers/-/header-timers-0.3.0.tgz",
- "integrity": "sha512-Jzdm9z9Qg/9zioR4Vdz9aJXLeelkbVrCluqYTCuBp83FB9itdlDXJS+Rs+XQhH4C6i+q6bSd8Q4tVF/bdfLXEQ=="
- },
- "node_modules/@enhance/arc-plugin-rollup": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@enhance/arc-plugin-rollup/-/arc-plugin-rollup-2.0.0.tgz",
- "integrity": "sha512-+9o61Zm91hdpi6NV5QDbqma7Zi0ZtgxO5itOYIo4tn7gwNO9KAoJNT7cK6ZKzVyaNxcSKTceiXYYQo5Fe7Hkrw==",
- "dependencies": {
- "@rollup/plugin-commonjs": "^24.0.1",
- "@rollup/plugin-node-resolve": "^15.0.1",
- "rollup": "^3.7.4"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@enhance/cli": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@enhance/cli/-/cli-1.2.0.tgz",
- "integrity": "sha512-p/yZUeeqxB4BsHLP9HJcW1gTSLnZKJj+/7bk4rO/rZSf0h4sQLhBCpDQB+PeYOWtxsQru+0qq/ncyV5lzy+A9g==",
- "dev": true,
- "dependencies": {
- "@apidevtools/json-schema-ref-parser": "9.1.0",
- "@architect/inventory": "^4.0.3",
- "@architect/parser": "^6.0.3",
- "@architect/sandbox": "^6.0.2",
- "@architect/utils": "^4.0.3",
- "@colors/colors": "1.6.0",
- "@enhance/create": "^4.1.2",
- "enquirer": "^2.4.1",
- "escodegen": "^2.1.0",
- "esprima": "^4.0.1",
- "is-potential-custom-element-name": "^1.0.1",
- "jsonschema": "^1.4.1",
- "lambda-runtimes": "^2.0.2",
- "minimist": "^1.2.8",
- "node-machine-id": "^1.1.12",
- "pluralize": "^8.0.0",
- "restore-cursor": "^3.1.0",
- "strip-ansi": "^6.0.1",
- "tiny-json-http": "^7.5.1",
- "tmp": "^0.2.3",
- "ws": "^8.16.0"
- },
- "bin": {
- "enhance": "src/index.js"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@enhance/cli/node_modules/@architect/inventory": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@architect/inventory/-/inventory-4.0.5.tgz",
- "integrity": "sha512-lDmH3iOejxWDLolI8tFuLgaqgT1ANuB4TrS3qHno43v+Tx+EEi5Nw6HWJ8LJ6onuStpzNWTMJtSssaJgJUSHrQ==",
- "dev": true,
- "dependencies": {
- "@architect/asap": "~7.0.10",
- "@architect/parser": "~7.0.1",
- "@architect/utils": "~4.0.6",
- "@aws-lite/client": "^0.21.1",
- "@aws-lite/ssm": "^0.2.3",
- "lambda-runtimes": "~2.0.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@enhance/cli/node_modules/@architect/inventory/node_modules/@architect/parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-7.0.1.tgz",
- "integrity": "sha512-T4Rr/eQbtg/gPvS4HcXR7zYxLJ3gEh6pSKj0s/Y1IrvJY9QG4BDAVZgE7AYGfzqymwIF0pUI2mQ91CLi2CTnQw==",
- "dev": true,
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@enhance/cli/node_modules/@architect/utils": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz",
- "integrity": "sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==",
- "dev": true,
- "dependencies": {
- "@aws-lite/client": "^0.21.1",
- "chalk": "4.1.2",
- "glob": "~10.3.12",
- "path-sort": "~0.1.0",
- "restore-cursor": "3.1.0",
- "run-series": "~1.1.9",
- "run-waterfall": "~1.1.7",
- "sha": "~3.0.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@enhance/cli/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@enhance/cli/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@enhance/cli/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@enhance/cli/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@enhance/cli/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@enhance/cli/node_modules/glob": {
- "version": "10.3.16",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
- "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@enhance/cli/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@enhance/cli/node_modules/jackspeak": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
- "dev": true,
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/@enhance/cli/node_modules/lambda-runtimes": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lambda-runtimes/-/lambda-runtimes-2.0.2.tgz",
- "integrity": "sha512-pGILm2NHRLtQr1f3E3Kbidou8H9bUFoAxB4pUNAv4NOnw+X4N3MQkoWjNY5f7JS+KJQjsr4mpFuCCqrH6wHf+Q==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@enhance/cli/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@enhance/cli/node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/@enhance/cli/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@enhance/create": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@enhance/create/-/create-4.1.2.tgz",
- "integrity": "sha512-+SkOg/ELtzqIGTTt5mn/25LvGoQUykV8WHVekxvEPVj8Ei1Ru3XLlNDvMODVwZUeVEK91tO6EMtln55NZPak8Q==",
- "dev": true,
- "dependencies": {
- "@architect/parser": "^6.0.3",
- "isomorphic-git": "^1.25.6"
- },
- "bin": {
- "enhance-create": "index.js"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@enhance/css-parser": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@enhance/css-parser/-/css-parser-1.0.0.tgz",
- "integrity": "sha512-DG18Jwxvf0WvUtA8VEA+axaIq0aoJzGTd25kdeLDPQcNnq3bWG+TUMPi8oa4btVXwHVyCR7Xsy0jW80m1ZwPow==",
- "dependencies": {
- "inherits": "^2.0.4",
- "source-map": "^0.6.1",
- "source-map-resolve": "^0.6.0"
- }
- },
- "node_modules/@enhance/enhance-style-transform": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@enhance/enhance-style-transform/-/enhance-style-transform-0.1.2.tgz",
- "integrity": "sha512-Hx/c5PfJl4XYToZaKL0b3o54rq4JX5zKD6Z+Pz6BSygnX0xOOHdWriaXxFKDUl1X/VVVlJM3FWjYj93/a7WSPg==",
- "dependencies": {
- "@enhance/css-parser": "^1.0.0"
- }
- },
- "node_modules/@enhance/import-transform": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@enhance/import-transform/-/import-transform-4.0.1.tgz",
- "integrity": "sha512-09/9Y6gp3CzaB82822ekwRe5Xtzhh07m2Gjb+1xLu+CMGo3ltjSYjqYr5Twbq9tGGn5elS3rt5/7CJ240K2ylA==",
- "dependencies": {
- "@architect/functions": "^8.0.4"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@enhance/ssr": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@enhance/ssr/-/ssr-3.5.2.tgz",
- "integrity": "sha512-gbHPbfHqXzGK1267hzXGy394kVFntYOERguh6/tQeRnZ1Cwxt79OQPpVLU/gITnkXB9A9oOa9WGzkjKDoW2qbw==",
- "dev": true,
- "dependencies": {
- "@begin/parse5": "^0.0.4",
- "nanoid": "^4.0.1"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@enhance/starter-project": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@enhance/starter-project/-/starter-project-8.0.0.tgz",
- "integrity": "sha512-cVe4cOhP/dzOjt7tj6biryJDCR8F5yzbwwsfXrIiLn+05CEWio/7IUZK0hb7uI3rYpVvQmA9yPLhU1GJBYwxcA==",
- "dev": true,
- "dependencies": {
- "@enhance/arc-plugin-enhance": "^11.0.0",
- "@enhance/arc-plugin-styles": "^5.0.5",
- "@enhance/styles-cribsheet": "^0.0.11"
- }
- },
- "node_modules/@enhance/starter-project/node_modules/@enhance/arc-plugin-styles": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@enhance/arc-plugin-styles/-/arc-plugin-styles-5.0.6.tgz",
- "integrity": "sha512-LHTUDlz1KxcvB1ZZ2azLdixkCnxcAyYfS6XhUnzP+Nr3au331T75q4k73liCbPOaS0TEtYRPylcSGJwMTVH6HQ==",
- "dev": true,
- "dependencies": {
- "@architect/functions": "^8.0.4",
- "@enhance/styles": "^6.4.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@enhance/starter-project/node_modules/@enhance/styles": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@enhance/styles/-/styles-6.5.0.tgz",
- "integrity": "sha512-Bne/vDaBHQPG5r3LZ9o1+5VlZRSiq+E51MNVfP+HNsWs5af7uDnezGLpNJHaMjl1MWuCt42bhM4oJv1cYyYGQQ==",
- "dev": true,
- "dependencies": {
- "color-to-hsla": "^0.1.1"
- },
- "bin": {
- "enhance-styles": "cli.mjs"
- }
- },
- "node_modules/@enhance/styles-cribsheet": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/@enhance/styles-cribsheet/-/styles-cribsheet-0.0.11.tgz",
- "integrity": "sha512-ll3U5+j3ilEDrBUL1J6LT7czEjCZGk++evUVlzEz9fS9nSKPqEQpCcBjmu/Iu0okoBpcwj313IZ4jx10RBT+zA==",
- "dev": true,
- "dependencies": {
- "@architect/functions": "^8.0.4",
- "@enhance/arc-plugin-enhance": "^9.4.9",
- "css-tree": "^2.3.1"
- }
- },
- "node_modules/@enhance/styles-cribsheet/node_modules/@begin/data": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@begin/data/-/data-5.0.5.tgz",
- "integrity": "sha512-/OVW944vm6rw7qp9CcVbswzcdXTzVNcVTvn5ajFtAFCE9WwjsvjmhOnyMzEAWkb1eePbB6FmQC9+PX/XjKpI6g==",
- "dev": true,
- "dependencies": {
- "@aws-lite/client": "^0.21.5",
- "@aws-lite/dynamodb": "^0.3.4",
- "@aws-lite/ssm": "^0.2.3",
- "@begin/hashid": "^1.0.0",
- "run-parallel": "^1.2.0",
- "run-waterfall": "^1.1.7"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@enhance/styles-cribsheet/node_modules/@enhance/arc-plugin-enhance": {
- "version": "9.5.1",
- "resolved": "https://registry.npmjs.org/@enhance/arc-plugin-enhance/-/arc-plugin-enhance-9.5.1.tgz",
- "integrity": "sha512-uH7xUhbLkmWuGIAUM9+koiKQywEmM1p+OI5irWJEk+uZ/zOLwpAVJaF8qytmnJEBmfj/b21hFzDyEBISOdPGxA==",
- "dev": true,
- "dependencies": {
- "@architect/asap": "^7.0.4",
- "@architect/functions": "^8.0.1",
- "@begin/data": "^5.0.1",
- "@enhance/arc-plugin-rollup": "^2.0.0",
- "@enhance/enhance-style-transform": "^0.1.2",
- "@enhance/import-transform": "^4.0.1",
- "@enhance/ssr": "^3.5.1",
- "glob": "^9.3.5",
- "header-timers": "^0.2.0",
- "path-to-regexp": "^6.2.1"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz",
- "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz",
- "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz",
- "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz",
- "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz",
- "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz",
- "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz",
- "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz",
- "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==",
- "cpu": [
- "arm"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz",
- "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz",
- "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz",
- "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==",
- "cpu": [
- "loong64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz",
- "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==",
- "cpu": [
- "mips64el"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz",
- "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==",
- "cpu": [
- "ppc64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz",
- "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==",
- "cpu": [
- "riscv64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz",
- "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==",
- "cpu": [
- "s390x"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz",
- "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz",
- "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz",
- "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz",
- "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz",
- "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz",
- "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz",
- "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
- "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
- "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.46.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
- "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
- "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@jsdevtools/ono": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
- "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
- "dev": true
- },
- "node_modules/@liveblocks/client": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@liveblocks/client/-/client-1.2.0.tgz",
- "integrity": "sha512-eS63Om7F0WvLpu2TBJYXM45W8c9MbzO7odeh8zwkl50sk8DjDJLvikgW/3mhU8ncogh1zJQpgSIYMFHd5CbNjA==",
- "dependencies": {
- "@liveblocks/core": "1.2.0"
- }
- },
- "node_modules/@liveblocks/core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@liveblocks/core/-/core-1.2.0.tgz",
- "integrity": "sha512-d0/giXWGq049B0PqE9t1j8K+feMchZlRWBfpv/gNEfUa8Clk9114kLVzKZsm78f8v0y0d27sQhv2b6gUlnPskQ=="
- },
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
- "version": "5.1.1-v1",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
- "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
- "dev": true,
- "dependencies": {
- "eslint-scope": "5.1.1"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@pnpm/config.env-replace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
- "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
- "dev": true,
- "engines": {
- "node": ">=12.22.0"
- }
- },
- "node_modules/@pnpm/network.ca-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
- "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "4.2.10"
- },
- "engines": {
- "node": ">=12.22.0"
- }
- },
- "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
- },
- "node_modules/@pnpm/npm-conf": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
- "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
- "dev": true,
- "dependencies": {
- "@pnpm/config.env-replace": "^1.1.0",
- "@pnpm/network.ca-file": "^1.0.1",
- "config-chain": "^1.1.11"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@rollup/plugin-commonjs": {
- "version": "24.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz",
- "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==",
- "dependencies": {
- "@rollup/pluginutils": "^5.0.1",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.2",
- "glob": "^8.0.3",
- "is-reference": "1.2.1",
- "magic-string": "^0.27.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.68.0||^3.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
- }
- },
- "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@rollup/plugin-commonjs/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@rollup/plugin-node-resolve": {
- "version": "15.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz",
- "integrity": "sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==",
- "dependencies": {
- "@rollup/pluginutils": "^5.0.1",
- "@types/resolve": "1.20.2",
- "deepmerge": "^4.2.2",
- "is-builtin-module": "^3.2.1",
- "is-module": "^1.0.0",
- "resolve": "^1.22.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.78.0||^3.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
+ "node": ">= 8.0.0"
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
- "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
+ "license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "picomatch": "^4.0.2"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
@@ -3873,705 +1815,494 @@
}
}
},
- "node_modules/@smithy/abort-controller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz",
- "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/chunked-blob-reader": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz",
- "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==",
- "dependencies": {
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/chunked-blob-reader-native": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz",
- "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==",
- "dependencies": {
- "@smithy/util-base64": "^3.0.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/config-resolver": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz",
- "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==",
- "dependencies": {
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "@smithy/util-config-provider": "^3.0.0",
- "@smithy/util-middleware": "^3.0.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/core": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz",
- "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==",
- "dependencies": {
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-retry": "^3.0.14",
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-middleware": "^3.0.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/credential-provider-imds": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz",
- "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==",
- "dependencies": {
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/eventstream-codec": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz",
- "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==",
- "dependencies": {
- "@aws-crypto/crc32": "5.2.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-hex-encoding": "^3.0.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/eventstream-serde-browser": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz",
- "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==",
- "dependencies": {
- "@smithy/eventstream-serde-universal": "^3.0.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-config-resolver": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz",
- "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-node": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz",
- "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==",
- "dependencies": {
- "@smithy/eventstream-serde-universal": "^3.0.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "license": "MIT",
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-universal": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz",
- "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==",
- "dependencies": {
- "@smithy/eventstream-codec": "^3.1.2",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "node": ">=12"
},
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@smithy/fetch-http-handler": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz",
- "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==",
- "dependencies": {
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/querystring-builder": "^3.0.3",
- "@smithy/types": "^3.3.0",
- "@smithy/util-base64": "^3.0.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/hash-blob-browser": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz",
- "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==",
- "dependencies": {
- "@smithy/chunked-blob-reader": "^3.0.0",
- "@smithy/chunked-blob-reader-native": "^3.0.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@smithy/hash-node": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz",
- "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz",
+ "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
},
- "node_modules/@smithy/hash-stream-node": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz",
- "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz",
+ "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
},
- "node_modules/@smithy/invalid-dependency": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz",
- "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- }
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz",
+ "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@smithy/is-array-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
- "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz",
+ "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@smithy/md5-js": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz",
- "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- }
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz",
+ "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
},
- "node_modules/@smithy/middleware-content-length": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz",
- "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==",
- "dependencies": {
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz",
+ "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
},
- "node_modules/@smithy/middleware-endpoint": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz",
- "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==",
- "dependencies": {
- "@smithy/middleware-serde": "^3.0.3",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "@smithy/url-parser": "^3.0.3",
- "@smithy/util-middleware": "^3.0.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz",
+ "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/middleware-retry": {
- "version": "3.0.14",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz",
- "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==",
- "dependencies": {
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/service-error-classification": "^3.0.3",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-retry": "^3.0.3",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz",
+ "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/middleware-serde": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz",
- "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz",
+ "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/middleware-stack": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz",
- "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz",
+ "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/node-config-provider": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz",
- "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==",
- "dependencies": {
- "@smithy/property-provider": "^3.1.3",
- "@smithy/shared-ini-file-loader": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz",
+ "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/node-http-handler": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz",
- "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==",
- "dependencies": {
- "@smithy/abort-controller": "^3.1.1",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/querystring-builder": "^3.0.3",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz",
+ "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/property-provider": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz",
- "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz",
+ "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/protocol-http": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz",
- "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz",
+ "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/querystring-builder": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz",
- "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "@smithy/util-uri-escape": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz",
+ "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/querystring-parser": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz",
- "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz",
+ "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@smithy/service-error-classification": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz",
- "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==",
- "dependencies": {
- "@smithy/types": "^3.3.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz",
+ "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@smithy/shared-ini-file-loader": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz",
- "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz",
+ "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@smithy/signature-v4": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz",
- "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==",
- "dependencies": {
- "@smithy/is-array-buffer": "^3.0.0",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-hex-encoding": "^3.0.0",
- "@smithy/util-middleware": "^3.0.3",
- "@smithy/util-uri-escape": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz",
+ "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@smithy/smithy-client": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz",
- "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==",
+ "node_modules/@shikijs/core": {
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz",
+ "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==",
+ "license": "MIT",
"dependencies": {
- "@smithy/middleware-endpoint": "^3.1.0",
- "@smithy/middleware-stack": "^3.0.3",
- "@smithy/protocol-http": "^4.1.0",
- "@smithy/types": "^3.3.0",
- "@smithy/util-stream": "^3.1.3",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@shikijs/engine-javascript": "1.24.4",
+ "@shikijs/engine-oniguruma": "1.24.4",
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.4"
}
},
- "node_modules/@smithy/types": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz",
- "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==",
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz",
+ "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "oniguruma-to-es": "0.8.1"
}
},
- "node_modules/@smithy/url-parser": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz",
- "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==",
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz",
+ "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==",
+ "license": "MIT",
"dependencies": {
- "@smithy/querystring-parser": "^3.0.3",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1"
}
},
- "node_modules/@smithy/util-base64": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz",
- "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==",
+ "node_modules/@shikijs/types": {
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz",
+ "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==",
+ "license": "MIT",
"dependencies": {
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4"
}
},
- "node_modules/@smithy/util-body-length-browser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz",
- "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==",
- "dependencies": {
- "tslib": "^2.6.2"
- }
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz",
+ "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==",
+ "license": "MIT"
},
- "node_modules/@smithy/util-body-length-node": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz",
- "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==",
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@types/ms": "*"
}
},
- "node_modules/@smithy/util-buffer-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz",
- "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==",
- "dependencies": {
- "@smithy/is-array-buffer": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "license": "MIT"
},
- "node_modules/@smithy/util-config-provider": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz",
- "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==",
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@types/unist": "*"
}
},
- "node_modules/@smithy/util-defaults-mode-browser": {
- "version": "3.0.14",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz",
- "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==",
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
"dependencies": {
- "@smithy/property-provider": "^3.1.3",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 10.0.0"
+ "@types/unist": "*"
}
},
- "node_modules/@smithy/util-defaults-mode-node": {
- "version": "3.0.14",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz",
- "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==",
- "dependencies": {
- "@smithy/config-resolver": "^3.0.5",
- "@smithy/credential-provider-imds": "^3.2.0",
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/property-provider": "^3.1.3",
- "@smithy/smithy-client": "^3.1.12",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
+ "license": "MIT"
},
- "node_modules/@smithy/util-endpoints": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz",
- "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==",
+ "node_modules/@types/nlcst": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz",
+ "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==",
+ "license": "MIT",
"dependencies": {
- "@smithy/node-config-provider": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@types/unist": "*"
}
},
- "node_modules/@smithy/util-hex-encoding": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz",
- "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==",
+ "node_modules/@types/node": {
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.4.tgz",
+ "integrity": "sha512-99l6wv4HEzBQhvaU/UGoeBoCK61SCROQaCCGyQSgX2tEQ3rKkNZ2S7CEWnS/4s1LV+8ODdK21UeyR1fHP2mXug==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "undici-types": "~6.20.0"
}
},
- "node_modules/@smithy/util-middleware": {
+ "node_modules/@types/unist": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz",
- "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==",
- "dependencies": {
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
},
- "node_modules/@smithy/util-retry": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz",
- "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==",
- "dependencies": {
- "@smithy/service-error-classification": "^3.0.3",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "license": "ISC"
},
- "node_modules/@smithy/util-stream": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz",
- "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==",
+ "node_modules/@volar/kit": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.11.tgz",
+ "integrity": "sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==",
+ "license": "MIT",
"dependencies": {
- "@smithy/fetch-http-handler": "^3.2.4",
- "@smithy/node-http-handler": "^3.1.4",
- "@smithy/types": "^3.3.0",
- "@smithy/util-base64": "^3.0.0",
- "@smithy/util-buffer-from": "^3.0.0",
- "@smithy/util-hex-encoding": "^3.0.0",
- "@smithy/util-utf8": "^3.0.0",
- "tslib": "^2.6.2"
+ "@volar/language-service": "2.4.11",
+ "@volar/typescript": "2.4.11",
+ "typesafe-path": "^0.2.2",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
},
- "engines": {
- "node": ">=16.0.0"
+ "peerDependencies": {
+ "typescript": "*"
}
},
- "node_modules/@smithy/util-uri-escape": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz",
- "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
+ "node_modules/@volar/language-core": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz",
+ "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@volar/source-map": "2.4.11"
}
},
- "node_modules/@smithy/util-utf8": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz",
- "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==",
+ "node_modules/@volar/language-server": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.11.tgz",
+ "integrity": "sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==",
+ "license": "MIT",
"dependencies": {
- "@smithy/util-buffer-from": "^3.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@volar/language-core": "2.4.11",
+ "@volar/language-service": "2.4.11",
+ "@volar/typescript": "2.4.11",
+ "path-browserify": "^1.0.1",
+ "request-light": "^0.7.0",
+ "vscode-languageserver": "^9.0.1",
+ "vscode-languageserver-protocol": "^3.17.5",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/@smithy/util-waiter": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz",
- "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==",
+ "node_modules/@volar/language-service": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.11.tgz",
+ "integrity": "sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==",
+ "license": "MIT",
"dependencies": {
- "@smithy/abort-controller": "^3.1.1",
- "@smithy/types": "^3.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
+ "@volar/language-core": "2.4.11",
+ "vscode-languageserver-protocol": "^3.17.5",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/@types/estree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
- "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA=="
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/resolve": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
- "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
+ "node_modules/@volar/source-map": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz",
+ "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==",
+ "license": "MIT"
},
- "node_modules/abstract-leveldown": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz",
- "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==",
- "dev": true,
+ "node_modules/@volar/typescript": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz",
+ "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==",
+ "license": "MIT",
"dependencies": {
- "buffer": "^5.5.0",
- "immediate": "^3.2.3",
- "level-concat-iterator": "~2.0.0",
- "level-supports": "~1.0.0",
- "xtend": "~4.0.0"
- },
- "engines": {
- "node": ">=6"
+ "@volar/language-core": "2.4.11",
+ "path-browserify": "^1.0.1",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/abstract-leveldown/node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "node_modules/@vscode/emmet-helper": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz",
+ "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==",
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "emmet": "^2.4.3",
+ "jsonc-parser": "^2.3.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/acorn": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz",
- "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
+ "node_modules/@vscode/l10n": {
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
+ "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==",
+ "license": "MIT"
+ },
+ "node_modules/@yarnpkg/lockfile": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
"dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -4588,18 +2319,6 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/acorn-loose": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/acorn-loose/-/acorn-loose-8.4.0.tgz",
- "integrity": "sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.11.0"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -4620,7 +2339,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
"integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
- "dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.1.0"
}
@@ -4629,13 +2348,13 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "license": "MIT"
},
"node_modules/ansi-align/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -4645,313 +2364,725 @@
"node": ">=8"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-iterate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz",
+ "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/astro": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.1.1.tgz",
+ "integrity": "sha512-prpWC2PRs4P3FKQg6gZaU+VNMqbZi5pDvORGB2nrjfRjkrvF6/l4BqhvkJ6YQ0Ohm5rIMVz8ljgaRI77mLHbwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.10.3",
+ "@astrojs/internal-helpers": "0.4.2",
+ "@astrojs/markdown-remark": "6.0.1",
+ "@astrojs/telemetry": "3.2.0",
+ "@oslojs/encoding": "^1.1.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "@types/cookie": "^0.6.0",
+ "acorn": "^8.14.0",
+ "aria-query": "^5.3.2",
+ "axobject-query": "^4.1.0",
+ "boxen": "8.0.1",
+ "ci-info": "^4.1.0",
+ "clsx": "^2.1.1",
+ "common-ancestor-path": "^1.0.1",
+ "cookie": "^0.7.2",
+ "cssesc": "^3.0.0",
+ "debug": "^4.3.7",
+ "deterministic-object-hash": "^2.0.2",
+ "devalue": "^5.1.1",
+ "diff": "^5.2.0",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "es-module-lexer": "^1.5.4",
+ "esbuild": "^0.21.5",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.2",
+ "flattie": "^1.1.1",
+ "github-slugger": "^2.0.0",
+ "html-escaper": "^3.0.3",
+ "http-cache-semantics": "^4.1.1",
+ "js-yaml": "^4.1.0",
+ "kleur": "^4.1.5",
+ "magic-string": "^0.30.14",
+ "magicast": "^0.3.5",
+ "micromatch": "^4.0.8",
+ "mrmime": "^2.0.0",
+ "neotraverse": "^0.6.18",
+ "p-limit": "^6.1.0",
+ "p-queue": "^8.0.1",
+ "preferred-pm": "^4.0.0",
+ "prompts": "^2.4.2",
+ "rehype": "^13.0.2",
+ "semver": "^7.6.3",
+ "shiki": "^1.23.1",
+ "tinyexec": "^0.3.1",
+ "tsconfck": "^3.1.4",
+ "ultrahtml": "^1.5.3",
+ "unist-util-visit": "^5.0.0",
+ "unstorage": "^1.14.0",
+ "vfile": "^6.0.3",
+ "vite": "^6.0.5",
+ "vitefu": "^1.0.4",
+ "which-pm": "^3.0.0",
+ "xxhash-wasm": "^1.1.0",
+ "yargs-parser": "^21.1.1",
+ "yocto-spinner": "^0.1.0",
+ "zod": "^3.23.8",
+ "zod-to-json-schema": "^3.23.5",
+ "zod-to-ts": "^1.2.0"
+ },
+ "bin": {
+ "astro": "astro.js"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0",
+ "npm": ">=9.6.5",
+ "pnpm": ">=7.1.0"
+ },
+ "optionalDependencies": {
+ "sharp": "^0.33.3"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astro/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
+ "node_modules/astro/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
+ "node_modules/astro/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
+ "node_modules/astro/node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 8"
+ "node": ">=12"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
- "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
- "dev": true
- },
- "node_modules/async": {
- "version": "2.6.4",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
- "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.14"
+ "node_modules/astro/node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/async-lock": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz",
- "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==",
- "dev": true
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "bin": {
- "atob": "bin/atob.js"
- },
+ "node_modules/astro/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">= 4.5.0"
+ "node": ">=12"
}
},
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
- "dev": true,
+ "node_modules/astro/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=12"
}
},
- "node_modules/aws-sdk": {
- "version": "2.1429.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1429.0.tgz",
- "integrity": "sha512-xT1BhUvkyOQk4FCAZh8DekvTdEhk6nZraB8r8oQyVUmSXkEM+xQ2uAfnJ4GW6/f9X75Pj/tUqxNQxCgdstYxuw==",
- "dev": true,
- "dependencies": {
- "buffer": "4.9.2",
- "events": "1.1.1",
- "ieee754": "1.1.13",
- "jmespath": "0.16.0",
- "querystring": "0.2.0",
- "sax": "1.2.1",
- "url": "0.10.3",
- "util": "^0.12.4",
- "uuid": "8.0.0",
- "xml2js": "0.5.0"
- },
+ "node_modules/astro/node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=12"
}
},
- "node_modules/aws-sdk/node_modules/uuid": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
- "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==",
- "dev": true,
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node_modules/astro/node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/aws4": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz",
- "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g=="
+ "node_modules/astro/node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "node_modules/astro/node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
+ "node_modules/astro/node_modules/ci-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz",
+ "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==",
"funding": [
{
"type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
+ "url": "https://github.com/sponsors/sibiraj-s"
}
- ]
- },
- "node_modules/big.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true,
+ ],
+ "license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=8"
}
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
+ "node_modules/astro/node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=12"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/astro/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
}
},
- "node_modules/bowser": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
- "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
- },
- "node_modules/boxen": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
- "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
- "dev": true,
+ "node_modules/astro/node_modules/p-limit": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz",
+ "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==",
+ "license": "MIT",
"dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.2",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
+ "yocto-queue": "^1.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/boxen/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
+ "node_modules/astro/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">=10"
}
},
- "node_modules/boxen/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "node_modules/astro/node_modules/yocto-queue": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
+ "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=12.20"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/boxen/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
+ "license": "ISC",
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/babel-plugin-transform-hook-names": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz",
+ "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@babel/core": "^7.12.10"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/boxen/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "node_modules/boxen/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "node_modules/base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==",
+ "license": "MIT"
},
- "node_modules/boxen/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/boxen/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
+ "node_modules/boxen": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz",
+ "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==",
+ "license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "ansi-align": "^3.0.1",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.3.0",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^7.2.0",
+ "type-fest": "^4.21.0",
+ "widest-line": "^5.0.0",
+ "wrap-ansi": "^9.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/boxen/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "node_modules/boxen/node_modules/chalk": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/boxen/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "4.31.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz",
+ "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==",
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=10"
+ "node": ">=16"
},
"funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/brace-expansion": {
@@ -4968,7 +3099,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
@@ -4980,7 +3111,6 @@
"version": "4.21.10",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
"integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -4995,7 +3125,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001517",
"electron-to-chromium": "^1.4.477",
@@ -5009,56 +3138,56 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/buffer": {
- "version": "4.9.2",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
"engines": {
- "node": "*"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "engines": {
- "node": ">=6"
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "node_modules/call-bound": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "call-bind-apply-helpers": "^1.0.1",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/call-me-maybe": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
- "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
- "dev": true
- },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -5069,12 +3198,12 @@
}
},
"node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -5084,7 +3213,6 @@
"version": "1.0.30001519",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
"integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -5098,29 +3226,70 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ],
- "peer": true
+ ]
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
"node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -5144,7 +3313,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -5153,191 +3322,193 @@
}
},
"node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "node_modules/clean-git-ref": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz",
- "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==",
- "dev": true
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/cli-boxes": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
- "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
"node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "peer": true,
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
"node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true,
- "peer": true
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
},
- "node_modules/color-to-hsla": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/color-to-hsla/-/color-to-hsla-0.1.1.tgz",
- "integrity": "sha512-lXqaKMk8lY5R9PK0R/fqSZygEKLIJvBrLc20Y/7CpPdoKe5pNvJQYs2olo5BbuJK9gOVr6za4mndjZHHVLZvEg==",
- "dev": true
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
- "node_modules/commondir": {
+ "node_modules/common-ancestor-path": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
+ "license": "ISC"
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/config-chain": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
- "dev": true,
- "dependencies": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "node_modules/config-chain/node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
- "node_modules/configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
- "dev": true,
- "dependencies": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- },
+ "node_modules/consola": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.3.tgz",
+ "integrity": "sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": "^14.18.0 || >=16.10.0"
}
},
"node_modules/convert-source-map": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true,
- "peer": true
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
},
"node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/cookie-signature": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz",
- "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==",
- "engines": {
- "node": ">=6.6.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/cpr": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz",
- "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.5",
- "minimist": "^1.2.0",
- "mkdirp": "~0.5.1",
- "rimraf": "^2.5.4"
- },
- "bin": {
- "cpr": "bin/cpr"
- }
- },
- "node_modules/cpr/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cpr/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/crc-32": {
+ "node_modules/cookie-es": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
- "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
- "dev": true,
- "bin": {
- "crc32": "bin/crc32.njs"
- },
- "engines": {
- "node": ">=0.8"
- }
+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz",
+ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==",
+ "license": "MIT"
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -5347,48 +3518,62 @@
"node": ">= 8"
}
},
- "node_modules/crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/crossws": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.1.tgz",
+ "integrity": "sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==",
+ "license": "MIT",
+ "dependencies": {
+ "uncrypto": "^0.1.3"
}
},
- "node_modules/csrf": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
- "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==",
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "rndm": "1.2.0",
- "tsscmp": "1.0.6",
- "uid-safe": "2.1.5"
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
},
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">= 0.8"
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
- "dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
},
"engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ "node": ">=4"
}
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5399,36 +3584,17 @@
}
}
},
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
+ "node_modules/decode-named-character-reference": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+ "license": "MIT",
"dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
+ "character-entities": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
- "engines": {
- "node": ">=4.0.0"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/deep-is": {
@@ -5437,78 +3603,100 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/deferred-leveldown": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz",
- "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==",
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "abstract-leveldown": "~6.2.1",
- "inherits": "^2.0.3"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+ "license": "MIT"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/defined": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
- "integrity": "sha512-zpqiCT8bODLu3QSmLLic8xJnYWBFjOSu/fBCm189oAiTtPq/PSanNACKZDS7kgSyCJY7P+IcODzlIogBK/9RBg==",
- "dev": true
+ "node_modules/destr": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
+ "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==",
+ "license": "MIT"
},
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true,
+ "node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "license": "Apache-2.0",
+ "optional": true,
"engines": {
- "node": ">= 0.8"
+ "node": ">=8"
}
},
- "node_modules/depstatus": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depstatus/-/depstatus-1.1.1.tgz",
- "integrity": "sha512-QT4i2Ql8RS1ttcj7zo4RzYvKz+/eOOIh6N7CXHqfDqC5ZX1hfx5KX6T88gy/j2UWP2x2ytjSoFBl+XW0gVZMug==",
- "dev": true,
+ "node_modules/deterministic-object-hash": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz",
+ "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==",
+ "license": "MIT",
"dependencies": {
- "semver": "^7.3.2"
+ "base-64": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/depstatus/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/devalue": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz",
+ "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
},
- "engines": {
- "node": ">=10"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
+ "node": ">=0.3.1"
}
},
- "node_modules/diff3": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz",
- "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==",
- "dev": true
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
},
"node_modules/doctrine": {
"version": "3.0.0",
@@ -5522,116 +3710,118 @@
"node": ">=6.0.0"
}
},
- "node_modules/dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
"dependencies": {
- "is-obj": "^2.0.0"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "node_modules/dotenv": {
- "version": "16.3.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
- "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
- "dev": true,
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">= 4"
},
"funding": {
- "url": "https://github.com/motdotla/dotenv?sponsor=1"
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "node_modules/dynalite": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/dynalite/-/dynalite-3.2.2.tgz",
- "integrity": "sha512-sx9ZjTgMs/D4gHnba4rnBkw29648dHwHmywJet132KAbiq1ZyWx9W1fMd/eP9cPwTKDXyCBuTYOChE0qMDjaXQ==",
- "dev": true,
+ "node_modules/domutils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.1.tgz",
+ "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "async": "^2.6.3",
- "big.js": "^5.2.2",
- "buffer-crc32": "^0.2.13",
- "lazy": "^1.0.11",
- "levelup": "^4.4.0",
- "lock": "^1.1.0",
- "memdown": "^5.1.0",
- "minimist": "^1.2.5",
- "once": "^1.4.0",
- "subleveldown": "^5.0.1"
- },
- "bin": {
- "dynalite": "cli.js"
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
},
- "optionalDependencies": {
- "leveldown": "^5.6.0"
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.484",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz",
- "integrity": "sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw==",
- "dev": true,
- "peer": true
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true,
+ "node_modules/dset": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.8"
+ "node": ">=4"
}
},
- "node_modules/encoding-down": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz",
- "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==",
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "abstract-leveldown": "^6.2.1",
- "inherits": "^2.0.3",
- "level-codec": "^9.0.0",
- "level-errors": "^2.0.0"
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
},
"engines": {
- "node": ">=6"
+ "node": ">= 0.4"
}
},
- "node_modules/enquirer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
- "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
- "dev": true,
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.484",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.484.tgz",
+ "integrity": "sha512-nO3ZEomTK2PO/3TUXgEx0A97xZTpKVf4p427lABHuCpT1IQ2N+njVh29DkQkCk6Q4m2wjU+faK4xAcfFndwjvw=="
+ },
+ "node_modules/emmet": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz",
+ "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==",
+ "license": "MIT",
+ "workspaces": [
+ "./packages/scanner",
+ "./packages/abbreviation",
+ "./packages/css-abbreviation",
+ "./"
+ ],
"dependencies": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8.6"
+ "@emmetio/abbreviation": "^2.3.3",
+ "@emmetio/css-abbreviation": "^2.1.8"
}
},
+ "node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex-xs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
+ "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
+ "license": "MIT"
+ },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -5643,117 +3833,103 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "dev": true,
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
- }
- },
- "node_modules/esbuild": {
- "version": "0.18.17",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz",
- "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==",
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.18.17",
- "@esbuild/android-arm64": "0.18.17",
- "@esbuild/android-x64": "0.18.17",
- "@esbuild/darwin-arm64": "0.18.17",
- "@esbuild/darwin-x64": "0.18.17",
- "@esbuild/freebsd-arm64": "0.18.17",
- "@esbuild/freebsd-x64": "0.18.17",
- "@esbuild/linux-arm": "0.18.17",
- "@esbuild/linux-arm64": "0.18.17",
- "@esbuild/linux-ia32": "0.18.17",
- "@esbuild/linux-loong64": "0.18.17",
- "@esbuild/linux-mips64el": "0.18.17",
- "@esbuild/linux-ppc64": "0.18.17",
- "@esbuild/linux-riscv64": "0.18.17",
- "@esbuild/linux-s390x": "0.18.17",
- "@esbuild/linux-x64": "0.18.17",
- "@esbuild/netbsd-x64": "0.18.17",
- "@esbuild/openbsd-x64": "0.18.17",
- "@esbuild/sunos-x64": "0.18.17",
- "@esbuild/win32-arm64": "0.18.17",
- "@esbuild/win32-ia32": "0.18.17",
- "@esbuild/win32-x64": "0.18.17"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">= 0.4"
}
},
- "node_modules/escape-goat": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
- "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.8.0"
- }
+ "node_modules/es-module-lexer": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "license": "MIT"
},
- "node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
+ "es-errors": "^1.3.0"
},
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "hasInstallScript": true,
+ "license": "MIT",
"bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=18"
},
"optionalDependencies": {
- "source-map": "~0.6.1"
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
}
},
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"engines": {
- "node": ">=4.0"
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint": {
@@ -5822,1566 +3998,2113 @@
"eslint": ">=7.0.0"
}
},
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
+ "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "type-fest": "^0.20.2"
},
"engines": {
"node": ">=8"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
- "node": ">=10"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
+ "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "estraverse": "^5.1.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=0.10"
}
},
- "node_modules/eslint/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "license": "MIT"
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
"engines": {
- "node": ">=10"
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
- "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
- "dev": true,
+ "node_modules/find-up-simple": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
+ "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
"dev": true,
- "engines": {
- "node": ">=4.0"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "micromatch": "^4.0.2"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "node_modules/find-yarn-workspace-root2": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz",
+ "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "micromatch": "^4.0.2",
+ "pkg-dir": "^4.2.0"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"dev": true,
"dependencies": {
- "type-fest": "^0.20.2"
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "node_modules/flattie": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz",
+ "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
- "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
"engines": {
- "node": ">=0.10"
+ "node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
+ "node_modules/get-east-asian-width": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "license": "MIT",
"engines": {
- "node": ">=4.0"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "node_modules/get-intrinsic": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
+ "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "estraverse": "^5.2.0"
+ "call-bind-apply-helpers": "^1.0.1",
+ "dunder-proto": "^1.0.0",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "function-bind": "^1.1.2",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.0.0"
},
"engines": {
- "node": ">=4.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
+ "node_modules/github-slugger": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
+ "license": "ISC"
},
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10.13.0"
}
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "dev": true,
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"engines": {
- "node": ">= 0.6"
+ "node": ">=4"
}
},
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
- "dev": true
- },
- "node_modules/events": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
- "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.4.x"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
},
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
- "node_modules/fast-xml-parser": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
- "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- }
- ],
+ "node_modules/h3": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.13.0.tgz",
+ "integrity": "sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==",
+ "license": "MIT",
"dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
+ "cookie-es": "^1.2.2",
+ "crossws": ">=0.2.0 <0.4.0",
+ "defu": "^6.1.4",
+ "destr": "^2.0.3",
+ "iron-webcrypto": "^1.2.1",
+ "ohash": "^1.1.4",
+ "radix3": "^1.1.2",
+ "ufo": "^1.5.4",
+ "uncrypto": "^0.1.3",
+ "unenv": "^1.10.0"
}
},
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "es-define-property": "^1.0.0"
},
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dev": true,
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
"dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
+ "function-bind": "^1.1.2"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.4"
}
},
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
+ "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz",
+ "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==",
+ "license": "MIT",
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "license": "MIT",
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "@types/hast": "^3.0.0"
},
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
+ "node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
},
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
+ "node_modules/hast-util-raw": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.3"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
- "dev": true,
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz",
+ "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==",
+ "license": "MIT",
"dependencies": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/foreground-child/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
+ "node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
+ "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/front-matter": {
+ "node_modules/hast-util-to-text": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
- "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
+ "license": "MIT",
"dependencies": {
- "js-yaml": "^3.13.1"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/front-matter/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
"dependencies": {
- "sprintf-js": "~1.0.2"
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/front-matter/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "node_modules/hastscript": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz",
+ "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==",
+ "license": "MIT",
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "license": "MIT",
"bin": {
- "js-yaml": "bin/js-yaml.js"
+ "he": "bin/he"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "node_modules/html-escaper": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
+ "license": "MIT"
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "license": "BSD-2-Clause"
},
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
"dev": true,
- "peer": true,
"engines": {
- "node": ">=6.9.0"
+ "node": ">= 4"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/glob": {
- "version": "9.3.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
- "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "minimatch": "^8.0.2",
- "minipass": "^4.2.4",
- "path-scurry": "^1.6.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
+ "node_modules/import-meta-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
+ "license": "MIT",
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
"engines": {
- "node": ">=10.13.0"
+ "node": ">=0.8.19"
}
},
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/iron-webcrypto": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
+ "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/brc-dd"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/glob/node_modules/minimatch": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
- "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "hasown": "^2.0.2"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/global-dirs": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
- "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
- "dependencies": {
- "ini": "2.0.0"
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "peer": true,
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dependencies": {
- "get-intrinsic": "^1.1.3"
+ "is-extglob": "^2.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1"
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/has-flag": {
+ "node_modules/is-inside-container/node_modules/is-docker": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "peer": true,
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
"engines": {
- "node": ">=4"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=0.12.0"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=8"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/has-yarn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
- "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
"engines": {
"node": ">=8"
}
},
- "node_modules/header-timers": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/header-timers/-/header-timers-0.2.1.tgz",
- "integrity": "sha512-MYHjz20sTJym3EQ6aMgfqDLGZgiNkFo3eM6He13HJb33Ju2hc/4cTlsjfWxXHSjOv6szv6/jbjg/yvGXgKEKvQ==",
- "dev": true
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/http-errors": {
+ "node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "argparse": "^2.0.1"
},
- "engines": {
- "node": ">= 0.8"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/http-proxy": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "dev": true,
- "dependencies": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=6"
}
},
- "node_modules/ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
- "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "node_modules/json-stable-stringify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz",
+ "integrity": "sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "isarray": "^2.0.5",
+ "jsonify": "^0.0.1",
+ "object-keys": "^1.1.1"
+ },
"engines": {
- "node": ">= 4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/immediate": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
- "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
},
"engines": {
"node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/import-lazy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
- "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
+ "node_modules/jsonc-parser": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
+ "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "node_modules/jsonify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
+ "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
"dev": true,
- "engines": {
- "node": ">=0.8.19"
+ "license": "Public Domain",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "node_modules/klaw-sync": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
+ "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "graceful-fs": "^4.1.11"
}
},
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "dev": true,
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "license": "MIT"
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/load-yaml-file": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
+ "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.5",
+ "js-yaml": "^3.13.0",
+ "pify": "^4.0.1",
+ "strip-bom": "^3.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
+ "node_modules/load-yaml-file/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/load-yaml-file/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
"dependencies": {
- "binary-extensions": "^2.0.0"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
- "engines": {
- "node": ">=8"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
"dependencies": {
- "builtin-modules": "^3.3.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
+ "yallist": "^3.0.2"
}
},
- "node_modules/is-core-module": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "license": "MIT",
"dependencies": {
- "has": "^1.0.3"
- },
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/magicast": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
+ "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.4",
+ "@babel/types": "^7.25.4",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
+ "license": "MIT",
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
+ "node_modules/marked": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.4.tgz",
+ "integrity": "sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 18"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
+ "node_modules/mdast-util-definitions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz",
+ "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==",
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
+ "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+ "license": "MIT",
"dependencies": {
- "is-extglob": "^2.1.1"
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-installed-globally": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
- "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
- "dev": true,
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
"dependencies": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
- },
- "node_modules/is-npm": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
- "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node_modules/mdast-util-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
+ "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
+ "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-obj": {
+ "node_modules/mdast-util-gfm-footnote": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "node_modules/is-reference": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
+ "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+ "license": "MIT",
"dependencies": {
- "@types/estree": "*"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
- "dev": true,
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "license": "MIT",
"dependencies": {
- "which-typed-array": "^1.1.11"
- },
- "engines": {
- "node": ">= 0.4"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
- },
- "node_modules/is-yarn-global": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
- "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
- "dev": true
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/isexe": {
+ "node_modules/mdast-util-gfm-table": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/isomorphic-fetch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz",
- "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "license": "MIT",
"dependencies": {
- "node-fetch": "^2.6.1",
- "whatwg-fetch": "^3.4.1"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/isomorphic-git": {
- "version": "1.25.10",
- "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz",
- "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==",
- "dev": true,
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
+ "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "license": "MIT",
"dependencies": {
- "async-lock": "^1.4.1",
- "clean-git-ref": "^2.0.1",
- "crc-32": "^1.2.0",
- "diff3": "0.0.3",
- "ignore": "^5.1.4",
- "minimisted": "^2.0.0",
- "pako": "^1.0.10",
- "pify": "^4.0.1",
- "readable-stream": "^3.4.0",
- "sha.js": "^2.4.9",
- "simple-get": "^4.0.1"
- },
- "bin": {
- "isogit": "cli.cjs"
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jmespath": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
- "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/js-yaml": {
+ "node_modules/mdast-util-phrasing": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
"dependencies": {
- "argparse": "^2.0.1"
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "peer": true,
- "bin": {
- "jsesc": "bin/jsesc"
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "peer": true,
- "bin": {
- "json5": "lib/cli.js"
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/jsonschema": {
+ "node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz",
- "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
"engines": {
- "node": "*"
+ "node": ">= 8"
}
},
- "node_modules/jszip": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
- "dev": true,
+ "node_modules/micromark": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz",
+ "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz",
+ "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
+ "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
+ "license": "MIT",
"dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/jszip/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
+ "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
+ "license": "MIT",
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/jszip/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
- "node_modules/jszip/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
+ "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
+ "license": "MIT",
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/lazy": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz",
- "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==",
- "dev": true,
- "engines": {
- "node": ">=0.2.0"
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz",
+ "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/level-codec": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz",
- "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==",
- "dev": true,
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "license": "MIT",
"dependencies": {
- "buffer": "^5.6.0"
+ "micromark-util-types": "^2.0.0"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/level-codec/node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
+ "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
"funding": [
{
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
},
{
- "type": "consulting",
- "url": "https://feross.org/support"
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/level-concat-iterator": {
+ "node_modules/micromark-factory-label": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz",
- "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/level-errors": {
+ "node_modules/micromark-factory-space": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz",
- "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "errno": "~0.1.1"
- },
- "engines": {
- "node": ">=6"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/level-iterator-stream": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz",
- "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==",
- "dev": true,
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0",
- "xtend": "^4.0.2"
- },
- "engines": {
- "node": ">=6"
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/level-option-wrap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/level-option-wrap/-/level-option-wrap-1.1.0.tgz",
- "integrity": "sha512-gQouC22iCqHuBLNl4BHxEZUxLvUKALAtT/Q0c6ziOxZQ8c02G/gyxHWNbLbxUzRNfMrRnbt6TZT3gNe8VBqQeg==",
- "dev": true,
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "defined": "~0.0.0"
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/level-supports": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz",
- "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==",
- "dev": true,
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "xtend": "^4.0.2"
- },
- "engines": {
- "node": ">=6"
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/leveldown": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz",
- "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "abstract-leveldown": "~6.2.1",
- "napi-macros": "~2.0.0",
- "node-gyp-build": "~4.1.0"
- },
- "engines": {
- "node": ">=8.6.0"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/levelup": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz",
- "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==",
- "dev": true,
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "deferred-leveldown": "~5.3.0",
- "level-errors": "~2.0.0",
- "level-iterator-stream": "~4.0.0",
- "level-supports": "~1.0.0",
- "xtend": "~4.0.0"
- },
- "engines": {
- "node": ">=6"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/lie": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "immediate": "~3.0.5"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/lie/node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/lock": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz",
- "integrity": "sha512-NZQIJJL5Rb9lMJ0Yl1JoVr9GSdo4HTPsUEWsSFzB8dE8DSoiLCVavWZPi7Rnlv/o73u6I24S/XYc/NmG4l8EKA==",
- "dev": true
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "peer": true,
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "yallist": "^3.0.2"
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/ltgt": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
- "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==",
- "dev": true
- },
- "node_modules/magic-string": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
- "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.13"
- },
- "engines": {
- "node": ">=12"
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/marked": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
- "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
- "bin": {
- "marked": "bin/marked.js"
- },
- "engines": {
- "node": ">= 12"
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz",
+ "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/memdown": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz",
- "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==",
- "dev": true,
+ "node_modules/micromark-util-types": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
+ "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
"dependencies": {
- "abstract-leveldown": "~6.2.1",
- "functional-red-black-tree": "~1.0.1",
- "immediate": "~3.2.3",
- "inherits": "~2.0.1",
- "ltgt": "~2.2.0",
- "safe-buffer": "~5.2.0"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/memdown/node_modules/immediate": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz",
- "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==",
- "dev": true
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
+ "node": ">=8.6"
}
},
"node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=10.0.0"
}
},
"node_modules/minimatch": {
@@ -7401,76 +6124,31 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minimisted": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz",
- "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- }
- },
- "node_modules/minipass": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
- "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "node_modules/mrmime": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
+ "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/mnemonist": {
- "version": "0.38.3",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz",
- "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==",
- "dependencies": {
- "obliterator": "^1.6.1"
+ "node": ">=10"
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz",
- "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.js"
- },
- "engines": {
- "node": "^14 || ^16 || >=18"
- }
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
- "node_modules/napi-macros": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz",
- "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==",
- "dev": true,
- "optional": true
+ "node_modules/muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "license": "MIT"
},
"node_modules/natural-compare": {
"version": "1.4.0",
@@ -7478,102 +6156,129 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "node_modules/node-fetch": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
- "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
+ "node_modules/neotraverse": {
+ "version": "0.6.18",
+ "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz",
+ "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==",
+ "license": "MIT",
"engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "node": ">= 10"
}
},
- "node_modules/node-gyp-build": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz",
- "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==",
- "dev": true,
- "optional": true,
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
+ "node_modules/nlcst-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz",
+ "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/node-machine-id": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz",
- "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==",
- "dev": true
+ "node_modules/node-fetch-native": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+ "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
+ "license": "MIT"
+ },
+ "node_modules/node-html-parser": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
+ "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "he": "1.2.0"
+ }
},
"node_modules/node-releases": {
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/node-webtokens": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/node-webtokens/-/node-webtokens-1.0.4.tgz",
- "integrity": "sha512-Sla56CeSLWvPbwud2kogqf5edQtKNXZBtXDDpmOzAgNZjwETbK/Am6PXfs54iZPLBm8K8amZ9XWaCQwGqZmKyQ==",
- "engines": {
- "node": ">=6.6.0"
- }
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/obliterator": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz",
- "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig=="
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
"dependencies": {
- "ee-first": "1.1.1"
+ "boolbase": "^1.0.0"
},
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.4"
}
},
+ "node_modules/ofetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
+ "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
+ "license": "MIT",
+ "dependencies": {
+ "destr": "^2.0.3",
+ "node-fetch-native": "^1.6.4",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
+ "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
+ "license": "MIT"
+ },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
"dependencies": {
"wrappy": "1"
}
},
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "node_modules/oniguruma-to-es": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz",
+ "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex-xs": "^1.0.0",
+ "regex": "^5.0.2",
+ "regex-recursion": "^5.0.0"
+ }
+ },
+ "node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "mimic-fn": "^2.1.0"
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7596,6 +6301,16 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -7626,11 +6341,42 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
+ "node_modules/p-queue": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz",
+ "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^5.0.1",
+ "p-timeout": "^6.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz",
+ "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/parent-module": {
"version": "1.0.1",
@@ -7644,31 +6390,104 @@
"node": ">=6"
}
},
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "node_modules/parse-latin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz",
+ "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "@types/unist": "^3.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-modify-children": "^4.0.0",
+ "unist-util-visit-children": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^4.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/patch-package": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz",
+ "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@yarnpkg/lockfile": "^1.1.0",
+ "chalk": "^4.1.2",
+ "ci-info": "^3.7.0",
+ "cross-spawn": "^7.0.3",
+ "find-yarn-workspace-root": "^2.0.0",
+ "fs-extra": "^9.0.0",
+ "json-stable-stringify": "^1.0.2",
+ "klaw-sync": "^6.0.0",
+ "minimist": "^1.2.6",
+ "open": "^7.4.2",
+ "rimraf": "^2.6.3",
+ "semver": "^7.5.3",
+ "slash": "^2.0.0",
+ "tmp": "^0.0.33",
+ "yaml": "^2.2.2"
+ },
+ "bin": {
+ "patch-package": "index.js"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">5"
+ }
+ },
+ "node_modules/patch-package/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "entities": "^4.4.0"
+ "glob": "^7.1.3"
},
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
+ "bin": {
+ "rimraf": "bin.js"
}
},
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "node_modules/patch-package/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=10"
}
},
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "license": "MIT"
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -7694,57 +6513,20 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
- "dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
- "engines": {
- "node": "14 || >=16.14"
- }
- },
- "node_modules/path-scurry/node_modules/minipass": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz",
- "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
},
- "node_modules/path-sort": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/path-sort/-/path-sort-0.1.0.tgz",
- "integrity": "sha512-70MSq7edKtbODYKkqXYzSMQxtYMjDgP3K6D15Fu4KUvpyBPlxDWPvv8JI9GjNDF2K5baPHFEtlg818dOmf2ifg==",
- "dev": true
- },
- "node_modules/path-to-regexp": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
- "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
- "dev": true
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "license": "MIT"
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true,
- "peer": true
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -7761,18 +6543,152 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true,
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.25.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.3.tgz",
+ "integrity": "sha512-dzQmIFtM970z+fP9ziQ3yG4e3ULIbwZzJ734vaMVUTaKQ2+Ru1Ou/gjshOYVHCcd1rpAelC6ngjvjDXph98unQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/preact-render-to-string": {
+ "version": "6.5.12",
+ "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.12.tgz",
+ "integrity": "sha512-FpU7/cRipZo4diSWQq7gZWVp+Px76CtVduJZNvQwVzynDsAIxKteMrjCCGPbM2oEasReoDffaeMCMlaur9ohIg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "preact": ">=10"
+ }
+ },
+ "node_modules/preferred-pm": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz",
+ "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up-simple": "^1.0.0",
+ "find-yarn-workspace-root2": "1.2.16",
+ "which-pm": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18.12"
}
},
"node_modules/prelude-ls": {
@@ -7785,67 +6701,84 @@
}
},
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
- "dev": true,
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
+ "devOptional": true,
+ "license": "MIT",
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "dev": true
+ "node_modules/prettier-plugin-astro": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz",
+ "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.9.1",
+ "prettier": "^3.0.0",
+ "sass-formatter": "^0.7.6"
+ },
+ "engines": {
+ "node": "^14.15.0 || >=16.0.0"
+ }
},
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true,
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/pupa": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
- "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
- "dev": true,
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
"dependencies": {
- "escape-goat": "^2.0.0"
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
},
"engines": {
- "node": ">=8"
+ "node": ">= 6"
}
},
- "node_modules/querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "node_modules/prompts/node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"dev": true,
"engines": {
- "node": ">=0.4.x"
+ "node": ">=6"
}
},
"node_modules/queue-microtask": {
@@ -7867,130 +6800,231 @@
}
]
},
- "node_modules/random-bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
- "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
+ "node_modules/radix3": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
+ "license": "MIT"
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=8.10.0"
}
},
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
+ "node_modules/regex": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz",
+ "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
}
},
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
+ "node_modules/regex-recursion": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz",
+ "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
+ "license": "MIT",
+ "dependencies": {
+ "regex": "^5.1.1",
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
+ "node_modules/rehype": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz",
+ "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==",
+ "license": "MIT",
"dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "@types/hast": "^3.0.0",
+ "rehype-parse": "^9.0.0",
+ "rehype-stringify": "^10.0.0",
+ "unified": "^11.0.0"
},
- "bin": {
- "rc": "cli.js"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/rc/node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
+ "node_modules/rehype-parse": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
+ "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
- "node_modules/rc/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/reachdown": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reachdown/-/reachdown-1.1.0.tgz",
- "integrity": "sha512-6LsdRe4cZyOjw4NnvbhUd/rGG7WQ9HMopPr+kyL018Uci4kijtxcGR5kVb5Ln13k4PEE+fEFQbjfOvNw7cnXmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node_modules/rehype-stringify": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz",
+ "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-to-html": "^9.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
+ "node_modules/remark-gfm": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
+ "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
},
- "engines": {
- "node": ">= 6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
+ "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
+ "license": "MIT",
"dependencies": {
- "picomatch": "^2.2.1"
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
},
- "engines": {
- "node": ">=8.10.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/registry-auth-token": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
- "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
- "dev": true,
+ "node_modules/remark-smartypants": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz",
+ "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==",
+ "license": "MIT",
"dependencies": {
- "@pnpm/npm-conf": "^2.1.0"
+ "retext": "^9.0.0",
+ "retext-smartypants": "^6.0.0",
+ "unified": "^11.0.4",
+ "unist-util-visit": "^5.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=16.0.0"
}
},
- "node_modules/registry-url": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
- "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
- "dev": true,
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
"dependencies": {
- "rc": "^1.2.8"
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/request-light": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz",
+ "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==",
+ "license": "MIT"
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/resolve": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
"dependencies": {
- "is-core-module": "^2.11.0",
+ "is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -8004,24 +7038,71 @@
"node": ">=4"
}
},
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
+ "node_modules/retext": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz",
+ "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==",
+ "license": "MIT",
"dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
+ "@types/nlcst": "^2.0.0",
+ "retext-latin": "^4.0.0",
+ "retext-stringify": "^4.0.0",
+ "unified": "^11.0.0"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-latin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz",
+ "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "parse-latin": "^7.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-smartypants": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz",
+ "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-stringify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz",
+ "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -8042,85 +7123,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/rimraf/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rndm": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
- "integrity": "sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw=="
- },
- "node_modules/rollup": {
- "version": "3.29.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
- "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=14.18.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/router": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/router/-/router-1.3.8.tgz",
- "integrity": "sha512-461UFH44NtSfIlS83PUg2N7OZo86BC/kB3dY77gJdsODsBhhw7+2uE0tzTINxrY9CahCUVk1VhpWCA5i1yoIEg==",
- "dev": true,
- "dependencies": {
- "array-flatten": "3.0.0",
- "debug": "2.6.9",
- "methods": "~1.1.2",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "setprototypeof": "1.2.0",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/router/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/router/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/router/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
- "dev": true
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -8143,175 +7145,100 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/run-series": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz",
- "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/run-waterfall": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/run-waterfall/-/run-waterfall-1.1.7.tgz",
- "integrity": "sha512-iFPgh7SatHXOG1ClcpdwHI63geV3Hc/iL6crGSyBlH2PY7Rm/za+zoKz6FfY/Qlw5K7JwSol8pseO8fN6CMhhQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "node_modules/s.color": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz",
+ "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==",
+ "devOptional": true,
+ "license": "MIT"
},
- "node_modules/sax": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
- "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==",
- "dev": true
+ "node_modules/sass-formatter": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz",
+ "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "suf-log": "^2.5.3"
+ }
},
"node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
- "node_modules/semver-diff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
- "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "semver": "^6.3.0"
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
+ "node_modules/sharp": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
"dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
},
"engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/server-destroy": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
- "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
- "dev": true
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
- },
- "node_modules/sha": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/sha/-/sha-3.0.0.tgz",
- "integrity": "sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2"
- }
- },
- "node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
+ }
+ },
+ "node_modules/sharp/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "optional": true,
"bin": {
- "sha.js": "bin.js"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/shebang-command": {
@@ -8335,82 +7262,72 @@
"node": ">=8"
}
},
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "node_modules/shiki": {
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz",
+ "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "1.24.4",
+ "@shikijs/engine-javascript": "1.24.4",
+ "@shikijs/engine-oniguruma": "1.24.4",
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4"
+ }
},
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
},
- "node_modules/simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 8"
}
},
"node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/source-map-resolve": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
- "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0"
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/sprintf-js": {
@@ -8418,67 +7335,37 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
},
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true,
+ "node_modules/stack-trace": {
+ "version": "1.0.0-pre2",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz",
+ "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
+ "node": ">=16"
}
},
"node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
"dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/string-width-cjs": {
- "name": "string-width",
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -8490,7 +7377,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -8501,24 +7388,24 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
+ "node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -8526,6 +7413,15 @@
"node": ">=8"
}
},
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -8538,85 +7434,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
- },
- "node_modules/subleveldown": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/subleveldown/-/subleveldown-5.0.1.tgz",
- "integrity": "sha512-cVqd/URpp7si1HWu5YqQ3vqQkjuolAwHypY1B4itPlS71/lsf6TQPZ2Y0ijT22EYVkvH5ove9JFJf4u7VGPuZw==",
- "dev": true,
- "dependencies": {
- "abstract-leveldown": "^6.3.0",
- "encoding-down": "^6.2.0",
- "inherits": "^2.0.3",
- "level-option-wrap": "^1.1.0",
- "levelup": "^4.4.0",
- "reachdown": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/subleveldown/node_modules/abstract-leveldown": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz",
- "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==",
- "dev": true,
- "dependencies": {
- "buffer": "^5.5.0",
- "immediate": "^3.2.3",
- "level-concat-iterator": "~2.0.0",
- "level-supports": "~1.0.0",
- "xtend": "~4.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/subleveldown/node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "node_modules/suf-log": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz",
+ "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "s.color": "0.0.15"
}
},
"node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8624,48 +7469,36 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/symlink-or-copy": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz",
- "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==",
- "dev": true
- },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
- "node_modules/tiny-json-http": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/tiny-json-http/-/tiny-json-http-7.5.1.tgz",
- "integrity": "sha512-lB7qkBGpL3HR/8gidBu3MMfgfnDj2mlvK/eYXgSbO06gKphemLKGp/TgRTy/BKVD7nCbgIeCm41lMNayXO1f2w==",
- "dev": true
+ "node_modules/tinyexec": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz",
+ "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==",
+ "license": "MIT"
},
"node_modules/tmp": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
- "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
- "dev": true,
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=0.6.0"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -8673,41 +7506,52 @@
"node": ">=8.0"
}
},
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
+ "node_modules/tsconfck": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz",
+ "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==",
+ "license": "MIT",
"bin": {
- "tree-kill": "cli.js"
+ "tsconfck": "bin/tsconfck.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ },
+ "peerDependencies": {
+ "typescript": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
- },
- "node_modules/tsscmp": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
- "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
- "engines": {
- "node": ">=0.6.x"
- }
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "optional": true
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -8733,52 +7577,338 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
+ "node_modules/typesafe-path": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz",
+ "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==",
+ "license": "MIT"
+ },
+ "node_modules/typescript": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-auto-import-cache": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.5.tgz",
+ "integrity": "sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==",
+ "license": "MIT",
"dependencies": {
- "is-typedarray": "^1.0.0"
+ "semver": "^7.3.8"
}
},
- "node_modules/uid-safe": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "node_modules/typescript-auto-import-cache/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "license": "MIT"
+ },
+ "node_modules/ultrahtml": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz",
+ "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==",
+ "license": "MIT"
+ },
+ "node_modules/uncrypto": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
+ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/unenv": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz",
+ "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "defu": "^6.1.4",
+ "mime": "^3.0.0",
+ "node-fetch-native": "^1.6.4",
+ "pathe": "^1.1.2"
+ }
+ },
+ "node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-modify-children": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz",
+ "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "array-iterate": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-children": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz",
+ "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
"dependencies": {
- "random-bytes": "~1.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.8"
+ "node": ">= 10.0.0"
}
},
- "node_modules/unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "dev": true,
+ "node_modules/unstorage": {
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz",
+ "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==",
+ "license": "MIT",
"dependencies": {
- "crypto-random-string": "^2.0.0"
+ "anymatch": "^3.1.3",
+ "chokidar": "^3.6.0",
+ "destr": "^2.0.3",
+ "h3": "^1.13.0",
+ "lru-cache": "^10.4.3",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.4.1",
+ "ufo": "^1.5.4"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "@azure/app-configuration": "^1.8.0",
+ "@azure/cosmos": "^4.2.0",
+ "@azure/data-tables": "^13.3.0",
+ "@azure/identity": "^4.5.0",
+ "@azure/keyvault-secrets": "^4.9.0",
+ "@azure/storage-blob": "^12.26.0",
+ "@capacitor/preferences": "^6.0.3",
+ "@deno/kv": ">=0.8.4",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0",
+ "@planetscale/database": "^1.19.0",
+ "@upstash/redis": "^1.34.3",
+ "@vercel/blob": ">=0.27.0",
+ "@vercel/kv": "^1.0.1",
+ "aws4fetch": "^1.0.20",
+ "db0": ">=0.2.1",
+ "idb-keyval": "^6.2.1",
+ "ioredis": "^5.4.2",
+ "uploadthing": "^7.4.1"
+ },
+ "peerDependenciesMeta": {
+ "@azure/app-configuration": {
+ "optional": true
+ },
+ "@azure/cosmos": {
+ "optional": true
+ },
+ "@azure/data-tables": {
+ "optional": true
+ },
+ "@azure/identity": {
+ "optional": true
+ },
+ "@azure/keyvault-secrets": {
+ "optional": true
+ },
+ "@azure/storage-blob": {
+ "optional": true
+ },
+ "@capacitor/preferences": {
+ "optional": true
+ },
+ "@deno/kv": {
+ "optional": true
+ },
+ "@netlify/blobs": {
+ "optional": true
+ },
+ "@planetscale/database": {
+ "optional": true
+ },
+ "@upstash/redis": {
+ "optional": true
+ },
+ "@vercel/blob": {
+ "optional": true
+ },
+ "@vercel/kv": {
+ "optional": true
+ },
+ "aws4fetch": {
+ "optional": true
+ },
+ "db0": {
+ "optional": true
+ },
+ "idb-keyval": {
+ "optional": true
+ },
+ "ioredis": {
+ "optional": true
+ },
+ "uploadthing": {
+ "optional": true
+ }
}
},
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
+ "node_modules/unstorage/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
},
"node_modules/update-browserslist-db": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8793,7 +7923,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "peer": true,
"dependencies": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -8805,96 +7934,307 @@
"browserslist": ">= 4.21.0"
}
},
- "node_modules/update-notifier-cjs": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz",
- "integrity": "sha512-wgxdSBWv3x/YpMzsWz5G4p4ec7JWD0HCl8W6bmNB6E5Gwo+1ym5oN4hiXpLf0mPySVEJEIsYlkshnplkg2OP9A==",
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"dependencies": {
- "boxen": "^5.0.0",
- "chalk": "^4.1.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.4.0",
- "is-npm": "^5.0.0",
- "is-yarn-global": "^0.3.0",
- "isomorphic-fetch": "^3.0.0",
- "pupa": "^2.1.1",
- "registry-auth-token": "^5.0.1",
- "registry-url": "^5.1.0",
- "semver": "^7.3.7",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
},
- "engines": {
- "node": ">=14"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/update-notifier-cjs/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
+ "node_modules/vfile-location": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
+ "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/update-notifier-cjs/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
+ "node_modules/vite": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz",
+ "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "esbuild": "^0.24.2",
+ "postcss": "^8.4.49",
+ "rollup": "^4.23.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
},
"engines": {
- "node": ">=10"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
}
},
- "node_modules/update-notifier-cjs/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
+ "node_modules/vite/node_modules/rollup": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz",
+ "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==",
+ "license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.29.1",
+ "@rollup/rollup-android-arm64": "4.29.1",
+ "@rollup/rollup-darwin-arm64": "4.29.1",
+ "@rollup/rollup-darwin-x64": "4.29.1",
+ "@rollup/rollup-freebsd-arm64": "4.29.1",
+ "@rollup/rollup-freebsd-x64": "4.29.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.29.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.29.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.29.1",
+ "@rollup/rollup-linux-arm64-musl": "4.29.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.29.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.29.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.29.1",
+ "@rollup/rollup-linux-x64-gnu": "4.29.1",
+ "@rollup/rollup-linux-x64-musl": "4.29.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.29.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.29.1",
+ "@rollup/rollup-win32-x64-msvc": "4.29.1",
+ "fsevents": "~2.3.2"
}
},
- "node_modules/update-notifier-cjs/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "node_modules/vitefu": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.4.tgz",
+ "integrity": "sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==",
+ "license": "MIT",
+ "workspaces": [
+ "tests/deps/*",
+ "tests/projects/*"
+ ],
+ "peerDependencies": {
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
},
- "node_modules/update-notifier-cjs/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/volar-service-css": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.62.tgz",
+ "integrity": "sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-css-languageservice": "^6.3.0",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
}
},
- "node_modules/update-notifier-cjs/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "dev": true,
+ "node_modules/volar-service-emmet": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.62.tgz",
+ "integrity": "sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@emmetio/css-parser": "^0.4.0",
+ "@emmetio/html-matcher": "^1.3.0",
+ "@vscode/emmet-helper": "^2.9.3",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-html": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.62.tgz",
+ "integrity": "sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-html-languageservice": "^5.3.0",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-prettier": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.62.tgz",
+ "integrity": "sha512-h2yk1RqRTE+vkYZaI9KYuwpDfOQRrTEMvoHol0yW4GFKc75wWQRrb5n/5abDrzMPrkQbSip8JH2AXbvrRtYh4w==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0",
+ "prettier": "^2.2 || ^3.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ },
+ "prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-typescript": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.62.tgz",
+ "integrity": "sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==",
+ "license": "MIT",
+ "dependencies": {
+ "path-browserify": "^1.0.1",
+ "semver": "^7.6.2",
+ "typescript-auto-import-cache": "^0.3.3",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-nls": "^5.2.0",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-typescript-twoslash-queries": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.62.tgz",
+ "integrity": "sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-typescript/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -8902,101 +8242,133 @@
"node": ">=10"
}
},
- "node_modules/update-notifier-cjs/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
+ "node_modules/volar-service-yaml": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.62.tgz",
+ "integrity": "sha512-k7gvv7sk3wa+nGll3MaSKyjwQsJjIGCHFjVkl3wjaSP2nouKyn9aokGmqjrl39mi88Oy49giog2GkZH526wjig==",
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "vscode-uri": "^3.0.8",
+ "yaml-language-server": "~1.15.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
+ "node_modules/vscode-css-languageservice": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.2.tgz",
+ "integrity": "sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==",
+ "license": "MIT",
"dependencies": {
- "punycode": "^2.1.0"
+ "@vscode/l10n": "^0.0.18",
+ "vscode-languageserver-textdocument": "^1.0.12",
+ "vscode-languageserver-types": "3.17.5",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/url": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
- "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
- "dev": true,
+ "node_modules/vscode-html-languageservice": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz",
+ "integrity": "sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==",
+ "license": "MIT",
"dependencies": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
+ "@vscode/l10n": "^0.0.18",
+ "vscode-languageserver-textdocument": "^1.0.12",
+ "vscode-languageserver-types": "^3.17.5",
+ "vscode-uri": "^3.0.8"
}
},
- "node_modules/url/node_modules/punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
- "dev": true
- },
- "node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
+ "node_modules/vscode-json-languageservice": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz",
+ "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==",
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
+ "jsonc-parser": "^3.0.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.16.0",
+ "vscode-nls": "^5.0.0",
+ "vscode-uri": "^3.0.2"
+ },
+ "engines": {
+ "npm": ">=7.0.0"
}
},
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "license": "MIT"
},
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true,
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/uuid": {
+ "node_modules/vscode-languageserver": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
+ "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.5"
+ },
"bin": {
- "uuid": "dist/bin/uuid"
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "license": "MIT"
},
- "node_modules/whatwg-fetch": {
- "version": "3.6.20",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
- "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
- "dev": true
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT"
},
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "node_modules/vscode-nls": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
+ "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
+ "license": "MIT"
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
+ "license": "MIT"
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/which": {
@@ -9014,150 +8386,64 @@
"node": ">= 8"
}
},
- "node_modules/which-typed-array": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/widest-line": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
- "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
- "dev": true,
+ "node_modules/which-pm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz",
+ "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==",
+ "license": "MIT",
"dependencies": {
- "string-width": "^4.0.0"
+ "load-yaml-file": "^0.2.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18.12"
}
},
- "node_modules/widest-line/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/widest-line/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
+ "node_modules/which-pm-runs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",
+ "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
+ "node_modules/widest-line": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
+ "string-width": "^7.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
+ "node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -9169,7 +8455,7 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -9181,7 +8467,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -9195,87 +8481,201 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
},
- "node_modules/write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
+ "node_modules/xxhash-wasm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
+ "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==",
+ "license": "MIT"
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/yaml": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
+ "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yaml-language-server": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz",
+ "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==",
+ "license": "MIT",
"dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
+ "ajv": "^8.11.0",
+ "lodash": "4.17.21",
+ "request-light": "^0.5.7",
+ "vscode-json-languageservice": "4.1.8",
+ "vscode-languageserver": "^7.0.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.16.0",
+ "vscode-nls": "^5.0.0",
+ "vscode-uri": "^3.0.2",
+ "yaml": "2.2.2"
+ },
+ "bin": {
+ "yaml-language-server": "bin/yaml-language-server"
+ },
+ "optionalDependencies": {
+ "prettier": "2.8.7"
}
},
- "node_modules/ws": {
+ "node_modules/yaml-language-server/node_modules/ajv": {
"version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
},
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/yaml-language-server/node_modules/prettier": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
+ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
},
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/xdg-basedir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
- "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
- "dev": true,
+ "node_modules/yaml-language-server/node_modules/request-light": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz",
+ "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==",
+ "license": "MIT"
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
+ "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=8.0.0 || >=10.0.0"
}
},
- "node_modules/xml2js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
- "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
- "dev": true,
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
+ "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
+ "license": "MIT",
"dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
+ "vscode-languageserver-protocol": "3.16.0"
},
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
+ "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "6.0.0",
+ "vscode-languageserver-types": "3.16.0"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
+ "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
+ "license": "MIT"
+ },
+ "node_modules/yaml-language-server/node_modules/yaml": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
+ "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
+ "license": "ISC",
"engines": {
- "node": ">=4.0.0"
+ "node": ">= 14"
}
},
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
"engines": {
- "node": ">=4.0"
+ "node": ">=12"
}
},
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
"engines": {
- "node": ">=0.4"
+ "node": ">=12"
}
},
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "peer": true
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/yocto-queue": {
"version": "0.1.0",
@@ -9289,21 +8689,69 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/zip-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz",
- "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==",
- "dev": true,
+ "node_modules/yocto-spinner": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.1.2.tgz",
+ "integrity": "sha512-VfmLIh/ZSZOJnVRQZc/dvpPP90lWL4G0bmxQMP0+U/2vKBA8GSpcBuWv17y7F+CZItRuO97HN1wdbb4p10uhOg==",
+ "license": "MIT",
"dependencies": {
- "async": "^3.2.0",
- "jszip": "^3.2.2"
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18.19"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/zip-dir/node_modules/async": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
- "dev": true
+ "node_modules/yoctocolors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
+ "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz",
+ "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==",
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.24.1"
+ }
+ },
+ "node_modules/zod-to-ts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz",
+ "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==",
+ "peerDependencies": {
+ "typescript": "^4.9.4 || ^5.0.2",
+ "zod": "^3"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
}
}
}
diff --git a/package.json b/package.json
index cbf4eef..bdc81f9 100644
--- a/package.json
+++ b/package.json
@@ -1,74 +1,67 @@
{
"name": "seattle-js",
- "version": "3.3.96",
+ "type": "module",
+ "version": "4.0.0",
"description": "An evergreen website for the SeattleJS meetup and community",
"engines": {
- "node": ">=16.19.0"
+ "node": ">=22.12.0"
},
"dependencies": {
- "@architect/functions": "latest",
- "@aws-sdk/client-apigatewaymanagementapi": "^3.382.0",
- "@aws-sdk/client-dynamodb": "^3.382.0",
- "@aws-sdk/client-s3": "^3.383.0",
- "@aws-sdk/client-sns": "^3.382.0",
- "@aws-sdk/client-sqs": "^3.382.0",
- "@aws-sdk/client-ssm": "^3.382.0",
- "@aws-sdk/lib-dynamodb": "^3.382.0",
- "@begin/data": "^4.0.2",
- "@enhance/arc-plugin-enhance": "^11.0.4",
- "@liveblocks/client": "^1.1.8",
- "esbuild": "^0.18.17",
- "front-matter": "^4.0.2",
- "marked": "^4.0.12",
- "node-fetch": "^2.6.7"
+ "@astrojs/check": "^0.9.4",
+ "@astrojs/preact": "^4.0.1",
+ "@astrojs/ts-plugin": "^1.10.4",
+ "@liveblocks/client": "^2.15.1",
+ "astro": "^5.1.1",
+ "marked": "^15.0.4",
+ "preact": "^10.25.3"
},
"devDependencies": {
- "@babel/eslint-parser": "^7.19.1",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
- "@begin/deploy": "^0.22.4",
- "aws-sdk": "^2.1429.0",
- "dotenv": "^16.3.1",
- "eslint": "latest",
+ "@types/node": "^22.10.4",
+ "eslint": "^8.46.0",
"eslint-config-prettier": "^8.6.0",
- "prettier": "^2.8.3"
+ "patch-package": "^8.0.0",
+ "prettier": "^3.4.2",
+ "prettier-plugin-astro": "^0.14.1",
+ "typescript": "^5.7.2"
},
+ "scripts": {
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview --port 3333",
+ "astro": "astro",
+ "lint": "npm run check && npm run check-format",
+ "eslint": "eslint src/**/*.{js,jsx,ts,tsx}",
+ "check": "astro check",
+ "check-format": "prettier --no-error-on-unmatched-pattern --check **/*.{astro,js,jsx,ts,tsx,css,md,html,yml,yaml,json}",
+ "format": "prettier --no-error-on-unmatched-pattern --write **/*.{astro,js,jsx,ts,tsx,css,md,html,yml,yaml,json}",
+ "postinstall": "patch-package"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/seattlejs/seattlejs.com.git"
+ },
+ "author": "Carter Rabasa",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/seattlejs/seattlejs.com/issues"
+ },
+ "homepage": "https://github.com/seattlejs/seattlejs.com#readme",
"eslintConfig": {
"env": {
+ "browser": true,
"node": true
},
"extends": [
"eslint:recommended",
"prettier"
],
- "ignorePatterns": [
- "public/scripts/*",
- "src/*"
- ],
- "parser": "@babel/eslint-parser",
"parserOptions": {
"requireConfigFile": false,
- "babelOptions": {
- "plugins": [
- "@babel/plugin-syntax-import-assertions"
- ]
- },
"sourceType": "module",
- "ecmaVersion": 2022
+ "ecmaVersion": 2022,
+ "ecmaFeatures": {
+ "jsx": true
+ }
}
- },
- "scripts": {
- "start": "begin dev",
- "lint": "eslint ./app/**/*.mjs --fix && prettier \"**/*.mjs\" --write",
- "build": "esbuild src/app.js --bundle --outfile=public/scripts/app.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/seattlejs/seattlejs.com.git"
- },
- "author": "Carter Rabasa",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/seattlejs/seattlejs.com/issues"
- },
- "homepage": "https://github.com/seattlejs/seattlejs.com#readme"
+ }
}
diff --git a/prefs.arc b/prefs.arc
deleted file mode 100644
index 9e11c0d..0000000
--- a/prefs.arc
+++ /dev/null
@@ -1,2 +0,0 @@
-@sandbox
-livereload true
diff --git a/public/favicon.ico b/public/_public/favicon.ico
similarity index 100%
rename from public/favicon.ico
rename to public/_public/favicon.ico
diff --git a/public/favicon.jpg b/public/_public/favicon.jpg
similarity index 100%
rename from public/favicon.jpg
rename to public/_public/favicon.jpg
diff --git a/public/images/blank-seattlejs-header.png b/public/_public/images/blank-seattlejs-header.png
similarity index 100%
rename from public/images/blank-seattlejs-header.png
rename to public/_public/images/blank-seattlejs-header.png
diff --git a/public/images/logo.png b/public/_public/images/logo.png
similarity index 100%
rename from public/images/logo.png
rename to public/_public/images/logo.png
diff --git a/public/images/seattlejs-march-2022.jpg b/public/_public/images/seattlejs-march-2022.jpg
similarity index 100%
rename from public/images/seattlejs-march-2022.jpg
rename to public/_public/images/seattlejs-march-2022.jpg
diff --git a/public/images/seattlejsconf-2023-logo.png b/public/_public/images/seattlejsconf-2023-logo.png
similarity index 100%
rename from public/images/seattlejsconf-2023-logo.png
rename to public/_public/images/seattlejsconf-2023-logo.png
diff --git a/public/images/seattlejsconf-share.jpg b/public/_public/images/seattlejsconf-share.jpg
similarity index 100%
rename from public/images/seattlejsconf-share.jpg
rename to public/_public/images/seattlejsconf-share.jpg
diff --git a/public/images/seattlejsconf-sharing.png b/public/_public/images/seattlejsconf-sharing.png
similarity index 100%
rename from public/images/seattlejsconf-sharing.png
rename to public/_public/images/seattlejsconf-sharing.png
diff --git a/public/images/skylineShort.jpg b/public/_public/images/skylineShort.jpg
similarity index 100%
rename from public/images/skylineShort.jpg
rename to public/_public/images/skylineShort.jpg
diff --git a/public/images/social-sharing-card-conf.png b/public/_public/images/social-sharing-card-conf.png
similarity index 100%
rename from public/images/social-sharing-card-conf.png
rename to public/_public/images/social-sharing-card-conf.png
diff --git a/public/images/social/a-plea-for-boring-tech.png b/public/_public/images/social/a-plea-for-boring-tech.png
similarity index 100%
rename from public/images/social/a-plea-for-boring-tech.png
rename to public/_public/images/social/a-plea-for-boring-tech.png
diff --git a/public/images/social/building-ai-apps-aug-10.png b/public/_public/images/social/building-ai-apps-aug-10.png
similarity index 100%
rename from public/images/social/building-ai-apps-aug-10.png
rename to public/_public/images/social/building-ai-apps-aug-10.png
diff --git a/public/images/social/creating-a-design-system.png b/public/_public/images/social/creating-a-design-system.png
similarity index 100%
rename from public/images/social/creating-a-design-system.png
rename to public/_public/images/social/creating-a-design-system.png
diff --git a/public/images/social/deno-2.0.png b/public/_public/images/social/deno-2.0.png
similarity index 100%
rename from public/images/social/deno-2.0.png
rename to public/_public/images/social/deno-2.0.png
diff --git a/public/images/social/dont-fear-the-linter.png b/public/_public/images/social/dont-fear-the-linter.png
similarity index 100%
rename from public/images/social/dont-fear-the-linter.png
rename to public/_public/images/social/dont-fear-the-linter.png
diff --git a/public/images/social/es13-and-beyond.png b/public/_public/images/social/es13-and-beyond.png
similarity index 100%
rename from public/images/social/es13-and-beyond.png
rename to public/_public/images/social/es13-and-beyond.png
diff --git a/public/images/social/every-process-everywhere-all-at-once.png b/public/_public/images/social/every-process-everywhere-all-at-once.png
similarity index 100%
rename from public/images/social/every-process-everywhere-all-at-once.png
rename to public/_public/images/social/every-process-everywhere-all-at-once.png
diff --git a/public/images/social/flip-no-more.png b/public/_public/images/social/flip-no-more.png
similarity index 100%
rename from public/images/social/flip-no-more.png
rename to public/_public/images/social/flip-no-more.png
diff --git a/public/images/social/introduction-to-typescript-aug-9.png b/public/_public/images/social/introduction-to-typescript-aug-9.png
similarity index 100%
rename from public/images/social/introduction-to-typescript-aug-9.png
rename to public/_public/images/social/introduction-to-typescript-aug-9.png
diff --git a/public/images/social/langchain-agents.png b/public/_public/images/social/langchain-agents.png
similarity index 100%
rename from public/images/social/langchain-agents.png
rename to public/_public/images/social/langchain-agents.png
diff --git a/public/images/social/managing-data-in-a-react-application-aug-7.png b/public/_public/images/social/managing-data-in-a-react-application-aug-7.png
similarity index 100%
rename from public/images/social/managing-data-in-a-react-application-aug-7.png
rename to public/_public/images/social/managing-data-in-a-react-application-aug-7.png
diff --git a/public/images/social/move-over-passwords.png b/public/_public/images/social/move-over-passwords.png
similarity index 100%
rename from public/images/social/move-over-passwords.png
rename to public/_public/images/social/move-over-passwords.png
diff --git a/public/images/social/react-rendering-with-nextjs.png b/public/_public/images/social/react-rendering-with-nextjs.png
similarity index 100%
rename from public/images/social/react-rendering-with-nextjs.png
rename to public/_public/images/social/react-rendering-with-nextjs.png
diff --git a/public/images/social/real-time-multiplayer-reactions-component.png b/public/_public/images/social/real-time-multiplayer-reactions-component.png
similarity index 100%
rename from public/images/social/real-time-multiplayer-reactions-component.png
rename to public/_public/images/social/real-time-multiplayer-reactions-component.png
diff --git a/public/images/social/rebuilding-in-rust.png b/public/_public/images/social/rebuilding-in-rust.png
similarity index 100%
rename from public/images/social/rebuilding-in-rust.png
rename to public/_public/images/social/rebuilding-in-rust.png
diff --git a/public/_public/styles.css b/public/_public/styles.css
new file mode 100644
index 0000000..b5dcb6c
--- /dev/null
+++ b/public/_public/styles.css
@@ -0,0 +1,2986 @@
+/* ----- THEME ----- */
+
+/* RESET */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+* {
+ margin: 0;
+ padding: 0;
+ border: 0 solid transparent;
+}
+html:focus-within {
+ scroll-behavior: smooth;
+}
+body {
+ min-height: 100vh;
+}
+audio,
+canvas,
+embed,
+iframe,
+img,
+object,
+picture,
+svg,
+video {
+ display: block;
+ max-width: 100%;
+}
+button,
+input,
+select,
+textarea {
+ font: inherit;
+ line-height: inherit;
+ color: inherit;
+}
+a {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: inherit;
+}
+a:not([class]) {
+ text-decoration-skip-ink: auto;
+}
+button,
+[role='button'] {
+ cursor: pointer;
+ background-color: transparent;
+}
+code {
+ font: inherit;
+ font-size: inherit;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-size: inherit;
+ font-weight: inherit;
+}
+ul[role='list'],
+ol[role='list'] {
+ list-style: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+textarea {
+ vertical-align: top;
+ overflow: auto;
+}
+@media (prefers-reduced-motion: reduce) {
+ html:focus-within {
+ scroll-behavior: auto;
+ }
+ *,
+ *::before,
+ *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ scroll-behavior: auto !important;
+ }
+}
+
+/* TYPEFACE */
+html {
+ font-size: 18px;
+}
+
+/* FAMILY */
+.font-sans {
+ font-family:
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ Segoe UI,
+ Roboto,
+ Helvetica Neue,
+ Arial,
+ Noto Sans,
+ sans-serif;
+}
+.font-serif {
+ font-family:
+ Georgia,
+ Cambria,
+ Times New Roman,
+ Times,
+ serif;
+}
+.font-mono {
+ font-family:
+ Menlo,
+ Monaco,
+ Consolas,
+ Liberation Mono,
+ Courier New,
+ monospace;
+}
+
+body {
+ font-weight: normal;
+ line-height: 1;
+ text-rendering: optimizeSpeed;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* BACKGROUND */
+.bg-fixed {
+ background-attachment: fixed;
+}
+.bg-local {
+ background-attachment: local;
+}
+.bg-scroll {
+ background-attachment: scroll;
+}
+.bg-bottom {
+ background-position: bottom;
+}
+.bg-center {
+ background-position: center;
+}
+.bg-left {
+ background-position: left;
+}
+.bg-left-bottom {
+ background-position: left bottom;
+}
+.bg-left-top {
+ background-position: left top;
+}
+.bg-right {
+ background-position: right;
+}
+.bg-right-bottom {
+ background-position: right bottom;
+}
+.bg-right-top {
+ background-position: right top;
+}
+.bg-top {
+ background-position: top;
+}
+.bg-repeat {
+ background-repeat: repeat;
+}
+.bg-no-repeat {
+ background-repeat: no-repeat;
+}
+.bg-repeat-x {
+ background-repeat: repeat-x;
+}
+.bg-repeat-y {
+ background-repeat: repeat-y;
+}
+.bg-repeat-round {
+ background-repeat: round;
+}
+.bg-repeat-space {
+ background-repeat: space;
+}
+.bg-auto {
+ background-size: auto;
+}
+.bg-cover {
+ background-size: cover;
+}
+.bg-contain {
+ background-size: contain;
+}
+.bg-unset {
+ background-color: unset;
+}
+.bg-clip-border {
+ background-clip: border-box;
+}
+.bg-clip-content {
+ background-clip: content-box;
+}
+.bg-clip-padding {
+ background-clip: padding-box;
+}
+.bg-clip-text {
+ background-clip: text;
+ -webkit-background-clip: text;
+ color: transparent;
+}
+
+/* BORDER */
+.border-solid {
+ border-style: solid;
+}
+.border-dashed {
+ border-style: dashed;
+}
+.border-dotted {
+ border-style: dotted;
+}
+.border-double {
+ border-style: double;
+}
+.border-none {
+ border-style: none;
+}
+.border-t-none {
+ border-top: none;
+}
+.border-r-none {
+ border-right: none;
+}
+.border-b-none {
+ border-bottom: none;
+}
+.border-l-none {
+ border-left: none;
+}
+
+.border0 {
+ border-width: 0px;
+}
+.border-t0 {
+ border-top-width: 0px;
+}
+.border-r0 {
+ border-right-width: 0px;
+}
+.border-b0 {
+ border-bottom-width: 0px;
+}
+.border-l0 {
+ border-left-width: 0px;
+}
+
+.border1 {
+ border-width: 1px;
+}
+.border-t1 {
+ border-top-width: 1px;
+}
+.border-r1 {
+ border-right-width: 1px;
+}
+.border-b1 {
+ border-bottom-width: 1px;
+}
+.border-l1 {
+ border-left-width: 1px;
+}
+
+.border2 {
+ border-width: 2px;
+}
+.border-t2 {
+ border-top-width: 2px;
+}
+.border-r2 {
+ border-right-width: 2px;
+}
+.border-b2 {
+ border-bottom-width: 2px;
+}
+.border-l2 {
+ border-left-width: 2px;
+}
+
+.border3 {
+ border-width: 4px;
+}
+.border-t3 {
+ border-top-width: 4px;
+}
+.border-r3 {
+ border-right-width: 4px;
+}
+.border-b3 {
+ border-bottom-width: 4px;
+}
+.border-l3 {
+ border-left-width: 4px;
+}
+
+/* RADIUS */
+.radius-none {
+ border-radius: 0;
+}
+.radius-100 {
+ border-radius: 100%;
+}
+.radius-pill {
+ border-radius: 9999px;
+}
+.radius-t-none,
+.radius-r-none,
+.radius-tr-none {
+ border-top-right-radius: 0;
+}
+.radius-b-none,
+.radius-r-none,
+.radius-br-none {
+ border-bottom-right-radius: 0;
+}
+.radius-t-none,
+.radius-l-none,
+.radius-tl-none {
+ border-top-left-radius: 0;
+}
+.radius-b-none,
+.radius-l-none,
+.radius-bl-none {
+ border-bottom-left-radius: 0;
+}
+.radius0 {
+ border-radius: 2px;
+}
+.radius1 {
+ border-radius: 8px;
+}
+.radius2 {
+ border-radius: 16px;
+}
+.radius3 {
+ border-radius: 9999px;
+}
+
+/* COLOR */
+.text-current {
+ color: currentColor;
+} /* current color */
+.text-transparent {
+ color: transparent;
+} /* transparent */
+
+.border-current {
+ border-color: currentColor;
+} /* current color */
+.border-transparent {
+ border-color: transparent;
+} /* transparent */
+
+.background-current {
+ background-color: currentColor;
+} /* current color */
+.background-transparent {
+ background-color: transparent;
+} /* transparent */
+
+/* ----- THEME COLORS ----- */
+:root {
+ --light: #f8f9fa;
+ --dark: #343a40;
+
+ --primary-100: hsl(211, 100%, 90%);
+ --primary-200: hsl(211, 100%, 80%);
+ --primary-300: hsl(211, 100%, 70%);
+ --primary-400: hsl(211, 100%, 60%);
+ --primary-500: hsl(211, 100%, 50%);
+ --primary-600: hsl(211, 100%, 40%);
+ --primary-700: hsl(211, 100%, 30%);
+ --primary-800: hsl(211, 100%, 20%);
+ --primary-900: hsl(211, 100%, 10%);
+
+ --secondary-100: hsl(208, 7.3%, 85%);
+ --secondary-200: hsl(208, 7.3%, 75%);
+ --secondary-300: hsl(208, 7.3%, 65%);
+ --secondary-400: hsl(208, 7.3%, 55%);
+ --secondary-500: hsl(208, 7.3%, 45.7%);
+ --secondary-600: hsl(208, 7.3%, 35%);
+ --secondary-700: hsl(208, 7.3%, 25%);
+ --secondary-800: hsl(208, 7.3%, 15%);
+ --secondary-900: hsl(208, 7.3%, 5%);
+
+ --success-100: hsl(134, 61.4%, 80%);
+ --success-200: hsl(134, 61.4%, 70%);
+ --success-300: hsl(134, 61.4%, 60%);
+ --success-400: hsl(134, 61.4%, 50%);
+ --success-500: hsl(134, 61.4%, 40.6%);
+ --success-600: hsl(134, 61.4%, 30%);
+ --success-700: hsl(134, 61.4%, 20%);
+ --success-800: hsl(134, 61.4%, 10%);
+ --success-900: hsl(134, 61.4%, 0%);
+
+ --info-100: hsl(188, 77.8%, 80%);
+ --info-200: hsl(188, 77.8%, 70%);
+ --info-300: hsl(188, 77.8%, 60%);
+ --info-400: hsl(188, 77.8%, 50%);
+ --info-500: hsl(188, 77.8%, 40.6%);
+ --info-600: hsl(188, 77.8%, 30%);
+ --info-700: hsl(188, 77.8%, 20%);
+ --info-800: hsl(188, 77.8%, 10%);
+ --info-900: hsl(188, 77.8%, 0%);
+
+ --warning-100: hsl(45, 100%, 91%);
+ --warning-200: hsl(45, 100%, 81%);
+ --warning-300: hsl(45, 100%, 71%);
+ --warning-400: hsl(45, 100%, 61%);
+ --warning-500: hsl(45, 100%, 51.4%);
+ --warning-600: hsl(45, 100%, 41%);
+ --warning-700: hsl(45, 100%, 31%);
+ --warning-800: hsl(45, 100%, 21%);
+ --warning-900: hsl(45, 100%, 11%);
+
+ --error-100: hsl(354, 70.5%, 93%);
+ --error-200: hsl(354, 70.5%, 83%);
+ --error-300: hsl(354, 70.5%, 73%);
+ --error-400: hsl(354, 70.5%, 63%);
+ --error-500: hsl(354, 70.5%, 53.5%);
+ --error-600: hsl(354, 70.5%, 43%);
+ --error-700: hsl(354, 70.5%, 33%);
+ --error-800: hsl(354, 70.5%, 23%);
+ --error-900: hsl(354, 70.5%, 13%);
+
+ --grey-100: hsl(0, 0%, 86%);
+ --grey-200: hsl(0, 0%, 76%);
+ --grey-300: hsl(0, 0%, 66%);
+ --grey-400: hsl(0, 0%, 56%);
+ --grey-500: hsl(0, 0%, 46.7%);
+ --grey-600: hsl(0, 0%, 36%);
+ --grey-700: hsl(0, 0%, 26%);
+ --grey-800: hsl(0, 0%, 16%);
+ --grey-900: hsl(0, 0%, 6%);
+
+ --crimson: #eb0052;
+ --muted: #6c757d;
+ --white: #fff;
+}
+
+/* FILL */
+.fill-none {
+ fill: none;
+}
+.fill-current {
+ fill: currentColor;
+}
+
+/* STROKE */
+.stroke-none {
+ stroke: none;
+}
+.stroke-current {
+ stroke: currentColor;
+}
+
+/* SIZES */
+.text6 {
+ font-size: 5.61rem;
+} /* 100.984px */
+.text5 {
+ font-size: 4.209rem;
+} /* 75.757px */
+.text4 {
+ font-size: 3.157rem;
+} /* 56.832px */
+.text3 {
+ font-size: 2.369rem;
+} /* 42.635px */
+.text2 {
+ font-size: 1.777rem;
+} /* 31.984px */
+.text1 {
+ font-size: 1.333rem;
+} /* 23.994px */
+.text0 {
+ font-size: 1rem;
+} /* 18px */
+.text-1 {
+ font-size: 0.75rem;
+} /* 13.503px */
+.text-2 {
+ font-size: 0.563rem;
+} /* 10.13px */
+.text-3 {
+ font-size: 0.422rem;
+} /* 7.599px */
+.text-4 {
+ font-size: 0.317rem;
+} /* 5.701px */
+.text-5 {
+ font-size: 0.238rem;
+} /* 4.277px */
+.text-6 {
+ font-size: 0.178rem;
+} /* 3.208px */
+
+/* Style */
+.italic {
+ font-style: italic;
+}
+.not-italic {
+ font-style: normal;
+}
+
+/* LINE HEIGHT */
+.leading5 {
+ line-height: 2;
+}
+.leading4 {
+ line-height: 1.625;
+}
+.leading3 {
+ line-height: 1.5;
+}
+.leading2 {
+ line-height: 1.375;
+}
+.leading1 {
+ line-height: 1.25;
+}
+.leading0,
+.leading-none {
+ line-height: 1;
+}
+
+/* TRACKING */
+.tracking3 {
+ letter-spacing: 0.1em;
+}
+.tracking2 {
+ letter-spacing: 0.05em;
+}
+.tracking1 {
+ letter-spacing: 0.025em;
+}
+.tracking0 {
+ letter-spacing: 0;
+}
+.tracking-1 {
+ letter-spacing: -0.025em;
+}
+.tracking-2 {
+ letter-spacing: -0.05em;
+}
+
+/* WEIGHTS */
+.font-hairline {
+ font-weight: 100;
+}
+.font-thin {
+ font-weight: 200;
+}
+.font-light {
+ font-weight: 300;
+}
+.font-normal {
+ font-weight: 400;
+}
+.font-medium {
+ font-weight: 500;
+}
+.font-semibold {
+ font-weight: 600;
+}
+.font-bold {
+ font-weight: 700;
+}
+.font-extrabold {
+ font-weight: 800;
+}
+.font-black {
+ font-weight: 900;
+}
+
+/* TEXT TRANSFORM */
+.uppercase {
+ text-transform: uppercase;
+}
+.lowercase {
+ text-transform: lowercase;
+}
+.capitalize {
+ text-transform: capitalize;
+}
+.normal-case {
+ text-transform: none;
+}
+
+/* ALIGN */
+.text-inherit {
+ text-align: inherit;
+}
+.text-center {
+ text-align: center;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+
+/* DECORATION */
+.no-underline {
+ text-decoration: none;
+}
+.underline {
+ text-decoration: underline;
+}
+.line-through {
+ text-decoration: line-through;
+}
+
+/* LIST */
+.list-none {
+ list-style: none;
+}
+.list-disc {
+ list-style: disc;
+}
+.list-decimal {
+ list-style: decimal;
+}
+
+/* WHITESPACE */
+.whitespace-normal {
+ white-space: normal;
+}
+.truncate,
+.whitespace-no-wrap {
+ white-space: nowrap;
+}
+.whitespace-pre {
+ white-space: pre;
+}
+.whitespace-pre-line {
+ white-space: pre-line;
+}
+.whitespace-pre-wrap {
+ white-space: pre-wrap;
+}
+
+/* WORDBREAK */
+.break-normal {
+ word-break: normal;
+}
+.break-normal,
+.break-word {
+ overflow-wrap: normal;
+}
+.break-all {
+ word-break: break-all;
+}
+.break-keep {
+ word-break: keep-all;
+}
+.truncate,
+.ellipsis {
+ text-overflow: ellipsis;
+}
+
+/* ----- LAYOUT ----- */
+
+/* POSITION */
+.sticky {
+ position: sticky;
+}
+.static {
+ position: static;
+}
+.absolute {
+ position: absolute;
+}
+.relative {
+ position: relative;
+}
+.fixed {
+ position: fixed;
+}
+
+/* POSITIONING */
+.trbl,
+.top0 {
+ top: 0;
+}
+.trbl,
+.right0 {
+ right: 0;
+}
+.trbl,
+.bottom0 {
+ bottom: 0;
+}
+.trbl,
+.left0 {
+ left: 0;
+}
+
+/* DISPLAY */
+.hidden {
+ display: none;
+}
+.block {
+ display: block;
+}
+.inline {
+ display: inline;
+}
+.inline-block {
+ display: inline-block;
+}
+.flex {
+ display: flex;
+}
+.inline-flex {
+ display: inline-flex;
+}
+.grid {
+ display: grid;
+}
+.inline-grid {
+ display: inline-grid;
+}
+
+/* WIDTH */
+.w-0 {
+ width: 0;
+}
+.w-full {
+ width: 100%;
+}
+.w-screen {
+ width: 100vw;
+}
+.min-w-0 {
+ min-width: 0;
+}
+.min-w-full {
+ min-width: 100%;
+}
+.max-width-none {
+ max-width: none;
+}
+.max-w-full {
+ max-width: 100%;
+}
+
+/* HEIGHT */
+.h-0 {
+ height: 0;
+}
+.h-full {
+ height: 100%;
+}
+.h-screen {
+ height: 100vh;
+}
+.min-h-0 {
+ min-height: 0;
+}
+.min-h-full {
+ min-height: 100%;
+}
+.min-h-screen {
+ min-height: 100vh;
+}
+.max-h-full {
+ max-height: 100%;
+}
+.max-h-screen {
+ max-height: 100vh;
+}
+
+/* FLEX */
+.flex-1 {
+ flex: 1 1 0%;
+}
+.flex-auto {
+ flex: 1 1 auto;
+}
+.flex-initial {
+ flex: 0 1 auto;
+}
+.flex-none {
+ flex: none;
+}
+.flex-row {
+ flex-direction: row;
+}
+.flex-row-reverse {
+ flex-direction: row-reverse;
+}
+.flex-col {
+ flex-direction: column;
+}
+.flex-col-reverse {
+ flex-direction: column-reverse;
+}
+.items-stretch {
+ align-items: stretch;
+}
+.items-start {
+ align-items: flex-start;
+}
+.items-end {
+ align-items: flex-end;
+}
+.items-center {
+ align-items: center;
+}
+.content-start {
+ align-content: start;
+}
+.content-center {
+ align-content: center;
+}
+.content-end {
+ align-content: end;
+}
+.content-between {
+ align-content: space-between;
+}
+.content-around {
+ align-content: space-around;
+}
+.self-auto {
+ align-self: auto;
+}
+.self-start {
+ align-self: flex-start;
+}
+.self-end {
+ align-self: flex-end;
+}
+.self-center {
+ align-self: center;
+}
+.self-stretch {
+ align-self: stretch;
+}
+.justify-start {
+ justify-content: flex-start;
+}
+.justify-end {
+ justify-content: flex-end;
+}
+.justify-around {
+ justify-content: space-around;
+}
+.justify-between {
+ justify-content: space-between;
+}
+.justify-center {
+ justify-content: center;
+}
+.flex-grow {
+ flex-grow: 1;
+}
+.flex-grow-0 {
+ flex-grow: 0;
+}
+.flex-shrink {
+ flex-shrink: 1;
+}
+.flex-shrink-0 {
+ flex-shrink: 0;
+}
+.flex-wrap {
+ flex-wrap: wrap;
+}
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+}
+.flex-no-wrap {
+ flex-wrap: nowrap;
+}
+.order-first {
+ order: -9999;
+}
+.order-last {
+ order: 9999;
+}
+.order-none {
+ order: 0;
+}
+.order-1 {
+ order: 1;
+}
+.order-2 {
+ order: 2;
+}
+.order-3 {
+ order: 3;
+}
+.order-4 {
+ order: 4;
+}
+.order-5 {
+ order: 5;
+}
+.order-6 {
+ order: 6;
+}
+
+/* GRID */
+.flow-row {
+ grid-auto-flow: row;
+}
+.flow-col {
+ grid-auto-flow: column;
+}
+.flow-row-dense {
+ grid-auto-flow: row dense;
+}
+.flow-column-dense {
+ grid-auto-flow: column dense;
+}
+.row-auto {
+ grid-row: auto;
+}
+.col-auto {
+ grid-column: auto;
+}
+.col-end-auto {
+ grid-column-end: auto;
+}
+.rows-end-auto {
+ grid-row-end: auto;
+}
+.rows-none {
+ grid-template-rows: none;
+}
+.col-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+}
+.col-span-1 {
+ grid-column: span 1 / span 1;
+}
+.col-start-1 {
+ grid-column-start: 1;
+}
+.row-start-1 {
+ grid-row-start: 1;
+}
+.col-end-1 {
+ grid-column-end: 1;
+}
+.row-end-1 {
+ grid-row-end: 1;
+}
+.row-1 {
+ grid-template-rows: repeat(1, minmax(0, 1fr));
+}
+.col-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+.col-span-2 {
+ grid-column: span 2 / span 2;
+}
+.col-start-2 {
+ grid-column-start: 2;
+}
+.row-start-2 {
+ grid-row-start: 2;
+}
+.col-end-2 {
+ grid-column-end: 2;
+}
+.row-end-2 {
+ grid-row-end: 2;
+}
+.row-2 {
+ grid-template-rows: repeat(2, minmax(0, 1fr));
+}
+.col-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+}
+.col-span-3 {
+ grid-column: span 3 / span 3;
+}
+.col-start-3 {
+ grid-column-start: 3;
+}
+.row-start-3 {
+ grid-row-start: 3;
+}
+.col-end-3 {
+ grid-column-end: 3;
+}
+.row-end-3 {
+ grid-row-end: 3;
+}
+.row-3 {
+ grid-template-rows: repeat(3, minmax(0, 1fr));
+}
+.col-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+}
+.col-span-4 {
+ grid-column: span 4 / span 4;
+}
+.col-start-4 {
+ grid-column-start: 4;
+}
+.row-start-4 {
+ grid-row-start: 4;
+}
+.col-end-4 {
+ grid-column-end: 4;
+}
+.row-end-4 {
+ grid-row-end: 4;
+}
+.row-4 {
+ grid-template-rows: repeat(4, minmax(0, 1fr));
+}
+.col-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+}
+.col-span-5 {
+ grid-column: span 5 / span 5;
+}
+.col-start-5 {
+ grid-column-start: 5;
+}
+.row-start-5 {
+ grid-row-start: 5;
+}
+.col-end-5 {
+ grid-column-end: 5;
+}
+.row-end-5 {
+ grid-row-end: 5;
+}
+.row-5 {
+ grid-template-rows: repeat(5, minmax(0, 1fr));
+}
+.col-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+}
+.col-span-6 {
+ grid-column: span 6 / span 6;
+}
+.col-start-6 {
+ grid-column-start: 6;
+}
+.row-start-6 {
+ grid-row-start: 6;
+}
+.col-end-6 {
+ grid-column-end: 6;
+}
+.row-end-6 {
+ grid-row-end: 6;
+}
+.row-6 {
+ grid-template-rows: repeat(6, minmax(0, 1fr));
+}
+.gap5 {
+ gap: 5.61rem;
+}
+.gap4 {
+ gap: 4.209rem;
+}
+.gap3 {
+ gap: 3.157rem;
+}
+.gap2 {
+ gap: 2.369rem;
+}
+.gap1 {
+ gap: 1.777rem;
+}
+.gap0 {
+ gap: 1.333rem;
+}
+.gap-1 {
+ gap: 1rem;
+}
+.gap-2 {
+ gap: 0.75rem;
+}
+.gap-3 {
+ gap: 0.563rem;
+}
+.gap-4 {
+ gap: 0.422rem;
+}
+.gap-5 {
+ gap: 0.317rem;
+}
+.gap-6 {
+ gap: 0.238rem;
+}
+.gap-7 {
+ gap: 0.178rem;
+}
+
+/* Z-INDEX */
+.z-auto {
+ z-index: auto;
+}
+.z1 {
+ z-index: 1;
+}
+.z0 {
+ z-index: 0;
+}
+.z-1 {
+ z-index: -1;
+}
+
+/* MARGIN */
+.m-none {
+ margin: 0;
+}
+.my-none,
+.mt-none {
+ margin-top: 0;
+}
+.mx-none,
+.mr-none {
+ margin-right: 0;
+}
+.my-none,
+.mb-none {
+ margin-bottom: 0;
+}
+.mx-none,
+.ml-none {
+ margin-left: 0;
+}
+.m-auto {
+ margin-right: auto;
+ margin-left: auto;
+}
+.mr-auto {
+ margin-right: auto;
+}
+.ml-auto {
+ margin-left: auto;
+}
+.m6 {
+ margin: 5.61rem;
+}
+.mt6 {
+ margin-top: 5.61rem;
+}
+.mr6 {
+ margin-right: 5.61rem;
+}
+.mb6 {
+ margin-bottom: 5.61rem;
+}
+.ml6 {
+ margin-left: 5.61rem;
+}
+.m5 {
+ margin: 4.209rem;
+}
+.mt5 {
+ margin-top: 4.209rem;
+}
+.mr5 {
+ margin-right: 4.209rem;
+}
+.mb5 {
+ margin-bottom: 4.209rem;
+}
+.ml5 {
+ margin-left: 4.209rem;
+}
+.m4 {
+ margin: 3.157rem;
+}
+.mt4 {
+ margin-top: 3.157rem;
+}
+.mr4 {
+ margin-right: 3.157rem;
+}
+.mb4 {
+ margin-bottom: 3.157rem;
+}
+.ml4 {
+ margin-left: 3.157rem;
+}
+.m3 {
+ margin: 2.369rem;
+}
+.mt3 {
+ margin-top: 2.369rem;
+}
+.mr3 {
+ margin-right: 2.369rem;
+}
+.mb3 {
+ margin-bottom: 2.369rem;
+}
+.ml3 {
+ margin-left: 2.369rem;
+}
+.m2 {
+ margin: 1.777rem;
+}
+.mt2 {
+ margin-top: 1.777rem;
+}
+.mr2 {
+ margin-right: 1.777rem;
+}
+.mb2 {
+ margin-bottom: 1.777rem;
+}
+.ml2 {
+ margin-left: 1.777rem;
+}
+.m1 {
+ margin: 1.333rem;
+}
+.mt1 {
+ margin-top: 1.333rem;
+}
+.mr1 {
+ margin-right: 1.333rem;
+}
+.mb1 {
+ margin-bottom: 1.333rem;
+}
+.ml1 {
+ margin-left: 1.333rem;
+}
+.m0 {
+ margin: 1rem;
+}
+.mt0 {
+ margin-top: 1rem;
+}
+.mr0 {
+ margin-right: 1rem;
+}
+.mb0 {
+ margin-bottom: 1rem;
+}
+.ml0 {
+ margin-left: 1rem;
+}
+.m-1 {
+ margin: 0.75rem;
+}
+.mt-1 {
+ margin-top: 0.75rem;
+}
+.mr-1 {
+ margin-right: 0.75rem;
+}
+.mb-1 {
+ margin-bottom: 0.75rem;
+}
+.ml-1 {
+ margin-left: 0.75rem;
+}
+.m-2 {
+ margin: 0.563rem;
+}
+.mt-2 {
+ margin-top: 0.563rem;
+}
+.mr-2 {
+ margin-right: 0.563rem;
+}
+.mb-2 {
+ margin-bottom: 0.563rem;
+}
+.ml-2 {
+ margin-left: 0.563rem;
+}
+.m-3 {
+ margin: 0.422rem;
+}
+.mt-3 {
+ margin-top: 0.422rem;
+}
+.mr-3 {
+ margin-right: 0.422rem;
+}
+.mb-3 {
+ margin-bottom: 0.422rem;
+}
+.ml-3 {
+ margin-left: 0.422rem;
+}
+.m-4 {
+ margin: 0.317rem;
+}
+.mt-4 {
+ margin-top: 0.317rem;
+}
+.mr-4 {
+ margin-right: 0.317rem;
+}
+.mb-4 {
+ margin-bottom: 0.317rem;
+}
+.ml-4 {
+ margin-left: 0.317rem;
+}
+.m-5 {
+ margin: 0.238rem;
+}
+.mt-5 {
+ margin-top: 0.238rem;
+}
+.mr-5 {
+ margin-right: 0.238rem;
+}
+.mb-5 {
+ margin-bottom: 0.238rem;
+}
+.ml-5 {
+ margin-left: 0.238rem;
+}
+.m-6 {
+ margin: 0.178rem;
+}
+.mt-6 {
+ margin-top: 0.178rem;
+}
+.mr-6 {
+ margin-right: 0.178rem;
+}
+.mb-6 {
+ margin-bottom: 0.178rem;
+}
+.ml-6 {
+ margin-left: 0.178rem;
+}
+
+/* PADDING */
+.p-none {
+ padding: 0;
+}
+.py-none,
+.pt-none {
+ padding-top: 0;
+}
+.px-none,
+.pr-none {
+ padding-right: 0;
+}
+.py-none,
+.pb-none {
+ padding-bottom: 0;
+}
+.px-none,
+.pl-none {
+ padding-left: 0;
+}
+.p6 {
+ padding: 5.61rem;
+}
+.pt6 {
+ padding-top: 5.61rem;
+}
+.pr6 {
+ padding-right: 5.61rem;
+}
+.pb6 {
+ padding-bottom: 5.61rem;
+}
+.pl6 {
+ padding-left: 5.61rem;
+}
+.p5 {
+ padding: 4.209rem;
+}
+.pt5 {
+ padding-top: 4.209rem;
+}
+.pr5 {
+ padding-right: 4.209rem;
+}
+.pb5 {
+ padding-bottom: 4.209rem;
+}
+.pl5 {
+ padding-left: 4.209rem;
+}
+.p4 {
+ padding: 3.157rem;
+}
+.pt4 {
+ padding-top: 3.157rem;
+}
+.pr4 {
+ padding-right: 3.157rem;
+}
+.pb4 {
+ padding-bottom: 3.157rem;
+}
+.pl4 {
+ padding-left: 3.157rem;
+}
+.p3 {
+ padding: 2.369rem;
+}
+.pt3 {
+ padding-top: 2.369rem;
+}
+.pr3 {
+ padding-right: 2.369rem;
+}
+.pb3 {
+ padding-bottom: 2.369rem;
+}
+.pl3 {
+ padding-left: 2.369rem;
+}
+.p2 {
+ padding: 1.777rem;
+}
+.pt2 {
+ padding-top: 1.777rem;
+}
+.pr2 {
+ padding-right: 1.777rem;
+}
+.pb2 {
+ padding-bottom: 1.777rem;
+}
+.pl2 {
+ padding-left: 1.777rem;
+}
+.p1 {
+ padding: 1.333rem;
+}
+.pt1 {
+ padding-top: 1.333rem;
+}
+.pr1 {
+ padding-right: 1.333rem;
+}
+.pb1 {
+ padding-bottom: 1.333rem;
+}
+.pl1 {
+ padding-left: 1.333rem;
+}
+.p0 {
+ padding: 1rem;
+}
+.pt0 {
+ padding-top: 1rem;
+}
+.pr0 {
+ padding-right: 1rem;
+}
+.pb0 {
+ padding-bottom: 1rem;
+}
+.pl0 {
+ padding-left: 1rem;
+}
+.p-1 {
+ padding: 0.75rem;
+}
+.pt-1 {
+ padding-top: 0.75rem;
+}
+.pr-1 {
+ padding-right: 0.75rem;
+}
+.pb-1 {
+ padding-bottom: 0.75rem;
+}
+.pl-1 {
+ padding-left: 0.75rem;
+}
+.p-2 {
+ padding: 0.563rem;
+}
+.pt-2 {
+ padding-top: 0.563rem;
+}
+.pr-2 {
+ padding-right: 0.563rem;
+}
+.pb-2 {
+ padding-bottom: 0.563rem;
+}
+.pl-2 {
+ padding-left: 0.563rem;
+}
+.p-3 {
+ padding: 0.422rem;
+}
+.pt-3 {
+ padding-top: 0.422rem;
+}
+.pr-3 {
+ padding-right: 0.422rem;
+}
+.pb-3 {
+ padding-bottom: 0.422rem;
+}
+.pl-3 {
+ padding-left: 0.422rem;
+}
+.p-4 {
+ padding: 0.317rem;
+}
+.pt-4 {
+ padding-top: 0.317rem;
+}
+.pr-4 {
+ padding-right: 0.317rem;
+}
+.pb-4 {
+ padding-bottom: 0.317rem;
+}
+.pl-4 {
+ padding-left: 0.317rem;
+}
+.p-5 {
+ padding: 0.238rem;
+}
+.pt-5 {
+ padding-top: 0.238rem;
+}
+.pr-5 {
+ padding-right: 0.238rem;
+}
+.pb-5 {
+ padding-bottom: 0.238rem;
+}
+.pl-5 {
+ padding-left: 0.238rem;
+}
+.p-6 {
+ padding: 0.178rem;
+}
+.pt-6 {
+ padding-top: 0.178rem;
+}
+.pr-6 {
+ padding-right: 0.178rem;
+}
+.pb-6 {
+ padding-bottom: 0.178rem;
+}
+.pl-6 {
+ padding-left: 0.178rem;
+}
+
+/* OVERFLOW */
+.overflow-auto {
+ overflow: auto;
+}
+.truncate,
+.overflow-hidden {
+ overflow: hidden;
+}
+.overflow-visible {
+ overflow: visible;
+}
+.overflow-scroll {
+ overflow: scroll;
+}
+.overflow-x-auto {
+ overflow-x: auto;
+}
+.overflow-y-auto {
+ overflow-y: auto;
+}
+.overflow-x-scroll {
+ overflow-x: scroll;
+}
+.overflow-x-hidden {
+ overflow-x: hidden;
+}
+.overflow-y-scroll {
+ overflow-y: scroll;
+}
+.overflow-y-hidden {
+ overflow-y: hidden;
+}
+.scrolling-touch {
+ -webkit-overflow-scrolling: touch;
+}
+.scrolling-auto {
+ -webkit-overflow-scrolling: auto;
+}
+
+/* VISIBILITY */
+.invisible {
+ visibility: hidden;
+}
+.visible {
+ visibility: visible;
+}
+
+/* OBJECT FIT */
+.object-contain {
+ object-fit: contain;
+}
+.object-cover {
+ object-fit: cover;
+}
+.object-fill {
+ object-fit: fill;
+}
+.object-none {
+ object-fit: none;
+}
+.object-scale-down {
+ object-fit: scale-down;
+}
+
+/* OBJECT POSITION */
+.object-b {
+ object-position: bottom;
+}
+.object-c {
+ object-position: center;
+}
+.object-t {
+ object-position: top;
+}
+.object-r {
+ object-position: right;
+}
+.object-rt {
+ object-position: right top;
+}
+.object-rb {
+ object-position: right bottom;
+}
+.object-l {
+ object-position: left;
+}
+.object-lt {
+ object-position: left top;
+}
+.object-lb {
+ object-position: left bottom;
+}
+
+/* OUTLINE */
+.outline-none {
+ outline: 0;
+}
+
+/* OPACITY */
+.opacity-0 {
+ opacity: 0;
+}
+.opacity-25 {
+ opacity: 0.25;
+}
+.opacity-50 {
+ opacity: 0.5;
+}
+.opacity-75 {
+ opacity: 0.75;
+}
+.opacity-100 {
+ opacity: 1;
+}
+
+/* CURSOR */
+.cursor-auto {
+ cursor: auto;
+}
+.cursor-default {
+ cursor: default;
+}
+.cursor-pointer {
+ cursor: pointer;
+}
+.cursor-wait {
+ cursor: wait;
+}
+.cursor-text {
+ cursor: text;
+}
+.cursor-move {
+ cursor: move;
+}
+.cursor-not-allowed {
+ cursor: not-allowed;
+}
+.cursor-grab {
+ cursor: grab;
+}
+.cursor-grabbing {
+ cursor: grabbing;
+}
+
+/* USER SELECT */
+.select-none {
+ user-select: none;
+}
+.select-text {
+ user-select: text;
+}
+.select-all {
+ user-select: all;
+}
+.select-auto {
+ user-select: auto;
+}
+
+@media only screen and (min-width: 48em) {
+ /* SIZES */
+ .text6-lg {
+ font-size: 5.61rem;
+ } /* 100.984px */
+ .text5-lg {
+ font-size: 4.209rem;
+ } /* 75.757px */
+ .text4-lg {
+ font-size: 3.157rem;
+ } /* 56.832px */
+ .text3-lg {
+ font-size: 2.369rem;
+ } /* 42.635px */
+ .text2-lg {
+ font-size: 1.777rem;
+ } /* 31.984px */
+ .text1-lg {
+ font-size: 1.333rem;
+ } /* 23.994px */
+ .text0-lg {
+ font-size: 1rem;
+ } /* 18px */
+ .text-1-lg {
+ font-size: 0.75rem;
+ } /* 13.503px */
+ .text-2-lg {
+ font-size: 0.563rem;
+ } /* 10.13px */
+ .text-3-lg {
+ font-size: 0.422rem;
+ } /* 7.599px */
+ .text-4-lg {
+ font-size: 0.317rem;
+ } /* 5.701px */
+ .text-5-lg {
+ font-size: 0.238rem;
+ } /* 4.277px */
+ .text-6-lg {
+ font-size: 0.178rem;
+ } /* 3.208px */
+
+ /* Style */
+ .italic-lg {
+ font-style: italic;
+ }
+ .not-italic-lg {
+ font-style: normal;
+ }
+
+ /* LINE HEIGHT */
+ .leading5-lg {
+ line-height: 2;
+ }
+ .leading4-lg {
+ line-height: 1.625;
+ }
+ .leading3-lg {
+ line-height: 1.5;
+ }
+ .leading2-lg {
+ line-height: 1.375;
+ }
+ .leading1-lg {
+ line-height: 1.25;
+ }
+ .leading0-lg,
+ .leading-none-lg {
+ line-height: 1;
+ }
+
+ /* TRACKING */
+ .tracking3-lg {
+ letter-spacing: 0.1em;
+ }
+ .tracking2-lg {
+ letter-spacing: 0.05em;
+ }
+ .tracking1-lg {
+ letter-spacing: 0.025em;
+ }
+ .tracking0-lg {
+ letter-spacing: 0;
+ }
+ .tracking-1-lg {
+ letter-spacing: -0.025em;
+ }
+ .tracking-2-lg {
+ letter-spacing: -0.05em;
+ }
+
+ /* WEIGHTS */
+ .font-hairline-lg {
+ font-weight: 100;
+ }
+ .font-thin-lg {
+ font-weight: 200;
+ }
+ .font-light-lg {
+ font-weight: 300;
+ }
+ .font-normal-lg {
+ font-weight: 400;
+ }
+ .font-medium-lg {
+ font-weight: 500;
+ }
+ .font-semibold-lg {
+ font-weight: 600;
+ }
+ .font-bold-lg {
+ font-weight: 700;
+ }
+ .font-extrabold-lg {
+ font-weight: 800;
+ }
+ .font-black-lg {
+ font-weight: 900;
+ }
+
+ /* TEXT TRANSFORM */
+ .uppercase-lg {
+ text-transform: uppercase;
+ }
+ .lowercase-lg {
+ text-transform: lowercase;
+ }
+ .capitalize-lg {
+ text-transform: capitalize;
+ }
+ .normal-case-lg {
+ text-transform: none;
+ }
+
+ /* ALIGN */
+ .text-inherit-lg {
+ text-align: inherit;
+ }
+ .text-center-lg {
+ text-align: center;
+ }
+ .text-left-lg {
+ text-align: left;
+ }
+ .text-right-lg {
+ text-align: right;
+ }
+
+ /* DECORATION */
+ .no-underline-lg {
+ text-decoration: none;
+ }
+ .underline-lg {
+ text-decoration: underline;
+ }
+ .line-through-lg {
+ text-decoration: line-through;
+ }
+
+ /* LIST */
+ .list-none-lg {
+ list-style: none;
+ }
+ .list-disc-lg {
+ list-style: disc;
+ }
+ .list-decimal-lg {
+ list-style: decimal;
+ }
+
+ /* WHITESPACE */
+ .whitespace-normal-lg {
+ white-space: normal;
+ }
+ .truncate-lg,
+ .whitespace-no-wrap-lg {
+ white-space: nowrap;
+ }
+ .whitespace-pre-lg {
+ white-space: pre;
+ }
+ .whitespace-pre-line-lg {
+ white-space: pre-line;
+ }
+ .whitespace-pre-wrap-lg {
+ white-space: pre-wrap;
+ }
+
+ /* WORDBREAK */
+ .break-normal-lg {
+ word-break: normal;
+ }
+ .break-normal-lg,
+ .break-word-lg {
+ overflow-wrap: normal;
+ }
+ .break-all-lg {
+ word-break: break-all;
+ }
+ .break-keep-lg {
+ word-break: keep-all;
+ }
+ .truncate-lg,
+ .ellipsis-lg {
+ text-overflow: ellipsis;
+ }
+
+ /* ----- LAYOUT ----- */
+
+ /* POSITION */
+ .sticky-lg {
+ position: sticky;
+ }
+ .static-lg {
+ position: static;
+ }
+ .absolute-lg {
+ position: absolute;
+ }
+ .relative-lg {
+ position: relative;
+ }
+ .fixed-lg {
+ position: fixed;
+ }
+
+ /* POSITIONING */
+ .trbl-lg,
+ .top0-lg {
+ top: 0;
+ }
+ .trbl-lg,
+ .right0-lg {
+ right: 0;
+ }
+ .trbl-lg,
+ .bottom0-lg {
+ bottom: 0;
+ }
+ .trbl-lg,
+ .left0-lg {
+ left: 0;
+ }
+
+ /* DISPLAY */
+ .hidden-lg {
+ display: none;
+ }
+ .block-lg {
+ display: block;
+ }
+ .inline-lg {
+ display: inline;
+ }
+ .inline-block-lg {
+ display: inline-block;
+ }
+ .flex-lg {
+ display: flex;
+ }
+ .inline-flex-lg {
+ display: inline-flex;
+ }
+ .grid-lg {
+ display: grid;
+ }
+ .inline-grid-lg {
+ display: inline-grid;
+ }
+
+ /* WIDTH */
+ .w-0-lg {
+ width: 0;
+ }
+ .w-full-lg {
+ width: 100%;
+ }
+ .w-screen-lg {
+ width: 100vw;
+ }
+ .min-w-0-lg {
+ min-width: 0;
+ }
+ .min-w-full-lg {
+ min-width: 100%;
+ }
+ .max-width-none-lg {
+ max-width: none;
+ }
+ .max-w-full-lg {
+ max-width: 100%;
+ }
+
+ /* HEIGHT */
+ .h-0-lg {
+ height: 0;
+ }
+ .h-full-lg {
+ height: 100%;
+ }
+ .h-screen-lg {
+ height: 100vh;
+ }
+ .min-h-0-lg {
+ min-height: 0;
+ }
+ .min-h-full-lg {
+ min-height: 100%;
+ }
+ .min-h-screen-lg {
+ min-height: 100vh;
+ }
+ .max-h-full-lg {
+ max-height: 100%;
+ }
+ .max-h-screen-lg {
+ max-height: 100vh;
+ }
+
+ /* FLEX */
+ .flex-1-lg {
+ flex: 1 1 0%;
+ }
+ .flex-auto-lg {
+ flex: 1 1 auto;
+ }
+ .flex-initial-lg {
+ flex: 0 1 auto;
+ }
+ .flex-none-lg {
+ flex: none;
+ }
+ .flex-row-lg {
+ flex-direction: row;
+ }
+ .flex-row-reverse-lg {
+ flex-direction: row-reverse;
+ }
+ .flex-col-lg {
+ flex-direction: column;
+ }
+ .flex-col-reverse-lg {
+ flex-direction: column-reverse;
+ }
+ .items-stretch-lg {
+ align-items: stretch;
+ }
+ .items-start-lg {
+ align-items: flex-start;
+ }
+ .items-end-lg {
+ align-items: flex-end;
+ }
+ .items-center-lg {
+ align-items: center;
+ }
+ .content-start-lg {
+ align-content: start;
+ }
+ .content-center-lg {
+ align-content: center;
+ }
+ .content-end-lg {
+ align-content: end;
+ }
+ .content-between-lg {
+ align-content: space-between;
+ }
+ .content-around-lg {
+ align-content: space-around;
+ }
+ .self-auto-lg {
+ align-self: auto;
+ }
+ .self-start-lg {
+ align-self: flex-start;
+ }
+ .self-end-lg {
+ align-self: flex-end;
+ }
+ .self-center-lg {
+ align-self: center;
+ }
+ .self-stretch-lg {
+ align-self: stretch;
+ }
+ .justify-start-lg {
+ justify-content: flex-start;
+ }
+ .justify-end-lg {
+ justify-content: flex-end;
+ }
+ .justify-around-lg {
+ justify-content: space-around;
+ }
+ .justify-between-lg {
+ justify-content: space-between;
+ }
+ .justify-center-lg {
+ justify-content: center;
+ }
+ .flex-grow-lg {
+ flex-grow: 1;
+ }
+ .flex-grow-0-lg {
+ flex-grow: 0;
+ }
+ .flex-shrink-lg {
+ flex-shrink: 1;
+ }
+ .flex-shrink-0-lg {
+ flex-shrink: 0;
+ }
+ .flex-wrap-lg {
+ flex-wrap: wrap;
+ }
+ .flex-wrap-reverse-lg {
+ flex-wrap: wrap-reverse;
+ }
+ .flex-no-wrap-lg {
+ flex-wrap: nowrap;
+ }
+ .order-first-lg {
+ order: -9999;
+ }
+ .order-last-lg {
+ order: 9999;
+ }
+ .order-none-lg {
+ order: 0;
+ }
+ .order-1-lg {
+ order: 1;
+ }
+ .order-2-lg {
+ order: 2;
+ }
+ .order-3-lg {
+ order: 3;
+ }
+ .order-4-lg {
+ order: 4;
+ }
+ .order-5-lg {
+ order: 5;
+ }
+ .order-6-lg {
+ order: 6;
+ }
+
+ /* GRID */
+ .flow-row-lg {
+ grid-auto-flow: row;
+ }
+ .flow-col-lg {
+ grid-auto-flow: column;
+ }
+ .flow-row-dense-lg {
+ grid-auto-flow: row dense;
+ }
+ .flow-column-dense-lg {
+ grid-auto-flow: column dense;
+ }
+ .row-auto-lg {
+ grid-row: auto;
+ }
+ .col-auto-lg {
+ grid-column: auto;
+ }
+ .col-end-auto-lg {
+ grid-column-end: auto;
+ }
+ .rows-end-auto-lg {
+ grid-row-end: auto;
+ }
+ .rows-none-lg {
+ grid-template-rows: none;
+ }
+ .col-1-lg {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+ .col-span-1-lg {
+ grid-column: span 1 / span 1;
+ }
+ .col-start-1-lg {
+ grid-column-start: 1;
+ }
+ .row-start-1-lg {
+ grid-row-start: 1;
+ }
+ .col-end-1-lg {
+ grid-column-end: 1;
+ }
+ .row-end-1-lg {
+ grid-row-end: 1;
+ }
+ .row-1-lg {
+ grid-template-rows: repeat(1, minmax(0, 1fr));
+ }
+ .col-2-lg {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ .col-span-2-lg {
+ grid-column: span 2 / span 2;
+ }
+ .col-start-2-lg {
+ grid-column-start: 2;
+ }
+ .row-start-2-lg {
+ grid-row-start: 2;
+ }
+ .col-end-2-lg {
+ grid-column-end: 2;
+ }
+ .row-end-2-lg {
+ grid-row-end: 2;
+ }
+ .row-2-lg {
+ grid-template-rows: repeat(2, minmax(0, 1fr));
+ }
+ .col-3-lg {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+ .col-span-3-lg {
+ grid-column: span 3 / span 3;
+ }
+ .col-start-3-lg {
+ grid-column-start: 3;
+ }
+ .row-start-3-lg {
+ grid-row-start: 3;
+ }
+ .col-end-3-lg {
+ grid-column-end: 3;
+ }
+ .row-end-3-lg {
+ grid-row-end: 3;
+ }
+ .row-3-lg {
+ grid-template-rows: repeat(3, minmax(0, 1fr));
+ }
+ .col-4-lg {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+ .col-span-4-lg {
+ grid-column: span 4 / span 4;
+ }
+ .col-start-4-lg {
+ grid-column-start: 4;
+ }
+ .row-start-4-lg {
+ grid-row-start: 4;
+ }
+ .col-end-4-lg {
+ grid-column-end: 4;
+ }
+ .row-end-4-lg {
+ grid-row-end: 4;
+ }
+ .row-4-lg {
+ grid-template-rows: repeat(4, minmax(0, 1fr));
+ }
+ .col-5-lg {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+ .col-span-5-lg {
+ grid-column: span 5 / span 5;
+ }
+ .col-start-5-lg {
+ grid-column-start: 5;
+ }
+ .row-start-5-lg {
+ grid-row-start: 5;
+ }
+ .col-end-5-lg {
+ grid-column-end: 5;
+ }
+ .row-end-5-lg {
+ grid-row-end: 5;
+ }
+ .row-5-lg {
+ grid-template-rows: repeat(5, minmax(0, 1fr));
+ }
+ .col-6-lg {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+ .col-span-6-lg {
+ grid-column: span 6 / span 6;
+ }
+ .col-start-6-lg {
+ grid-column-start: 6;
+ }
+ .row-start-6-lg {
+ grid-row-start: 6;
+ }
+ .col-end-6-lg {
+ grid-column-end: 6;
+ }
+ .row-end-6-lg {
+ grid-row-end: 6;
+ }
+ .row-6-lg {
+ grid-template-rows: repeat(6, minmax(0, 1fr));
+ }
+ .gap5-lg {
+ gap: 5.61rem;
+ }
+ .gap4-lg {
+ gap: 4.209rem;
+ }
+ .gap3-lg {
+ gap: 3.157rem;
+ }
+ .gap2-lg {
+ gap: 2.369rem;
+ }
+ .gap1-lg {
+ gap: 1.777rem;
+ }
+ .gap0-lg {
+ gap: 1.333rem;
+ }
+ .gap-1-lg {
+ gap: 1rem;
+ }
+ .gap-2-lg {
+ gap: 0.75rem;
+ }
+ .gap-3-lg {
+ gap: 0.563rem;
+ }
+ .gap-4-lg {
+ gap: 0.422rem;
+ }
+ .gap-5-lg {
+ gap: 0.317rem;
+ }
+ .gap-6-lg {
+ gap: 0.238rem;
+ }
+ .gap-7-lg {
+ gap: 0.178rem;
+ }
+
+ /* Z-INDEX */
+ .z-auto-lg {
+ z-index: auto;
+ }
+ .z1-lg {
+ z-index: 1;
+ }
+ .z0-lg {
+ z-index: 0;
+ }
+ .z-1-lg {
+ z-index: -1;
+ }
+
+ /* MARGIN */
+ .m-none-lg {
+ margin: 0;
+ }
+ .my-none-lg,
+ .mt-none-lg {
+ margin-top: 0;
+ }
+ .mx-none-lg,
+ .mr-none-lg {
+ margin-right: 0;
+ }
+ .my-none-lg,
+ .mb-none-lg {
+ margin-bottom: 0;
+ }
+ .mx-none-lg,
+ .ml-none-lg {
+ margin-left: 0;
+ }
+ .m-auto-lg {
+ margin-right: auto;
+ margin-left: auto;
+ }
+ .mr-auto-lg {
+ margin-right: auto;
+ }
+ .ml-auto-lg {
+ margin-left: auto;
+ }
+ .m6-lg {
+ margin: 5.61rem;
+ }
+ .mt6-lg {
+ margin-top: 5.61rem;
+ }
+ .mr6-lg {
+ margin-right: 5.61rem;
+ }
+ .mb6-lg {
+ margin-bottom: 5.61rem;
+ }
+ .ml6-lg {
+ margin-left: 5.61rem;
+ }
+ .m5-lg {
+ margin: 4.209rem;
+ }
+ .mt5-lg {
+ margin-top: 4.209rem;
+ }
+ .mr5-lg {
+ margin-right: 4.209rem;
+ }
+ .mb5-lg {
+ margin-bottom: 4.209rem;
+ }
+ .ml5-lg {
+ margin-left: 4.209rem;
+ }
+ .m4-lg {
+ margin: 3.157rem;
+ }
+ .mt4-lg {
+ margin-top: 3.157rem;
+ }
+ .mr4-lg {
+ margin-right: 3.157rem;
+ }
+ .mb4-lg {
+ margin-bottom: 3.157rem;
+ }
+ .ml4-lg {
+ margin-left: 3.157rem;
+ }
+ .m3-lg {
+ margin: 2.369rem;
+ }
+ .mt3-lg {
+ margin-top: 2.369rem;
+ }
+ .mr3-lg {
+ margin-right: 2.369rem;
+ }
+ .mb3-lg {
+ margin-bottom: 2.369rem;
+ }
+ .ml3-lg {
+ margin-left: 2.369rem;
+ }
+ .m2-lg {
+ margin: 1.777rem;
+ }
+ .mt2-lg {
+ margin-top: 1.777rem;
+ }
+ .mr2-lg {
+ margin-right: 1.777rem;
+ }
+ .mb2-lg {
+ margin-bottom: 1.777rem;
+ }
+ .ml2-lg {
+ margin-left: 1.777rem;
+ }
+ .m1-lg {
+ margin: 1.333rem;
+ }
+ .mt1-lg {
+ margin-top: 1.333rem;
+ }
+ .mr1-lg {
+ margin-right: 1.333rem;
+ }
+ .mb1-lg {
+ margin-bottom: 1.333rem;
+ }
+ .ml1-lg {
+ margin-left: 1.333rem;
+ }
+ .m0-lg {
+ margin: 1rem;
+ }
+ .mt0-lg {
+ margin-top: 1rem;
+ }
+ .mr0-lg {
+ margin-right: 1rem;
+ }
+ .mb0-lg {
+ margin-bottom: 1rem;
+ }
+ .ml0-lg {
+ margin-left: 1rem;
+ }
+ .m-1-lg {
+ margin: 0.75rem;
+ }
+ .mt-1-lg {
+ margin-top: 0.75rem;
+ }
+ .mr-1-lg {
+ margin-right: 0.75rem;
+ }
+ .mb-1-lg {
+ margin-bottom: 0.75rem;
+ }
+ .ml-1-lg {
+ margin-left: 0.75rem;
+ }
+ .m-2-lg {
+ margin: 0.563rem;
+ }
+ .mt-2-lg {
+ margin-top: 0.563rem;
+ }
+ .mr-2-lg {
+ margin-right: 0.563rem;
+ }
+ .mb-2-lg {
+ margin-bottom: 0.563rem;
+ }
+ .ml-2-lg {
+ margin-left: 0.563rem;
+ }
+ .m-3-lg {
+ margin: 0.422rem;
+ }
+ .mt-3-lg {
+ margin-top: 0.422rem;
+ }
+ .mr-3-lg {
+ margin-right: 0.422rem;
+ }
+ .mb-3-lg {
+ margin-bottom: 0.422rem;
+ }
+ .ml-3-lg {
+ margin-left: 0.422rem;
+ }
+ .m-4-lg {
+ margin: 0.317rem;
+ }
+ .mt-4-lg {
+ margin-top: 0.317rem;
+ }
+ .mr-4-lg {
+ margin-right: 0.317rem;
+ }
+ .mb-4-lg {
+ margin-bottom: 0.317rem;
+ }
+ .ml-4-lg {
+ margin-left: 0.317rem;
+ }
+ .m-5-lg {
+ margin: 0.238rem;
+ }
+ .mt-5-lg {
+ margin-top: 0.238rem;
+ }
+ .mr-5-lg {
+ margin-right: 0.238rem;
+ }
+ .mb-5-lg {
+ margin-bottom: 0.238rem;
+ }
+ .ml-5-lg {
+ margin-left: 0.238rem;
+ }
+ .m-6-lg {
+ margin: 0.178rem;
+ }
+ .mt-6-lg {
+ margin-top: 0.178rem;
+ }
+ .mr-6-lg {
+ margin-right: 0.178rem;
+ }
+ .mb-6-lg {
+ margin-bottom: 0.178rem;
+ }
+ .ml-6-lg {
+ margin-left: 0.178rem;
+ }
+
+ /* PADDING */
+ .p-none-lg {
+ padding: 0;
+ }
+ .py-none-lg,
+ .pt-none-lg {
+ padding-top: 0;
+ }
+ .px-none-lg,
+ .pr-none-lg {
+ padding-right: 0;
+ }
+ .py-none-lg,
+ .pb-none-lg {
+ padding-bottom: 0;
+ }
+ .px-none-lg,
+ .pl-none-lg {
+ padding-left: 0;
+ }
+ .p6-lg {
+ padding: 5.61rem;
+ }
+ .pt6-lg {
+ padding-top: 5.61rem;
+ }
+ .pr6-lg {
+ padding-right: 5.61rem;
+ }
+ .pb6-lg {
+ padding-bottom: 5.61rem;
+ }
+ .pl6-lg {
+ padding-left: 5.61rem;
+ }
+ .p5-lg {
+ padding: 4.209rem;
+ }
+ .pt5-lg {
+ padding-top: 4.209rem;
+ }
+ .pr5-lg {
+ padding-right: 4.209rem;
+ }
+ .pb5-lg {
+ padding-bottom: 4.209rem;
+ }
+ .pl5-lg {
+ padding-left: 4.209rem;
+ }
+ .p4-lg {
+ padding: 3.157rem;
+ }
+ .pt4-lg {
+ padding-top: 3.157rem;
+ }
+ .pr4-lg {
+ padding-right: 3.157rem;
+ }
+ .pb4-lg {
+ padding-bottom: 3.157rem;
+ }
+ .pl4-lg {
+ padding-left: 3.157rem;
+ }
+ .p3-lg {
+ padding: 2.369rem;
+ }
+ .pt3-lg {
+ padding-top: 2.369rem;
+ }
+ .pr3-lg {
+ padding-right: 2.369rem;
+ }
+ .pb3-lg {
+ padding-bottom: 2.369rem;
+ }
+ .pl3-lg {
+ padding-left: 2.369rem;
+ }
+ .p2-lg {
+ padding: 1.777rem;
+ }
+ .pt2-lg {
+ padding-top: 1.777rem;
+ }
+ .pr2-lg {
+ padding-right: 1.777rem;
+ }
+ .pb2-lg {
+ padding-bottom: 1.777rem;
+ }
+ .pl2-lg {
+ padding-left: 1.777rem;
+ }
+ .p1-lg {
+ padding: 1.333rem;
+ }
+ .pt1-lg {
+ padding-top: 1.333rem;
+ }
+ .pr1-lg {
+ padding-right: 1.333rem;
+ }
+ .pb1-lg {
+ padding-bottom: 1.333rem;
+ }
+ .pl1-lg {
+ padding-left: 1.333rem;
+ }
+ .p0-lg {
+ padding: 1rem;
+ }
+ .pt0-lg {
+ padding-top: 1rem;
+ }
+ .pr0-lg {
+ padding-right: 1rem;
+ }
+ .pb0-lg {
+ padding-bottom: 1rem;
+ }
+ .pl0-lg {
+ padding-left: 1rem;
+ }
+ .p-1-lg {
+ padding: 0.75rem;
+ }
+ .pt-1-lg {
+ padding-top: 0.75rem;
+ }
+ .pr-1-lg {
+ padding-right: 0.75rem;
+ }
+ .pb-1-lg {
+ padding-bottom: 0.75rem;
+ }
+ .pl-1-lg {
+ padding-left: 0.75rem;
+ }
+ .p-2-lg {
+ padding: 0.563rem;
+ }
+ .pt-2-lg {
+ padding-top: 0.563rem;
+ }
+ .pr-2-lg {
+ padding-right: 0.563rem;
+ }
+ .pb-2-lg {
+ padding-bottom: 0.563rem;
+ }
+ .pl-2-lg {
+ padding-left: 0.563rem;
+ }
+ .p-3-lg {
+ padding: 0.422rem;
+ }
+ .pt-3-lg {
+ padding-top: 0.422rem;
+ }
+ .pr-3-lg {
+ padding-right: 0.422rem;
+ }
+ .pb-3-lg {
+ padding-bottom: 0.422rem;
+ }
+ .pl-3-lg {
+ padding-left: 0.422rem;
+ }
+ .p-4-lg {
+ padding: 0.317rem;
+ }
+ .pt-4-lg {
+ padding-top: 0.317rem;
+ }
+ .pr-4-lg {
+ padding-right: 0.317rem;
+ }
+ .pb-4-lg {
+ padding-bottom: 0.317rem;
+ }
+ .pl-4-lg {
+ padding-left: 0.317rem;
+ }
+ .p-5-lg {
+ padding: 0.238rem;
+ }
+ .pt-5-lg {
+ padding-top: 0.238rem;
+ }
+ .pr-5-lg {
+ padding-right: 0.238rem;
+ }
+ .pb-5-lg {
+ padding-bottom: 0.238rem;
+ }
+ .pl-5-lg {
+ padding-left: 0.238rem;
+ }
+ .p-6-lg {
+ padding: 0.178rem;
+ }
+ .pt-6-lg {
+ padding-top: 0.178rem;
+ }
+ .pr-6-lg {
+ padding-right: 0.178rem;
+ }
+ .pb-6-lg {
+ padding-bottom: 0.178rem;
+ }
+ .pl-6-lg {
+ padding-left: 0.178rem;
+ }
+
+ /* OVERFLOW */
+ .overflow-auto-lg {
+ overflow: auto;
+ }
+ .truncate-lg,
+ .overflow-hidden-lg {
+ overflow: hidden;
+ }
+ .overflow-visible-lg {
+ overflow: visible;
+ }
+ .overflow-scroll-lg {
+ overflow: scroll;
+ }
+ .overflow-x-auto-lg {
+ overflow-x: auto;
+ }
+ .overflow-y-auto-lg {
+ overflow-y: auto;
+ }
+ .overflow-x-scroll-lg {
+ overflow-x: scroll;
+ }
+ .overflow-x-hidden-lg {
+ overflow-x: hidden;
+ }
+ .overflow-y-scroll-lg {
+ overflow-y: scroll;
+ }
+ .overflow-y-hidden-lg {
+ overflow-y: hidden;
+ }
+ .scrolling-touch-lg {
+ -webkit-overflow-scrolling: touch;
+ }
+ .scrolling-auto-lg {
+ -webkit-overflow-scrolling: auto;
+ }
+
+ /* VISIBILITY */
+ .invisible-lg {
+ visibility: hidden;
+ }
+ .visible-lg {
+ visibility: visible;
+ }
+
+ /* OBJECT FIT */
+ .object-contain-lg {
+ object-fit: contain;
+ }
+ .object-cover-lg {
+ object-fit: cover;
+ }
+ .object-fill-lg {
+ object-fit: fill;
+ }
+ .object-none-lg {
+ object-fit: none;
+ }
+ .object-scale-down-lg {
+ object-fit: scale-down;
+ }
+
+ /* OBJECT POSITION */
+ .object-b-lg {
+ object-position: bottom;
+ }
+ .object-c-lg {
+ object-position: center;
+ }
+ .object-t-lg {
+ object-position: top;
+ }
+ .object-r-lg {
+ object-position: right;
+ }
+ .object-rt-lg {
+ object-position: right top;
+ }
+ .object-rb-lg {
+ object-position: right bottom;
+ }
+ .object-l-lg {
+ object-position: left;
+ }
+ .object-lt-lg {
+ object-position: left top;
+ }
+ .object-lb-lg {
+ object-position: left bottom;
+ }
+
+ /* OUTLINE */
+ .outline-none-lg {
+ outline: 0;
+ }
+
+ /* OPACITY */
+ .opacity-0-lg {
+ opacity: 0;
+ }
+ .opacity-25-lg {
+ opacity: 0.25;
+ }
+ .opacity-50-lg {
+ opacity: 0.5;
+ }
+ .opacity-75-lg {
+ opacity: 0.75;
+ }
+ .opacity-100-lg {
+ opacity: 1;
+ }
+
+ /* CURSOR */
+ .cursor-auto-lg {
+ cursor: auto;
+ }
+ .cursor-default-lg {
+ cursor: default;
+ }
+ .cursor-pointer-lg {
+ cursor: pointer;
+ }
+ .cursor-wait-lg {
+ cursor: wait;
+ }
+ .cursor-text-lg {
+ cursor: text;
+ }
+ .cursor-move-lg {
+ cursor: move;
+ }
+ .cursor-not-allowed-lg {
+ cursor: not-allowed;
+ }
+ .cursor-grab-lg {
+ cursor: grab;
+ }
+ .cursor-grabbing-lg {
+ cursor: grabbing;
+ }
+
+ /* USER SELECT */
+ .select-none-lg {
+ user-select: none;
+ }
+ .select-text-lg {
+ user-select: text;
+ }
+ .select-all-lg {
+ user-select: all;
+ }
+ .select-auto-lg {
+ user-select: auto;
+ }
+}
diff --git a/public/images/speakers/andrew-enyeart.png b/public/images/speakers/andrew-enyeart.png
deleted file mode 100644
index 6705580..0000000
Binary files a/public/images/speakers/andrew-enyeart.png and /dev/null differ
diff --git a/public/images/speakers/justin-castilla.png b/public/images/speakers/justin-castilla.png
deleted file mode 100644
index a02fccb..0000000
Binary files a/public/images/speakers/justin-castilla.png and /dev/null differ
diff --git a/public/scripts/app.js b/public/scripts/app.js
deleted file mode 100644
index 04b31ee..0000000
--- a/public/scripts/app.js
+++ /dev/null
@@ -1,5499 +0,0 @@
-(() => {
- // node_modules/@liveblocks/core/dist/index.mjs
- var PKG_NAME = "@liveblocks/core";
- var PKG_VERSION = "1.1.8";
- var PKG_FORMAT = "esm";
- var g = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
- var crossLinkedDocs = "https://liveblocks.io/docs/errors/cross-linked";
- var dupesDocs = "https://liveblocks.io/docs/errors/dupes";
- var SPACE = " ";
- function error(msg) {
- if (false) {
- console.error(msg);
- } else {
- throw new Error(msg);
- }
- }
- function detectDupes(pkgName, pkgVersion, pkgFormat) {
- const pkgId = Symbol.for(pkgName);
- const pkgBuildInfo = pkgFormat ? `${pkgVersion || "dev"} (${pkgFormat})` : pkgVersion || "dev";
- if (!g[pkgId]) {
- g[pkgId] = pkgBuildInfo;
- } else if (g[pkgId] === pkgBuildInfo) {
- } else {
- const msg = [
- `Multiple copies of Liveblocks are being loaded in your project. This will cause issues! See ${dupesDocs + SPACE}`,
- "",
- "Conflicts:",
- `- ${pkgName} ${g[pkgId]} (already loaded)`,
- `- ${pkgName} ${pkgBuildInfo} (trying to load this now)`
- ].join("\n");
- error(msg);
- }
- if (pkgVersion && PKG_VERSION && pkgVersion !== PKG_VERSION) {
- error(
- [
- `Cross-linked versions of Liveblocks found, which will cause issues! See ${crossLinkedDocs + SPACE}`,
- "",
- "Conflicts:",
- `- ${PKG_NAME} is at ${PKG_VERSION}`,
- `- ${pkgName} is at ${pkgVersion}`,
- "",
- "Always upgrade all Liveblocks packages to the same version number."
- ].join("\n")
- );
- }
- }
- function makeEventSource() {
- const _onetimeObservers = /* @__PURE__ */ new Set();
- const _observers = /* @__PURE__ */ new Set();
- let _buffer = null;
- function pause() {
- _buffer = [];
- }
- function unpause() {
- if (_buffer === null) {
- return;
- }
- for (const event of _buffer) {
- notify(event);
- }
- _buffer = null;
- }
- function subscribe(callback) {
- _observers.add(callback);
- return () => _observers.delete(callback);
- }
- function subscribeOnce(callback) {
- _onetimeObservers.add(callback);
- return () => _onetimeObservers.delete(callback);
- }
- async function waitUntil(predicate) {
- let unsub;
- return new Promise((res) => {
- unsub = subscribe((event) => {
- if (predicate === void 0 || predicate(event)) {
- res(event);
- }
- });
- }).finally(() => unsub?.());
- }
- function notifyOrBuffer(event) {
- if (_buffer !== null) {
- _buffer.push(event);
- } else {
- notify(event);
- }
- }
- function notify(event) {
- _onetimeObservers.forEach((callback) => callback(event));
- _onetimeObservers.clear();
- _observers.forEach((callback) => callback(event));
- }
- function clear() {
- _onetimeObservers.clear();
- _observers.clear();
- }
- function count() {
- return _onetimeObservers.size + _observers.size;
- }
- return {
- // Private/internal control over event emission
- notify: notifyOrBuffer,
- subscribe,
- subscribeOnce,
- clear,
- count,
- waitUntil,
- pause,
- unpause,
- // Publicly exposable subscription API
- observable: {
- subscribe,
- subscribeOnce,
- waitUntil
- }
- };
- }
- var _bridgeActive = false;
- function activateBridge(allowed) {
- _bridgeActive = allowed;
- }
- function sendToPanel(message, options) {
- if (typeof window === "undefined") {
- return;
- }
- const fullMsg = {
- ...message,
- source: "liveblocks-devtools-client"
- };
- if (!(options?.force || _bridgeActive)) {
- return;
- }
- window.postMessage(fullMsg, "*");
- }
- var eventSource = makeEventSource();
- if (typeof window !== "undefined") {
- window.addEventListener("message", (event) => {
- if (event.source === window && event.data?.source === "liveblocks-devtools-panel") {
- eventSource.notify(event.data);
- } else {
- }
- });
- }
- var onMessageFromPanel = eventSource.observable;
- var VERSION = PKG_VERSION || "dev";
- var _devtoolsSetupHasRun = false;
- function setupDevTools(getAllRooms) {
- if (typeof window === "undefined") {
- return;
- }
- if (_devtoolsSetupHasRun) {
- return;
- }
- _devtoolsSetupHasRun = true;
- onMessageFromPanel.subscribe((msg) => {
- switch (msg.msg) {
- case "connect": {
- activateBridge(true);
- for (const roomId of getAllRooms()) {
- sendToPanel({
- msg: "room::available",
- roomId,
- clientVersion: VERSION
- });
- }
- break;
- }
- }
- });
- sendToPanel({ msg: "wake-up-devtools" }, { force: true });
- }
- var unsubsByRoomId = /* @__PURE__ */ new Map();
- function stopSyncStream(roomId) {
- const unsubs = unsubsByRoomId.get(roomId) ?? [];
- unsubsByRoomId.delete(roomId);
- for (const unsub of unsubs) {
- unsub();
- }
- }
- function startSyncStream(room) {
- stopSyncStream(room.id);
- fullSync(room);
- unsubsByRoomId.set(room.id, [
- // When the connection status changes
- room.events.status.subscribe(() => partialSyncConnection(room)),
- // When storage initializes, send the update
- room.events.storageDidLoad.subscribeOnce(() => partialSyncStorage(room)),
- // Any time storage updates, send the new storage root
- room.events.storage.subscribe(() => partialSyncStorage(room)),
- // Any time "me" or "others" updates, send the new values accordingly
- room.events.self.subscribe(() => partialSyncMe(room)),
- room.events.others.subscribe(() => partialSyncOthers(room))
- ]);
- }
- function partialSyncConnection(room) {
- sendToPanel({
- msg: "room::sync::partial",
- roomId: room.id,
- status: room.getStatus()
- });
- }
- function partialSyncStorage(room) {
- const root = room.getStorageSnapshot();
- if (root) {
- sendToPanel({
- msg: "room::sync::partial",
- roomId: room.id,
- storage: root.toTreeNode("root").payload
- });
- }
- }
- function partialSyncMe(room) {
- const me = room.__internal.getSelf_forDevTools();
- if (me) {
- sendToPanel({
- msg: "room::sync::partial",
- roomId: room.id,
- me
- });
- }
- }
- function partialSyncOthers(room) {
- const others = room.__internal.getOthers_forDevTools();
- if (others) {
- sendToPanel({
- msg: "room::sync::partial",
- roomId: room.id,
- others
- });
- }
- }
- function fullSync(room) {
- const root = room.getStorageSnapshot();
- const me = room.__internal.getSelf_forDevTools();
- const others = room.__internal.getOthers_forDevTools();
- sendToPanel({
- msg: "room::sync::full",
- roomId: room.id,
- status: room.getStatus(),
- storage: root?.toTreeNode("root").payload ?? null,
- me,
- others
- });
- }
- var roomChannelListeners = /* @__PURE__ */ new Map();
- function stopRoomChannelListener(roomId) {
- const listener = roomChannelListeners.get(roomId);
- roomChannelListeners.delete(roomId);
- if (listener) {
- listener();
- }
- }
- function linkDevTools(roomId, room) {
- if (typeof window === "undefined") {
- return;
- }
- sendToPanel({ msg: "room::available", roomId, clientVersion: VERSION });
- stopRoomChannelListener(roomId);
- roomChannelListeners.set(
- roomId,
- // Returns the unsubscribe callback, that we store in the
- // roomChannelListeners registry
- onMessageFromPanel.subscribe((msg) => {
- switch (msg.msg) {
- case "room::subscribe": {
- if (msg.roomId === roomId) {
- startSyncStream(room);
- }
- break;
- }
- case "room::unsubscribe": {
- if (msg.roomId === roomId) {
- stopSyncStream(roomId);
- }
- break;
- }
- }
- })
- );
- }
- function unlinkDevTools(roomId) {
- if (typeof window === "undefined") {
- return;
- }
- stopSyncStream(roomId);
- stopRoomChannelListener(roomId);
- sendToPanel({
- msg: "room::unavailable",
- roomId
- });
- }
- var badge = "background:#0e0d12;border-radius:9999px;color:#fff;padding:3px 7px;font-family:sans-serif;font-weight:600;";
- var bold = "font-weight:600";
- function wrap(method) {
- return typeof window === "undefined" || false ? console[method] : (
- /* istanbul ignore next */
- (message, ...args) => console[method]("%cLiveblocks", badge, message, ...args)
- );
- }
- var warn = wrap("warn");
- var error2 = wrap("error");
- function wrapWithTitle(method) {
- return typeof window === "undefined" || false ? console[method] : (
- /* istanbul ignore next */
- (title, message, ...args) => console[method](
- `%cLiveblocks%c ${title}`,
- badge,
- bold,
- message,
- ...args
- )
- );
- }
- var warnWithTitle = wrapWithTitle("warn");
- var errorWithTitle = wrapWithTitle("error");
- var _emittedDeprecationWarnings = /* @__PURE__ */ new Set();
- function deprecate(message, key = message) {
- if (true) {
- if (!_emittedDeprecationWarnings.has(key)) {
- _emittedDeprecationWarnings.add(key);
- errorWithTitle("Deprecation warning", message);
- }
- }
- }
- function deprecateIf(condition, message, key = message) {
- if (true) {
- if (condition) {
- deprecate(message, key);
- }
- }
- }
- function assertNever(_value, errmsg) {
- throw new Error(errmsg);
- }
- function assert(condition, errmsg) {
- if (true) {
- if (!condition) {
- const err = new Error(errmsg);
- err.name = "Assertion failure";
- throw err;
- }
- }
- }
- function nn(value, errmsg = "Expected value to be non-nullable") {
- assert(value !== null && value !== void 0, errmsg);
- return value;
- }
- function distance(state1, state2) {
- if (state1 === state2) {
- return [0, 0];
- }
- const chunks1 = state1.split(".");
- const chunks2 = state2.split(".");
- const minLen = Math.min(chunks1.length, chunks2.length);
- let shared = 0;
- for (; shared < minLen; shared++) {
- if (chunks1[shared] !== chunks2[shared]) {
- break;
- }
- }
- const up = chunks1.length - shared;
- const down = chunks2.length - shared;
- return [up, down];
- }
- function patterns(targetState, levels) {
- const parts = targetState.split(".");
- if (levels < 1 || levels > parts.length + 1) {
- throw new Error("Invalid number of levels");
- }
- const result = [];
- if (levels > parts.length) {
- result.push("*");
- }
- for (let i = parts.length - levels + 1; i < parts.length; i++) {
- const slice = parts.slice(0, i);
- if (slice.length > 0) {
- result.push(slice.join(".") + ".*");
- }
- }
- result.push(targetState);
- return result;
- }
- var SafeContext = class {
- constructor(initialContext) {
- this.curr = initialContext;
- }
- get current() {
- return this.curr;
- }
- /**
- * Call a callback function that allows patching of the context, by
- * calling `context.patch()`. Patching is only allowed for the duration
- * of this window.
- */
- allowPatching(callback) {
- const self = this;
- let allowed = true;
- const patchableContext = {
- ...this.curr,
- patch(patch) {
- if (allowed) {
- self.curr = Object.assign({}, self.curr, patch);
- for (const pair of Object.entries(patch)) {
- const [key, value] = pair;
- if (key !== "patch") {
- this[key] = value;
- }
- }
- } else {
- throw new Error("Can no longer patch stale context");
- }
- }
- };
- callback(patchableContext);
- allowed = false;
- return;
- }
- };
- var nextId = 1;
- var FSM = class {
- /**
- * Returns the initial state, which is defined by the first call made to
- * .addState().
- */
- get initialState() {
- const result = this.states.values()[Symbol.iterator]().next();
- if (result.done) {
- throw new Error("No states defined yet");
- } else {
- return result.value;
- }
- }
- get currentState() {
- if (this.currentStateOrNull === null) {
- if (this.runningState === 0) {
- throw new Error("Not started yet");
- } else {
- throw new Error("Already stopped");
- }
- }
- return this.currentStateOrNull;
- }
- /**
- * Starts the machine by entering the initial state.
- */
- start() {
- if (this.runningState !== 0) {
- throw new Error("State machine has already started");
- }
- this.runningState = 1;
- this.currentStateOrNull = this.initialState;
- this.enter(null);
- return this;
- }
- /**
- * Stops the state machine. Stopping the state machine will call exit
- * handlers for the current state, but not enter a new state.
- */
- stop() {
- if (this.runningState !== 1) {
- throw new Error("Cannot stop a state machine that hasn't started yet");
- }
- this.exit(null);
- this.runningState = 2;
- this.currentStateOrNull = null;
- }
- constructor(initialContext) {
- this.id = nextId++;
- this.runningState = 0;
- this.currentStateOrNull = null;
- this.states = /* @__PURE__ */ new Set();
- this.enterFns = /* @__PURE__ */ new Map();
- this.cleanupStack = [];
- this.knownEventTypes = /* @__PURE__ */ new Set();
- this.allowedTransitions = /* @__PURE__ */ new Map();
- this.currentContext = new SafeContext(initialContext);
- this.eventHub = {
- didReceiveEvent: makeEventSource(),
- willTransition: makeEventSource(),
- didIgnoreEvent: makeEventSource(),
- willExitState: makeEventSource(),
- didEnterState: makeEventSource()
- };
- this.events = {
- didReceiveEvent: this.eventHub.didReceiveEvent.observable,
- willTransition: this.eventHub.willTransition.observable,
- didIgnoreEvent: this.eventHub.didIgnoreEvent.observable,
- willExitState: this.eventHub.willExitState.observable,
- didEnterState: this.eventHub.didEnterState.observable
- };
- }
- get context() {
- return this.currentContext.current;
- }
- /**
- * Define an explicit finite state in the state machine.
- */
- addState(state) {
- if (this.runningState !== 0) {
- throw new Error("Already started");
- }
- this.states.add(state);
- return this;
- }
- onEnter(nameOrPattern, enterFn) {
- if (this.runningState !== 0) {
- throw new Error("Already started");
- } else if (this.enterFns.has(nameOrPattern)) {
- throw new Error(
- // TODO We _currently_ don't support multiple .onEnters() for the same
- // state, but this is not a fundamental limitation. Just not
- // implemented yet. If we wanted to, we could make this an array.
- `enter/exit function for ${nameOrPattern} already exists`
- );
- }
- this.enterFns.set(nameOrPattern, enterFn);
- return this;
- }
- onEnterAsync(nameOrPattern, promiseFn, onOK, onError) {
- return this.onEnter(nameOrPattern, () => {
- let cancelled = false;
- void promiseFn(this.currentContext.current).then(
- // On OK
- (data) => {
- if (!cancelled) {
- this.transition({ type: "ASYNC_OK", data }, onOK);
- }
- },
- // On Error
- (reason) => {
- if (!cancelled) {
- this.transition({ type: "ASYNC_ERROR", reason }, onError);
- }
- }
- );
- return () => {
- cancelled = true;
- };
- });
- }
- getStatesMatching(nameOrPattern) {
- const matches = [];
- if (nameOrPattern === "*") {
- for (const state of this.states) {
- matches.push(state);
- }
- } else if (nameOrPattern.endsWith(".*")) {
- const prefix = nameOrPattern.slice(0, -1);
- for (const state of this.states) {
- if (state.startsWith(prefix)) {
- matches.push(state);
- }
- }
- } else {
- const name = nameOrPattern;
- if (this.states.has(name)) {
- matches.push(name);
- }
- }
- if (matches.length === 0) {
- throw new Error(`No states match ${JSON.stringify(nameOrPattern)}`);
- }
- return matches;
- }
- /**
- * Define all allowed outgoing transitions for a state.
- *
- * The targets for each event can be defined as a function which returns the
- * next state to transition to. These functions can look at the `event` or
- * `context` params to conditionally decide which next state to transition
- * to.
- *
- * If you set it to `null`, then the transition will be explicitly forbidden
- * and throw an error. If you don't define a target for a transition, then
- * such events will get ignored.
- */
- addTransitions(nameOrPattern, mapping) {
- if (this.runningState !== 0) {
- throw new Error("Already started");
- }
- for (const srcState of this.getStatesMatching(nameOrPattern)) {
- let map = this.allowedTransitions.get(srcState);
- if (map === void 0) {
- map = /* @__PURE__ */ new Map();
- this.allowedTransitions.set(srcState, map);
- }
- for (const [type, target_] of Object.entries(mapping)) {
- if (map.has(type)) {
- throw new Error(
- `Trying to set transition "${type}" on "${srcState}" (via "${nameOrPattern}"), but a transition already exists there.`
- );
- }
- const target = target_;
- this.knownEventTypes.add(type);
- if (target !== void 0) {
- const targetFn = typeof target === "function" ? target : () => target;
- map.set(type, targetFn);
- }
- }
- }
- return this;
- }
- /**
- * Like `.addTransition()`, but takes an (anonymous) transition whenever the
- * timer fires.
- *
- * @param stateOrPattern The state name, or state group pattern name.
- * @param after Number of milliseconds after which to take the
- * transition. If in the mean time, another transition
- * is taken, the timer will get cancelled.
- * @param target The target state to go to.
- */
- addTimedTransition(stateOrPattern, after2, target) {
- return this.onEnter(stateOrPattern, () => {
- const ms = typeof after2 === "function" ? after2(this.currentContext.current) : after2;
- const timeoutID = setTimeout(() => {
- this.transition({ type: "TIMER" }, target);
- }, ms);
- return () => {
- clearTimeout(timeoutID);
- };
- });
- }
- getTargetFn(eventName) {
- return this.allowedTransitions.get(this.currentState)?.get(eventName);
- }
- /**
- * Exits the current state, and executes any necessary cleanup functions.
- * Call this before changing the current state to the next state.
- *
- * @param levels Defines how many "levels" of nesting will be
- * exited. For example, if you transition from `foo.bar.qux` to
- * `foo.bar.baz`, then the level is 1. But if you transition from
- * `foo.bar.qux` to `bla.bla`, then the level is 3.
- * If `null`, it will exit all levels.
- */
- exit(levels) {
- this.eventHub.willExitState.notify(this.currentState);
- this.currentContext.allowPatching((patchableContext) => {
- levels = levels ?? this.cleanupStack.length;
- for (let i = 0; i < levels; i++) {
- this.cleanupStack.pop()?.(patchableContext);
- }
- });
- }
- /**
- * Enters the current state, and executes any necessary onEnter handlers.
- * Call this directly _after_ setting the current state to the next state.
- */
- enter(levels) {
- const enterPatterns = patterns(
- this.currentState,
- levels ?? this.currentState.split(".").length + 1
- );
- this.currentContext.allowPatching((patchableContext) => {
- for (const pattern of enterPatterns) {
- const enterFn = this.enterFns.get(pattern);
- const cleanupFn = enterFn?.(patchableContext);
- if (typeof cleanupFn === "function") {
- this.cleanupStack.push(cleanupFn);
- } else {
- this.cleanupStack.push(null);
- }
- }
- });
- this.eventHub.didEnterState.notify(this.currentState);
- }
- /**
- * Sends an event to the machine, which may cause an internal state
- * transition to happen. When that happens, will trigger side effects.
- */
- send(event) {
- if (!this.knownEventTypes.has(event.type)) {
- throw new Error(`Invalid event ${JSON.stringify(event.type)}`);
- }
- if (this.runningState === 2) {
- return;
- }
- const targetFn = this.getTargetFn(event.type);
- if (targetFn !== void 0) {
- return this.transition(event, targetFn);
- } else {
- this.eventHub.didIgnoreEvent.notify(event);
- }
- }
- transition(event, target) {
- this.eventHub.didReceiveEvent.notify(event);
- const oldState = this.currentState;
- const targetFn = typeof target === "function" ? target : () => target;
- const nextTarget = targetFn(event, this.currentContext.current);
- let nextState;
- let effects = void 0;
- if (nextTarget === null) {
- this.eventHub.didIgnoreEvent.notify(event);
- return;
- }
- if (typeof nextTarget === "string") {
- nextState = nextTarget;
- } else {
- nextState = nextTarget.target;
- effects = Array.isArray(nextTarget.effect) ? nextTarget.effect : [nextTarget.effect];
- }
- if (!this.states.has(nextState)) {
- throw new Error(`Invalid next state name: ${JSON.stringify(nextState)}`);
- }
- this.eventHub.willTransition.notify({ from: oldState, to: nextState });
- const [up, down] = distance(this.currentState, nextState);
- if (up > 0) {
- this.exit(up);
- }
- this.currentStateOrNull = nextState;
- if (effects !== void 0) {
- const effectsToRun = effects;
- this.currentContext.allowPatching((patchableContext) => {
- for (const effect of effectsToRun) {
- if (typeof effect === "function") {
- effect(patchableContext, event);
- } else {
- patchableContext.patch(effect);
- }
- }
- });
- }
- if (down > 0) {
- this.enter(down);
- }
- }
- };
- function isPlainObject(blob) {
- return blob !== null && typeof blob === "object" && Object.prototype.toString.call(blob) === "[object Object]";
- }
- function entries(obj) {
- return Object.entries(obj);
- }
- function tryParseJson(rawMessage) {
- try {
- return JSON.parse(rawMessage);
- } catch (e) {
- return void 0;
- }
- }
- function deepClone(items) {
- return JSON.parse(JSON.stringify(items));
- }
- function b64decode(b64value) {
- try {
- const formattedValue = b64value.replace(/-/g, "+").replace(/_/g, "/");
- const decodedValue = decodeURIComponent(
- atob(formattedValue).split("").map(function(c) {
- return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
- }).join("")
- );
- return decodedValue;
- } catch (err) {
- return atob(b64value);
- }
- }
- function compact(items) {
- return items.filter(
- (item) => item !== null && item !== void 0
- );
- }
- function compactObject(obj) {
- const newObj = { ...obj };
- Object.keys(obj).forEach((k) => {
- const key = k;
- if (newObj[key] === void 0) {
- delete newObj[key];
- }
- });
- return newObj;
- }
- async function withTimeout(promise, millis, errmsg = "Timed out") {
- let timerID;
- const timer$ = new Promise((_, reject) => {
- timerID = setTimeout(() => {
- reject(new Error(errmsg));
- }, millis);
- });
- return Promise.race([promise, timer$]).finally(() => clearTimeout(timerID));
- }
- function newToLegacyStatus(status) {
- switch (status) {
- case "connecting":
- return "connecting";
- case "connected":
- return "open";
- case "reconnecting":
- return "unavailable";
- case "disconnected":
- return "failed";
- case "initial":
- return "closed";
- default:
- return "closed";
- }
- }
- function toNewConnectionStatus(machine) {
- const state = machine.currentState;
- switch (state) {
- case "@ok.connected":
- case "@ok.awaiting-pong":
- return "connected";
- case "@idle.initial":
- return "initial";
- case "@auth.busy":
- case "@auth.backoff":
- case "@connecting.busy":
- case "@connecting.backoff":
- return machine.context.successCount > 0 ? "reconnecting" : "connecting";
- case "@idle.failed":
- return "disconnected";
- default:
- return assertNever(state, "Unknown state");
- }
- }
- var BACKOFF_DELAYS = [250, 500, 1e3, 2e3, 4e3, 8e3, 1e4];
- var RESET_DELAY = BACKOFF_DELAYS[0] - 1;
- var BACKOFF_DELAYS_SLOW = [2e3, 3e4, 6e4, 3e5];
- var HEARTBEAT_INTERVAL = 3e4;
- var PONG_TIMEOUT = 2e3;
- var AUTH_TIMEOUT = 1e4;
- var SOCKET_CONNECT_TIMEOUT = 1e4;
- var StopRetrying = class extends Error {
- constructor(reason) {
- super(reason);
- }
- };
- var LiveblocksError = class extends Error {
- constructor(message, code) {
- super(message);
- this.code = code;
- }
- };
- function nextBackoffDelay(currentDelay, delays = BACKOFF_DELAYS) {
- return delays.find((delay) => delay > currentDelay) ?? delays[delays.length - 1];
- }
- function increaseBackoffDelay(context) {
- context.patch({ backoffDelay: nextBackoffDelay(context.backoffDelay) });
- }
- function increaseBackoffDelayAggressively(context) {
- context.patch({
- backoffDelay: nextBackoffDelay(context.backoffDelay, BACKOFF_DELAYS_SLOW)
- });
- }
- function resetSuccessCount(context) {
- context.patch({ successCount: 0 });
- }
- function log(level, message) {
- const logger = level === 2 ? error2 : level === 1 ? warn : (
- /* black hole */
- () => {
- }
- );
- return () => {
- logger(message);
- };
- }
- function logPrematureErrorOrCloseEvent(e) {
- const conn = "Connection to Liveblocks websocket server";
- return (ctx) => {
- if (e instanceof Error) {
- warn(`${conn} could not be established. ${String(e)}`);
- } else {
- warn(
- isCloseEvent(e) ? `${conn} closed prematurely (code: ${e.code}). Retrying in ${ctx.backoffDelay}ms.` : `${conn} could not be established.`
- );
- }
- };
- }
- function logCloseEvent(event) {
- return (ctx) => {
- warn(
- `Connection to Liveblocks websocket server closed (code: ${event.code}). Retrying in ${ctx.backoffDelay}ms.`
- );
- };
- }
- var logPermanentClose = log(
- 1,
- "Connection to WebSocket closed permanently. Won't retry."
- );
- function isCloseEvent(error3) {
- return !(error3 instanceof Error) && error3.type === "close";
- }
- function isCustomCloseEvent(error3) {
- return isCloseEvent(error3) && error3.code >= 4e3 && error3.code < 4100;
- }
- function enableTracing(machine) {
- const start = (/* @__PURE__ */ new Date()).getTime();
- function log2(...args) {
- warn(
- `${(((/* @__PURE__ */ new Date()).getTime() - start) / 1e3).toFixed(2)} [FSM #${machine.id}]`,
- ...args
- );
- }
- const unsubs = [
- machine.events.didReceiveEvent.subscribe((e) => log2(`Event ${e.type}`)),
- machine.events.willTransition.subscribe(
- ({ from, to }) => log2("Transitioning", from, "\u2192", to)
- ),
- machine.events.didIgnoreEvent.subscribe(
- (e) => log2("Ignored event", e.type, e, "(current state won't handle it)")
- )
- // machine.events.willExitState.subscribe((s) => log("Exiting state", s)),
- // machine.events.didEnterState.subscribe((s) => log("Entering state", s)),
- ];
- return () => {
- for (const unsub of unsubs) {
- unsub();
- }
- };
- }
- function defineConnectivityEvents(machine) {
- const statusDidChange = makeEventSource();
- const didConnect = makeEventSource();
- const didDisconnect = makeEventSource();
- let lastStatus = null;
- const unsubscribe = machine.events.didEnterState.subscribe(() => {
- const currStatus = toNewConnectionStatus(machine);
- if (currStatus !== lastStatus) {
- statusDidChange.notify(currStatus);
- }
- if (lastStatus === "connected" && currStatus !== "connected") {
- didDisconnect.notify();
- } else if (lastStatus !== "connected" && currStatus === "connected") {
- didConnect.notify();
- }
- lastStatus = currStatus;
- });
- return {
- statusDidChange: statusDidChange.observable,
- didConnect: didConnect.observable,
- didDisconnect: didDisconnect.observable,
- unsubscribe
- };
- }
- var assign = (patch) => (ctx) => ctx.patch(patch);
- function createConnectionStateMachine(delegates, enableDebugLogging) {
- const onMessage = makeEventSource();
- onMessage.pause();
- const onLiveblocksError = makeEventSource();
- const initialContext = {
- successCount: 0,
- token: null,
- socket: null,
- backoffDelay: RESET_DELAY
- };
- const machine = new FSM(initialContext).addState("@idle.initial").addState("@idle.failed").addState("@auth.busy").addState("@auth.backoff").addState("@connecting.busy").addState("@connecting.backoff").addState("@ok.connected").addState("@ok.awaiting-pong");
- machine.addTransitions("*", {
- RECONNECT: {
- target: "@auth.backoff",
- effect: [increaseBackoffDelay, resetSuccessCount]
- },
- DISCONNECT: "@idle.initial"
- });
- machine.onEnter("@idle.*", resetSuccessCount).addTransitions("@idle.*", {
- CONNECT: (_, ctx) => (
- // If we still have a known token, try to reconnect to the socket directly,
- // otherwise, try to obtain a new token
- ctx.token !== null ? "@connecting.busy" : "@auth.busy"
- )
- });
- machine.addTransitions("@auth.backoff", {
- NAVIGATOR_ONLINE: {
- target: "@auth.busy",
- effect: assign({ backoffDelay: RESET_DELAY })
- }
- }).addTimedTransition(
- "@auth.backoff",
- (ctx) => ctx.backoffDelay,
- "@auth.busy"
- ).onEnterAsync(
- "@auth.busy",
- () => withTimeout(delegates.authenticate(), AUTH_TIMEOUT),
- // On successful authentication
- (okEvent) => ({
- target: "@connecting.busy",
- effect: assign({
- token: okEvent.data,
- backoffDelay: RESET_DELAY
- })
- }),
- // Auth failed
- (failedEvent) => {
- if (failedEvent.reason instanceof StopRetrying) {
- return {
- target: "@idle.failed",
- effect: log(2, failedEvent.reason.message)
- };
- }
- return {
- target: "@auth.backoff",
- effect: [
- increaseBackoffDelay,
- log(
- 2,
- `Authentication failed: ${failedEvent.reason instanceof Error ? failedEvent.reason.message : String(failedEvent.reason)}`
- )
- ]
- };
- }
- );
- const onSocketError = (event) => machine.send({ type: "EXPLICIT_SOCKET_ERROR", event });
- const onSocketClose = (event) => machine.send({ type: "EXPLICIT_SOCKET_CLOSE", event });
- const onSocketMessage = (event) => event.data === "pong" ? machine.send({ type: "PONG" }) : onMessage.notify(event);
- function teardownSocket(socket) {
- if (socket) {
- socket.removeEventListener("error", onSocketError);
- socket.removeEventListener("close", onSocketClose);
- socket.removeEventListener("message", onSocketMessage);
- socket.close();
- }
- }
- machine.addTransitions("@connecting.backoff", {
- NAVIGATOR_ONLINE: {
- target: "@connecting.busy",
- effect: assign({ backoffDelay: RESET_DELAY })
- }
- }).addTimedTransition(
- "@connecting.backoff",
- (ctx) => ctx.backoffDelay,
- "@connecting.busy"
- ).onEnterAsync(
- "@connecting.busy",
- //
- // Use the "createSocket" delegate function (provided to the
- // ManagedSocket) to create the actual WebSocket connection instance.
- // Then, set up all the necessary event listeners, and wait for the
- // "open" event to occur.
- //
- // When the "open" event happens, we're ready to transition to the
- // OK state. This is done by resolving the Promise.
- //
- async (ctx) => {
- let capturedPrematureEvent = null;
- const connect$ = new Promise(
- (resolve, rej) => {
- if (ctx.token === null) {
- throw new Error("No auth token");
- }
- const socket = delegates.createSocket(ctx.token);
- function reject(event) {
- capturedPrematureEvent = event;
- socket.removeEventListener("message", onSocketMessage);
- rej(event);
- }
- socket.addEventListener("message", onSocketMessage);
- socket.addEventListener("error", reject);
- socket.addEventListener("close", reject);
- socket.addEventListener("open", () => {
- socket.addEventListener("error", onSocketError);
- socket.addEventListener("close", onSocketClose);
- const unsub = () => {
- socket.removeEventListener("error", reject);
- socket.removeEventListener("close", reject);
- };
- resolve([socket, unsub]);
- });
- }
- );
- return withTimeout(connect$, SOCKET_CONNECT_TIMEOUT).then(
- //
- // Part 3:
- // By now, our "open" event has fired, and the promise has been
- // resolved. Two possible scenarios:
- //
- // 1. The happy path. Most likely.
- // 2. Uh-oh. A premature close/error event has been observed. Let's
- // reject the promise after all.
- //
- // Any close/error event that will get scheduled after this point
- // onwards, will be caught in the OK state, and dealt with
- // accordingly.
- //
- ([socket, unsub]) => {
- unsub();
- if (capturedPrematureEvent) {
- throw capturedPrematureEvent;
- }
- return socket;
- }
- );
- },
- // Only transition to OK state after a successfully opened WebSocket connection
- (okEvent) => ({
- target: "@ok.connected",
- effect: assign({
- socket: okEvent.data,
- backoffDelay: RESET_DELAY
- })
- }),
- // If the WebSocket connection cannot be established
- (failure) => {
- const err = failure.reason;
- if (err instanceof StopRetrying) {
- return {
- target: "@idle.failed",
- effect: log(2, err.message)
- };
- }
- if (isCloseEvent(err) && err.code === 4999) {
- return {
- target: "@idle.failed",
- effect: log(2, err.reason)
- };
- }
- if (isCustomCloseEvent(err) && err.code !== 4001) {
- return {
- target: "@connecting.backoff",
- effect: [
- increaseBackoffDelayAggressively,
- logPrematureErrorOrCloseEvent(err)
- ]
- };
- }
- return {
- target: "@auth.backoff",
- effect: [increaseBackoffDelay, logPrematureErrorOrCloseEvent(err)]
- };
- }
- );
- const sendHeartbeat = {
- target: "@ok.awaiting-pong",
- effect: (ctx) => {
- ctx.socket?.send("ping");
- }
- };
- machine.addTimedTransition("@ok.connected", HEARTBEAT_INTERVAL, sendHeartbeat).addTransitions("@ok.connected", {
- NAVIGATOR_OFFLINE: sendHeartbeat,
- // Don't take the browser's word for it when it says it's offline. Do a ping/pong to make sure.
- WINDOW_GOT_FOCUS: sendHeartbeat
- });
- machine.onEnter("@ok.*", (ctx) => {
- ctx.patch({ successCount: ctx.successCount + 1 });
- const timerID = setTimeout(
- // On the next tick, start delivering all messages that have already
- // been received, and continue synchronous delivery of all future
- // incoming messages.
- onMessage.unpause,
- 0
- );
- return (ctx2) => {
- teardownSocket(ctx2.socket);
- ctx2.patch({ socket: null });
- clearTimeout(timerID);
- onMessage.pause();
- };
- }).addTransitions("@ok.awaiting-pong", { PONG: "@ok.connected" }).addTimedTransition("@ok.awaiting-pong", PONG_TIMEOUT, {
- target: "@connecting.busy",
- // Log implicit connection loss and drop the current open socket
- effect: log(
- 1,
- "Received no pong from server, assume implicit connection loss."
- )
- }).addTransitions("@ok.*", {
- // When a socket receives an error, this can cause the closing of the
- // socket, or not. So always check to see if the socket is still OPEN or
- // not. When still OPEN, don't transition.
- EXPLICIT_SOCKET_ERROR: (_, context) => {
- if (context.socket?.readyState === 1) {
- return null;
- }
- return {
- target: "@connecting.backoff",
- effect: increaseBackoffDelay
- };
- },
- EXPLICIT_SOCKET_CLOSE: (e) => {
- if (e.event.code === 4999) {
- return {
- target: "@idle.failed",
- effect: logPermanentClose
- };
- }
- if (e.event.code === 4001) {
- return {
- target: "@auth.backoff",
- effect: [increaseBackoffDelay, logCloseEvent(e.event)]
- };
- }
- if (isCustomCloseEvent(e.event)) {
- return {
- target: "@connecting.backoff",
- effect: [
- increaseBackoffDelayAggressively,
- logCloseEvent(e.event),
- () => {
- const err = new LiveblocksError(e.event.reason, e.event.code);
- onLiveblocksError.notify(err);
- }
- ]
- };
- }
- return {
- target: "@connecting.backoff",
- effect: [increaseBackoffDelay, logCloseEvent(e.event)]
- };
- }
- });
- if (typeof document !== "undefined") {
- const doc = typeof document !== "undefined" ? document : void 0;
- const win = typeof window !== "undefined" ? window : void 0;
- const root = win ?? doc;
- machine.onEnter("*", (ctx) => {
- function onNetworkOffline() {
- machine.send({ type: "NAVIGATOR_OFFLINE" });
- }
- function onNetworkBackOnline() {
- machine.send({ type: "NAVIGATOR_ONLINE" });
- }
- function onVisibilityChange() {
- if (doc?.visibilityState === "visible") {
- machine.send({ type: "WINDOW_GOT_FOCUS" });
- }
- }
- win?.addEventListener("online", onNetworkBackOnline);
- win?.addEventListener("offline", onNetworkOffline);
- root?.addEventListener("visibilitychange", onVisibilityChange);
- return () => {
- root?.removeEventListener("visibilitychange", onVisibilityChange);
- win?.removeEventListener("online", onNetworkBackOnline);
- win?.removeEventListener("offline", onNetworkOffline);
- teardownSocket(ctx.socket);
- };
- });
- }
- const cleanups = [];
- const { statusDidChange, didConnect, didDisconnect, unsubscribe } = defineConnectivityEvents(machine);
- cleanups.push(unsubscribe);
- if (enableDebugLogging) {
- cleanups.push(enableTracing(machine));
- }
- machine.start();
- return {
- machine,
- cleanups,
- // Observable events that will be emitted by this machine
- events: {
- statusDidChange,
- didConnect,
- didDisconnect,
- onMessage: onMessage.observable,
- onLiveblocksError: onLiveblocksError.observable
- }
- };
- }
- var ManagedSocket = class {
- constructor(delegates, enableDebugLogging = false) {
- const { machine, events, cleanups } = createConnectionStateMachine(
- delegates,
- enableDebugLogging
- );
- this.machine = machine;
- this.events = events;
- this.cleanups = cleanups;
- }
- getLegacyStatus() {
- return newToLegacyStatus(this.getStatus());
- }
- getStatus() {
- try {
- return toNewConnectionStatus(this.machine);
- } catch {
- return "initial";
- }
- }
- /**
- * Returns the current auth token.
- */
- get token() {
- return this.machine.context.token;
- }
- /**
- * Call this method to try to connect to a WebSocket. This only has an effect
- * if the machine is idle at the moment, otherwise this is a no-op.
- */
- connect() {
- this.machine.send({ type: "CONNECT" });
- }
- /**
- * If idle, will try to connect. Otherwise, it will attempt to reconnect to
- * the socket, potentially obtaining a new token first, if needed.
- */
- reconnect() {
- this.machine.send({ type: "RECONNECT" });
- }
- /**
- * Call this method to disconnect from the current WebSocket. Is going to be
- * a no-op if there is no active connection.
- */
- disconnect() {
- this.machine.send({ type: "DISCONNECT" });
- }
- /**
- * Call this to stop the machine and run necessary cleanup functions. After
- * calling destroy(), you can no longer use this instance. Call this before
- * letting the instance get garbage collected.
- */
- destroy() {
- this.machine.stop();
- let cleanup;
- while (cleanup = this.cleanups.pop()) {
- cleanup();
- }
- }
- /**
- * Safely send a message to the current WebSocket connection. Will emit a log
- * message if this is somehow impossible.
- */
- send(data) {
- const socket = this.machine.context?.socket;
- if (socket === null) {
- warn("Cannot send: not connected yet", data);
- } else if (socket.readyState !== 1) {
- warn("Cannot send: WebSocket no longer open", data);
- } else {
- socket.send(data);
- }
- }
- /**
- * NOTE: Used by the E2E app only, to simulate explicit events.
- * Not ideal to keep exposed :(
- */
- _privateSendMachineEvent(event) {
- this.machine.send(event);
- }
- };
- var MIN_CODE = 32;
- var MAX_CODE = 126;
- var NUM_DIGITS = MAX_CODE - MIN_CODE + 1;
- var ZERO = nthDigit(0);
- var ONE = nthDigit(1);
- var ZERO_NINE = ZERO + nthDigit(-1);
- function nthDigit(n) {
- const code = MIN_CODE + (n < 0 ? NUM_DIGITS + n : n);
- if (code < MIN_CODE || code > MAX_CODE) {
- throw new Error(`Invalid n value: ${n}`);
- }
- return String.fromCharCode(code);
- }
- function makePosition(x, y) {
- if (x !== void 0 && y !== void 0) {
- return between(x, y);
- } else if (x !== void 0) {
- return after(x);
- } else if (y !== void 0) {
- return before(y);
- } else {
- return ONE;
- }
- }
- function before(pos) {
- const lastIndex = pos.length - 1;
- for (let i = 0; i <= lastIndex; i++) {
- const code = pos.charCodeAt(i);
- if (code <= MIN_CODE) {
- continue;
- }
- if (i === lastIndex) {
- if (code === MIN_CODE + 1) {
- return pos.substring(0, i) + ZERO_NINE;
- } else {
- return pos.substring(0, i) + String.fromCharCode(code - 1);
- }
- } else {
- return pos.substring(0, i + 1);
- }
- }
- return ONE;
- }
- function after(pos) {
- for (let i = 0; i <= pos.length - 1; i++) {
- const code = pos.charCodeAt(i);
- if (code >= MAX_CODE) {
- continue;
- }
- return pos.substring(0, i) + String.fromCharCode(code + 1);
- }
- return pos + ONE;
- }
- function between(lo, hi) {
- if (lo < hi) {
- return _between(lo, hi);
- } else if (lo > hi) {
- return _between(hi, lo);
- } else {
- throw new Error("Cannot compute value between two equal positions");
- }
- }
- function _between(lo, hi) {
- let index = 0;
- const loLen = lo.length;
- const hiLen = hi.length;
- while (true) {
- const loCode = index < loLen ? lo.charCodeAt(index) : MIN_CODE;
- const hiCode = index < hiLen ? hi.charCodeAt(index) : MAX_CODE;
- if (loCode === hiCode) {
- index++;
- continue;
- }
- if (hiCode - loCode === 1) {
- const prefix = lo.substring(0, index + 1);
- const suffix = lo.substring(index + 1);
- const nines = "";
- return prefix + _between(suffix, nines);
- } else {
- return takeN(lo, index) + String.fromCharCode(hiCode + loCode >> 1);
- }
- }
- }
- function takeN(pos, n) {
- return n < pos.length ? pos.substring(0, n) : pos + ZERO.repeat(n - pos.length);
- }
- var MIN_NON_ZERO_CODE = MIN_CODE + 1;
- function isPos(str) {
- if (str === "") {
- return false;
- }
- const lastIdx = str.length - 1;
- const last = str.charCodeAt(lastIdx);
- if (last < MIN_NON_ZERO_CODE || last > MAX_CODE) {
- return false;
- }
- for (let i = 0; i < lastIdx; i++) {
- const code = str.charCodeAt(i);
- if (code < MIN_CODE || code > MAX_CODE) {
- return false;
- }
- }
- return true;
- }
- function convertToPos(str) {
- const codes = [];
- for (let i = 0; i < str.length; i++) {
- const code = str.charCodeAt(i);
- codes.push(code < MIN_CODE ? MIN_CODE : code > MAX_CODE ? MAX_CODE : code);
- }
- while (codes.length > 0 && codes[codes.length - 1] === MIN_CODE) {
- codes.length--;
- }
- return codes.length > 0 ? String.fromCharCode(...codes) : (
- // Edge case: the str was a 0-only string, which is invalid. Default back to .1
- ONE
- );
- }
- function asPos(str) {
- return isPos(str) ? str : convertToPos(str);
- }
- function isAckOp(op) {
- return op.type === 5 && op.id === "ACK";
- }
- function crdtAsLiveNode(value) {
- return value;
- }
- function HasParent(node, key, pos = asPos(key)) {
- return Object.freeze({ type: "HasParent", node, key, pos });
- }
- var NoParent = Object.freeze({ type: "NoParent" });
- function Orphaned(oldKey, oldPos = asPos(oldKey)) {
- return Object.freeze({ type: "Orphaned", oldKey, oldPos });
- }
- var AbstractCrdt = class {
- constructor() {
- this._parent = NoParent;
- }
- /** @internal */
- _getParentKeyOrThrow() {
- switch (this.parent.type) {
- case "HasParent":
- return this.parent.key;
- case "NoParent":
- throw new Error("Parent key is missing");
- case "Orphaned":
- return this.parent.oldKey;
- default:
- return assertNever(this.parent, "Unknown state");
- }
- }
- /** @internal */
- get _parentPos() {
- switch (this.parent.type) {
- case "HasParent":
- return this.parent.pos;
- case "NoParent":
- throw new Error("Parent key is missing");
- case "Orphaned":
- return this.parent.oldPos;
- default:
- return assertNever(this.parent, "Unknown state");
- }
- }
- /** @internal */
- get _pool() {
- return this.__pool;
- }
- get roomId() {
- return this.__pool ? this.__pool.roomId : null;
- }
- /** @internal */
- get _id() {
- return this.__id;
- }
- /** @internal */
- get parent() {
- return this._parent;
- }
- /** @internal */
- get _parentKey() {
- switch (this.parent.type) {
- case "HasParent":
- return this.parent.key;
- case "NoParent":
- return null;
- case "Orphaned":
- return this.parent.oldKey;
- default:
- return assertNever(this.parent, "Unknown state");
- }
- }
- /** @internal */
- _apply(op, _isLocal) {
- switch (op.type) {
- case 5: {
- if (this.parent.type === "HasParent") {
- return this.parent.node._detachChild(crdtAsLiveNode(this));
- }
- return { modified: false };
- }
- }
- return { modified: false };
- }
- /** @internal */
- _setParentLink(newParentNode, newParentKey) {
- switch (this.parent.type) {
- case "HasParent":
- if (this.parent.node !== newParentNode) {
- throw new Error("Cannot set parent: node already has a parent");
- } else {
- this._parent = HasParent(newParentNode, newParentKey);
- return;
- }
- case "Orphaned":
- case "NoParent": {
- this._parent = HasParent(newParentNode, newParentKey);
- return;
- }
- default:
- return assertNever(this.parent, "Unknown state");
- }
- }
- /** @internal */
- _attach(id, pool) {
- if (this.__id || this.__pool) {
- throw new Error("Cannot attach node: already attached");
- }
- pool.addNode(id, crdtAsLiveNode(this));
- this.__id = id;
- this.__pool = pool;
- }
- /** @internal */
- _detach() {
- if (this.__pool && this.__id) {
- this.__pool.deleteNode(this.__id);
- }
- switch (this.parent.type) {
- case "HasParent": {
- this._parent = Orphaned(this.parent.key, this.parent.pos);
- break;
- }
- case "NoParent": {
- this._parent = NoParent;
- break;
- }
- case "Orphaned": {
- break;
- }
- default:
- assertNever(this.parent, "Unknown state");
- }
- this.__pool = void 0;
- }
- /**
- * @internal
- *
- * Clear the Immutable cache, so that the next call to `.toImmutable()` will
- * recompute the equivalent Immutable value again. Call this after every
- * mutation to the Live node.
- */
- invalidate() {
- if (this._cachedImmutable !== void 0 || this._cachedTreeNode !== void 0) {
- this._cachedImmutable = void 0;
- this._cachedTreeNode = void 0;
- if (this.parent.type === "HasParent") {
- this.parent.node.invalidate();
- }
- }
- }
- /**
- * @internal
- *
- * Return an snapshot of this Live tree for use in DevTools.
- */
- toTreeNode(key) {
- if (this._cachedTreeNode === void 0 || this._cachedTreeNodeKey !== key) {
- this._cachedTreeNodeKey = key;
- this._cachedTreeNode = this._toTreeNode(key);
- }
- return this._cachedTreeNode;
- }
- /**
- * Return an immutable snapshot of this Live node and its children.
- */
- toImmutable() {
- if (this._cachedImmutable === void 0) {
- this._cachedImmutable = this._toImmutable();
- }
- return this._cachedImmutable;
- }
- };
- function isRootCrdt(crdt) {
- return crdt.type === 0 && !isChildCrdt(crdt);
- }
- function isChildCrdt(crdt) {
- return crdt.parentId !== void 0 && crdt.parentKey !== void 0;
- }
- function nanoid(length = 7) {
- const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,./;[]~!@#$%&*()_+=-";
- const len = alphabet.length;
- return Array.from(
- { length },
- () => alphabet.charAt(Math.floor(Math.random() * len))
- ).join("");
- }
- var LiveRegister = class _LiveRegister extends AbstractCrdt {
- constructor(data) {
- super();
- this._data = data;
- }
- get data() {
- return this._data;
- }
- /** @internal */
- static _deserialize([id, item], _parentToChildren, pool) {
- const register = new _LiveRegister(item.data);
- register._attach(id, pool);
- return register;
- }
- /** @internal */
- _toOps(parentId, parentKey, pool) {
- if (this._id === void 0) {
- throw new Error(
- "Cannot serialize register if parentId or parentKey is undefined"
- );
- }
- return [
- {
- type: 8,
- opId: pool?.generateOpId(),
- id: this._id,
- parentId,
- parentKey,
- data: this.data
- }
- ];
- }
- /** @internal */
- _serialize() {
- if (this.parent.type !== "HasParent") {
- throw new Error("Cannot serialize LiveRegister if parent is missing");
- }
- return {
- type: 3,
- parentId: nn(this.parent.node._id, "Parent node expected to have ID"),
- parentKey: this.parent.key,
- data: this.data
- };
- }
- /** @internal */
- _attachChild(_op) {
- throw new Error("Method not implemented.");
- }
- /** @internal */
- _detachChild(_crdt) {
- throw new Error("Method not implemented.");
- }
- /** @internal */
- _apply(op, isLocal) {
- return super._apply(op, isLocal);
- }
- /** @internal */
- _toTreeNode(key) {
- return {
- type: "Json",
- id: this._id ?? nanoid(),
- key,
- payload: this._data
- };
- }
- /** @internal */
- _toImmutable() {
- return this._data;
- }
- };
- function compareNodePosition(itemA, itemB) {
- const posA = itemA._parentPos;
- const posB = itemB._parentPos;
- return posA === posB ? 0 : posA < posB ? -1 : 1;
- }
- var LiveList = class _LiveList extends AbstractCrdt {
- constructor(items = []) {
- super();
- this._items = [];
- this._implicitlyDeletedItems = /* @__PURE__ */ new WeakSet();
- this._unacknowledgedSets = /* @__PURE__ */ new Map();
- let position = void 0;
- for (const item of items) {
- const newPosition = makePosition(position);
- const node = lsonToLiveNode(item);
- node._setParentLink(this, newPosition);
- this._items.push(node);
- position = newPosition;
- }
- }
- /** @internal */
- static _deserialize([id], parentToChildren, pool) {
- const list = new _LiveList();
- list._attach(id, pool);
- const children = parentToChildren.get(id);
- if (children === void 0) {
- return list;
- }
- for (const [id2, crdt] of children) {
- const child = deserialize([id2, crdt], parentToChildren, pool);
- child._setParentLink(list, crdt.parentKey);
- list._insertAndSort(child);
- }
- return list;
- }
- /** @internal */
- _toOps(parentId, parentKey, pool) {
- if (this._id === void 0) {
- throw new Error("Cannot serialize item is not attached");
- }
- const ops = [];
- const op = {
- id: this._id,
- opId: pool?.generateOpId(),
- type: 2,
- parentId,
- parentKey
- };
- ops.push(op);
- for (const item of this._items) {
- ops.push(...item._toOps(this._id, item._getParentKeyOrThrow(), pool));
- }
- return ops;
- }
- /**
- * @internal
- *
- * Adds a new item into the sorted list, in the correct position.
- */
- _insertAndSort(item) {
- this._items.push(item);
- this._sortItems();
- }
- /** @internal */
- _sortItems() {
- this._items.sort(compareNodePosition);
- this.invalidate();
- }
- /** @internal */
- _indexOfPosition(position) {
- return this._items.findIndex(
- (item) => item._getParentKeyOrThrow() === position
- );
- }
- /** @internal */
- _attach(id, pool) {
- super._attach(id, pool);
- for (const item of this._items) {
- item._attach(pool.generateId(), pool);
- }
- }
- /** @internal */
- _detach() {
- super._detach();
- for (const item of this._items) {
- item._detach();
- }
- }
- /** @internal */
- _applySetRemote(op) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- const { id, parentKey: key } = op;
- const child = creationOpToLiveNode(op);
- child._attach(id, this._pool);
- child._setParentLink(this, key);
- const deletedId = op.deletedId;
- const indexOfItemWithSamePosition = this._indexOfPosition(key);
- if (indexOfItemWithSamePosition !== -1) {
- const itemWithSamePosition = this._items[indexOfItemWithSamePosition];
- if (itemWithSamePosition._id === deletedId) {
- itemWithSamePosition._detach();
- this._items[indexOfItemWithSamePosition] = child;
- return {
- modified: makeUpdate(this, [
- setDelta(indexOfItemWithSamePosition, child)
- ]),
- reverse: []
- };
- } else {
- this._implicitlyDeletedItems.add(itemWithSamePosition);
- this._items[indexOfItemWithSamePosition] = child;
- const delta = [
- setDelta(indexOfItemWithSamePosition, child)
- ];
- const deleteDelta2 = this._detachItemAssociatedToSetOperation(
- op.deletedId
- );
- if (deleteDelta2) {
- delta.push(deleteDelta2);
- }
- return {
- modified: makeUpdate(this, delta),
- reverse: []
- };
- }
- } else {
- const updates = [];
- const deleteDelta2 = this._detachItemAssociatedToSetOperation(
- op.deletedId
- );
- if (deleteDelta2) {
- updates.push(deleteDelta2);
- }
- this._insertAndSort(child);
- updates.push(insertDelta(this._indexOfPosition(key), child));
- return {
- reverse: [],
- modified: makeUpdate(this, updates)
- };
- }
- }
- /** @internal */
- _applySetAck(op) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- const delta = [];
- const deletedDelta = this._detachItemAssociatedToSetOperation(op.deletedId);
- if (deletedDelta) {
- delta.push(deletedDelta);
- }
- const unacknowledgedOpId = this._unacknowledgedSets.get(op.parentKey);
- if (unacknowledgedOpId !== void 0) {
- if (unacknowledgedOpId !== op.opId) {
- return delta.length === 0 ? { modified: false } : { modified: makeUpdate(this, delta), reverse: [] };
- } else {
- this._unacknowledgedSets.delete(op.parentKey);
- }
- }
- const indexOfItemWithSamePosition = this._indexOfPosition(op.parentKey);
- const existingItem = this._items.find((item) => item._id === op.id);
- if (existingItem !== void 0) {
- if (existingItem._parentKey === op.parentKey) {
- return {
- modified: delta.length > 0 ? makeUpdate(this, delta) : false,
- reverse: []
- };
- }
- if (indexOfItemWithSamePosition !== -1) {
- this._implicitlyDeletedItems.add(
- this._items[indexOfItemWithSamePosition]
- );
- this._items.splice(indexOfItemWithSamePosition, 1);
- delta.push(deleteDelta(indexOfItemWithSamePosition));
- }
- const previousIndex = this._items.indexOf(existingItem);
- existingItem._setParentLink(this, op.parentKey);
- this._sortItems();
- const newIndex = this._items.indexOf(existingItem);
- if (newIndex !== previousIndex) {
- delta.push(moveDelta(previousIndex, newIndex, existingItem));
- }
- return {
- modified: delta.length > 0 ? makeUpdate(this, delta) : false,
- reverse: []
- };
- } else {
- const orphan = this._pool.getNode(op.id);
- if (orphan && this._implicitlyDeletedItems.has(orphan)) {
- orphan._setParentLink(this, op.parentKey);
- this._implicitlyDeletedItems.delete(orphan);
- this._insertAndSort(orphan);
- const recreatedItemIndex = this._items.indexOf(orphan);
- return {
- modified: makeUpdate(this, [
- // If there is an item at this position, update is a set, else it's an insert
- indexOfItemWithSamePosition === -1 ? insertDelta(recreatedItemIndex, orphan) : setDelta(recreatedItemIndex, orphan),
- ...delta
- ]),
- reverse: []
- };
- } else {
- if (indexOfItemWithSamePosition !== -1) {
- this._items.splice(indexOfItemWithSamePosition, 1);
- }
- const { newItem, newIndex } = this._createAttachItemAndSort(
- op,
- op.parentKey
- );
- return {
- modified: makeUpdate(this, [
- // If there is an item at this position, update is a set, else it's an insert
- indexOfItemWithSamePosition === -1 ? insertDelta(newIndex, newItem) : setDelta(newIndex, newItem),
- ...delta
- ]),
- reverse: []
- };
- }
- }
- }
- /**
- * Returns the update delta of the deletion or null
- * @internal
- */
- _detachItemAssociatedToSetOperation(deletedId) {
- if (deletedId === void 0 || this._pool === void 0) {
- return null;
- }
- const deletedItem = this._pool.getNode(deletedId);
- if (deletedItem === void 0) {
- return null;
- }
- const result = this._detachChild(deletedItem);
- if (result.modified === false) {
- return null;
- }
- return result.modified.updates[0];
- }
- /** @internal */
- _applyRemoteInsert(op) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- const key = asPos(op.parentKey);
- const existingItemIndex = this._indexOfPosition(key);
- if (existingItemIndex !== -1) {
- this._shiftItemPosition(existingItemIndex, key);
- }
- const { newItem, newIndex } = this._createAttachItemAndSort(op, key);
- return {
- modified: makeUpdate(this, [insertDelta(newIndex, newItem)]),
- reverse: []
- };
- }
- /** @internal */
- _applyInsertAck(op) {
- const existingItem = this._items.find((item) => item._id === op.id);
- const key = asPos(op.parentKey);
- const itemIndexAtPosition = this._indexOfPosition(key);
- if (existingItem) {
- if (existingItem._parentKey === key) {
- return {
- modified: false
- };
- } else {
- const oldPositionIndex = this._items.indexOf(existingItem);
- if (itemIndexAtPosition !== -1) {
- this._shiftItemPosition(itemIndexAtPosition, key);
- }
- existingItem._setParentLink(this, key);
- this._sortItems();
- const newIndex = this._indexOfPosition(key);
- if (newIndex === oldPositionIndex) {
- return { modified: false };
- }
- return {
- modified: makeUpdate(this, [
- moveDelta(oldPositionIndex, newIndex, existingItem)
- ]),
- reverse: []
- };
- }
- } else {
- const orphan = nn(this._pool).getNode(op.id);
- if (orphan && this._implicitlyDeletedItems.has(orphan)) {
- orphan._setParentLink(this, key);
- this._implicitlyDeletedItems.delete(orphan);
- this._insertAndSort(orphan);
- const newIndex = this._indexOfPosition(key);
- return {
- modified: makeUpdate(this, [insertDelta(newIndex, orphan)]),
- reverse: []
- };
- } else {
- if (itemIndexAtPosition !== -1) {
- this._shiftItemPosition(itemIndexAtPosition, key);
- }
- const { newItem, newIndex } = this._createAttachItemAndSort(op, key);
- return {
- modified: makeUpdate(this, [insertDelta(newIndex, newItem)]),
- reverse: []
- };
- }
- }
- }
- /** @internal */
- _applyInsertUndoRedo(op) {
- const { id, parentKey: key } = op;
- const child = creationOpToLiveNode(op);
- if (this._pool?.getNode(id) !== void 0) {
- return { modified: false };
- }
- child._attach(id, nn(this._pool));
- child._setParentLink(this, key);
- const existingItemIndex = this._indexOfPosition(key);
- let newKey = key;
- if (existingItemIndex !== -1) {
- const before2 = this._items[existingItemIndex]?._parentPos;
- const after2 = this._items[existingItemIndex + 1]?._parentPos;
- newKey = makePosition(before2, after2);
- child._setParentLink(this, newKey);
- }
- this._insertAndSort(child);
- const newIndex = this._indexOfPosition(newKey);
- return {
- modified: makeUpdate(this, [insertDelta(newIndex, child)]),
- reverse: [{ type: 5, id }]
- };
- }
- /** @internal */
- _applySetUndoRedo(op) {
- const { id, parentKey: key } = op;
- const child = creationOpToLiveNode(op);
- if (this._pool?.getNode(id) !== void 0) {
- return { modified: false };
- }
- this._unacknowledgedSets.set(key, nn(op.opId));
- const indexOfItemWithSameKey = this._indexOfPosition(key);
- child._attach(id, nn(this._pool));
- child._setParentLink(this, key);
- const newKey = key;
- if (indexOfItemWithSameKey !== -1) {
- const existingItem = this._items[indexOfItemWithSameKey];
- existingItem._detach();
- this._items[indexOfItemWithSameKey] = child;
- const reverse = HACK_addIntentAndDeletedIdToOperation(
- existingItem._toOps(nn(this._id), key, this._pool),
- op.id
- );
- const delta = [setDelta(indexOfItemWithSameKey, child)];
- const deletedDelta = this._detachItemAssociatedToSetOperation(
- op.deletedId
- );
- if (deletedDelta) {
- delta.push(deletedDelta);
- }
- return {
- modified: makeUpdate(this, delta),
- reverse
- };
- } else {
- this._insertAndSort(child);
- this._detachItemAssociatedToSetOperation(op.deletedId);
- const newIndex = this._indexOfPosition(newKey);
- return {
- reverse: [{ type: 5, id }],
- modified: makeUpdate(this, [insertDelta(newIndex, child)])
- };
- }
- }
- /** @internal */
- _attachChild(op, source) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- let result;
- if (op.intent === "set") {
- if (source === 1) {
- result = this._applySetRemote(op);
- } else if (source === 2) {
- result = this._applySetAck(op);
- } else {
- result = this._applySetUndoRedo(op);
- }
- } else {
- if (source === 1) {
- result = this._applyRemoteInsert(op);
- } else if (source === 2) {
- result = this._applyInsertAck(op);
- } else {
- result = this._applyInsertUndoRedo(op);
- }
- }
- if (result.modified !== false) {
- this.invalidate();
- }
- return result;
- }
- /** @internal */
- _detachChild(child) {
- if (child) {
- const parentKey = nn(child._parentKey);
- const reverse = child._toOps(nn(this._id), parentKey, this._pool);
- const indexToDelete = this._items.indexOf(child);
- if (indexToDelete === -1) {
- return {
- modified: false
- };
- }
- this._items.splice(indexToDelete, 1);
- this.invalidate();
- child._detach();
- return {
- modified: makeUpdate(this, [deleteDelta(indexToDelete)]),
- reverse
- };
- }
- return { modified: false };
- }
- /** @internal */
- _applySetChildKeyRemote(newKey, child) {
- if (this._implicitlyDeletedItems.has(child)) {
- this._implicitlyDeletedItems.delete(child);
- child._setParentLink(this, newKey);
- this._insertAndSort(child);
- const newIndex = this._items.indexOf(child);
- return {
- modified: makeUpdate(this, [insertDelta(newIndex, child)]),
- reverse: []
- };
- }
- const previousKey = child._parentKey;
- if (newKey === previousKey) {
- return {
- modified: false
- };
- }
- const existingItemIndex = this._indexOfPosition(newKey);
- if (existingItemIndex === -1) {
- const previousIndex = this._items.indexOf(child);
- child._setParentLink(this, newKey);
- this._sortItems();
- const newIndex = this._items.indexOf(child);
- if (newIndex === previousIndex) {
- return {
- modified: false
- };
- }
- return {
- modified: makeUpdate(this, [moveDelta(previousIndex, newIndex, child)]),
- reverse: []
- };
- } else {
- this._items[existingItemIndex]._setParentLink(
- this,
- makePosition(newKey, this._items[existingItemIndex + 1]?._parentPos)
- );
- const previousIndex = this._items.indexOf(child);
- child._setParentLink(this, newKey);
- this._sortItems();
- const newIndex = this._items.indexOf(child);
- if (newIndex === previousIndex) {
- return {
- modified: false
- };
- }
- return {
- modified: makeUpdate(this, [moveDelta(previousIndex, newIndex, child)]),
- reverse: []
- };
- }
- }
- /** @internal */
- _applySetChildKeyAck(newKey, child) {
- const previousKey = nn(child._parentKey);
- if (this._implicitlyDeletedItems.has(child)) {
- const existingItemIndex = this._indexOfPosition(newKey);
- this._implicitlyDeletedItems.delete(child);
- if (existingItemIndex !== -1) {
- this._items[existingItemIndex]._setParentLink(
- this,
- makePosition(newKey, this._items[existingItemIndex + 1]?._parentPos)
- );
- }
- child._setParentLink(this, newKey);
- this._insertAndSort(child);
- return {
- modified: false
- };
- } else {
- if (newKey === previousKey) {
- return {
- modified: false
- };
- }
- const previousIndex = this._items.indexOf(child);
- const existingItemIndex = this._indexOfPosition(newKey);
- if (existingItemIndex !== -1) {
- this._items[existingItemIndex]._setParentLink(
- this,
- makePosition(newKey, this._items[existingItemIndex + 1]?._parentPos)
- );
- }
- child._setParentLink(this, newKey);
- this._sortItems();
- const newIndex = this._items.indexOf(child);
- if (previousIndex === newIndex) {
- return {
- modified: false
- };
- } else {
- return {
- modified: makeUpdate(this, [
- moveDelta(previousIndex, newIndex, child)
- ]),
- reverse: []
- };
- }
- }
- }
- /** @internal */
- _applySetChildKeyUndoRedo(newKey, child) {
- const previousKey = nn(child._parentKey);
- const previousIndex = this._items.indexOf(child);
- const existingItemIndex = this._indexOfPosition(newKey);
- if (existingItemIndex !== -1) {
- this._items[existingItemIndex]._setParentLink(
- this,
- makePosition(newKey, this._items[existingItemIndex + 1]?._parentPos)
- );
- }
- child._setParentLink(this, newKey);
- this._sortItems();
- const newIndex = this._items.indexOf(child);
- if (previousIndex === newIndex) {
- return {
- modified: false
- };
- }
- return {
- modified: makeUpdate(this, [moveDelta(previousIndex, newIndex, child)]),
- reverse: [
- {
- type: 1,
- id: nn(child._id),
- parentKey: previousKey
- }
- ]
- };
- }
- /** @internal */
- _setChildKey(newKey, child, source) {
- if (source === 1) {
- return this._applySetChildKeyRemote(newKey, child);
- } else if (source === 2) {
- return this._applySetChildKeyAck(newKey, child);
- } else {
- return this._applySetChildKeyUndoRedo(newKey, child);
- }
- }
- /** @internal */
- _apply(op, isLocal) {
- return super._apply(op, isLocal);
- }
- /** @internal */
- _serialize() {
- if (this.parent.type !== "HasParent") {
- throw new Error("Cannot serialize LiveList if parent is missing");
- }
- return {
- type: 1,
- parentId: nn(this.parent.node._id, "Parent node expected to have ID"),
- parentKey: this.parent.key
- };
- }
- /**
- * Returns the number of elements.
- */
- get length() {
- return this._items.length;
- }
- /**
- * Adds one element to the end of the LiveList.
- * @param element The element to add to the end of the LiveList.
- */
- push(element) {
- this._pool?.assertStorageIsWritable();
- return this.insert(element, this.length);
- }
- /**
- * Inserts one element at a specified index.
- * @param element The element to insert.
- * @param index The index at which you want to insert the element.
- */
- insert(element, index) {
- this._pool?.assertStorageIsWritable();
- if (index < 0 || index > this._items.length) {
- throw new Error(
- `Cannot insert list item at index "${index}". index should be between 0 and ${this._items.length}`
- );
- }
- const before2 = this._items[index - 1] ? this._items[index - 1]._parentPos : void 0;
- const after2 = this._items[index] ? this._items[index]._parentPos : void 0;
- const position = makePosition(before2, after2);
- const value = lsonToLiveNode(element);
- value._setParentLink(this, position);
- this._insertAndSort(value);
- if (this._pool && this._id) {
- const id = this._pool.generateId();
- value._attach(id, this._pool);
- this._pool.dispatch(
- value._toOps(this._id, position, this._pool),
- [{ type: 5, id }],
- /* @__PURE__ */ new Map([
- [this._id, makeUpdate(this, [insertDelta(index, value)])]
- ])
- );
- }
- }
- /**
- * Move one element from one index to another.
- * @param index The index of the element to move
- * @param targetIndex The index where the element should be after moving.
- */
- move(index, targetIndex) {
- this._pool?.assertStorageIsWritable();
- if (targetIndex < 0) {
- throw new Error("targetIndex cannot be less than 0");
- }
- if (targetIndex >= this._items.length) {
- throw new Error(
- "targetIndex cannot be greater or equal than the list length"
- );
- }
- if (index < 0) {
- throw new Error("index cannot be less than 0");
- }
- if (index >= this._items.length) {
- throw new Error("index cannot be greater or equal than the list length");
- }
- let beforePosition = null;
- let afterPosition = null;
- if (index < targetIndex) {
- afterPosition = targetIndex === this._items.length - 1 ? void 0 : this._items[targetIndex + 1]._parentPos;
- beforePosition = this._items[targetIndex]._parentPos;
- } else {
- afterPosition = this._items[targetIndex]._parentPos;
- beforePosition = targetIndex === 0 ? void 0 : this._items[targetIndex - 1]._parentPos;
- }
- const position = makePosition(beforePosition, afterPosition);
- const item = this._items[index];
- const previousPosition = item._getParentKeyOrThrow();
- item._setParentLink(this, position);
- this._sortItems();
- if (this._pool && this._id) {
- const storageUpdates = /* @__PURE__ */ new Map([
- [this._id, makeUpdate(this, [moveDelta(index, targetIndex, item)])]
- ]);
- this._pool.dispatch(
- [
- {
- type: 1,
- id: nn(item._id),
- opId: this._pool.generateOpId(),
- parentKey: position
- }
- ],
- [
- {
- type: 1,
- id: nn(item._id),
- parentKey: previousPosition
- }
- ],
- storageUpdates
- );
- }
- }
- /**
- * Deletes an element at the specified index
- * @param index The index of the element to delete
- */
- delete(index) {
- this._pool?.assertStorageIsWritable();
- if (index < 0 || index >= this._items.length) {
- throw new Error(
- `Cannot delete list item at index "${index}". index should be between 0 and ${this._items.length - 1}`
- );
- }
- const item = this._items[index];
- item._detach();
- this._items.splice(index, 1);
- this.invalidate();
- if (this._pool) {
- const childRecordId = item._id;
- if (childRecordId) {
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(
- nn(this._id),
- makeUpdate(this, [deleteDelta(index)])
- );
- this._pool.dispatch(
- [
- {
- id: childRecordId,
- opId: this._pool.generateOpId(),
- type: 5
- /* DELETE_CRDT */
- }
- ],
- item._toOps(nn(this._id), item._getParentKeyOrThrow()),
- storageUpdates
- );
- }
- }
- }
- clear() {
- this._pool?.assertStorageIsWritable();
- if (this._pool) {
- const ops = [];
- const reverseOps = [];
- const updateDelta = [];
- for (const item of this._items) {
- item._detach();
- const childId = item._id;
- if (childId) {
- ops.push({
- type: 5,
- id: childId,
- opId: this._pool.generateOpId()
- });
- reverseOps.push(
- ...item._toOps(nn(this._id), item._getParentKeyOrThrow())
- );
- updateDelta.push(deleteDelta(0));
- }
- }
- this._items = [];
- this.invalidate();
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(nn(this._id), makeUpdate(this, updateDelta));
- this._pool.dispatch(ops, reverseOps, storageUpdates);
- } else {
- for (const item of this._items) {
- item._detach();
- }
- this._items = [];
- this.invalidate();
- }
- }
- set(index, item) {
- this._pool?.assertStorageIsWritable();
- if (index < 0 || index >= this._items.length) {
- throw new Error(
- `Cannot set list item at index "${index}". index should be between 0 and ${this._items.length - 1}`
- );
- }
- const existingItem = this._items[index];
- const position = existingItem._getParentKeyOrThrow();
- const existingId = existingItem._id;
- existingItem._detach();
- const value = lsonToLiveNode(item);
- value._setParentLink(this, position);
- this._items[index] = value;
- this.invalidate();
- if (this._pool && this._id) {
- const id = this._pool.generateId();
- value._attach(id, this._pool);
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(this._id, makeUpdate(this, [setDelta(index, value)]));
- const ops = HACK_addIntentAndDeletedIdToOperation(
- value._toOps(this._id, position, this._pool),
- existingId
- );
- this._unacknowledgedSets.set(position, nn(ops[0].opId));
- const reverseOps = HACK_addIntentAndDeletedIdToOperation(
- existingItem._toOps(this._id, position, void 0),
- id
- );
- this._pool.dispatch(ops, reverseOps, storageUpdates);
- }
- }
- /**
- * Returns an Array of all the elements in the LiveList.
- */
- toArray() {
- return this._items.map(
- (entry) => liveNodeToLson(entry)
- // ^^^^^^^^
- // FIXME! This isn't safe.
- );
- }
- /**
- * Tests whether all elements pass the test implemented by the provided function.
- * @param predicate Function to test for each element, taking two arguments (the element and its index).
- * @returns true if the predicate function returns a truthy value for every element. Otherwise, false.
- */
- every(predicate) {
- return this.toArray().every(predicate);
- }
- /**
- * Creates an array with all elements that pass the test implemented by the provided function.
- * @param predicate Function to test each element of the LiveList. Return a value that coerces to true to keep the element, or to false otherwise.
- * @returns An array with the elements that pass the test.
- */
- filter(predicate) {
- return this.toArray().filter(predicate);
- }
- /**
- * Returns the first element that satisfies the provided testing function.
- * @param predicate Function to execute on each value.
- * @returns The value of the first element in the LiveList that satisfies the provided testing function. Otherwise, undefined is returned.
- */
- find(predicate) {
- return this.toArray().find(predicate);
- }
- /**
- * Returns the index of the first element in the LiveList that satisfies the provided testing function.
- * @param predicate Function to execute on each value until the function returns true, indicating that the satisfying element was found.
- * @returns The index of the first element in the LiveList that passes the test. Otherwise, -1.
- */
- findIndex(predicate) {
- return this.toArray().findIndex(predicate);
- }
- /**
- * Executes a provided function once for each element.
- * @param callbackfn Function to execute on each element.
- */
- forEach(callbackfn) {
- return this.toArray().forEach(callbackfn);
- }
- /**
- * Get the element at the specified index.
- * @param index The index on the element to get.
- * @returns The element at the specified index or undefined.
- */
- get(index) {
- if (index < 0 || index >= this._items.length) {
- return void 0;
- }
- return liveNodeToLson(this._items[index]);
- }
- /**
- * Returns the first index at which a given element can be found in the LiveList, or -1 if it is not present.
- * @param searchElement Element to locate.
- * @param fromIndex The index to start the search at.
- * @returns The first index of the element in the LiveList; -1 if not found.
- */
- indexOf(searchElement, fromIndex) {
- return this.toArray().indexOf(searchElement, fromIndex);
- }
- /**
- * Returns the last index at which a given element can be found in the LiveList, or -1 if it is not present. The LiveLsit is searched backwards, starting at fromIndex.
- * @param searchElement Element to locate.
- * @param fromIndex The index at which to start searching backwards.
- * @returns
- */
- lastIndexOf(searchElement, fromIndex) {
- return this.toArray().lastIndexOf(searchElement, fromIndex);
- }
- /**
- * Creates an array populated with the results of calling a provided function on every element.
- * @param callback Function that is called for every element.
- * @returns An array with each element being the result of the callback function.
- */
- map(callback) {
- return this._items.map(
- (entry, i) => callback(
- liveNodeToLson(entry),
- // ^^^^^^^^
- // FIXME! This isn't safe.
- i
- )
- );
- }
- /**
- * Tests whether at least one element in the LiveList passes the test implemented by the provided function.
- * @param predicate Function to test for each element.
- * @returns true if the callback function returns a truthy value for at least one element. Otherwise, false.
- */
- some(predicate) {
- return this.toArray().some(predicate);
- }
- [Symbol.iterator]() {
- return new LiveListIterator(this._items);
- }
- /** @internal */
- _createAttachItemAndSort(op, key) {
- const newItem = creationOpToLiveNode(op);
- newItem._attach(op.id, nn(this._pool));
- newItem._setParentLink(this, key);
- this._insertAndSort(newItem);
- const newIndex = this._indexOfPosition(key);
- return { newItem, newIndex };
- }
- /** @internal */
- _shiftItemPosition(index, key) {
- const shiftedPosition = makePosition(
- key,
- this._items.length > index + 1 ? this._items[index + 1]?._parentPos : void 0
- );
- this._items[index]._setParentLink(this, shiftedPosition);
- }
- /** @internal */
- _toTreeNode(key) {
- return {
- type: "LiveList",
- id: this._id ?? nanoid(),
- key,
- payload: this._items.map(
- (item, index) => item.toTreeNode(index.toString())
- )
- };
- }
- toImmutable() {
- return super.toImmutable();
- }
- /** @internal */
- _toImmutable() {
- const result = this._items.map((node) => node.toImmutable());
- return false ? result : Object.freeze(result);
- }
- };
- var LiveListIterator = class {
- constructor(items) {
- this._innerIterator = items[Symbol.iterator]();
- }
- [Symbol.iterator]() {
- return this;
- }
- next() {
- const result = this._innerIterator.next();
- if (result.done) {
- return {
- done: true,
- value: void 0
- };
- }
- const value = liveNodeToLson(result.value);
- return { value };
- }
- };
- function makeUpdate(liveList, deltaUpdates) {
- return {
- node: liveList,
- type: "LiveList",
- updates: deltaUpdates
- };
- }
- function setDelta(index, item) {
- return {
- index,
- type: "set",
- item: item instanceof LiveRegister ? item.data : item
- };
- }
- function deleteDelta(index) {
- return {
- index,
- type: "delete"
- };
- }
- function insertDelta(index, item) {
- return {
- index,
- type: "insert",
- item: item instanceof LiveRegister ? item.data : item
- };
- }
- function moveDelta(previousIndex, index, item) {
- return {
- index,
- type: "move",
- previousIndex,
- item: item instanceof LiveRegister ? item.data : item
- };
- }
- function HACK_addIntentAndDeletedIdToOperation(ops, deletedId) {
- return ops.map((op, index) => {
- if (index === 0) {
- const firstOp = op;
- return {
- ...firstOp,
- intent: "set",
- deletedId
- };
- } else {
- return op;
- }
- });
- }
- var freeze = false ? (
- /* istanbul ignore next */
- (x) => x
- ) : Object.freeze;
- var LiveMap = class _LiveMap extends AbstractCrdt {
- constructor(entries2) {
- super();
- this.unacknowledgedSet = /* @__PURE__ */ new Map();
- if (entries2) {
- const mappedEntries = [];
- for (const entry of entries2) {
- const value = lsonToLiveNode(entry[1]);
- value._setParentLink(this, entry[0]);
- mappedEntries.push([entry[0], value]);
- }
- this._map = new Map(mappedEntries);
- } else {
- this._map = /* @__PURE__ */ new Map();
- }
- }
- /**
- * @internal
- */
- _toOps(parentId, parentKey, pool) {
- if (this._id === void 0) {
- throw new Error("Cannot serialize item is not attached");
- }
- const ops = [];
- const op = {
- id: this._id,
- opId: pool?.generateOpId(),
- type: 7,
- parentId,
- parentKey
- };
- ops.push(op);
- for (const [key, value] of this._map) {
- ops.push(...value._toOps(this._id, key, pool));
- }
- return ops;
- }
- /**
- * @internal
- */
- static _deserialize([id, _item], parentToChildren, pool) {
- const map = new _LiveMap();
- map._attach(id, pool);
- const children = parentToChildren.get(id);
- if (children === void 0) {
- return map;
- }
- for (const [id2, crdt] of children) {
- const child = deserialize([id2, crdt], parentToChildren, pool);
- child._setParentLink(map, crdt.parentKey);
- map._map.set(crdt.parentKey, child);
- map.invalidate();
- }
- return map;
- }
- /**
- * @internal
- */
- _attach(id, pool) {
- super._attach(id, pool);
- for (const [_key, value] of this._map) {
- if (isLiveNode(value)) {
- value._attach(pool.generateId(), pool);
- }
- }
- }
- /**
- * @internal
- */
- _attachChild(op, source) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- const { id, parentKey, opId } = op;
- const key = parentKey;
- const child = creationOpToLiveNode(op);
- if (this._pool.getNode(id) !== void 0) {
- return { modified: false };
- }
- if (source === 2) {
- const lastUpdateOpId = this.unacknowledgedSet.get(key);
- if (lastUpdateOpId === opId) {
- this.unacknowledgedSet.delete(key);
- return { modified: false };
- } else if (lastUpdateOpId !== void 0) {
- return { modified: false };
- }
- } else if (source === 1) {
- this.unacknowledgedSet.delete(key);
- }
- const previousValue = this._map.get(key);
- let reverse;
- if (previousValue) {
- const thisId = nn(this._id);
- reverse = previousValue._toOps(thisId, key);
- previousValue._detach();
- } else {
- reverse = [{ type: 5, id }];
- }
- child._setParentLink(this, key);
- child._attach(id, this._pool);
- this._map.set(key, child);
- this.invalidate();
- return {
- modified: {
- node: this,
- type: "LiveMap",
- updates: { [key]: { type: "update" } }
- },
- reverse
- };
- }
- /**
- * @internal
- */
- _detach() {
- super._detach();
- for (const item of this._map.values()) {
- item._detach();
- }
- }
- /**
- * @internal
- */
- _detachChild(child) {
- const id = nn(this._id);
- const parentKey = nn(child._parentKey);
- const reverse = child._toOps(id, parentKey, this._pool);
- for (const [key, value] of this._map) {
- if (value === child) {
- this._map.delete(key);
- this.invalidate();
- }
- }
- child._detach();
- const storageUpdate = {
- node: this,
- type: "LiveMap",
- updates: { [parentKey]: { type: "delete" } }
- };
- return { modified: storageUpdate, reverse };
- }
- /**
- * @internal
- */
- _serialize() {
- if (this.parent.type !== "HasParent") {
- throw new Error("Cannot serialize LiveMap if parent is missing");
- }
- return {
- type: 2,
- parentId: nn(this.parent.node._id, "Parent node expected to have ID"),
- parentKey: this.parent.key
- };
- }
- /**
- * Returns a specified element from the LiveMap.
- * @param key The key of the element to return.
- * @returns The element associated with the specified key, or undefined if the key can't be found in the LiveMap.
- */
- get(key) {
- const value = this._map.get(key);
- if (value === void 0) {
- return void 0;
- }
- return liveNodeToLson(value);
- }
- /**
- * Adds or updates an element with a specified key and a value.
- * @param key The key of the element to add. Should be a string.
- * @param value The value of the element to add. Should be serializable to JSON.
- */
- set(key, value) {
- this._pool?.assertStorageIsWritable();
- const oldValue = this._map.get(key);
- if (oldValue) {
- oldValue._detach();
- }
- const item = lsonToLiveNode(value);
- item._setParentLink(this, key);
- this._map.set(key, item);
- this.invalidate();
- if (this._pool && this._id) {
- const id = this._pool.generateId();
- item._attach(id, this._pool);
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(this._id, {
- node: this,
- type: "LiveMap",
- updates: { [key]: { type: "update" } }
- });
- const ops = item._toOps(this._id, key, this._pool);
- this.unacknowledgedSet.set(key, nn(ops[0].opId));
- this._pool.dispatch(
- item._toOps(this._id, key, this._pool),
- oldValue ? oldValue._toOps(this._id, key) : [{ type: 5, id }],
- storageUpdates
- );
- }
- }
- /**
- * Returns the number of elements in the LiveMap.
- */
- get size() {
- return this._map.size;
- }
- /**
- * Returns a boolean indicating whether an element with the specified key exists or not.
- * @param key The key of the element to test for presence.
- */
- has(key) {
- return this._map.has(key);
- }
- /**
- * Removes the specified element by key.
- * @param key The key of the element to remove.
- * @returns true if an element existed and has been removed, or false if the element does not exist.
- */
- delete(key) {
- this._pool?.assertStorageIsWritable();
- const item = this._map.get(key);
- if (item === void 0) {
- return false;
- }
- item._detach();
- this._map.delete(key);
- this.invalidate();
- if (this._pool && item._id) {
- const thisId = nn(this._id);
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(thisId, {
- node: this,
- type: "LiveMap",
- updates: { [key]: { type: "delete" } }
- });
- this._pool.dispatch(
- [
- {
- type: 5,
- id: item._id,
- opId: this._pool.generateOpId()
- }
- ],
- item._toOps(thisId, key),
- storageUpdates
- );
- }
- return true;
- }
- /**
- * Returns a new Iterator object that contains the [key, value] pairs for each element.
- */
- entries() {
- const innerIterator = this._map.entries();
- return {
- [Symbol.iterator]() {
- return this;
- },
- next() {
- const iteratorValue = innerIterator.next();
- if (iteratorValue.done) {
- return {
- done: true,
- value: void 0
- };
- }
- const entry = iteratorValue.value;
- const key = entry[0];
- const value = liveNodeToLson(iteratorValue.value[1]);
- return {
- value: [key, value]
- };
- }
- };
- }
- /**
- * Same function object as the initial value of the entries method.
- */
- [Symbol.iterator]() {
- return this.entries();
- }
- /**
- * Returns a new Iterator object that contains the keys for each element.
- */
- keys() {
- return this._map.keys();
- }
- /**
- * Returns a new Iterator object that contains the values for each element.
- */
- values() {
- const innerIterator = this._map.values();
- return {
- [Symbol.iterator]() {
- return this;
- },
- next() {
- const iteratorValue = innerIterator.next();
- if (iteratorValue.done) {
- return {
- done: true,
- value: void 0
- };
- }
- const value = liveNodeToLson(iteratorValue.value);
- return { value };
- }
- };
- }
- /**
- * Executes a provided function once per each key/value pair in the Map object, in insertion order.
- * @param callback Function to execute for each entry in the map.
- */
- forEach(callback) {
- for (const entry of this) {
- callback(entry[1], entry[0], this);
- }
- }
- /** @internal */
- _toTreeNode(key) {
- return {
- type: "LiveMap",
- id: this._id ?? nanoid(),
- key,
- payload: Array.from(this._map.entries()).map(
- ([key2, val]) => val.toTreeNode(key2)
- )
- };
- }
- toImmutable() {
- return super.toImmutable();
- }
- /** @internal */
- _toImmutable() {
- const result = /* @__PURE__ */ new Map();
- for (const [key, value] of this._map) {
- result.set(key, value.toImmutable());
- }
- return freeze(result);
- }
- };
- var LiveObject = class _LiveObject extends AbstractCrdt {
- constructor(obj = {}) {
- super();
- this._propToLastUpdate = /* @__PURE__ */ new Map();
- for (const key in obj) {
- const value = obj[key];
- if (value === void 0) {
- continue;
- } else if (isLiveNode(value)) {
- value._setParentLink(this, key);
- }
- }
- this._map = new Map(Object.entries(obj));
- }
- /** @internal */
- static _buildRootAndParentToChildren(items) {
- const parentToChildren = /* @__PURE__ */ new Map();
- let root = null;
- for (const [id, crdt] of items) {
- if (isRootCrdt(crdt)) {
- root = [id, crdt];
- } else {
- const tuple = [id, crdt];
- const children = parentToChildren.get(crdt.parentId);
- if (children !== void 0) {
- children.push(tuple);
- } else {
- parentToChildren.set(crdt.parentId, [tuple]);
- }
- }
- }
- if (root === null) {
- throw new Error("Root can't be null");
- }
- return [root, parentToChildren];
- }
- /** @internal */
- static _fromItems(items, pool) {
- const [root, parentToChildren] = _LiveObject._buildRootAndParentToChildren(items);
- return _LiveObject._deserialize(
- root,
- parentToChildren,
- pool
- );
- }
- /** @internal */
- _toOps(parentId, parentKey, pool) {
- if (this._id === void 0) {
- throw new Error("Cannot serialize item is not attached");
- }
- const opId = pool?.generateOpId();
- const ops = [];
- const op = parentId !== void 0 && parentKey !== void 0 ? {
- type: 4,
- id: this._id,
- opId,
- parentId,
- parentKey,
- data: {}
- } : (
- // Root object
- { type: 4, id: this._id, opId, data: {} }
- );
- ops.push(op);
- for (const [key, value] of this._map) {
- if (isLiveNode(value)) {
- ops.push(...value._toOps(this._id, key, pool));
- } else {
- op.data[key] = value;
- }
- }
- return ops;
- }
- /** @internal */
- static _deserialize([id, item], parentToChildren, pool) {
- const liveObj = new _LiveObject(item.data);
- liveObj._attach(id, pool);
- return this._deserializeChildren(liveObj, parentToChildren, pool);
- }
- /** @internal */
- static _deserializeChildren(liveObj, parentToChildren, pool) {
- const children = parentToChildren.get(nn(liveObj._id));
- if (children === void 0) {
- return liveObj;
- }
- for (const [id, crdt] of children) {
- const child = deserializeToLson([id, crdt], parentToChildren, pool);
- if (isLiveStructure(child)) {
- child._setParentLink(liveObj, crdt.parentKey);
- }
- liveObj._map.set(crdt.parentKey, child);
- liveObj.invalidate();
- }
- return liveObj;
- }
- /** @internal */
- _attach(id, pool) {
- super._attach(id, pool);
- for (const [_key, value] of this._map) {
- if (isLiveNode(value)) {
- value._attach(pool.generateId(), pool);
- }
- }
- }
- /** @internal */
- _attachChild(op, source) {
- if (this._pool === void 0) {
- throw new Error("Can't attach child if managed pool is not present");
- }
- const { id, opId, parentKey: key } = op;
- const child = creationOpToLson(op);
- if (this._pool.getNode(id) !== void 0) {
- if (this._propToLastUpdate.get(key) === opId) {
- this._propToLastUpdate.delete(key);
- }
- return { modified: false };
- }
- if (source === 0) {
- this._propToLastUpdate.set(key, nn(opId));
- } else if (this._propToLastUpdate.get(key) === void 0) {
- } else if (this._propToLastUpdate.get(key) === opId) {
- this._propToLastUpdate.delete(key);
- return { modified: false };
- } else {
- return { modified: false };
- }
- const thisId = nn(this._id);
- const previousValue = this._map.get(key);
- let reverse;
- if (isLiveNode(previousValue)) {
- reverse = previousValue._toOps(thisId, key);
- previousValue._detach();
- } else if (previousValue === void 0) {
- reverse = [{ type: 6, id: thisId, key }];
- } else {
- reverse = [
- {
- type: 3,
- id: thisId,
- data: { [key]: previousValue }
- }
- ];
- }
- this._map.set(key, child);
- this.invalidate();
- if (isLiveStructure(child)) {
- child._setParentLink(this, key);
- child._attach(id, this._pool);
- }
- return {
- reverse,
- modified: {
- node: this,
- type: "LiveObject",
- updates: { [key]: { type: "update" } }
- }
- };
- }
- /** @internal */
- _detachChild(child) {
- if (child) {
- const id = nn(this._id);
- const parentKey = nn(child._parentKey);
- const reverse = child._toOps(id, parentKey, this._pool);
- for (const [key, value] of this._map) {
- if (value === child) {
- this._map.delete(key);
- this.invalidate();
- }
- }
- child._detach();
- const storageUpdate = {
- node: this,
- type: "LiveObject",
- updates: {
- [parentKey]: { type: "delete" }
- }
- };
- return { modified: storageUpdate, reverse };
- }
- return { modified: false };
- }
- /**
- * @internal
- */
- _detach() {
- super._detach();
- for (const value of this._map.values()) {
- if (isLiveNode(value)) {
- value._detach();
- }
- }
- }
- /** @internal */
- _apply(op, isLocal) {
- if (op.type === 3) {
- return this._applyUpdate(op, isLocal);
- } else if (op.type === 6) {
- return this._applyDeleteObjectKey(op, isLocal);
- }
- return super._apply(op, isLocal);
- }
- /**
- * @internal
- */
- _serialize() {
- const data = {};
- for (const [key, value] of this._map) {
- if (!isLiveNode(value)) {
- data[key] = value;
- }
- }
- if (this.parent.type === "HasParent" && this.parent.node._id) {
- return {
- type: 0,
- parentId: this.parent.node._id,
- parentKey: this.parent.key,
- data
- };
- } else {
- return {
- type: 0,
- data
- };
- }
- }
- /** @internal */
- _applyUpdate(op, isLocal) {
- let isModified = false;
- const id = nn(this._id);
- const reverse = [];
- const reverseUpdate = {
- type: 3,
- id,
- data: {}
- };
- for (const key in op.data) {
- const oldValue = this._map.get(key);
- if (isLiveNode(oldValue)) {
- reverse.push(...oldValue._toOps(id, key));
- oldValue._detach();
- } else if (oldValue !== void 0) {
- reverseUpdate.data[key] = oldValue;
- } else if (oldValue === void 0) {
- reverse.push({ type: 6, id, key });
- }
- }
- const updateDelta = {};
- for (const key in op.data) {
- const value = op.data[key];
- if (value === void 0) {
- continue;
- }
- if (isLocal) {
- this._propToLastUpdate.set(key, nn(op.opId));
- } else if (this._propToLastUpdate.get(key) === void 0) {
- isModified = true;
- } else if (this._propToLastUpdate.get(key) === op.opId) {
- this._propToLastUpdate.delete(key);
- continue;
- } else {
- continue;
- }
- const oldValue = this._map.get(key);
- if (isLiveNode(oldValue)) {
- oldValue._detach();
- }
- isModified = true;
- updateDelta[key] = { type: "update" };
- this._map.set(key, value);
- this.invalidate();
- }
- if (Object.keys(reverseUpdate.data).length !== 0) {
- reverse.unshift(reverseUpdate);
- }
- return isModified ? {
- modified: {
- node: this,
- type: "LiveObject",
- updates: updateDelta
- },
- reverse
- } : { modified: false };
- }
- /** @internal */
- _applyDeleteObjectKey(op, isLocal) {
- const key = op.key;
- if (this._map.has(key) === false) {
- return { modified: false };
- }
- if (!isLocal && this._propToLastUpdate.get(key) !== void 0) {
- return { modified: false };
- }
- const oldValue = this._map.get(key);
- const id = nn(this._id);
- let reverse = [];
- if (isLiveNode(oldValue)) {
- reverse = oldValue._toOps(id, op.key);
- oldValue._detach();
- } else if (oldValue !== void 0) {
- reverse = [
- {
- type: 3,
- id,
- data: { [key]: oldValue }
- }
- ];
- }
- this._map.delete(key);
- this.invalidate();
- return {
- modified: {
- node: this,
- type: "LiveObject",
- updates: { [op.key]: { type: "delete" } }
- },
- reverse
- };
- }
- /**
- * Transform the LiveObject into a javascript object
- */
- toObject() {
- return Object.fromEntries(this._map);
- }
- /**
- * Adds or updates a property with a specified key and a value.
- * @param key The key of the property to add
- * @param value The value of the property to add
- */
- set(key, value) {
- this._pool?.assertStorageIsWritable();
- this.update({ [key]: value });
- }
- /**
- * Returns a specified property from the LiveObject.
- * @param key The key of the property to get
- */
- get(key) {
- return this._map.get(key);
- }
- /**
- * Deletes a key from the LiveObject
- * @param key The key of the property to delete
- */
- delete(key) {
- this._pool?.assertStorageIsWritable();
- const keyAsString = key;
- const oldValue = this._map.get(keyAsString);
- if (oldValue === void 0) {
- return;
- }
- if (this._pool === void 0 || this._id === void 0) {
- if (isLiveNode(oldValue)) {
- oldValue._detach();
- }
- this._map.delete(keyAsString);
- this.invalidate();
- return;
- }
- let reverse;
- if (isLiveNode(oldValue)) {
- oldValue._detach();
- reverse = oldValue._toOps(this._id, keyAsString);
- } else {
- reverse = [
- {
- type: 3,
- data: { [keyAsString]: oldValue },
- id: this._id
- }
- ];
- }
- this._map.delete(keyAsString);
- this.invalidate();
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(this._id, {
- node: this,
- type: "LiveObject",
- updates: { [key]: { type: "delete" } }
- });
- this._pool.dispatch(
- [
- {
- type: 6,
- key: keyAsString,
- id: this._id,
- opId: this._pool.generateOpId()
- }
- ],
- reverse,
- storageUpdates
- );
- }
- /**
- * Adds or updates multiple properties at once with an object.
- * @param patch The object used to overrides properties
- */
- update(patch) {
- this._pool?.assertStorageIsWritable();
- if (this._pool === void 0 || this._id === void 0) {
- for (const key in patch) {
- const newValue = patch[key];
- if (newValue === void 0) {
- continue;
- }
- const oldValue = this._map.get(key);
- if (isLiveNode(oldValue)) {
- oldValue._detach();
- }
- if (isLiveNode(newValue)) {
- newValue._setParentLink(this, key);
- }
- this._map.set(key, newValue);
- this.invalidate();
- }
- return;
- }
- const ops = [];
- const reverseOps = [];
- const opId = this._pool.generateOpId();
- const updatedProps = {};
- const reverseUpdateOp = {
- id: this._id,
- type: 3,
- data: {}
- };
- const updateDelta = {};
- for (const key in patch) {
- const newValue = patch[key];
- if (newValue === void 0) {
- continue;
- }
- const oldValue = this._map.get(key);
- if (isLiveNode(oldValue)) {
- reverseOps.push(...oldValue._toOps(this._id, key));
- oldValue._detach();
- } else if (oldValue === void 0) {
- reverseOps.push({ type: 6, id: this._id, key });
- } else {
- reverseUpdateOp.data[key] = oldValue;
- }
- if (isLiveNode(newValue)) {
- newValue._setParentLink(this, key);
- newValue._attach(this._pool.generateId(), this._pool);
- const newAttachChildOps = newValue._toOps(this._id, key, this._pool);
- const createCrdtOp = newAttachChildOps.find(
- (op) => op.parentId === this._id
- );
- if (createCrdtOp) {
- this._propToLastUpdate.set(key, nn(createCrdtOp.opId));
- }
- ops.push(...newAttachChildOps);
- } else {
- updatedProps[key] = newValue;
- this._propToLastUpdate.set(key, opId);
- }
- this._map.set(key, newValue);
- this.invalidate();
- updateDelta[key] = { type: "update" };
- }
- if (Object.keys(reverseUpdateOp.data).length !== 0) {
- reverseOps.unshift(reverseUpdateOp);
- }
- if (Object.keys(updatedProps).length !== 0) {
- ops.unshift({
- opId,
- id: this._id,
- type: 3,
- data: updatedProps
- });
- }
- const storageUpdates = /* @__PURE__ */ new Map();
- storageUpdates.set(this._id, {
- node: this,
- type: "LiveObject",
- updates: updateDelta
- });
- this._pool.dispatch(ops, reverseOps, storageUpdates);
- }
- toImmutable() {
- return super.toImmutable();
- }
- /** @internal */
- toTreeNode(key) {
- return super.toTreeNode(key);
- }
- /** @internal */
- _toTreeNode(key) {
- const nodeId = this._id ?? nanoid();
- return {
- type: "LiveObject",
- id: nodeId,
- key,
- payload: Array.from(this._map.entries()).map(
- ([key2, value]) => isLiveNode(value) ? value.toTreeNode(key2) : { type: "Json", id: `${nodeId}:${key2}`, key: key2, payload: value }
- )
- };
- }
- /** @internal */
- _toImmutable() {
- const result = {};
- for (const [key, val] of this._map) {
- result[key] = isLiveStructure(val) ? val.toImmutable() : val;
- }
- return false ? result : Object.freeze(result);
- }
- };
- function creationOpToLiveNode(op) {
- return lsonToLiveNode(creationOpToLson(op));
- }
- function creationOpToLson(op) {
- switch (op.type) {
- case 8:
- return op.data;
- case 4:
- return new LiveObject(op.data);
- case 7:
- return new LiveMap();
- case 2:
- return new LiveList();
- default:
- return assertNever(op, "Unknown creation Op");
- }
- }
- function isSameNodeOrChildOf(node, parent) {
- if (node === parent) {
- return true;
- }
- if (node.parent.type === "HasParent") {
- return isSameNodeOrChildOf(node.parent.node, parent);
- }
- return false;
- }
- function deserialize([id, crdt], parentToChildren, pool) {
- switch (crdt.type) {
- case 0: {
- return LiveObject._deserialize([id, crdt], parentToChildren, pool);
- }
- case 1: {
- return LiveList._deserialize([id, crdt], parentToChildren, pool);
- }
- case 2: {
- return LiveMap._deserialize([id, crdt], parentToChildren, pool);
- }
- case 3: {
- return LiveRegister._deserialize([id, crdt], parentToChildren, pool);
- }
- default: {
- throw new Error("Unexpected CRDT type");
- }
- }
- }
- function deserializeToLson([id, crdt], parentToChildren, pool) {
- switch (crdt.type) {
- case 0: {
- return LiveObject._deserialize([id, crdt], parentToChildren, pool);
- }
- case 1: {
- return LiveList._deserialize([id, crdt], parentToChildren, pool);
- }
- case 2: {
- return LiveMap._deserialize([id, crdt], parentToChildren, pool);
- }
- case 3: {
- return crdt.data;
- }
- default: {
- throw new Error("Unexpected CRDT type");
- }
- }
- }
- function isLiveStructure(value) {
- return isLiveList(value) || isLiveMap(value) || isLiveObject(value);
- }
- function isLiveNode(value) {
- return isLiveStructure(value) || isLiveRegister(value);
- }
- function isLiveList(value) {
- return value instanceof LiveList;
- }
- function isLiveMap(value) {
- return value instanceof LiveMap;
- }
- function isLiveObject(value) {
- return value instanceof LiveObject;
- }
- function isLiveRegister(value) {
- return value instanceof LiveRegister;
- }
- function liveNodeToLson(obj) {
- if (obj instanceof LiveRegister) {
- return obj.data;
- } else if (obj instanceof LiveList || obj instanceof LiveMap || obj instanceof LiveObject) {
- return obj;
- } else {
- return assertNever(obj, "Unknown AbstractCrdt");
- }
- }
- function lsonToLiveNode(value) {
- if (value instanceof LiveObject || value instanceof LiveMap || value instanceof LiveList) {
- return value;
- } else {
- return new LiveRegister(value);
- }
- }
- function getTreesDiffOperations(currentItems, newItems) {
- const ops = [];
- currentItems.forEach((_, id) => {
- if (!newItems.get(id)) {
- ops.push({
- type: 5,
- id
- });
- }
- });
- newItems.forEach((crdt, id) => {
- const currentCrdt = currentItems.get(id);
- if (currentCrdt) {
- if (crdt.type === 0) {
- if (currentCrdt.type !== 0 || JSON.stringify(crdt.data) !== JSON.stringify(currentCrdt.data)) {
- ops.push({
- type: 3,
- id,
- data: crdt.data
- });
- }
- }
- if (crdt.parentKey !== currentCrdt.parentKey) {
- ops.push({
- type: 1,
- id,
- parentKey: nn(crdt.parentKey, "Parent key must not be missing")
- });
- }
- } else {
- switch (crdt.type) {
- case 3:
- ops.push({
- type: 8,
- id,
- parentId: crdt.parentId,
- parentKey: crdt.parentKey,
- data: crdt.data
- });
- break;
- case 1:
- ops.push({
- type: 2,
- id,
- parentId: crdt.parentId,
- parentKey: crdt.parentKey
- });
- break;
- case 0:
- ops.push(
- crdt.parentId ? {
- type: 4,
- id,
- parentId: crdt.parentId,
- parentKey: crdt.parentKey,
- data: crdt.data
- } : (
- // Root object
- { type: 4, id, data: crdt.data }
- )
- );
- break;
- case 2:
- ops.push({
- type: 7,
- id,
- parentId: crdt.parentId,
- parentKey: crdt.parentKey
- });
- break;
- }
- }
- });
- return ops;
- }
- function mergeObjectStorageUpdates(first, second) {
- const updates = first.updates;
- for (const [key, value] of entries(second.updates)) {
- updates[key] = value;
- }
- return {
- ...second,
- updates
- };
- }
- function mergeMapStorageUpdates(first, second) {
- const updates = first.updates;
- for (const [key, value] of entries(second.updates)) {
- updates[key] = value;
- }
- return {
- ...second,
- updates
- };
- }
- function mergeListStorageUpdates(first, second) {
- const updates = first.updates;
- return {
- ...second,
- updates: updates.concat(second.updates)
- };
- }
- function mergeStorageUpdates(first, second) {
- if (first === void 0) {
- return second;
- }
- if (first.type === "LiveObject" && second.type === "LiveObject") {
- return mergeObjectStorageUpdates(first, second);
- } else if (first.type === "LiveMap" && second.type === "LiveMap") {
- return mergeMapStorageUpdates(first, second);
- } else if (first.type === "LiveList" && second.type === "LiveList") {
- return mergeListStorageUpdates(first, second);
- } else {
- }
- return second;
- }
- function captureStackTrace(msg, traceRoot) {
- const errorLike = { name: msg };
- if (typeof Error.captureStackTrace !== "function") {
- return void 0;
- }
- Error.captureStackTrace(errorLike, traceRoot);
- return errorLike.stack;
- }
- function isJsonScalar(data) {
- return data === null || typeof data === "string" || typeof data === "number" || typeof data === "boolean";
- }
- function isJsonArray(data) {
- return Array.isArray(data);
- }
- function isJsonObject(data) {
- return !isJsonScalar(data) && !isJsonArray(data);
- }
- function isStringList(value) {
- return Array.isArray(value) && value.every((i) => typeof i === "string");
- }
- function isMinimalTokenPayload(data) {
- return isPlainObject(data) && typeof data.actor === "number" && (data.id === void 0 || typeof data.id === "string") && isStringList(data.scopes);
- }
- function parseAuthToken(rawTokenString) {
- const tokenParts = rawTokenString.split(".");
- if (tokenParts.length !== 3) {
- throw new Error("Authentication error: invalid JWT token");
- }
- const payload = tryParseJson(b64decode(tokenParts[1]));
- if (!(payload && isMinimalTokenPayload(payload))) {
- throw new Error(
- "Authentication error: we expected a room token but did not get one. Hint: if you are using a callback, ensure the room is passed when creating the token. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClientCallback"
- );
- }
- return {
- raw: rawTokenString,
- parsed: payload
- };
- }
- function asArrayWithLegacyMethods(arr) {
- Object.defineProperty(arr, "count", {
- value: arr.length,
- enumerable: false
- });
- Object.defineProperty(arr, "toArray", {
- value: () => arr,
- enumerable: false
- });
- return freeze(arr);
- }
- function merge(target, patch) {
- let updated = false;
- const newValue = { ...target };
- Object.keys(patch).forEach((k) => {
- const key = k;
- const val = patch[key];
- if (newValue[key] !== val) {
- if (val === void 0) {
- delete newValue[key];
- } else {
- newValue[key] = val;
- }
- updated = true;
- }
- });
- return updated ? newValue : target;
- }
- var ImmutableRef = class {
- constructor() {
- this._ev = makeEventSource();
- }
- get didInvalidate() {
- return this._ev.observable;
- }
- invalidate() {
- if (this._cache !== void 0) {
- this._cache = void 0;
- this._ev.notify();
- }
- }
- get current() {
- return this._cache ?? (this._cache = this._toImmutable());
- }
- };
- function makeUser(conn, presence) {
- return freeze(compactObject({ ...conn, presence }));
- }
- var OthersRef = class extends ImmutableRef {
- //
- // --------------------------------------------------------------
- //
- constructor() {
- super();
- this._connections = {};
- this._presences = {};
- this._users = {};
- }
- /** @internal */
- _toImmutable() {
- const users = compact(
- Object.keys(this._presences).map(
- (connectionId) => this.getUser(Number(connectionId))
- )
- );
- return asArrayWithLegacyMethods(users);
- }
- clearOthers() {
- this._connections = {};
- this._presences = {};
- this._users = {};
- this.invalidate();
- }
- /** @internal */
- _getUser(connectionId) {
- const conn = this._connections[connectionId];
- const presence = this._presences[connectionId];
- if (conn !== void 0 && presence !== void 0) {
- return makeUser(conn, presence);
- }
- return void 0;
- }
- getUser(connectionId) {
- const cachedUser = this._users[connectionId];
- if (cachedUser) {
- return cachedUser;
- }
- const computedUser = this._getUser(connectionId);
- if (computedUser) {
- this._users[connectionId] = computedUser;
- return computedUser;
- }
- return void 0;
- }
- /** @internal */
- _invalidateUser(connectionId) {
- if (this._users[connectionId] !== void 0) {
- delete this._users[connectionId];
- }
- this.invalidate();
- }
- /**
- * Records a known connection. This records the connection ID and the
- * associated metadata.
- */
- setConnection(connectionId, metaUserId, metaUserInfo, metaIsReadonly) {
- this._connections[connectionId] = freeze({
- connectionId,
- id: metaUserId,
- info: metaUserInfo,
- isReadOnly: metaIsReadonly
- });
- if (this._presences[connectionId] !== void 0) {
- this._invalidateUser(connectionId);
- }
- }
- /**
- * Removes a known connectionId. Removes both the connection's metadata and
- * the presence information.
- */
- removeConnection(connectionId) {
- delete this._connections[connectionId];
- delete this._presences[connectionId];
- this._invalidateUser(connectionId);
- }
- /**
- * Stores a new user from a full presence update. If the user already exists,
- * its known presence data is overwritten.
- */
- setOther(connectionId, presence) {
- this._presences[connectionId] = freeze(compactObject(presence));
- if (this._connections[connectionId] !== void 0) {
- this._invalidateUser(connectionId);
- }
- }
- /**
- * Patches the presence data for an existing "other". If we don't know the
- * initial presence data for this user yet, discard this patch and await the
- * full .setOther() call first.
- */
- patchOther(connectionId, patch) {
- const oldPresence = this._presences[connectionId];
- if (oldPresence === void 0) {
- return;
- }
- const newPresence = merge(oldPresence, patch);
- if (oldPresence !== newPresence) {
- this._presences[connectionId] = freeze(newPresence);
- this._invalidateUser(connectionId);
- }
- }
- };
- var PatchableRef = class extends ImmutableRef {
- constructor(data) {
- super();
- this._data = freeze(compactObject(data));
- }
- /** @internal */
- _toImmutable() {
- return this._data;
- }
- /**
- * Patches the current object.
- */
- patch(patch) {
- const oldData = this._data;
- const newData = merge(oldData, patch);
- if (oldData !== newData) {
- this._data = freeze(newData);
- this.invalidate();
- }
- }
- };
- var ValueRef = class extends ImmutableRef {
- constructor(initialValue) {
- super();
- this._value = freeze(initialValue);
- }
- /** @internal */
- _toImmutable() {
- return this._value;
- }
- set(newValue) {
- this._value = freeze(newValue);
- this.invalidate();
- }
- };
- var DerivedRef = class extends ImmutableRef {
- constructor(...args) {
- super();
- const transformFn = args.pop();
- const otherRefs = args;
- this._refs = otherRefs;
- this._refs.forEach((ref) => {
- ref.didInvalidate.subscribe(() => this.invalidate());
- });
- this._transform = transformFn;
- }
- /** @internal */
- _toImmutable() {
- return this._transform(
- ...this._refs.map((ref) => ref.current)
- );
- }
- };
- var MAX_MESSAGE_SIZE = 1024 * 1024 - 128;
- function makeIdFactory(connectionId) {
- let count = 0;
- return () => `${connectionId}:${count++}`;
- }
- function userToTreeNode(key, user) {
- return {
- type: "User",
- id: `${user.connectionId}`,
- key,
- payload: user
- };
- }
- function createRoom(options, config) {
- const initialPresence = typeof options.initialPresence === "function" ? options.initialPresence(config.roomId) : options.initialPresence;
- const initialStorage = typeof options.initialStorage === "function" ? options.initialStorage(config.roomId) : options.initialStorage;
- const delegates = config.delegates ?? {
- authenticate: makeAuthDelegateForRoom(
- config.roomId,
- config.authentication,
- config.polyfills?.fetch
- ),
- createSocket: makeCreateSocketDelegateForRoom(
- config.liveblocksServer,
- config.polyfills?.WebSocket
- )
- };
- const managedSocket = new ManagedSocket(
- delegates,
- config.enableDebugLogging
- );
- const context = {
- buffer: {
- flushTimerID: void 0,
- lastFlushedAt: 0,
- presenceUpdates: (
- // Queue up the initial presence message as a Full Presence™ update
- {
- type: "full",
- data: initialPresence
- }
- ),
- messages: [],
- storageOperations: []
- },
- sessionInfo: new ValueRef(null),
- me: new PatchableRef(initialPresence),
- others: new OthersRef(),
- initialStorage,
- idFactory: null,
- // Storage
- clock: 0,
- opClock: 0,
- nodes: /* @__PURE__ */ new Map(),
- root: void 0,
- undoStack: [],
- redoStack: [],
- pausedHistory: null,
- activeBatch: null,
- unacknowledgedOps: /* @__PURE__ */ new Map(),
- // Debug
- opStackTraces: true ? /* @__PURE__ */ new Map() : void 0
- };
- const doNotBatchUpdates = (cb) => cb();
- const batchUpdates = config.unstable_batchedUpdates ?? doNotBatchUpdates;
- let lastToken;
- function onStatusDidChange(newStatus) {
- const token = managedSocket.token?.parsed;
- if (token !== void 0 && token !== lastToken) {
- context.sessionInfo.set({
- userInfo: token.info,
- userId: token.id,
- // NOTE: In the future, these fields will get assigned in the connection phase
- actor: token.actor,
- isReadOnly: isStorageReadOnly(token.scopes)
- });
- lastToken = token;
- }
- batchUpdates(() => {
- eventHub.status.notify(newStatus);
- eventHub.connection.notify(newToLegacyStatus(newStatus));
- notifySelfChanged(doNotBatchUpdates);
- });
- }
- let _connectionLossTimerId;
- let _hasLostConnection = false;
- function handleConnectionLossEvent(newStatus) {
- if (newStatus === "reconnecting") {
- _connectionLossTimerId = setTimeout(() => {
- batchUpdates(() => {
- eventHub.lostConnection.notify("lost");
- _hasLostConnection = true;
- context.others.clearOthers();
- notify({ others: [{ type: "reset" }] }, doNotBatchUpdates);
- });
- }, config.lostConnectionTimeout);
- } else {
- clearTimeout(_connectionLossTimerId);
- if (_hasLostConnection) {
- if (newStatus === "disconnected") {
- batchUpdates(() => {
- eventHub.lostConnection.notify("failed");
- });
- } else {
- batchUpdates(() => {
- eventHub.lostConnection.notify("restored");
- });
- }
- _hasLostConnection = false;
- }
- }
- }
- function onDidConnect() {
- const sessionInfo = context.sessionInfo.current;
- if (sessionInfo === null) {
- throw new Error("Unexpected missing session info");
- }
- context.buffer.presenceUpdates = {
- type: "full",
- data: (
- // Because context.me.current is a readonly object, we'll have to
- // make a copy here. Otherwise, type errors happen later when
- // "patching" my presence.
- { ...context.me.current }
- )
- };
- context.idFactory = makeIdFactory(sessionInfo.actor);
- if (_getStorage$ !== null) {
- refreshStorage({ flush: false });
- }
- flushNowOrSoon();
- }
- function onDidDisconnect() {
- clearTimeout(context.buffer.flushTimerID);
- }
- managedSocket.events.onMessage.subscribe(handleServerMessage);
- managedSocket.events.statusDidChange.subscribe(onStatusDidChange);
- managedSocket.events.statusDidChange.subscribe(handleConnectionLossEvent);
- managedSocket.events.didConnect.subscribe(onDidConnect);
- managedSocket.events.didDisconnect.subscribe(onDidDisconnect);
- managedSocket.events.onLiveblocksError.subscribe((err) => {
- batchUpdates(() => {
- if (true) {
- error2(
- `Connection to websocket server closed. Reason: ${err.message} (code: ${err.code}).`
- );
- }
- eventHub.error.notify(err);
- });
- });
- const pool = {
- roomId: config.roomId,
- getNode: (id) => context.nodes.get(id),
- addNode: (id, node) => void context.nodes.set(id, node),
- deleteNode: (id) => void context.nodes.delete(id),
- generateId: () => `${getConnectionId()}:${context.clock++}`,
- generateOpId: () => `${getConnectionId()}:${context.opClock++}`,
- dispatch(ops, reverse, storageUpdates) {
- const activeBatch = context.activeBatch;
- if (true) {
- const stackTrace = captureStackTrace("Storage mutation", this.dispatch);
- if (stackTrace) {
- for (const op of ops) {
- if (op.opId) {
- nn(context.opStackTraces).set(op.opId, stackTrace);
- }
- }
- }
- }
- if (activeBatch) {
- activeBatch.ops.push(...ops);
- for (const [key, value] of storageUpdates) {
- activeBatch.updates.storageUpdates.set(
- key,
- mergeStorageUpdates(
- activeBatch.updates.storageUpdates.get(key),
- value
- )
- );
- }
- activeBatch.reverseOps.unshift(...reverse);
- } else {
- batchUpdates(() => {
- addToUndoStack(reverse, doNotBatchUpdates);
- context.redoStack = [];
- dispatchOps(ops);
- notify({ storageUpdates }, doNotBatchUpdates);
- });
- }
- },
- assertStorageIsWritable: () => {
- if (context.sessionInfo.current?.isReadOnly) {
- throw new Error(
- "Cannot write to storage with a read only user, please ensure the user has write permissions"
- );
- }
- }
- };
- const eventHub = {
- connection: makeEventSource(),
- // Old/deprecated API
- status: makeEventSource(),
- // New/recommended API
- lostConnection: makeEventSource(),
- customEvent: makeEventSource(),
- self: makeEventSource(),
- myPresence: makeEventSource(),
- others: makeEventSource(),
- error: makeEventSource(),
- storage: makeEventSource(),
- history: makeEventSource(),
- storageDidLoad: makeEventSource(),
- storageStatus: makeEventSource(),
- ydoc: makeEventSource()
- };
- function sendMessages(messageOrMessages) {
- const message = JSON.stringify(messageOrMessages);
- if (config.unstable_fallbackToHTTP) {
- const size = new TextEncoder().encode(message).length;
- if (size > MAX_MESSAGE_SIZE && managedSocket.token?.raw && config.httpSendEndpoint) {
- void httpSend(
- message,
- managedSocket.token.raw,
- config.httpSendEndpoint,
- config.polyfills?.fetch
- ).then((resp) => {
- if (!resp.ok && resp.status === 403) {
- managedSocket.reconnect();
- }
- });
- warn(
- "Message was too large for websockets and sent over HTTP instead"
- );
- return;
- }
- }
- managedSocket.send(message);
- }
- const self = new DerivedRef(
- context.sessionInfo,
- context.me,
- (info, me) => {
- return info !== null ? {
- connectionId: info.actor,
- id: info.userId,
- info: info.userInfo,
- presence: me,
- isReadOnly: info.isReadOnly
- } : null;
- }
- );
- let _lastSelf;
- function notifySelfChanged(batchedUpdatesWrapper) {
- const currSelf = self.current;
- if (currSelf !== null && currSelf !== _lastSelf) {
- batchedUpdatesWrapper(() => {
- eventHub.self.notify(currSelf);
- });
- _lastSelf = currSelf;
- }
- }
- const selfAsTreeNode = new DerivedRef(
- self,
- (me) => me !== null ? userToTreeNode("Me", me) : null
- );
- function createOrUpdateRootFromMessage(message, batchedUpdatesWrapper) {
- if (message.items.length === 0) {
- throw new Error("Internal error: cannot load storage without items");
- }
- if (context.root !== void 0) {
- updateRoot(message.items, batchedUpdatesWrapper);
- } else {
- context.root = LiveObject._fromItems(message.items, pool);
- }
- for (const key in context.initialStorage) {
- if (context.root.get(key) === void 0) {
- context.root.set(key, context.initialStorage[key]);
- }
- }
- }
- function updateRoot(items, batchedUpdatesWrapper) {
- if (context.root === void 0) {
- return;
- }
- const currentItems = /* @__PURE__ */ new Map();
- for (const [id, node] of context.nodes) {
- currentItems.set(id, node._serialize());
- }
- const ops = getTreesDiffOperations(currentItems, new Map(items));
- const result = applyOps(ops, false);
- notify(result.updates, batchedUpdatesWrapper);
- }
- function _addToRealUndoStack(historyOps, batchedUpdatesWrapper) {
- if (context.undoStack.length >= 50) {
- context.undoStack.shift();
- }
- context.undoStack.push(historyOps);
- onHistoryChange(batchedUpdatesWrapper);
- }
- function addToUndoStack(historyOps, batchedUpdatesWrapper) {
- if (context.pausedHistory !== null) {
- context.pausedHistory.unshift(...historyOps);
- } else {
- _addToRealUndoStack(historyOps, batchedUpdatesWrapper);
- }
- }
- function notify({
- storageUpdates = /* @__PURE__ */ new Map(),
- presence = false,
- others: otherEvents = []
- }, batchedUpdatesWrapper) {
- batchedUpdatesWrapper(() => {
- if (otherEvents.length > 0) {
- const others = context.others.current;
- for (const event of otherEvents) {
- eventHub.others.notify({ others, event });
- }
- }
- if (presence) {
- notifySelfChanged(doNotBatchUpdates);
- eventHub.myPresence.notify(context.me.current);
- }
- if (storageUpdates.size > 0) {
- const updates = Array.from(storageUpdates.values());
- eventHub.storage.notify(updates);
- }
- notifyStorageStatus();
- });
- }
- function getConnectionId() {
- const info = context.sessionInfo.current;
- if (info) {
- return info.actor;
- }
- throw new Error(
- "Internal. Tried to get connection id but connection was never open"
- );
- }
- function applyOps(rawOps, isLocal) {
- const output = {
- reverse: [],
- storageUpdates: /* @__PURE__ */ new Map(),
- presence: false
- };
- const createdNodeIds = /* @__PURE__ */ new Set();
- const ops = rawOps.map((op) => {
- if (op.type !== "presence" && !op.opId) {
- return { ...op, opId: pool.generateOpId() };
- } else {
- return op;
- }
- });
- for (const op of ops) {
- if (op.type === "presence") {
- const reverse = {
- type: "presence",
- data: {}
- };
- for (const key in op.data) {
- reverse.data[key] = context.me.current[key];
- }
- context.me.patch(op.data);
- if (context.buffer.presenceUpdates === null) {
- context.buffer.presenceUpdates = { type: "partial", data: op.data };
- } else {
- for (const key in op.data) {
- context.buffer.presenceUpdates.data[key] = op.data[key];
- }
- }
- output.reverse.unshift(reverse);
- output.presence = true;
- } else {
- let source;
- if (isLocal) {
- source = 0;
- } else {
- const opId = nn(op.opId);
- if (true) {
- nn(context.opStackTraces).delete(opId);
- }
- const deleted = context.unacknowledgedOps.delete(opId);
- source = deleted ? 2 : 1;
- }
- const applyOpResult = applyOp(op, source);
- if (applyOpResult.modified) {
- const nodeId = applyOpResult.modified.node._id;
- if (!(nodeId && createdNodeIds.has(nodeId))) {
- output.storageUpdates.set(
- nn(applyOpResult.modified.node._id),
- mergeStorageUpdates(
- output.storageUpdates.get(nn(applyOpResult.modified.node._id)),
- applyOpResult.modified
- )
- );
- output.reverse.unshift(...applyOpResult.reverse);
- }
- if (op.type === 2 || op.type === 7 || op.type === 4) {
- createdNodeIds.add(nn(op.id));
- }
- }
- }
- }
- return {
- ops,
- reverse: output.reverse,
- updates: {
- storageUpdates: output.storageUpdates,
- presence: output.presence
- }
- };
- }
- function applyOp(op, source) {
- if (isAckOp(op)) {
- return { modified: false };
- }
- switch (op.type) {
- case 6:
- case 3:
- case 5: {
- const node = context.nodes.get(op.id);
- if (node === void 0) {
- return { modified: false };
- }
- return node._apply(
- op,
- source === 0
- /* UNDOREDO_RECONNECT */
- );
- }
- case 1: {
- const node = context.nodes.get(op.id);
- if (node === void 0) {
- return { modified: false };
- }
- if (node.parent.type === "HasParent" && isLiveList(node.parent.node)) {
- return node.parent.node._setChildKey(
- asPos(op.parentKey),
- node,
- source
- );
- }
- return { modified: false };
- }
- case 4:
- case 2:
- case 7:
- case 8: {
- if (op.parentId === void 0) {
- return { modified: false };
- }
- const parentNode = context.nodes.get(op.parentId);
- if (parentNode === void 0) {
- return { modified: false };
- }
- return parentNode._attachChild(op, source);
- }
- }
- }
- function updatePresence(patch, options2) {
- const oldValues = {};
- if (context.buffer.presenceUpdates === null) {
- context.buffer.presenceUpdates = {
- type: "partial",
- data: {}
- };
- }
- for (const key in patch) {
- const overrideValue = patch[key];
- if (overrideValue === void 0) {
- continue;
- }
- context.buffer.presenceUpdates.data[key] = overrideValue;
- oldValues[key] = context.me.current[key];
- }
- context.me.patch(patch);
- if (context.activeBatch) {
- if (options2?.addToHistory) {
- context.activeBatch.reverseOps.unshift({
- type: "presence",
- data: oldValues
- });
- }
- context.activeBatch.updates.presence = true;
- } else {
- flushNowOrSoon();
- batchUpdates(() => {
- if (options2?.addToHistory) {
- addToUndoStack(
- [{ type: "presence", data: oldValues }],
- doNotBatchUpdates
- );
- }
- notify({ presence: true }, doNotBatchUpdates);
- });
- }
- }
- function isStorageReadOnly(scopes) {
- return scopes.includes(
- "room:read"
- /* Read */
- ) && scopes.includes(
- "room:presence:write"
- /* PresenceWrite */
- ) && !scopes.includes(
- "room:write"
- /* Write */
- );
- }
- function onUpdatePresenceMessage(message) {
- if (message.targetActor !== void 0) {
- const oldUser = context.others.getUser(message.actor);
- context.others.setOther(message.actor, message.data);
- const newUser = context.others.getUser(message.actor);
- if (oldUser === void 0 && newUser !== void 0) {
- return { type: "enter", user: newUser };
- }
- } else {
- context.others.patchOther(message.actor, message.data), message;
- }
- const user = context.others.getUser(message.actor);
- if (user) {
- return {
- type: "update",
- updates: message.data,
- user
- };
- } else {
- return void 0;
- }
- }
- function onUserLeftMessage(message) {
- const user = context.others.getUser(message.actor);
- if (user) {
- context.others.removeConnection(message.actor);
- return { type: "leave", user };
- }
- return null;
- }
- function onRoomStateMessage(message) {
- for (const connectionId in context.others._connections) {
- const user = message.users[connectionId];
- if (user === void 0) {
- context.others.removeConnection(Number(connectionId));
- }
- }
- for (const key in message.users) {
- const user = message.users[key];
- const connectionId = Number(key);
- context.others.setConnection(
- connectionId,
- user.id,
- user.info,
- isStorageReadOnly(user.scopes)
- );
- }
- return { type: "reset" };
- }
- function canUndo() {
- return context.undoStack.length > 0;
- }
- function canRedo() {
- return context.redoStack.length > 0;
- }
- function onHistoryChange(batchedUpdatesWrapper) {
- batchedUpdatesWrapper(() => {
- eventHub.history.notify({ canUndo: canUndo(), canRedo: canRedo() });
- });
- }
- function onUserJoinedMessage(message) {
- context.others.setConnection(
- message.actor,
- message.id,
- message.info,
- isStorageReadOnly(message.scopes)
- );
- context.buffer.messages.push({
- type: 100,
- data: context.me.current,
- targetActor: message.actor
- });
- flushNowOrSoon();
- const user = context.others.getUser(message.actor);
- return user ? { type: "enter", user } : void 0;
- }
- function parseServerMessage(data) {
- if (!isJsonObject(data)) {
- return null;
- }
- return data;
- }
- function parseServerMessages(text) {
- const data = tryParseJson(text);
- if (data === void 0) {
- return null;
- } else if (isJsonArray(data)) {
- return compact(data.map((item) => parseServerMessage(item)));
- } else {
- return compact([parseServerMessage(data)]);
- }
- }
- function applyAndSendOps(offlineOps, batchedUpdatesWrapper) {
- if (offlineOps.size === 0) {
- return;
- }
- const messages = [];
- const ops = Array.from(offlineOps.values());
- const result = applyOps(ops, true);
- messages.push({
- type: 201,
- ops: result.ops
- });
- notify(result.updates, batchedUpdatesWrapper);
- sendMessages(messages);
- }
- function handleServerMessage(event) {
- if (typeof event.data !== "string") {
- return;
- }
- const messages = parseServerMessages(event.data);
- if (messages === null || messages.length === 0) {
- return;
- }
- const updates = {
- storageUpdates: /* @__PURE__ */ new Map(),
- others: []
- };
- batchUpdates(() => {
- for (const message of messages) {
- switch (message.type) {
- case 101: {
- const userJoinedUpdate = onUserJoinedMessage(message);
- if (userJoinedUpdate) {
- updates.others.push(userJoinedUpdate);
- }
- break;
- }
- case 100: {
- const othersPresenceUpdate = onUpdatePresenceMessage(message);
- if (othersPresenceUpdate) {
- updates.others.push(othersPresenceUpdate);
- }
- break;
- }
- case 103: {
- eventHub.customEvent.notify({
- connectionId: message.actor,
- event: message.event
- });
- break;
- }
- case 102: {
- const event2 = onUserLeftMessage(message);
- if (event2) {
- updates.others.push(event2);
- }
- break;
- }
- case 300: {
- eventHub.ydoc.notify(message);
- break;
- }
- case 104: {
- updates.others.push(onRoomStateMessage(message));
- break;
- }
- case 200: {
- const unacknowledgedOps = new Map(context.unacknowledgedOps);
- createOrUpdateRootFromMessage(message, doNotBatchUpdates);
- applyAndSendOps(unacknowledgedOps, doNotBatchUpdates);
- _resolveStoragePromise?.();
- notifyStorageStatus();
- eventHub.storageDidLoad.notify();
- break;
- }
- case 201: {
- const applyResult = applyOps(message.ops, false);
- for (const [key, value] of applyResult.updates.storageUpdates) {
- updates.storageUpdates.set(
- key,
- mergeStorageUpdates(updates.storageUpdates.get(key), value)
- );
- }
- break;
- }
- case 299: {
- errorWithTitle(
- "Storage mutation rejection error",
- message.reason
- );
- if (true) {
- const traces = /* @__PURE__ */ new Set();
- for (const opId of message.opIds) {
- const trace = context.opStackTraces?.get(opId);
- if (trace) {
- traces.add(trace);
- }
- }
- if (traces.size > 0) {
- warnWithTitle(
- "The following function calls caused the rejected storage mutations:",
- `
-
-${Array.from(traces).join("\n\n")}`
- );
- }
- throw new Error(
- `Storage mutations rejected by server: ${message.reason}`
- );
- }
- break;
- }
- }
- }
- notify(updates, doNotBatchUpdates);
- });
- }
- function flushNowOrSoon() {
- const storageOps = context.buffer.storageOperations;
- if (storageOps.length > 0) {
- for (const op of storageOps) {
- context.unacknowledgedOps.set(nn(op.opId), op);
- }
- notifyStorageStatus();
- }
- if (managedSocket.getStatus() !== "connected") {
- context.buffer.storageOperations = [];
- return;
- }
- const now = Date.now();
- const elapsedMillis = now - context.buffer.lastFlushedAt;
- if (elapsedMillis > config.throttleDelay) {
- const messagesToFlush = serializeBuffer();
- if (messagesToFlush.length === 0) {
- return;
- }
- sendMessages(messagesToFlush);
- context.buffer = {
- flushTimerID: void 0,
- lastFlushedAt: now,
- messages: [],
- storageOperations: [],
- presenceUpdates: null
- };
- } else {
- clearTimeout(context.buffer.flushTimerID);
- context.buffer.flushTimerID = setTimeout(
- flushNowOrSoon,
- config.throttleDelay - elapsedMillis
- );
- }
- }
- function serializeBuffer() {
- const messages = [];
- if (context.buffer.presenceUpdates) {
- messages.push(
- context.buffer.presenceUpdates.type === "full" ? {
- type: 100,
- // Populating the `targetActor` field turns this message into
- // a Full Presence™ update message (not a patch), which will get
- // interpreted by other clients as such.
- targetActor: -1,
- data: context.buffer.presenceUpdates.data
- } : {
- type: 100,
- data: context.buffer.presenceUpdates.data
- }
- );
- }
- for (const event of context.buffer.messages) {
- messages.push(event);
- }
- if (context.buffer.storageOperations.length > 0) {
- messages.push({
- type: 201,
- ops: context.buffer.storageOperations
- });
- }
- return messages;
- }
- function updateYDoc(update) {
- context.buffer.messages.push({
- type: 301,
- update
- });
- flushNowOrSoon();
- }
- function broadcastEvent(event, options2 = {
- shouldQueueEventIfNotReady: false
- }) {
- if (managedSocket.getStatus() !== "connected" && !options2.shouldQueueEventIfNotReady) {
- return;
- }
- context.buffer.messages.push({
- type: 103,
- event
- });
- flushNowOrSoon();
- }
- function dispatchOps(ops) {
- context.buffer.storageOperations.push(...ops);
- flushNowOrSoon();
- }
- let _getStorage$ = null;
- let _resolveStoragePromise = null;
- function refreshStorage(options2) {
- const messages = context.buffer.messages;
- if (!messages.some(
- (msg) => msg.type === 200
- /* FETCH_STORAGE */
- )) {
- messages.push({
- type: 200
- /* FETCH_STORAGE */
- });
- }
- if (options2.flush) {
- flushNowOrSoon();
- }
- }
- function startLoadingStorage() {
- if (_getStorage$ === null) {
- refreshStorage({ flush: true });
- _getStorage$ = new Promise((resolve) => {
- _resolveStoragePromise = resolve;
- });
- notifyStorageStatus();
- }
- return _getStorage$;
- }
- function getStorageSnapshot() {
- const root = context.root;
- if (root !== void 0) {
- return root;
- } else {
- void startLoadingStorage();
- return null;
- }
- }
- async function getStorage() {
- if (context.root !== void 0) {
- return Promise.resolve({
- root: context.root
- });
- }
- await startLoadingStorage();
- return {
- root: nn(context.root)
- };
- }
- function fetchYDoc(vector) {
- context.buffer.messages.push({
- type: 300,
- vector
- });
- flushNowOrSoon();
- }
- function undo() {
- if (context.activeBatch) {
- throw new Error("undo is not allowed during a batch");
- }
- const historyOps = context.undoStack.pop();
- if (historyOps === void 0) {
- return;
- }
- context.pausedHistory = null;
- const result = applyOps(historyOps, true);
- batchUpdates(() => {
- notify(result.updates, doNotBatchUpdates);
- context.redoStack.push(result.reverse);
- onHistoryChange(doNotBatchUpdates);
- });
- for (const op of result.ops) {
- if (op.type !== "presence") {
- context.buffer.storageOperations.push(op);
- }
- }
- flushNowOrSoon();
- }
- function redo() {
- if (context.activeBatch) {
- throw new Error("redo is not allowed during a batch");
- }
- const historyOps = context.redoStack.pop();
- if (historyOps === void 0) {
- return;
- }
- context.pausedHistory = null;
- const result = applyOps(historyOps, true);
- batchUpdates(() => {
- notify(result.updates, doNotBatchUpdates);
- context.undoStack.push(result.reverse);
- onHistoryChange(doNotBatchUpdates);
- });
- for (const op of result.ops) {
- if (op.type !== "presence") {
- context.buffer.storageOperations.push(op);
- }
- }
- flushNowOrSoon();
- }
- function batch(callback) {
- if (context.activeBatch) {
- return callback();
- }
- let returnValue = void 0;
- batchUpdates(() => {
- context.activeBatch = {
- ops: [],
- updates: {
- storageUpdates: /* @__PURE__ */ new Map(),
- presence: false,
- others: []
- },
- reverseOps: []
- };
- try {
- returnValue = callback();
- } finally {
- const currentBatch = context.activeBatch;
- context.activeBatch = null;
- if (currentBatch.reverseOps.length > 0) {
- addToUndoStack(currentBatch.reverseOps, doNotBatchUpdates);
- }
- if (currentBatch.ops.length > 0) {
- context.redoStack = [];
- }
- if (currentBatch.ops.length > 0) {
- dispatchOps(currentBatch.ops);
- }
- notify(currentBatch.updates, doNotBatchUpdates);
- flushNowOrSoon();
- }
- });
- return returnValue;
- }
- function pauseHistory() {
- context.pausedHistory = [];
- }
- function resumeHistory() {
- const historyOps = context.pausedHistory;
- context.pausedHistory = null;
- if (historyOps !== null && historyOps.length > 0) {
- _addToRealUndoStack(historyOps, batchUpdates);
- }
- }
- function getStorageStatus() {
- if (context.root === void 0) {
- return _getStorage$ === null ? "not-loaded" : "loading";
- } else {
- return context.unacknowledgedOps.size === 0 ? "synchronized" : "synchronizing";
- }
- }
- let _lastStorageStatus = getStorageStatus();
- function notifyStorageStatus() {
- const storageStatus = getStorageStatus();
- if (_lastStorageStatus !== storageStatus) {
- _lastStorageStatus = storageStatus;
- eventHub.storageStatus.notify(storageStatus);
- }
- }
- const others_forDevTools = new DerivedRef(
- context.others,
- (others) => others.map((other, index) => userToTreeNode(`Other ${index}`, other))
- );
- const events = {
- connection: eventHub.connection.observable,
- // Old/deprecated API
- status: eventHub.status.observable,
- // New/recommended API
- lostConnection: eventHub.lostConnection.observable,
- customEvent: eventHub.customEvent.observable,
- others: eventHub.others.observable,
- self: eventHub.self.observable,
- myPresence: eventHub.myPresence.observable,
- error: eventHub.error.observable,
- storage: eventHub.storage.observable,
- history: eventHub.history.observable,
- storageDidLoad: eventHub.storageDidLoad.observable,
- storageStatus: eventHub.storageStatus.observable,
- ydoc: eventHub.ydoc.observable
- };
- return Object.defineProperty(
- {
- /* NOTE: Exposing __internal here only to allow testing implementation details in unit tests */
- __internal: {
- get presenceBuffer() {
- return deepClone(context.buffer.presenceUpdates?.data ?? null);
- },
- // prettier-ignore
- get undoStack() {
- return deepClone(context.undoStack);
- },
- // prettier-ignore
- get nodeCount() {
- return context.nodes.size;
- },
- // prettier-ignore
- // Support for the Liveblocks browser extension
- getSelf_forDevTools: () => selfAsTreeNode.current,
- getOthers_forDevTools: () => others_forDevTools.current,
- // prettier-ignore
- send: {
- // These exist only for our E2E testing app
- explicitClose: (event) => managedSocket._privateSendMachineEvent({ type: "EXPLICIT_SOCKET_CLOSE", event }),
- implicitClose: () => managedSocket._privateSendMachineEvent({ type: "NAVIGATOR_OFFLINE" })
- }
- },
- id: config.roomId,
- subscribe: makeClassicSubscribeFn(events),
- connect: () => managedSocket.connect(),
- reconnect: () => managedSocket.reconnect(),
- disconnect: () => managedSocket.disconnect(),
- destroy: () => managedSocket.destroy(),
- // Presence
- updatePresence,
- updateYDoc,
- broadcastEvent,
- // Storage
- batch,
- history: {
- undo,
- redo,
- canUndo,
- canRedo,
- pause: pauseHistory,
- resume: resumeHistory
- },
- fetchYDoc,
- getStorage,
- getStorageSnapshot,
- getStorageStatus,
- events,
- // Core
- getStatus: () => managedSocket.getStatus(),
- getConnectionState: () => managedSocket.getLegacyStatus(),
- isSelfAware: () => context.sessionInfo.current !== null,
- getSelf: () => self.current,
- // Presence
- getPresence: () => context.me.current,
- getOthers: () => context.others.current
- },
- // Explictly make the __internal field non-enumerable, to avoid aggressive
- // freezing when used with Immer
- "__internal",
- { enumerable: false }
- );
- }
- function makeClassicSubscribeFn(events) {
- function subscribeToLiveStructureDeeply(node, callback) {
- return events.storage.subscribe((updates) => {
- const relatedUpdates = updates.filter(
- (update) => isSameNodeOrChildOf(update.node, node)
- );
- if (relatedUpdates.length > 0) {
- callback(relatedUpdates);
- }
- });
- }
- function subscribeToLiveStructureShallowly(node, callback) {
- return events.storage.subscribe((updates) => {
- for (const update of updates) {
- if (update.node._id === node._id) {
- callback(update.node);
- }
- }
- });
- }
- function subscribe(first, second, options) {
- if (typeof first === "string" && isRoomEventName(first)) {
- if (typeof second !== "function") {
- throw new Error("Second argument must be a callback function");
- }
- const callback = second;
- switch (first) {
- case "event":
- return events.customEvent.subscribe(
- callback
- );
- case "my-presence":
- return events.myPresence.subscribe(callback);
- case "others": {
- const cb = callback;
- return events.others.subscribe(
- ({ others, event }) => cb(others, event)
- );
- }
- case "error":
- return events.error.subscribe(callback);
- case "connection":
- return events.connection.subscribe(
- callback
- );
- case "status":
- return events.status.subscribe(callback);
- case "lost-connection":
- return events.lostConnection.subscribe(
- callback
- );
- case "history":
- return events.history.subscribe(callback);
- case "storage-status":
- return events.storageStatus.subscribe(
- callback
- );
- default:
- return assertNever(first, "Unknown event");
- }
- }
- if (second === void 0 || typeof first === "function") {
- if (typeof first === "function") {
- const storageCallback = first;
- return events.storage.subscribe(storageCallback);
- } else {
- throw new Error("Please specify a listener callback");
- }
- }
- if (isLiveNode(first)) {
- const node = first;
- if (options?.isDeep) {
- const storageCallback = second;
- return subscribeToLiveStructureDeeply(node, storageCallback);
- } else {
- const nodeCallback = second;
- return subscribeToLiveStructureShallowly(node, nodeCallback);
- }
- }
- throw new Error(`"${String(first)}" is not a valid event name`);
- }
- return subscribe;
- }
- function isRoomEventName(value) {
- return value === "my-presence" || value === "others" || value === "event" || value === "error" || value === "history" || value === "status" || value === "storage-status" || value === "lost-connection" || value === "connection";
- }
- function makeCreateSocketDelegateForRoom(liveblocksServer, WebSocketPolyfill) {
- return (richToken) => {
- const ws = WebSocketPolyfill ?? (typeof WebSocket === "undefined" ? void 0 : WebSocket);
- if (ws === void 0) {
- throw new StopRetrying(
- "To use Liveblocks client in a non-dom environment, you need to provide a WebSocket polyfill."
- );
- }
- const token = richToken.raw;
- return new ws(
- `${liveblocksServer}/?token=${token}&version=${PKG_VERSION || "dev"}`
- );
- };
- }
- async function httpSend(message, token, endpoint, fetchPolyfill) {
- const fetcher = fetchPolyfill || /* istanbul ignore next */
- fetch;
- return fetcher(endpoint, {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- Authorization: `Bearer ${token}`
- },
- body: message
- });
- }
- function makeAuthDelegateForRoom(roomId, authentication, fetchPolyfill) {
- const fetcher = fetchPolyfill ?? (typeof window === "undefined" ? void 0 : window.fetch);
- if (authentication.type === "public") {
- return async () => {
- if (fetcher === void 0) {
- throw new StopRetrying(
- "To use Liveblocks client in a non-dom environment with a publicApiKey, you need to provide a fetch polyfill."
- );
- }
- return fetchAuthEndpoint(fetcher, authentication.url, {
- room: roomId,
- publicApiKey: authentication.publicApiKey
- }).then(({ token }) => parseAuthToken(token));
- };
- } else if (authentication.type === "private") {
- return async () => {
- if (fetcher === void 0) {
- throw new StopRetrying(
- "To use Liveblocks client in a non-dom environment with a url as auth endpoint, you need to provide a fetch polyfill."
- );
- }
- return fetchAuthEndpoint(fetcher, authentication.url, {
- room: roomId
- }).then(({ token }) => parseAuthToken(token));
- };
- } else if (authentication.type === "custom") {
- return async () => {
- const response = await authentication.callback(roomId);
- if (!response || typeof response !== "object") {
- throw new Error(
- 'We expect the authentication callback to return a token, but it does not. Hint: the return value should look like: { token: "..." }'
- );
- }
- if (typeof response.token === "string") {
- return parseAuthToken(response.token);
- } else if (typeof response.error === "string") {
- const reason = `Authentication failed: ${"reason" in response && typeof response.reason === "string" ? response.reason : "Forbidden"}`;
- if (response.error === "forbidden") {
- throw new StopRetrying(reason);
- } else {
- throw new Error(reason);
- }
- } else {
- throw new Error(
- 'We expect the authentication callback to return a token, but it does not. Hint: the return value should look like: { token: "..." }'
- );
- }
- };
- } else {
- throw new Error("Internal error. Unexpected authentication type");
- }
- }
- async function fetchAuthEndpoint(fetch2, endpoint, body) {
- const res = await fetch2(endpoint, {
- method: "POST",
- headers: {
- "Content-Type": "application/json"
- },
- // Credentials are needed to support authentication with cookies
- credentials: "include",
- body: JSON.stringify(body)
- });
- if (!res.ok) {
- const reason = `${(await res.text()).trim() || "reason not provided in auth response"} (${res.status} returned by POST ${endpoint})`;
- if (res.status === 401 || res.status === 403) {
- throw new StopRetrying(`Unauthorized: ${reason}`);
- } else {
- throw new Error(`Failed to authenticate: ${reason}`);
- }
- }
- let data;
- try {
- data = await res.json();
- } catch (er) {
- throw new Error(
- `Expected a JSON response when doing a POST request on "${endpoint}". ${String(
- er
- )}`
- );
- }
- if (!isPlainObject(data) || typeof data.token !== "string") {
- throw new Error(
- `Expected a JSON response of the form \`{ token: "..." }\` when doing a POST request on "${endpoint}", but got ${JSON.stringify(
- data
- )}`
- );
- }
- const { token } = data;
- return { token };
- }
- var MIN_THROTTLE = 16;
- var MAX_THROTTLE = 1e3;
- var DEFAULT_THROTTLE = 100;
- var MIN_LOST_CONNECTION_TIMEOUT = 200;
- var RECOMMENDED_MIN_LOST_CONNECTION_TIMEOUT = 1e3;
- var MAX_LOST_CONNECTION_TIMEOUT = 3e4;
- var DEFAULT_LOST_CONNECTION_TIMEOUT = 5e3;
- function getServerFromClientOptions(clientOptions) {
- const rawOptions = clientOptions;
- return typeof rawOptions.liveblocksServer === "string" ? rawOptions.liveblocksServer : "wss://api.liveblocks.io/v6";
- }
- function createClient(options) {
- const clientOptions = options;
- const throttleDelay = getThrottle(clientOptions.throttle ?? DEFAULT_THROTTLE);
- const lostConnectionTimeout = getLostConnectionTimeout(
- clientOptions.lostConnectionTimeout ?? DEFAULT_LOST_CONNECTION_TIMEOUT
- );
- const rooms = /* @__PURE__ */ new Map();
- function getRoom(roomId) {
- const room = rooms.get(roomId);
- return room ? room : null;
- }
- function enter(roomId, options2) {
- const existingRoom = rooms.get(roomId);
- if (existingRoom !== void 0) {
- return existingRoom;
- }
- deprecateIf(
- options2.initialPresence === null || options2.initialPresence === void 0,
- "Please provide an initial presence value for the current user when entering the room."
- );
- const newRoom = createRoom(
- {
- initialPresence: options2.initialPresence ?? {},
- initialStorage: options2.initialStorage
- },
- {
- roomId,
- throttleDelay,
- lostConnectionTimeout,
- polyfills: clientOptions.polyfills,
- delegates: clientOptions.mockedDelegates,
- enableDebugLogging: clientOptions.enableDebugLogging,
- unstable_batchedUpdates: options2?.unstable_batchedUpdates,
- liveblocksServer: getServerFromClientOptions(clientOptions),
- authentication: prepareAuthentication(clientOptions, roomId),
- httpSendEndpoint: buildLiveblocksHttpSendEndpoint(
- clientOptions,
- roomId
- ),
- unstable_fallbackToHTTP: !!clientOptions.unstable_fallbackToHTTP
- }
- );
- rooms.set(roomId, newRoom);
- setupDevTools(() => Array.from(rooms.keys()));
- linkDevTools(roomId, newRoom);
- const shouldConnect = options2.shouldInitiallyConnect ?? true;
- if (shouldConnect) {
- if (typeof atob === "undefined") {
- if (clientOptions.polyfills?.atob === void 0) {
- throw new Error(
- "You need to polyfill atob to use the client in your environment. Please follow the instructions at https://liveblocks.io/docs/errors/liveblocks-client/atob-polyfill"
- );
- }
- global.atob = clientOptions.polyfills.atob;
- }
- newRoom.connect();
- }
- return newRoom;
- }
- function leave(roomId) {
- unlinkDevTools(roomId);
- const room = rooms.get(roomId);
- if (room !== void 0) {
- room.destroy();
- rooms.delete(roomId);
- }
- }
- return {
- getRoom,
- enter,
- leave
- };
- }
- function checkBounds(option, value, min, max, recommendedMin) {
- if (typeof value !== "number" || value < min || value > max) {
- throw new Error(
- `${option} should be a number between ${recommendedMin ?? min} and ${max}.`
- );
- }
- return value;
- }
- function getThrottle(value) {
- return checkBounds("throttle", value, MIN_THROTTLE, MAX_THROTTLE);
- }
- function getLostConnectionTimeout(value) {
- return checkBounds(
- "lostConnectionTimeout",
- value,
- MIN_LOST_CONNECTION_TIMEOUT,
- MAX_LOST_CONNECTION_TIMEOUT,
- RECOMMENDED_MIN_LOST_CONNECTION_TIMEOUT
- );
- }
- function prepareAuthentication(clientOptions, roomId) {
- const { publicApiKey, authEndpoint } = clientOptions;
- if (authEndpoint !== void 0 && publicApiKey !== void 0) {
- throw new Error(
- "You cannot use both publicApiKey and authEndpoint. Please use either publicApiKey or authEndpoint, but not both. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClient"
- );
- }
- if (typeof publicApiKey === "string") {
- if (publicApiKey.startsWith("sk_")) {
- throw new Error(
- "Invalid publicApiKey. You are using the secret key which is not supported. Please use the public key instead. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClientPublicKey"
- );
- } else if (!publicApiKey.startsWith("pk_")) {
- throw new Error(
- "Invalid key. Please use the public key format: pk_. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClientPublicKey"
- );
- }
- return {
- type: "public",
- publicApiKey,
- url: buildLiveblocksPublicAuthorizeEndpoint(clientOptions, roomId)
- };
- }
- if (typeof authEndpoint === "string") {
- return {
- type: "private",
- url: authEndpoint
- };
- } else if (typeof authEndpoint === "function") {
- return {
- type: "custom",
- callback: authEndpoint
- };
- } else if (authEndpoint !== void 0) {
- throw new Error(
- "authEndpoint must be a string or a function. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClientAuthEndpoint"
- );
- }
- throw new Error(
- "Invalid Liveblocks client options. For more information: https://liveblocks.io/docs/api-reference/liveblocks-client#createClient"
- );
- }
- function buildLiveblocksHttpSendEndpoint(options, roomId) {
- if (options.httpSendEndpoint) {
- return options.httpSendEndpoint.replace("{roomId}", roomId);
- }
- return `https://api.liveblocks.io/v2/rooms/${encodeURIComponent(
- roomId
- )}/send-message`;
- }
- function buildLiveblocksPublicAuthorizeEndpoint(options, roomId) {
- if (options.publicAuthorizeEndpoint) {
- return options.publicAuthorizeEndpoint.replace("{roomId}", roomId);
- }
- return `https://api.liveblocks.io/v2/rooms/${encodeURIComponent(
- roomId
- )}/public/authorize`;
- }
- detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
-
- // node_modules/@liveblocks/client/dist/index.mjs
- var PKG_NAME2 = "@liveblocks/client";
- var PKG_VERSION2 = "1.1.8";
- var PKG_FORMAT2 = "esm";
- detectDupes(PKG_NAME2, PKG_VERSION2, PKG_FORMAT2);
-
- // src/app.js
- function generateRandomId() {
- return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
- }
- function removeStaleReactions() {
- window.reactions.remoteReactions = window.reactions.remoteReactions.filter(
- (reaction) => {
- const delta = ((/* @__PURE__ */ new Date()).getTime() - reaction.timestamp) / 1e3;
- return delta < 2 + 2;
- }
- );
- }
- var generateRandomCurveForReaction = () => {
- const randomX1 = `100%`;
- const randomY1 = `100%`;
- const randomX2 = `${Math.random() * 5}%`;
- const randomY2 = `${Math.random() * 50 + 50}%`;
- return `cubic-bezier(${randomX1}, ${randomY1}, ${randomX2}, ${randomY2})`;
- };
- var getStartingAngleForReaction = () => {
- const direction = Math.random() < 0.5 ? 1 : -1;
- const startingAngle = Math.floor(Math.random() * 90);
- return direction * startingAngle;
- };
- var client = createClient({
- publicApiKey: "pk_prod_nQme4lxwwAyBuCvk2CQP0Tve9kBh1KxeN_FUdQQqrc24qH9qYA2anmqOToNCpFyA"
- });
- function run() {
- const room = client.enter("javascript-todo-app", {
- initialPresence: {}
- });
- window.reactions = {
- react: void 0,
- remoteReactions: [],
- getStartingAngleForReaction,
- generateRandomCurveForReaction
- };
- window.reactions.react = (id) => {
- let emoji = "";
- switch (id) {
- case "heart":
- emoji = "\u2764\uFE0F";
- break;
- case "fire":
- emoji = "\u{1F525}";
- break;
- case "octopus":
- emoji = "\u{1F419}";
- break;
- case "rocket":
- emoji = "\u{1F680}";
- break;
- }
- if (emoji !== "")
- room.broadcastEvent({ type: "reaction", emoji, emojiId: id });
- };
- room.subscribe("event", ({ event }) => {
- removeStaleReactions();
- if (event.type === "reaction") {
- window.reactions.remoteReactions.push({
- id: generateRandomId(),
- emojiId: event.emojiId,
- type: event.emoji,
- shown: false,
- timestamp: (/* @__PURE__ */ new Date()).getTime(),
- curve: generateRandomCurveForReaction(),
- startingAngle: getStartingAngleForReaction()
- });
- }
- });
- }
- run();
-})();
diff --git a/public/styles.css b/public/styles.css
deleted file mode 100644
index 21fac85..0000000
--- a/public/styles.css
+++ /dev/null
@@ -1,1320 +0,0 @@
-
-/* ----- THEME ----- */
-
-
-/* RESET */
-*,
-*::before,
-*::after {
- box-sizing: border-box;
-}
-* {
- margin: 0;
- padding: 0;
- border: 0 solid transparent;
-}
-html:focus-within {
- scroll-behavior: smooth;
-}
-body {
- min-height: 100vh;
-}
-audio,
-canvas,
-embed,
-iframe,
-img,
-object,
-picture,
-svg,
-video {
- display: block;
- max-width: 100%;
-}
-button,
-input,
-select,
-textarea {
- font: inherit;
- line-height: inherit;
- color: inherit;
-}
-a {
- cursor: pointer;
- color: inherit;
- text-decoration: inherit;
-}
-a:not([class]) {
- text-decoration-skip-ink: auto;
-}
-button,
-[role="button"] {
- cursor: pointer;
- background-color: transparent;
-}
-code {
- font: inherit;
- font-size: inherit;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-size: inherit;
- font-weight: inherit;
-}
-ul[role='list'],
-ol[role='list'] {
- list-style: none;
-}
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-textarea {
- vertical-align: top;
- overflow: auto;
-}
-@media (prefers-reduced-motion: reduce) {
- html:focus-within {
- scroll-behavior: auto;
- }
- *,
- *::before,
- *::after {
- animation-duration: 0.01ms !important;
- animation-iteration-count: 1 !important;
- transition-duration: 0.01ms !important;
- scroll-behavior: auto !important;
- }
-}
-
-
-/* TYPEFACE */
-html {font-size: 18px;}
-
-/* FAMILY */
-.font-sans{font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;}
-.font-serif{font-family: Georgia,Cambria,Times New Roman,Times,serif;}
-.font-mono{font-family: Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;}
-
-body {
- font-weight: normal;
- line-height: 1;
- text-rendering: optimizeSpeed;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-
-/* BACKGROUND */
-.bg-fixed{background-attachment:fixed;}
-.bg-local{background-attachment:local;}
-.bg-scroll{background-attachment:scroll;}
-.bg-bottom{background-position:bottom;}
-.bg-center{background-position:center;}
-.bg-left{background-position:left;}
-.bg-left-bottom{background-position:left bottom;}
-.bg-left-top{background-position:left top;}
-.bg-right{background-position:right;}
-.bg-right-bottom{background-position:right bottom;}
-.bg-right-top{background-position:right top;}
-.bg-top{background-position:top;}
-.bg-repeat{background-repeat:repeat;}
-.bg-no-repeat{background-repeat:no-repeat;}
-.bg-repeat-x{background-repeat:repeat-x;}
-.bg-repeat-y{background-repeat:repeat-y;}
-.bg-repeat-round{background-repeat:round;}
-.bg-repeat-space{background-repeat:space;}
-.bg-auto{background-size:auto;}
-.bg-cover{background-size:cover;}
-.bg-contain{background-size:contain;}
-.bg-unset{background-color:unset;}
-.bg-clip-border{background-clip:border-box;}
-.bg-clip-content{background-clip:content-box;}
-.bg-clip-padding{background-clip:padding-box;}
-.bg-clip-text{
- background-clip:text;
- -webkit-background-clip:text;
- color:transparent;
-}
-
-
-/* BORDER */
-.border-solid{border-style:solid;}
-.border-dashed{border-style:dashed;}
-.border-dotted{border-style:dotted;}
-.border-double{border-style:double;}
-.border-none{border-style:none;}
-.border-t-none{border-top:none;}
-.border-r-none{border-right:none;}
-.border-b-none{border-bottom:none;}
-.border-l-none{border-left:none;}
-
-.border0{border-width:0px;}
-.border-t0{border-top-width:0px;}
-.border-r0{border-right-width:0px;}
-.border-b0{border-bottom-width:0px;}
-.border-l0{border-left-width:0px;}
-
-.border1{border-width:1px;}
-.border-t1{border-top-width:1px;}
-.border-r1{border-right-width:1px;}
-.border-b1{border-bottom-width:1px;}
-.border-l1{border-left-width:1px;}
-
-.border2{border-width:2px;}
-.border-t2{border-top-width:2px;}
-.border-r2{border-right-width:2px;}
-.border-b2{border-bottom-width:2px;}
-.border-l2{border-left-width:2px;}
-
-.border3{border-width:4px;}
-.border-t3{border-top-width:4px;}
-.border-r3{border-right-width:4px;}
-.border-b3{border-bottom-width:4px;}
-.border-l3{border-left-width:4px;}
-
-
-/* RADIUS */
-.radius-none{border-radius:0;}
-.radius-100{border-radius:100%;}
-.radius-pill{border-radius:9999px;}
-.radius-t-none,
-.radius-r-none,
-.radius-tr-none{border-top-right-radius:0;}
-.radius-b-none,
-.radius-r-none,
-.radius-br-none{border-bottom-right-radius:0;}
-.radius-t-none,
-.radius-l-none,
-.radius-tl-none{border-top-left-radius:0;}
-.radius-b-none,
-.radius-l-none,
-.radius-bl-none{border-bottom-left-radius:0;}
-.radius0{border-radius:2px;}
-.radius1{border-radius:8px;}
-.radius2{border-radius:16px;}
-.radius3{border-radius:9999px;}
-
-
-/* COLOR */
-.text-current{color:currentColor}/* current color */
-.text-transparent{color:transparent}/* transparent */
-
-.border-current{border-color:currentColor}/* current color */
-.border-transparent{border-color:transparent}/* transparent */
-
-.background-current{background-color:currentColor}/* current color */
-.background-transparent{background-color:transparent}/* transparent */
-
-
-/* ----- THEME COLORS ----- */
-:root {
- --light: #f8f9fa;
- --dark: #343a40;
-
- --primary-100: hsl(211, 100%, 90%);
- --primary-200: hsl(211, 100%, 80%);
- --primary-300: hsl(211, 100%, 70%);
- --primary-400: hsl(211, 100%, 60%);
- --primary-500: hsl(211, 100%, 50%);
- --primary-600: hsl(211, 100%, 40%);
- --primary-700: hsl(211, 100%, 30%);
- --primary-800: hsl(211, 100%, 20%);
- --primary-900: hsl(211, 100%, 10%);
-
-
- --secondary-100: hsl(208, 7.3%, 85%);
- --secondary-200: hsl(208, 7.3%, 75%);
- --secondary-300: hsl(208, 7.3%, 65%);
- --secondary-400: hsl(208, 7.3%, 55%);
- --secondary-500: hsl(208, 7.3%, 45.7%);
- --secondary-600: hsl(208, 7.3%, 35%);
- --secondary-700: hsl(208, 7.3%, 25%);
- --secondary-800: hsl(208, 7.3%, 15%);
- --secondary-900: hsl(208, 7.3%, 5%);
-
-
- --success-100: hsl(134, 61.4%, 80%);
- --success-200: hsl(134, 61.4%, 70%);
- --success-300: hsl(134, 61.4%, 60%);
- --success-400: hsl(134, 61.4%, 50%);
- --success-500: hsl(134, 61.4%, 40.6%);
- --success-600: hsl(134, 61.4%, 30%);
- --success-700: hsl(134, 61.4%, 20%);
- --success-800: hsl(134, 61.4%, 10%);
- --success-900: hsl(134, 61.4%, 0%);
-
-
- --info-100: hsl(188, 77.8%, 80%);
- --info-200: hsl(188, 77.8%, 70%);
- --info-300: hsl(188, 77.8%, 60%);
- --info-400: hsl(188, 77.8%, 50%);
- --info-500: hsl(188, 77.8%, 40.6%);
- --info-600: hsl(188, 77.8%, 30%);
- --info-700: hsl(188, 77.8%, 20%);
- --info-800: hsl(188, 77.8%, 10%);
- --info-900: hsl(188, 77.8%, 0%);
-
-
- --warning-100: hsl(45, 100%, 91%);
- --warning-200: hsl(45, 100%, 81%);
- --warning-300: hsl(45, 100%, 71%);
- --warning-400: hsl(45, 100%, 61%);
- --warning-500: hsl(45, 100%, 51.4%);
- --warning-600: hsl(45, 100%, 41%);
- --warning-700: hsl(45, 100%, 31%);
- --warning-800: hsl(45, 100%, 21%);
- --warning-900: hsl(45, 100%, 11%);
-
-
- --error-100: hsl(354, 70.5%, 93%);
- --error-200: hsl(354, 70.5%, 83%);
- --error-300: hsl(354, 70.5%, 73%);
- --error-400: hsl(354, 70.5%, 63%);
- --error-500: hsl(354, 70.5%, 53.5%);
- --error-600: hsl(354, 70.5%, 43%);
- --error-700: hsl(354, 70.5%, 33%);
- --error-800: hsl(354, 70.5%, 23%);
- --error-900: hsl(354, 70.5%, 13%);
-
-
- --grey-100: hsl(0, 0%, 86%);
- --grey-200: hsl(0, 0%, 76%);
- --grey-300: hsl(0, 0%, 66%);
- --grey-400: hsl(0, 0%, 56%);
- --grey-500: hsl(0, 0%, 46.7%);
- --grey-600: hsl(0, 0%, 36%);
- --grey-700: hsl(0, 0%, 26%);
- --grey-800: hsl(0, 0%, 16%);
- --grey-900: hsl(0, 0%, 6%);
-
- --crimson: #eb0052;
- --muted: #6c757d;
- --white: #fff;
-}
-
-/* FILL */
-.fill-none{fill:none}
-.fill-current{fill:currentColor}
-
-
-/* STROKE */
-.stroke-none{stroke:none;}
-.stroke-current{stroke:currentColor;}
-
-
-
-
-/* SIZES */
-.text6{font-size:5.61rem;}/* 100.984px */
-.text5{font-size:4.209rem;}/* 75.757px */
-.text4{font-size:3.157rem;}/* 56.832px */
-.text3{font-size:2.369rem;}/* 42.635px */
-.text2{font-size:1.777rem;}/* 31.984px */
-.text1{font-size:1.333rem;}/* 23.994px */
-.text0{font-size:1rem;}/* 18px */
-.text-1{font-size:0.75rem;}/* 13.503px */
-.text-2{font-size:0.563rem;}/* 10.13px */
-.text-3{font-size:0.422rem;}/* 7.599px */
-.text-4{font-size:0.317rem;}/* 5.701px */
-.text-5{font-size:0.238rem;}/* 4.277px */
-.text-6{font-size:0.178rem;}/* 3.208px */
-
-
-/* Style */
-.italic{font-style:italic;}
-.not-italic{font-style:normal;}
-
-
-/* LINE HEIGHT */
-.leading5{line-height: 2;}
-.leading4{line-height: 1.625;}
-.leading3{line-height: 1.5;}
-.leading2{line-height: 1.375;}
-.leading1{line-height: 1.25;}
-.leading0,
-.leading-none{line-height:1;}
-
-
-/* TRACKING */
-.tracking3{letter-spacing: 0.1em;}
-.tracking2{letter-spacing: 0.05em;}
-.tracking1{letter-spacing: 0.025em;}
-.tracking0{letter-spacing: 0;}
-.tracking-1{letter-spacing: -0.025em;}
-.tracking-2{letter-spacing: -0.05em;}
-
-
-/* WEIGHTS */
-.font-hairline{font-weight:100;}
-.font-thin{font-weight:200;}
-.font-light{font-weight:300;}
-.font-normal{font-weight:400;}
-.font-medium{font-weight:500;}
-.font-semibold{font-weight:600;}
-.font-bold{font-weight:700;}
-.font-extrabold{font-weight:800;}
-.font-black{font-weight:900;}
-
-
-/* TEXT TRANSFORM */
-.uppercase{text-transform:uppercase;}
-.lowercase{text-transform:lowercase;}
-.capitalize{text-transform:capitalize;}
-.normal-case{text-transform:none;}
-
-
-/* ALIGN */
-.text-inherit{text-align:inherit;}
-.text-center{text-align:center;}
-.text-left{text-align:left;}
-.text-right{text-align:right;}
-
-
-/* DECORATION */
-.no-underline{text-decoration:none;}
-.underline{text-decoration:underline;}
-.line-through{text-decoration:line-through;}
-
-
-/* LIST */
-.list-none{list-style:none;}
-.list-disc{list-style:disc;}
-.list-decimal{list-style:decimal;}
-
-
-/* WHITESPACE */
-.whitespace-normal{white-space:normal;}
-.truncate,
-.whitespace-no-wrap{white-space:nowrap;}
-.whitespace-pre{white-space:pre;}
-.whitespace-pre-line{white-space:pre-line;}
-.whitespace-pre-wrap{white-space:pre-wrap;}
-
-
-/* WORDBREAK */
-.break-normal{word-break:normal}
-.break-normal,
-.break-word{overflow-wrap:normal}
-.break-all{word-break:break-all}
-.break-keep{word-break:keep-all}
-.truncate,
-.ellipsis{text-overflow:ellipsis}
-
-
-
-/* ----- LAYOUT ----- */
-
-
-/* POSITION */
-.sticky{position:sticky;}
-.static{position:static;}
-.absolute{position:absolute;}
-.relative{position:relative;}
-.fixed{position:fixed;}
-
-
- /* POSITIONING */
- .trbl,
-.top0{top:0;}
- .trbl,
-.right0{right:0;}
- .trbl,
-.bottom0{bottom:0;}
- .trbl,
-.left0{left:0;}
-
-
-/* DISPLAY */
-.hidden{display:none;}
-.block{display:block;}
-.inline{display:inline;}
-.inline-block{display:inline-block;}
-.flex{display:flex;}
-.inline-flex{display:inline-flex;}
-.grid{display:grid;}
-.inline-grid{display:inline-grid;}
-
-
-/* WIDTH */
-.w-0{width:0}
-.w-full{width:100%}
-.w-screen{width:100vw}
-.min-w-0{min-width:0}
-.min-w-full{min-width:100%}
-.max-width-none{max-width:none}
-.max-w-full{max-width:100%}
-
-
-/* HEIGHT */
-.h-0{height:0;}
-.h-full{height:100%;}
-.h-screen{height:100vh;}
-.min-h-0{min-height:0;}
-.min-h-full{min-height:100%;}
-.min-h-screen{min-height:100vh;}
-.max-h-full{max-height:100%;}
-.max-h-screen{max-height:100vh;}
-
-
-/* FLEX */
-.flex-1{flex: 1 1 0%;}
-.flex-auto{flex: 1 1 auto;}
-.flex-initial{flex: 0 1 auto;}
-.flex-none{flex:none;}
-.flex-row{flex-direction:row;}
-.flex-row-reverse{flex-direction:row-reverse;}
-.flex-col{flex-direction:column;}
-.flex-col-reverse{flex-direction:column-reverse;}
-.items-stretch{align-items:stretch;}
-.items-start{align-items:flex-start;}
-.items-end{align-items:flex-end;}
-.items-center{align-items:center;}
-.content-start{align-content:start;}
-.content-center{align-content:center;}
-.content-end{align-content:end;}
-.content-between{align-content:space-between;}
-.content-around{align-content:space-around;}
-.self-auto{align-self:auto;}
-.self-start{align-self:flex-start;}
-.self-end{align-self:flex-end;}
-.self-center{align-self:center;}
-.self-stretch{align-self:stretch;}
-.justify-start{justify-content:flex-start;}
-.justify-end{justify-content: flex-end;}
-.justify-around{justify-content:space-around;}
-.justify-between{justify-content:space-between;}
-.justify-center{justify-content:center;}
-.flex-grow{flex-grow:1;}
-.flex-grow-0{flex-grow:0;}
-.flex-shrink{flex-shrink:1;}
-.flex-shrink-0{flex-shrink:0;}
-.flex-wrap{flex-wrap:wrap;}
-.flex-wrap-reverse{flex-wrap:wrap-reverse;}
-.flex-no-wrap{flex-wrap:nowrap;}
-.order-first{order:-9999;}
-.order-last{order:9999;}
-.order-none{order:0;}
-.order-1{order:1;}
-.order-2{order:2;}
-.order-3{order:3;}
-.order-4{order:4;}
-.order-5{order:5;}
-.order-6{order:6;}
-
-
-/* GRID */
-.flow-row{grid-auto-flow:row;}
-.flow-col{grid-auto-flow:column;}
-.flow-row-dense{grid-auto-flow:row dense;}
-.flow-column-dense{grid-auto-flow:column dense;}
-.row-auto{grid-row:auto;}
-.col-auto{grid-column:auto;}
-.col-end-auto{grid-column-end: auto;}
-.rows-end-auto{grid-row-end:auto;}
-.rows-none{grid-template-rows:none;}
-.col-1{grid-template-columns:repeat(1, minmax(0, 1fr));}
-.col-span-1{grid-column: span 1 / span 1;}
-.col-start-1{grid-column-start: 1;}
-.row-start-1{grid-row-start: 1;}
-.col-end-1{grid-column-end: 1;}
-.row-end-1{grid-row-end: 1;}
-.row-1{grid-template-rows: repeat(1, minmax(0, 1fr));}
-.col-2{grid-template-columns:repeat(2, minmax(0, 1fr));}
-.col-span-2{grid-column: span 2 / span 2;}
-.col-start-2{grid-column-start: 2;}
-.row-start-2{grid-row-start: 2;}
-.col-end-2{grid-column-end: 2;}
-.row-end-2{grid-row-end: 2;}
-.row-2{grid-template-rows: repeat(2, minmax(0, 1fr));}
-.col-3{grid-template-columns:repeat(3, minmax(0, 1fr));}
-.col-span-3{grid-column: span 3 / span 3;}
-.col-start-3{grid-column-start: 3;}
-.row-start-3{grid-row-start: 3;}
-.col-end-3{grid-column-end: 3;}
-.row-end-3{grid-row-end: 3;}
-.row-3{grid-template-rows: repeat(3, minmax(0, 1fr));}
-.col-4{grid-template-columns:repeat(4, minmax(0, 1fr));}
-.col-span-4{grid-column: span 4 / span 4;}
-.col-start-4{grid-column-start: 4;}
-.row-start-4{grid-row-start: 4;}
-.col-end-4{grid-column-end: 4;}
-.row-end-4{grid-row-end: 4;}
-.row-4{grid-template-rows: repeat(4, minmax(0, 1fr));}
-.col-5{grid-template-columns:repeat(5, minmax(0, 1fr));}
-.col-span-5{grid-column: span 5 / span 5;}
-.col-start-5{grid-column-start: 5;}
-.row-start-5{grid-row-start: 5;}
-.col-end-5{grid-column-end: 5;}
-.row-end-5{grid-row-end: 5;}
-.row-5{grid-template-rows: repeat(5, minmax(0, 1fr));}
-.col-6{grid-template-columns:repeat(6, minmax(0, 1fr));}
-.col-span-6{grid-column: span 6 / span 6;}
-.col-start-6{grid-column-start: 6;}
-.row-start-6{grid-row-start: 6;}
-.col-end-6{grid-column-end: 6;}
-.row-end-6{grid-row-end: 6;}
-.row-6{grid-template-rows: repeat(6, minmax(0, 1fr));}
-.gap5{gap:5.61rem;}
-.gap4{gap:4.209rem;}
-.gap3{gap:3.157rem;}
-.gap2{gap:2.369rem;}
-.gap1{gap:1.777rem;}
-.gap0{gap:1.333rem;}
-.gap-1{gap:1rem;}
-.gap-2{gap:0.75rem;}
-.gap-3{gap:0.563rem;}
-.gap-4{gap:0.422rem;}
-.gap-5{gap:0.317rem;}
-.gap-6{gap:0.238rem;}
-.gap-7{gap:0.178rem;}
-
-
-/* Z-INDEX */
-.z-auto{z-index:auto;}
-.z1{z-index:1;}
-.z0{z-index:0;}
-.z-1{z-index:-1;}
-
-
-
-/* MARGIN */
-.m-none{margin:0}
-.my-none,
-.mt-none{margin-top:0}
-.mx-none,
-.mr-none{margin-right:0}
-.my-none,
-.mb-none{margin-bottom:0}
-.mx-none,
-.ml-none{margin-left:0}
-.m-auto{margin-right:auto;margin-left:auto;}
-.mr-auto{margin-right:auto}
-.ml-auto{margin-left:auto}
-.m6{margin:5.61rem}
-.mt6{margin-top:5.61rem}
-.mr6{margin-right:5.61rem}
-.mb6{margin-bottom:5.61rem}
-.ml6{margin-left:5.61rem}
-.m5{margin:4.209rem}
-.mt5{margin-top:4.209rem}
-.mr5{margin-right:4.209rem}
-.mb5{margin-bottom:4.209rem}
-.ml5{margin-left:4.209rem}
-.m4{margin:3.157rem}
-.mt4{margin-top:3.157rem}
-.mr4{margin-right:3.157rem}
-.mb4{margin-bottom:3.157rem}
-.ml4{margin-left:3.157rem}
-.m3{margin:2.369rem}
-.mt3{margin-top:2.369rem}
-.mr3{margin-right:2.369rem}
-.mb3{margin-bottom:2.369rem}
-.ml3{margin-left:2.369rem}
-.m2{margin:1.777rem}
-.mt2{margin-top:1.777rem}
-.mr2{margin-right:1.777rem}
-.mb2{margin-bottom:1.777rem}
-.ml2{margin-left:1.777rem}
-.m1{margin:1.333rem}
-.mt1{margin-top:1.333rem}
-.mr1{margin-right:1.333rem}
-.mb1{margin-bottom:1.333rem}
-.ml1{margin-left:1.333rem}
-.m0{margin:1rem}
-.mt0{margin-top:1rem}
-.mr0{margin-right:1rem}
-.mb0{margin-bottom:1rem}
-.ml0{margin-left:1rem}
-.m-1{margin:0.75rem}
-.mt-1{margin-top:0.75rem}
-.mr-1{margin-right:0.75rem}
-.mb-1{margin-bottom:0.75rem}
-.ml-1{margin-left:0.75rem}
-.m-2{margin:0.563rem}
-.mt-2{margin-top:0.563rem}
-.mr-2{margin-right:0.563rem}
-.mb-2{margin-bottom:0.563rem}
-.ml-2{margin-left:0.563rem}
-.m-3{margin:0.422rem}
-.mt-3{margin-top:0.422rem}
-.mr-3{margin-right:0.422rem}
-.mb-3{margin-bottom:0.422rem}
-.ml-3{margin-left:0.422rem}
-.m-4{margin:0.317rem}
-.mt-4{margin-top:0.317rem}
-.mr-4{margin-right:0.317rem}
-.mb-4{margin-bottom:0.317rem}
-.ml-4{margin-left:0.317rem}
-.m-5{margin:0.238rem}
-.mt-5{margin-top:0.238rem}
-.mr-5{margin-right:0.238rem}
-.mb-5{margin-bottom:0.238rem}
-.ml-5{margin-left:0.238rem}
-.m-6{margin:0.178rem}
-.mt-6{margin-top:0.178rem}
-.mr-6{margin-right:0.178rem}
-.mb-6{margin-bottom:0.178rem}
-.ml-6{margin-left:0.178rem}
-
-
-/* PADDING */
-.p-none{padding:0;}
-.py-none,
-.pt-none{padding-top:0;}
-.px-none,
-.pr-none{padding-right:0;}
-.py-none,
-.pb-none{padding-bottom:0;}
-.px-none,
-.pl-none{padding-left:0;}
-.p6{padding:5.61rem;}
-.pt6{padding-top:5.61rem;}
-.pr6{padding-right:5.61rem;}
-.pb6{padding-bottom:5.61rem;}
-.pl6{padding-left:5.61rem;}
-.p5{padding:4.209rem;}
-.pt5{padding-top:4.209rem;}
-.pr5{padding-right:4.209rem;}
-.pb5{padding-bottom:4.209rem;}
-.pl5{padding-left:4.209rem;}
-.p4{padding:3.157rem;}
-.pt4{padding-top:3.157rem;}
-.pr4{padding-right:3.157rem;}
-.pb4{padding-bottom:3.157rem;}
-.pl4{padding-left:3.157rem;}
-.p3{padding:2.369rem;}
-.pt3{padding-top:2.369rem;}
-.pr3{padding-right:2.369rem;}
-.pb3{padding-bottom:2.369rem;}
-.pl3{padding-left:2.369rem;}
-.p2{padding:1.777rem;}
-.pt2{padding-top:1.777rem;}
-.pr2{padding-right:1.777rem;}
-.pb2{padding-bottom:1.777rem;}
-.pl2{padding-left:1.777rem;}
-.p1{padding:1.333rem;}
-.pt1{padding-top:1.333rem;}
-.pr1{padding-right:1.333rem;}
-.pb1{padding-bottom:1.333rem;}
-.pl1{padding-left:1.333rem;}
-.p0{padding:1rem;}
-.pt0{padding-top:1rem;}
-.pr0{padding-right:1rem;}
-.pb0{padding-bottom:1rem;}
-.pl0{padding-left:1rem;}
-.p-1{padding:0.75rem;}
-.pt-1{padding-top:0.75rem;}
-.pr-1{padding-right:0.75rem;}
-.pb-1{padding-bottom:0.75rem;}
-.pl-1{padding-left:0.75rem;}
-.p-2{padding:0.563rem;}
-.pt-2{padding-top:0.563rem;}
-.pr-2{padding-right:0.563rem;}
-.pb-2{padding-bottom:0.563rem;}
-.pl-2{padding-left:0.563rem;}
-.p-3{padding:0.422rem;}
-.pt-3{padding-top:0.422rem;}
-.pr-3{padding-right:0.422rem;}
-.pb-3{padding-bottom:0.422rem;}
-.pl-3{padding-left:0.422rem;}
-.p-4{padding:0.317rem;}
-.pt-4{padding-top:0.317rem;}
-.pr-4{padding-right:0.317rem;}
-.pb-4{padding-bottom:0.317rem;}
-.pl-4{padding-left:0.317rem;}
-.p-5{padding:0.238rem;}
-.pt-5{padding-top:0.238rem;}
-.pr-5{padding-right:0.238rem;}
-.pb-5{padding-bottom:0.238rem;}
-.pl-5{padding-left:0.238rem;}
-.p-6{padding:0.178rem;}
-.pt-6{padding-top:0.178rem;}
-.pr-6{padding-right:0.178rem;}
-.pb-6{padding-bottom:0.178rem;}
-.pl-6{padding-left:0.178rem;}
-
-
-/* OVERFLOW */
-.overflow-auto{overflow:auto;}
-.truncate,
-.overflow-hidden{overflow:hidden;}
-.overflow-visible{overflow:visible;}
-.overflow-scroll{overflow:scroll;}
-.overflow-x-auto{overflow-x:auto;}
-.overflow-y-auto{overflow-y:auto;}
-.overflow-x-scroll{overflow-x:scroll;}
-.overflow-x-hidden{overflow-x:hidden;}
-.overflow-y-scroll{overflow-y:scroll;}
-.overflow-y-hidden{overflow-y:hidden;}
-.scrolling-touch{-webkit-overflow-scrolling:touch;}
-.scrolling-auto{-webkit-overflow-scrolling:auto;}
-
-
-/* VISIBILITY */
-.invisible{visibility:hidden;}
-.visible{visibility:visible;}
-
-
-/* OBJECT FIT */
-.object-contain{object-fit:contain;}
-.object-cover{object-fit:cover;}
-.object-fill{object-fit:fill;}
-.object-none{object-fit:none;}
-.object-scale-down{object-fit:scale-down;}
-
-
-/* OBJECT POSITION */
-.object-b{object-position:bottom;}
-.object-c{object-position:center;}
-.object-t{object-position:top;}
-.object-r{object-position:right;}
-.object-rt{object-position:right top;}
-.object-rb{object-position:right bottom;}
-.object-l{object-position:left;}
-.object-lt{object-position:left top;}
-.object-lb{object-position:left bottom;}
-
-
-/* OUTLINE */
-.outline-none{outline:0;}
-
-
-/* OPACITY */
-.opacity-0{opacity:0;}
-.opacity-25{opacity:0.25;}
-.opacity-50{opacity:0.5;}
-.opacity-75{opacity:0.75;}
-.opacity-100{opacity:1.0;}
-
-
-/* CURSOR */
-.cursor-auto{cursor:auto;}
-.cursor-default{cursor:default;}
-.cursor-pointer{cursor:pointer;}
-.cursor-wait{cursor:wait;}
-.cursor-text{cursor:text;}
-.cursor-move{cursor:move;}
-.cursor-not-allowed{cursor:not-allowed;}
-.cursor-grab{cursor:grab;}
-.cursor-grabbing{cursor:grabbing;}
-
-
-/* USER SELECT */
-.select-none{user-select:none;}
-.select-text{user-select:text;}
-.select-all{user-select:all;}
-.select-auto{user-select:auto;}
-
-
-@media only screen and (min-width:48em) {
-
-
-
-/* SIZES */
-.text6-lg{font-size:5.61rem;}/* 100.984px */
-.text5-lg{font-size:4.209rem;}/* 75.757px */
-.text4-lg{font-size:3.157rem;}/* 56.832px */
-.text3-lg{font-size:2.369rem;}/* 42.635px */
-.text2-lg{font-size:1.777rem;}/* 31.984px */
-.text1-lg{font-size:1.333rem;}/* 23.994px */
-.text0-lg{font-size:1rem;}/* 18px */
-.text-1-lg{font-size:0.75rem;}/* 13.503px */
-.text-2-lg{font-size:0.563rem;}/* 10.13px */
-.text-3-lg{font-size:0.422rem;}/* 7.599px */
-.text-4-lg{font-size:0.317rem;}/* 5.701px */
-.text-5-lg{font-size:0.238rem;}/* 4.277px */
-.text-6-lg{font-size:0.178rem;}/* 3.208px */
-
-
-/* Style */
-.italic-lg{font-style:italic;}
-.not-italic-lg{font-style:normal;}
-
-
-/* LINE HEIGHT */
-.leading5-lg{line-height: 2;}
-.leading4-lg{line-height: 1.625;}
-.leading3-lg{line-height: 1.5;}
-.leading2-lg{line-height: 1.375;}
-.leading1-lg{line-height: 1.25;}
-.leading0-lg,
-.leading-none-lg{line-height:1;}
-
-
-/* TRACKING */
-.tracking3-lg{letter-spacing: 0.1em;}
-.tracking2-lg{letter-spacing: 0.05em;}
-.tracking1-lg{letter-spacing: 0.025em;}
-.tracking0-lg{letter-spacing: 0;}
-.tracking-1-lg{letter-spacing: -0.025em;}
-.tracking-2-lg{letter-spacing: -0.05em;}
-
-
-/* WEIGHTS */
-.font-hairline-lg{font-weight:100;}
-.font-thin-lg{font-weight:200;}
-.font-light-lg{font-weight:300;}
-.font-normal-lg{font-weight:400;}
-.font-medium-lg{font-weight:500;}
-.font-semibold-lg{font-weight:600;}
-.font-bold-lg{font-weight:700;}
-.font-extrabold-lg{font-weight:800;}
-.font-black-lg{font-weight:900;}
-
-
-/* TEXT TRANSFORM */
-.uppercase-lg{text-transform:uppercase;}
-.lowercase-lg{text-transform:lowercase;}
-.capitalize-lg{text-transform:capitalize;}
-.normal-case-lg{text-transform:none;}
-
-
-/* ALIGN */
-.text-inherit-lg{text-align:inherit;}
-.text-center-lg{text-align:center;}
-.text-left-lg{text-align:left;}
-.text-right-lg{text-align:right;}
-
-
-/* DECORATION */
-.no-underline-lg{text-decoration:none;}
-.underline-lg{text-decoration:underline;}
-.line-through-lg{text-decoration:line-through;}
-
-
-/* LIST */
-.list-none-lg{list-style:none;}
-.list-disc-lg{list-style:disc;}
-.list-decimal-lg{list-style:decimal;}
-
-
-/* WHITESPACE */
-.whitespace-normal-lg{white-space:normal;}
-.truncate-lg,
-.whitespace-no-wrap-lg{white-space:nowrap;}
-.whitespace-pre-lg{white-space:pre;}
-.whitespace-pre-line-lg{white-space:pre-line;}
-.whitespace-pre-wrap-lg{white-space:pre-wrap;}
-
-
-/* WORDBREAK */
-.break-normal-lg{word-break:normal}
-.break-normal-lg,
-.break-word-lg{overflow-wrap:normal}
-.break-all-lg{word-break:break-all}
-.break-keep-lg{word-break:keep-all}
-.truncate-lg,
-.ellipsis-lg{text-overflow:ellipsis}
-
-
-
-/* ----- LAYOUT ----- */
-
-
-/* POSITION */
-.sticky-lg{position:sticky;}
-.static-lg{position:static;}
-.absolute-lg{position:absolute;}
-.relative-lg{position:relative;}
-.fixed-lg{position:fixed;}
-
-
- /* POSITIONING */
- .trbl-lg,
-.top0-lg{top:0;}
- .trbl-lg,
-.right0-lg{right:0;}
- .trbl-lg,
-.bottom0-lg{bottom:0;}
- .trbl-lg,
-.left0-lg{left:0;}
-
-
-/* DISPLAY */
-.hidden-lg{display:none;}
-.block-lg{display:block;}
-.inline-lg{display:inline;}
-.inline-block-lg{display:inline-block;}
-.flex-lg{display:flex;}
-.inline-flex-lg{display:inline-flex;}
-.grid-lg{display:grid;}
-.inline-grid-lg{display:inline-grid;}
-
-
-/* WIDTH */
-.w-0-lg{width:0}
-.w-full-lg{width:100%}
-.w-screen-lg{width:100vw}
-.min-w-0-lg{min-width:0}
-.min-w-full-lg{min-width:100%}
-.max-width-none-lg{max-width:none}
-.max-w-full-lg{max-width:100%}
-
-
-/* HEIGHT */
-.h-0-lg{height:0;}
-.h-full-lg{height:100%;}
-.h-screen-lg{height:100vh;}
-.min-h-0-lg{min-height:0;}
-.min-h-full-lg{min-height:100%;}
-.min-h-screen-lg{min-height:100vh;}
-.max-h-full-lg{max-height:100%;}
-.max-h-screen-lg{max-height:100vh;}
-
-
-/* FLEX */
-.flex-1-lg{flex: 1 1 0%;}
-.flex-auto-lg{flex: 1 1 auto;}
-.flex-initial-lg{flex: 0 1 auto;}
-.flex-none-lg{flex:none;}
-.flex-row-lg{flex-direction:row;}
-.flex-row-reverse-lg{flex-direction:row-reverse;}
-.flex-col-lg{flex-direction:column;}
-.flex-col-reverse-lg{flex-direction:column-reverse;}
-.items-stretch-lg{align-items:stretch;}
-.items-start-lg{align-items:flex-start;}
-.items-end-lg{align-items:flex-end;}
-.items-center-lg{align-items:center;}
-.content-start-lg{align-content:start;}
-.content-center-lg{align-content:center;}
-.content-end-lg{align-content:end;}
-.content-between-lg{align-content:space-between;}
-.content-around-lg{align-content:space-around;}
-.self-auto-lg{align-self:auto;}
-.self-start-lg{align-self:flex-start;}
-.self-end-lg{align-self:flex-end;}
-.self-center-lg{align-self:center;}
-.self-stretch-lg{align-self:stretch;}
-.justify-start-lg{justify-content:flex-start;}
-.justify-end-lg{justify-content: flex-end;}
-.justify-around-lg{justify-content:space-around;}
-.justify-between-lg{justify-content:space-between;}
-.justify-center-lg{justify-content:center;}
-.flex-grow-lg{flex-grow:1;}
-.flex-grow-0-lg{flex-grow:0;}
-.flex-shrink-lg{flex-shrink:1;}
-.flex-shrink-0-lg{flex-shrink:0;}
-.flex-wrap-lg{flex-wrap:wrap;}
-.flex-wrap-reverse-lg{flex-wrap:wrap-reverse;}
-.flex-no-wrap-lg{flex-wrap:nowrap;}
-.order-first-lg{order:-9999;}
-.order-last-lg{order:9999;}
-.order-none-lg{order:0;}
-.order-1-lg{order:1;}
-.order-2-lg{order:2;}
-.order-3-lg{order:3;}
-.order-4-lg{order:4;}
-.order-5-lg{order:5;}
-.order-6-lg{order:6;}
-
-
-/* GRID */
-.flow-row-lg{grid-auto-flow:row;}
-.flow-col-lg{grid-auto-flow:column;}
-.flow-row-dense-lg{grid-auto-flow:row dense;}
-.flow-column-dense-lg{grid-auto-flow:column dense;}
-.row-auto-lg{grid-row:auto;}
-.col-auto-lg{grid-column:auto;}
-.col-end-auto-lg{grid-column-end: auto;}
-.rows-end-auto-lg{grid-row-end:auto;}
-.rows-none-lg{grid-template-rows:none;}
-.col-1-lg{grid-template-columns:repeat(1, minmax(0, 1fr));}
-.col-span-1-lg{grid-column: span 1 / span 1;}
-.col-start-1-lg{grid-column-start: 1;}
-.row-start-1-lg{grid-row-start: 1;}
-.col-end-1-lg{grid-column-end: 1;}
-.row-end-1-lg{grid-row-end: 1;}
-.row-1-lg{grid-template-rows: repeat(1, minmax(0, 1fr));}
-.col-2-lg{grid-template-columns:repeat(2, minmax(0, 1fr));}
-.col-span-2-lg{grid-column: span 2 / span 2;}
-.col-start-2-lg{grid-column-start: 2;}
-.row-start-2-lg{grid-row-start: 2;}
-.col-end-2-lg{grid-column-end: 2;}
-.row-end-2-lg{grid-row-end: 2;}
-.row-2-lg{grid-template-rows: repeat(2, minmax(0, 1fr));}
-.col-3-lg{grid-template-columns:repeat(3, minmax(0, 1fr));}
-.col-span-3-lg{grid-column: span 3 / span 3;}
-.col-start-3-lg{grid-column-start: 3;}
-.row-start-3-lg{grid-row-start: 3;}
-.col-end-3-lg{grid-column-end: 3;}
-.row-end-3-lg{grid-row-end: 3;}
-.row-3-lg{grid-template-rows: repeat(3, minmax(0, 1fr));}
-.col-4-lg{grid-template-columns:repeat(4, minmax(0, 1fr));}
-.col-span-4-lg{grid-column: span 4 / span 4;}
-.col-start-4-lg{grid-column-start: 4;}
-.row-start-4-lg{grid-row-start: 4;}
-.col-end-4-lg{grid-column-end: 4;}
-.row-end-4-lg{grid-row-end: 4;}
-.row-4-lg{grid-template-rows: repeat(4, minmax(0, 1fr));}
-.col-5-lg{grid-template-columns:repeat(5, minmax(0, 1fr));}
-.col-span-5-lg{grid-column: span 5 / span 5;}
-.col-start-5-lg{grid-column-start: 5;}
-.row-start-5-lg{grid-row-start: 5;}
-.col-end-5-lg{grid-column-end: 5;}
-.row-end-5-lg{grid-row-end: 5;}
-.row-5-lg{grid-template-rows: repeat(5, minmax(0, 1fr));}
-.col-6-lg{grid-template-columns:repeat(6, minmax(0, 1fr));}
-.col-span-6-lg{grid-column: span 6 / span 6;}
-.col-start-6-lg{grid-column-start: 6;}
-.row-start-6-lg{grid-row-start: 6;}
-.col-end-6-lg{grid-column-end: 6;}
-.row-end-6-lg{grid-row-end: 6;}
-.row-6-lg{grid-template-rows: repeat(6, minmax(0, 1fr));}
-.gap5-lg{gap:5.61rem;}
-.gap4-lg{gap:4.209rem;}
-.gap3-lg{gap:3.157rem;}
-.gap2-lg{gap:2.369rem;}
-.gap1-lg{gap:1.777rem;}
-.gap0-lg{gap:1.333rem;}
-.gap-1-lg{gap:1rem;}
-.gap-2-lg{gap:0.75rem;}
-.gap-3-lg{gap:0.563rem;}
-.gap-4-lg{gap:0.422rem;}
-.gap-5-lg{gap:0.317rem;}
-.gap-6-lg{gap:0.238rem;}
-.gap-7-lg{gap:0.178rem;}
-
-
-/* Z-INDEX */
-.z-auto-lg{z-index:auto;}
-.z1-lg{z-index:1;}
-.z0-lg{z-index:0;}
-.z-1-lg{z-index:-1;}
-
-
-
-/* MARGIN */
-.m-none-lg{margin:0}
-.my-none-lg,
-.mt-none-lg{margin-top:0}
-.mx-none-lg,
-.mr-none-lg{margin-right:0}
-.my-none-lg,
-.mb-none-lg{margin-bottom:0}
-.mx-none-lg,
-.ml-none-lg{margin-left:0}
-.m-auto-lg{margin-right:auto;margin-left:auto;}
-.mr-auto-lg{margin-right:auto}
-.ml-auto-lg{margin-left:auto}
-.m6-lg{margin:5.61rem}
-.mt6-lg{margin-top:5.61rem}
-.mr6-lg{margin-right:5.61rem}
-.mb6-lg{margin-bottom:5.61rem}
-.ml6-lg{margin-left:5.61rem}
-.m5-lg{margin:4.209rem}
-.mt5-lg{margin-top:4.209rem}
-.mr5-lg{margin-right:4.209rem}
-.mb5-lg{margin-bottom:4.209rem}
-.ml5-lg{margin-left:4.209rem}
-.m4-lg{margin:3.157rem}
-.mt4-lg{margin-top:3.157rem}
-.mr4-lg{margin-right:3.157rem}
-.mb4-lg{margin-bottom:3.157rem}
-.ml4-lg{margin-left:3.157rem}
-.m3-lg{margin:2.369rem}
-.mt3-lg{margin-top:2.369rem}
-.mr3-lg{margin-right:2.369rem}
-.mb3-lg{margin-bottom:2.369rem}
-.ml3-lg{margin-left:2.369rem}
-.m2-lg{margin:1.777rem}
-.mt2-lg{margin-top:1.777rem}
-.mr2-lg{margin-right:1.777rem}
-.mb2-lg{margin-bottom:1.777rem}
-.ml2-lg{margin-left:1.777rem}
-.m1-lg{margin:1.333rem}
-.mt1-lg{margin-top:1.333rem}
-.mr1-lg{margin-right:1.333rem}
-.mb1-lg{margin-bottom:1.333rem}
-.ml1-lg{margin-left:1.333rem}
-.m0-lg{margin:1rem}
-.mt0-lg{margin-top:1rem}
-.mr0-lg{margin-right:1rem}
-.mb0-lg{margin-bottom:1rem}
-.ml0-lg{margin-left:1rem}
-.m-1-lg{margin:0.75rem}
-.mt-1-lg{margin-top:0.75rem}
-.mr-1-lg{margin-right:0.75rem}
-.mb-1-lg{margin-bottom:0.75rem}
-.ml-1-lg{margin-left:0.75rem}
-.m-2-lg{margin:0.563rem}
-.mt-2-lg{margin-top:0.563rem}
-.mr-2-lg{margin-right:0.563rem}
-.mb-2-lg{margin-bottom:0.563rem}
-.ml-2-lg{margin-left:0.563rem}
-.m-3-lg{margin:0.422rem}
-.mt-3-lg{margin-top:0.422rem}
-.mr-3-lg{margin-right:0.422rem}
-.mb-3-lg{margin-bottom:0.422rem}
-.ml-3-lg{margin-left:0.422rem}
-.m-4-lg{margin:0.317rem}
-.mt-4-lg{margin-top:0.317rem}
-.mr-4-lg{margin-right:0.317rem}
-.mb-4-lg{margin-bottom:0.317rem}
-.ml-4-lg{margin-left:0.317rem}
-.m-5-lg{margin:0.238rem}
-.mt-5-lg{margin-top:0.238rem}
-.mr-5-lg{margin-right:0.238rem}
-.mb-5-lg{margin-bottom:0.238rem}
-.ml-5-lg{margin-left:0.238rem}
-.m-6-lg{margin:0.178rem}
-.mt-6-lg{margin-top:0.178rem}
-.mr-6-lg{margin-right:0.178rem}
-.mb-6-lg{margin-bottom:0.178rem}
-.ml-6-lg{margin-left:0.178rem}
-
-
-/* PADDING */
-.p-none-lg{padding:0;}
-.py-none-lg,
-.pt-none-lg{padding-top:0;}
-.px-none-lg,
-.pr-none-lg{padding-right:0;}
-.py-none-lg,
-.pb-none-lg{padding-bottom:0;}
-.px-none-lg,
-.pl-none-lg{padding-left:0;}
-.p6-lg{padding:5.61rem;}
-.pt6-lg{padding-top:5.61rem;}
-.pr6-lg{padding-right:5.61rem;}
-.pb6-lg{padding-bottom:5.61rem;}
-.pl6-lg{padding-left:5.61rem;}
-.p5-lg{padding:4.209rem;}
-.pt5-lg{padding-top:4.209rem;}
-.pr5-lg{padding-right:4.209rem;}
-.pb5-lg{padding-bottom:4.209rem;}
-.pl5-lg{padding-left:4.209rem;}
-.p4-lg{padding:3.157rem;}
-.pt4-lg{padding-top:3.157rem;}
-.pr4-lg{padding-right:3.157rem;}
-.pb4-lg{padding-bottom:3.157rem;}
-.pl4-lg{padding-left:3.157rem;}
-.p3-lg{padding:2.369rem;}
-.pt3-lg{padding-top:2.369rem;}
-.pr3-lg{padding-right:2.369rem;}
-.pb3-lg{padding-bottom:2.369rem;}
-.pl3-lg{padding-left:2.369rem;}
-.p2-lg{padding:1.777rem;}
-.pt2-lg{padding-top:1.777rem;}
-.pr2-lg{padding-right:1.777rem;}
-.pb2-lg{padding-bottom:1.777rem;}
-.pl2-lg{padding-left:1.777rem;}
-.p1-lg{padding:1.333rem;}
-.pt1-lg{padding-top:1.333rem;}
-.pr1-lg{padding-right:1.333rem;}
-.pb1-lg{padding-bottom:1.333rem;}
-.pl1-lg{padding-left:1.333rem;}
-.p0-lg{padding:1rem;}
-.pt0-lg{padding-top:1rem;}
-.pr0-lg{padding-right:1rem;}
-.pb0-lg{padding-bottom:1rem;}
-.pl0-lg{padding-left:1rem;}
-.p-1-lg{padding:0.75rem;}
-.pt-1-lg{padding-top:0.75rem;}
-.pr-1-lg{padding-right:0.75rem;}
-.pb-1-lg{padding-bottom:0.75rem;}
-.pl-1-lg{padding-left:0.75rem;}
-.p-2-lg{padding:0.563rem;}
-.pt-2-lg{padding-top:0.563rem;}
-.pr-2-lg{padding-right:0.563rem;}
-.pb-2-lg{padding-bottom:0.563rem;}
-.pl-2-lg{padding-left:0.563rem;}
-.p-3-lg{padding:0.422rem;}
-.pt-3-lg{padding-top:0.422rem;}
-.pr-3-lg{padding-right:0.422rem;}
-.pb-3-lg{padding-bottom:0.422rem;}
-.pl-3-lg{padding-left:0.422rem;}
-.p-4-lg{padding:0.317rem;}
-.pt-4-lg{padding-top:0.317rem;}
-.pr-4-lg{padding-right:0.317rem;}
-.pb-4-lg{padding-bottom:0.317rem;}
-.pl-4-lg{padding-left:0.317rem;}
-.p-5-lg{padding:0.238rem;}
-.pt-5-lg{padding-top:0.238rem;}
-.pr-5-lg{padding-right:0.238rem;}
-.pb-5-lg{padding-bottom:0.238rem;}
-.pl-5-lg{padding-left:0.238rem;}
-.p-6-lg{padding:0.178rem;}
-.pt-6-lg{padding-top:0.178rem;}
-.pr-6-lg{padding-right:0.178rem;}
-.pb-6-lg{padding-bottom:0.178rem;}
-.pl-6-lg{padding-left:0.178rem;}
-
-
-/* OVERFLOW */
-.overflow-auto-lg{overflow:auto;}
-.truncate-lg,
-.overflow-hidden-lg{overflow:hidden;}
-.overflow-visible-lg{overflow:visible;}
-.overflow-scroll-lg{overflow:scroll;}
-.overflow-x-auto-lg{overflow-x:auto;}
-.overflow-y-auto-lg{overflow-y:auto;}
-.overflow-x-scroll-lg{overflow-x:scroll;}
-.overflow-x-hidden-lg{overflow-x:hidden;}
-.overflow-y-scroll-lg{overflow-y:scroll;}
-.overflow-y-hidden-lg{overflow-y:hidden;}
-.scrolling-touch-lg{-webkit-overflow-scrolling:touch;}
-.scrolling-auto-lg{-webkit-overflow-scrolling:auto;}
-
-
-/* VISIBILITY */
-.invisible-lg{visibility:hidden;}
-.visible-lg{visibility:visible;}
-
-
-/* OBJECT FIT */
-.object-contain-lg{object-fit:contain;}
-.object-cover-lg{object-fit:cover;}
-.object-fill-lg{object-fit:fill;}
-.object-none-lg{object-fit:none;}
-.object-scale-down-lg{object-fit:scale-down;}
-
-
-/* OBJECT POSITION */
-.object-b-lg{object-position:bottom;}
-.object-c-lg{object-position:center;}
-.object-t-lg{object-position:top;}
-.object-r-lg{object-position:right;}
-.object-rt-lg{object-position:right top;}
-.object-rb-lg{object-position:right bottom;}
-.object-l-lg{object-position:left;}
-.object-lt-lg{object-position:left top;}
-.object-lb-lg{object-position:left bottom;}
-
-
-/* OUTLINE */
-.outline-none-lg{outline:0;}
-
-
-/* OPACITY */
-.opacity-0-lg{opacity:0;}
-.opacity-25-lg{opacity:0.25;}
-.opacity-50-lg{opacity:0.5;}
-.opacity-75-lg{opacity:0.75;}
-.opacity-100-lg{opacity:1.0;}
-
-
-/* CURSOR */
-.cursor-auto-lg{cursor:auto;}
-.cursor-default-lg{cursor:default;}
-.cursor-pointer-lg{cursor:pointer;}
-.cursor-wait-lg{cursor:wait;}
-.cursor-text-lg{cursor:text;}
-.cursor-move-lg{cursor:move;}
-.cursor-not-allowed-lg{cursor:not-allowed;}
-.cursor-grab-lg{cursor:grab;}
-.cursor-grabbing-lg{cursor:grabbing;}
-
-
-/* USER SELECT */
-.select-none-lg{user-select:none;}
-.select-text-lg{user-select:text;}
-.select-all-lg{user-select:all;}
-.select-auto-lg{user-select:auto;}
-
-
-}
diff --git a/public/styles/main.css b/public/styles/main.css
deleted file mode 100644
index 4c2e152..0000000
--- a/public/styles/main.css
+++ /dev/null
@@ -1,122 +0,0 @@
-html, body {
- width: 100%;
- height: 100%;
- margin: 0;
- line-height: 1.5em;
-}
-
-body {
- font-family: canada-type-gibson, sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-family: headline-gothic-atf-round, sans-serif;
- font-weight: 400;
-}
-
-h1 { font-size: 210% }
-h2 { font-size: 180%; color: #052460 }
-h3 { font-size: 150% }
-h4 { font-size: 120% }
-
-a, a:visited {
- color: blue;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-pre {
- white-space: pre-wrap;
-}
-
-img {
- max-width: 100%;
- object-fit: contain;
-}
-
-input {
- display: block;
- margin-bottom: 8px;
-}
-
-i {
- width: 25px;
-}
-
-a[target="_blank"]:after {
- display: inline-block;
- text-rendering: auto;
- -webkit-font-smoothing: antialiased;
- font: var(--fa-font-solid);
- font-size: 10px;
- margin:0 8px;
- content: "\f35d";
-}
-
-#page {
- padding: 8px 24px;
-}
-
-.hero-image {
- height: auto;
-}
-
-.cta {
- font-family: headline-gothic-atf-round, sans-serif;
- background-color: #0033FF;
- border: 4px solid #0033FF;
- font-weight: 500;
-}
-
-div.cta {
- font-size: 120%;
- margin: 16px 0;
- display: inline-block;
-}
-
-span.cta {
- font-size: 18px;
- padding: 8px;
-}
-
-.cta a, .cta a:visited {
- display: inline-block;
- padding: 8px 16px;
- color: #fff5cc;
- text-decoration: none;
-}
-
-.cta:hover {
- background-color: #112378;
- border: 4px solid #112378;
-}
-
-.cta.secondary {
- color: #0033FF;
- background: none;
- border: 4px solid #0033FF;
-}
-
-
-.cta.secondary a, .cta.secondary a:visited {
- color: #0033FF;
- text-decoration: none;
-}
-
-.cta.secondary:hover {
- border: 4px solid #112378;
-}
-
-.cta.secondary:hover a {
- color: #112378;
-}
-
-@media only screen and (min-width: 768px) {
- #page {
- width: 60vw;
- margin: 0 auto;
- }
-}
\ No newline at end of file
diff --git a/scripts/live-stream.js b/scripts/live-stream.js
deleted file mode 100644
index 373dc22..0000000
--- a/scripts/live-stream.js
+++ /dev/null
@@ -1,91 +0,0 @@
-const fetch = require('node-fetch')
-require('dotenv').config()
-
-/**
- * This script is used to launch the conference livestream simulcast using Mux.
- *
- * 1. Run script, this will create a Mux livestream object
- * 2. Go to https://studio.twitter.com/producer/broadcasts and "Create broadcast", make it public, tweet it out
- *
- * No action needed for Twitch or YouTube, they will automatically start streaming.
- *
- * See: https://docs.mux.com/guides/video/stream-live-to-3rd-party-platforms#2-select-a-simulcast-target-supported-by-mux
- */
-
-async function updatePlaybackId(playbackId) {
- let env = process.argv[2]
- let url
- if (env === 'testing') {
- url = 'http://localhost:3333'
- }
- else {
- url = `https://${ env === 'staging' ? 'staging.' : '' }seattlejs.com`
- }
- // update the app setting
- let params = new URLSearchParams()
- params.append('secret', process.env.ADMIN_SECRET)
- params.append('playbackId', playbackId)
- await fetch(`${url}/admin`, {
- method: 'POST',
- body: params,
- // redirect: 'manual'
- })
- console.log('Setting Updated: playbackId: ', playbackId)
-}
-
-
-async function createLivestream() {
- // create a payload for the REST API call that will initialize a livestream and simulcast it to both Twitter and Twitch
- let payload = {
- playback_policy: [
- "public"
- ],
- new_asset_settings: {
- playback_policy: [
- "public"
- ]
- },
- generated_subtitles: [
- {
- name: "English CC (auto)",
- passthrough: "English closed captions (auto-generated)",
- language_code: "en-US",
- transcription_vocabulary_ids: []
- }
- ],
- simulcast_targets : [
- {
- url : "rtmps://or.pscp.tv:443/x",
- stream_key : process.env.TWITTER_STREAM_KEY,
- passthrough : "SeattleJS Conf 2023 Livestream on Twitter"
- },
- {
- url : "rtmp://live.twitch.tv/app/",
- stream_key : process.env.TWITCH_STREAM_KEY,
- passthrough : "SeattleJS Conf 2023 Livestream on Twitch"
- },
- {
- url : "rtmp://a.rtmp.youtube.com/live2",
- stream_key : process.env.YOUTUBE_STREAM_KEY,
- passthrough : "SeattleJS Conf 2023 Livestream on YouTube"
- }
- ]
- }
-
- // call MUX API
- let response = await fetch(`https://api.mux.com/video/v1/live-streams`, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Authorization': 'Basic ' + Buffer.from(`${ process.env.MUX_TOKEN_ID }:${ process.env.MUX_TOKEN_SECRET }`, 'binary').toString('base64')
- },
- body: JSON.stringify(payload),
- })
- let result = await response.json()
- console.log("Mux Stream Key: ", result.data.stream_key)
- let playbackId = result.data.playback_ids[0].id
- console.log("Mux playbackId: ", playbackId)
- await updatePlaybackId(playbackId)
-}
-
-createLivestream()
diff --git a/src/app.js b/src/app.js
deleted file mode 100644
index c4c0835..0000000
--- a/src/app.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import { createClient } from '@liveblocks/client'
-
-function generateRandomId() {
- return (
- Math.random().toString(36).substring(2, 15) +
- Math.random().toString(36).substring(2, 15)
- )
-}
-
-function removeStaleReactions() {
- window.reactions.remoteReactions = window.reactions.remoteReactions.filter(
- reaction => {
- const delta = (new Date().getTime() - reaction.timestamp) / 1000
-
- return delta < 2 + 2
- }
- )
-}
-
-const generateRandomCurveForReaction = () => {
- const randomX1 = `100%`
- const randomY1 = `100%`
- const randomX2 = `${Math.random() * 5}%`
- const randomY2 = `${Math.random() * 50 + 50}%`
-
- return `cubic-bezier(${randomX1}, ${randomY1}, ${randomX2}, ${randomY2})`
-}
-
-const getStartingAngleForReaction = () => {
- // Decide on whether the reaction is facing left or right.
- const direction = Math.random() < 0.5 ? 1 : -1
- // Decide the starting angle of the reaction.
- const startingAngle = Math.floor(Math.random() * 90)
-
- return direction * startingAngle
-}
-
-const client = createClient({
- publicApiKey:
- 'pk_prod_nQme4lxwwAyBuCvk2CQP0Tve9kBh1KxeN_FUdQQqrc24qH9qYA2anmqOToNCpFyA'
-})
-
-function run() {
- const room = client.enter('javascript-todo-app', {
- initialPresence: {}
- })
-
- window.reactions = {
- react: undefined,
- remoteReactions: [],
- getStartingAngleForReaction,
- generateRandomCurveForReaction
- }
-
- window.reactions.react = id => {
- let emoji = ''
-
- switch (id) {
- case 'heart':
- emoji = '❤️'
- break
-
- case 'fire':
- emoji = '🔥'
- break
- case 'octopus':
- emoji = '🐙'
- break
- case 'rocket':
- emoji = '🚀'
- break
- }
-
- if (emoji !== '')
- room.broadcastEvent({ type: 'reaction', emoji, emojiId: id })
- }
-
- room.subscribe('event', ({ event }) => {
- removeStaleReactions()
- if (event.type === 'reaction') {
- window.reactions.remoteReactions.push({
- id: generateRandomId(),
- emojiId: event.emojiId,
- type: event.emoji,
- shown: false,
- timestamp: new Date().getTime(),
- curve: generateRandomCurveForReaction(),
- startingAngle: getStartingAngleForReaction()
- })
- }
- })
-}
-
-run()
diff --git a/src/components/Event.astro b/src/components/Event.astro
new file mode 100644
index 0000000..cb97124
--- /dev/null
+++ b/src/components/Event.astro
@@ -0,0 +1,44 @@
+---
+import { toHTML } from '@/utils/markdown'
+import Sponsor from '@/components/Sponsor.astro'
+import TalkCard from '@/components/TalkCard.astro'
+import { inflateEvent } from '@/utils/data'
+import type { SJSEvent } from '@/data/types'
+
+const { event: baseEvent } = Astro.props as { event: SJSEvent }
+const event = inflateEvent(baseEvent)
+---
+
+{event.title}
+{event.description &&
}
+{event.sponsors.length > 0 && Thanks to our Sponsors ❤️ }
+{event.sponsors.map(sponsor => )}
+
+
+
+ {
+ event.talks.length === 0 ? (
+
+ There are no talks at the moment, maybe propose one
+ ?
+
+ ) : (
+ event.talks.map(t =>
)
+ )
+ }
+
+
+
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
new file mode 100644
index 0000000..3819c80
--- /dev/null
+++ b/src/components/Footer.astro
@@ -0,0 +1,38 @@
+
+
+
diff --git a/src/components/Header.astro b/src/components/Header.astro
new file mode 100644
index 0000000..9309f42
--- /dev/null
+++ b/src/components/Header.astro
@@ -0,0 +1,171 @@
+---
+import { Image } from 'astro:assets'
+import logoSrc from '@/images/logo.png'
+---
+
+
+
+
+
+
diff --git a/src/components/Organizers.astro b/src/components/Organizers.astro
new file mode 100644
index 0000000..d5d2a78
--- /dev/null
+++ b/src/components/Organizers.astro
@@ -0,0 +1,74 @@
+---
+import { Image } from 'astro:assets'
+import type { Links } from '@/data/types'
+import SocialLinks from './SocialLinks.astro'
+import type { ImageMetadata } from 'astro'
+import { findImage } from '@/utils/image'
+
+interface Props {
+ organizers: Organizer[]
+}
+
+interface Organizer {
+ id: string
+ full_name: string
+ role?: string
+ links?: Links
+ photo?: string
+}
+
+const organizers = Astro.props.organizers
+const imageGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/organizers/*.{jpeg,jpg,png,gif,webp,svg}',
+ { eager: true },
+)
+---
+
+
+ {
+ organizers.map(o => {
+ const imgData = o.photo && findImage(imageGlob, o.photo, true)
+ return (
+
+ {imgData && (
+
+
+
+ )}
+
+
{o.full_name}
+ {o.role && (
+ <>
+ {o.role}
+ >
+ )}
+ {o.links &&
}
+
+
+ )
+ })
+ }
+
+
+
diff --git a/src/components/PageContainer.astro b/src/components/PageContainer.astro
new file mode 100644
index 0000000..63f9b94
--- /dev/null
+++ b/src/components/PageContainer.astro
@@ -0,0 +1,37 @@
+---
+import Footer from './Footer.astro'
+import Header from './Header.astro'
+
+export interface Props {
+ pageTitle?: string
+}
+
+const { pageTitle } = Astro.props
+---
+
+
+
+
+
+
+ {
+ pageTitle && (
+
+
{pageTitle}
+
+ )
+ }
+
+
+
+
diff --git a/src/components/SocialLinks.astro b/src/components/SocialLinks.astro
new file mode 100644
index 0000000..a51a769
--- /dev/null
+++ b/src/components/SocialLinks.astro
@@ -0,0 +1,69 @@
+---
+interface SocialLinksProps {
+ linkedin?: string
+ twitter?: string
+ url?: string
+ github?: string
+}
+
+interface Props {
+ links: SocialLinksProps
+}
+
+const links = Astro.props.links
+
+const linkedin = links.linkedin
+const twitter = links.twitter
+const url = links.url
+const github = links.github
+---
+
+
+
diff --git a/src/components/Speaker.astro b/src/components/Speaker.astro
new file mode 100644
index 0000000..bed44e5
--- /dev/null
+++ b/src/components/Speaker.astro
@@ -0,0 +1,87 @@
+---
+import { Image } from 'astro:assets'
+import { importImage } from '@/utils/image'
+import SocialLinks from './SocialLinks.astro'
+
+let {
+ name,
+ company,
+ twitter,
+ photo: photoFile,
+ pronouns,
+ location,
+ url,
+ linkedin,
+} = Astro.props.speaker
+let links = { twitter, url, linkedin }
+const photo = await importImage(
+ import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+ ),
+ photoFile,
+)
+---
+
+
+About {name}
+
+
+
+ {
+ pronouns && (
+ <>
+
Pronouns
+
{pronouns}
+ >
+ )
+ }
+ {
+ location && (
+ <>
+
Location
+
{location}
+ >
+ )
+ }
+ {
+ company && (
+ <>
+
Company
+
{company}
+ >
+ )
+ }
+ {
+ (twitter || url || linkedin) && (
+ <>
+
Links
+
+ >
+ )
+ }
+
+
diff --git a/src/components/Sponsor.astro b/src/components/Sponsor.astro
new file mode 100644
index 0000000..464149c
--- /dev/null
+++ b/src/components/Sponsor.astro
@@ -0,0 +1,44 @@
+---
+import { Image } from 'astro:assets'
+import type { Sponsor } from '@/data/types'
+import { importImage } from '@/utils/image'
+
+const props = Astro.props as { sponsor?: Sponsor } & Partial
+
+let sponsor = {
+ ...(props.sponsor ?? {}),
+ ...props,
+} as Sponsor
+
+const { tier, name, url, image } = sponsor
+
+const imageMetadata = await importImage(
+ import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/sponsors/*.{jpeg,jpg,png,gif,webp,svg}',
+ ),
+ image,
+)
+---
+
+
+
+
diff --git a/src/components/TalkCard.astro b/src/components/TalkCard.astro
new file mode 100644
index 0000000..22fce76
--- /dev/null
+++ b/src/components/TalkCard.astro
@@ -0,0 +1,104 @@
+---
+import { Image } from 'astro:assets'
+import speakers from '@/data/speakers.json'
+import type { MeetupTalk, ConfTalk } from '@/data/types'
+import { importImage } from '@/utils/image'
+
+interface Props {
+ talk: MeetupTalk | ConfTalk
+ url?: string
+}
+
+const { talk, url } = Astro.props
+
+const { id, title, type } = talk
+
+const speaker =
+ 'speaker' in talk
+ ? talk.speaker
+ : speakers.find(s => s.id === talk.speaker_id)
+
+if (!speaker) {
+ throw new Error(`Speaker not found for talk ${talk.id}`)
+}
+
+const location = 'location' in speaker ? speaker.location : ''
+const { name, company, photo } = speaker
+const speakerPhoto = await importImage(
+ import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+ ),
+ photo,
+)
+---
+
+
+
+
diff --git a/src/components/conf/ConfSocialCard.astro b/src/components/conf/ConfSocialCard.astro
new file mode 100644
index 0000000..c9ebe6c
--- /dev/null
+++ b/src/components/conf/ConfSocialCard.astro
@@ -0,0 +1,33 @@
+---
+import { Image } from 'astro:assets'
+
+interface Props {
+ name: string
+ title: string
+ photo: ImageMetadata
+}
+
+const { name, photo, title } = Astro.props
+---
+
+
+
+
+
+
+ {name}
+
+
+
+ {title}
+
+
+
diff --git a/src/components/conf/LiveReactions.astro b/src/components/conf/LiveReactions.astro
new file mode 100644
index 0000000..bf10d2f
--- /dev/null
+++ b/src/components/conf/LiveReactions.astro
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+ ❤️
+
+
+
+ 🔥
+
+
+
+ 🐙
+
+
+
+ 🚀
+
+
+
diff --git a/src/components/conf/ShowItem.astro b/src/components/conf/ShowItem.astro
new file mode 100644
index 0000000..86f9760
--- /dev/null
+++ b/src/components/conf/ShowItem.astro
@@ -0,0 +1,45 @@
+---
+export interface Props {
+ when: string
+ title?: string
+ children?: any
+}
+
+const { when, title } = Astro.props
+---
+
+
+
diff --git a/src/components/conf/SpeakerShowItem.astro b/src/components/conf/SpeakerShowItem.astro
new file mode 100644
index 0000000..95fb66c
--- /dev/null
+++ b/src/components/conf/SpeakerShowItem.astro
@@ -0,0 +1,26 @@
+---
+import ShowItem from './ShowItem.astro'
+import confData from '@/data/conf-2023.json'
+
+export interface Props {
+ when: string
+ speakerId: string
+}
+
+const { when, speakerId } = Astro.props
+const talk = confData.talks.find(t => t.speaker.id === speakerId)
+if (!talk) {
+ throw new Error(`Could not find talk with speaker id ${speakerId}`)
+}
+---
+
+
+
+
+ {talk.speaker.name}
+
diff --git a/app/data/conf-2023.json b/src/data/conf-2023.json
similarity index 75%
rename from app/data/conf-2023.json
rename to src/data/conf-2023.json
index 3047ec7..bbef985 100644
--- a/app/data/conf-2023.json
+++ b/src/data/conf-2023.json
@@ -208,81 +208,86 @@
],
"workshops": [
{
- "id": "managing-data-in-a-react-application-aug-7",
- "title": "Managing Data in a React Application (Aug 7)",
- "abstract": "Fast user experiences are a requirement, and the developer tools for managing data handling have never been better! In this hands-on workshop, Eve Porcello will take a look at some of the preeminent patterns for building amazing user experiences with React. She'll also explore the latest features of React Server Components and how they can be leveraged with modern frameworks.\n\nTopics include: Data Loading Overview and Historical Tour, Understanding Streams, Suspense, React Server Components , GraphQL (Relay Fragments and Apollo Client), Exploring Next.js, Remix, and other frameworks",
- "short": "In this hands-on workshop, Eve Porcello will take a look at some of the preeminent patterns for building amazing user experiences with React. She'll also explore the latest features of React Server Components and how they can be leveraged with modern frameworks",
- "topics": ["react.js", "next.js", "remix", "react server components"],
- "speaker": {
- "id": "eve-porcello",
- "name": "Eve Porcello",
- "twitter": "EvePorcello",
- "company": "Moon Highway",
- "photo": "eve-porcello.jpg",
- "pronouns": "she/her",
- "location": "Bend, OR"
- }
- },
- {
- "id": "introduction-to-typescript-aug-9",
- "title": "Introduction to TypeScript (Aug 9)",
- "abstract": "Join Josh Goldberg in understanding the foundations of TypeScript! He'll cover how its type system works, how it lets you model user code, and -best of all- the benefits it can give you as a developer. And he'll show some great IDE tips & tricks enabled by TypeScript. ⚡",
- "topics": ["typescript"],
- "speaker": {
- "id": "josh-goldberg",
- "name": "Josh Goldberg",
- "twitter": "JoshuaKGoldberg",
- "company": "typescript-eslint",
- "photo": "josh-goldberg.jpg",
- "location": "Philadelphia, PA"
- }
- },
- {
- "id": "building-ai-apps-aug-10",
- "title": "Building AI Apps (Aug 10)",
- "short": "Join Brook Riggio In this hands-on workshop on building AI app! Learn about how to integrate generative AI capabilities into new or existing projects, within your own UI, fully utilizing your own domain knowledge. Whether you want to launch your own AI-powered product, or incorporate cutting-edge functionality into your existing offerings, this workshop will give you the practical details and a vision of what's even possible to inspire your next generation of applications.",
- "abstract": "The power of Large Language Models (LLMs) is reshaping what our apps are capable of, 🤖 and how we build them. Get hands-on experience in this workshop, where you will build 2 distinct apps that leverage AI's strengths... and we'll see how to use AI tools to help us code more effectively!\n\nWe will leverage open source and best-of-breed options to:\n\n- Create an interactive customer service chat agent for your website, equipped to respond with your deep domain knowledge to boost conversions.\n- Deploy open models to AWS, for even more control over the data flow, and system prompts. 🌩\n\nWhether you're looking to launch 🚀 a new AI-driven product or elevate your current offerings, this workshop equips you with both practical experience and a vision for the future to inspire your next generation of applications. 🏗",
- "topics": ["AI"],
- "speaker": {
- "id": "brook-riggio",
- "name": "Brook Riggio",
- "linkedin": "brookr",
- "company": "Code Fellows",
- "photo": "brook-riggio.jpg",
- "location": "Seattle, WA"
- }
+ "id": "managing-data-in-a-react-application-aug-7",
+ "title": "Managing Data in a React Application (Aug 7)",
+ "abstract": "Fast user experiences are a requirement, and the developer tools for managing data handling have never been better! In this hands-on workshop, Eve Porcello will take a look at some of the preeminent patterns for building amazing user experiences with React. She'll also explore the latest features of React Server Components and how they can be leveraged with modern frameworks.\n\nTopics include: Data Loading Overview and Historical Tour, Understanding Streams, Suspense, React Server Components , GraphQL (Relay Fragments and Apollo Client), Exploring Next.js, Remix, and other frameworks",
+ "short": "In this hands-on workshop, Eve Porcello will take a look at some of the preeminent patterns for building amazing user experiences with React. She'll also explore the latest features of React Server Components and how they can be leveraged with modern frameworks",
+ "topics": ["react.js", "next.js", "remix", "react server components"],
+ "speaker": {
+ "id": "eve-porcello",
+ "name": "Eve Porcello",
+ "twitter": "EvePorcello",
+ "company": "Moon Highway",
+ "photo": "eve-porcello.jpg",
+ "pronouns": "she/her",
+ "location": "Bend, OR"
+ }
+ },
+ {
+ "id": "introduction-to-typescript-aug-9",
+ "title": "Introduction to TypeScript (Aug 9)",
+ "abstract": "Join Josh Goldberg in understanding the foundations of TypeScript! He'll cover how its type system works, how it lets you model user code, and -best of all- the benefits it can give you as a developer. And he'll show some great IDE tips & tricks enabled by TypeScript. ⚡",
+ "topics": ["typescript"],
+ "speaker": {
+ "id": "josh-goldberg",
+ "name": "Josh Goldberg",
+ "twitter": "JoshuaKGoldberg",
+ "company": "typescript-eslint",
+ "photo": "josh-goldberg.jpg",
+ "location": "Philadelphia, PA"
}
+ },
+ {
+ "id": "building-ai-apps-aug-10",
+ "title": "Building AI Apps (Aug 10)",
+ "short": "Join Brook Riggio In this hands-on workshop on building AI app! Learn about how to integrate generative AI capabilities into new or existing projects, within your own UI, fully utilizing your own domain knowledge. Whether you want to launch your own AI-powered product, or incorporate cutting-edge functionality into your existing offerings, this workshop will give you the practical details and a vision of what's even possible to inspire your next generation of applications.",
+ "abstract": "The power of Large Language Models (LLMs) is reshaping what our apps are capable of, 🤖 and how we build them. Get hands-on experience in this workshop, where you will build 2 distinct apps that leverage AI's strengths... and we'll see how to use AI tools to help us code more effectively!\n\nWe will leverage open source and best-of-breed options to:\n\n- Create an interactive customer service chat agent for your website, equipped to respond with your deep domain knowledge to boost conversions.\n- Deploy open models to AWS, for even more control over the data flow, and system prompts. 🌩\n\nWhether you're looking to launch 🚀 a new AI-driven product or elevate your current offerings, this workshop equips you with both practical experience and a vision for the future to inspire your next generation of applications. 🏗",
+ "topics": ["AI"],
+ "speaker": {
+ "id": "brook-riggio",
+ "name": "Brook Riggio",
+ "linkedin": "brookr",
+ "company": "Code Fellows",
+ "photo": "brook-riggio.jpg",
+ "location": "Seattle, WA"
+ }
+ }
],
"organizers": [
{
"id": "carter-rabasa",
"full_name": "Carter Rabasa",
"twitter": "crtr0",
- "role": "Lead Organizer"
+ "role": "Lead Organizer",
+ "photo": "carter-rabasa.jpg"
},
{
"id": "carrie-rabasa",
"full_name": "Carrie Rabasa",
"twitter": "carrie_k",
- "role": "Lead Designer"
+ "role": "Lead Designer",
+ "photo": "carrie-rabasa.jpg"
},
{
"id": "andre-wiggins",
"full_name": "Andre Wiggins",
"twitter": "andre_wiggins",
- "role": "Co-Organizer"
+ "role": "Co-Organizer",
+ "photo": "andre-wiggins.jpg"
},
{
"id": "rachel-lee-nabors",
"full_name": "Rachel Lee Nabors",
"twitter": "rachelnabors",
- "role": "Emcee"
+ "role": "Emcee",
+ "photo": "rachel-lee-nabors.jpg"
},
{
"id": "jim-liu",
"full_name": "Jim Liu",
"twitter": "0xitsjim",
- "role": "Speaker Wrangler"
+ "role": "Speaker Wrangler",
+ "photo": "jim-liu.jpg"
}
],
"sponsors": []
diff --git a/src/data/events.json b/src/data/events.json
new file mode 100644
index 0000000..0d89474
--- /dev/null
+++ b/src/data/events.json
@@ -0,0 +1,280 @@
+[
+ {
+ "id": "may-2022",
+ "link": "https://ti.to/event-loop/seattlejs-may-2022",
+ "title": "SeattleJS May 2022",
+ "date": "2022-05-11",
+ "sponsors": ["collective-seattle"],
+ "talks": ["amber-hoak-may-2022"]
+ },
+ {
+ "id": "june-2022",
+ "link": "https://ti.to/event-loop/seattlejs-june-2022",
+ "title": "SeattleJS June 2022",
+ "date": "2022-06-08",
+ "sponsors": ["collective-seattle"],
+ "talks": ["jamund-ferguson-june-2022"]
+ },
+ {
+ "id": "july-2022",
+ "link": "https://ti.to/event-loop/seattlejs-july-2022",
+ "title": "SeattleJS July 2022",
+ "date": "2022-07-13",
+ "sponsors": ["collective-seattle"],
+ "talks": []
+ },
+ {
+ "id": "august-2022",
+ "link": "https://ti.to/event-loop/seattlejs-august-2022",
+ "title": "SeattleJS August 2022",
+ "date": "2022-08-10",
+ "sponsors": ["collective-seattle"],
+ "talks": []
+ },
+ {
+ "id": "september-2022",
+ "link": "https://ti.to/event-loop/seattlejs-september-2022",
+ "title": "SeattleJS September 2022",
+ "date": "2022-09-14",
+ "sponsors": ["collective-seattle"],
+ "talks": []
+ },
+ {
+ "id": "october-2022",
+ "link": "https://ti.to/event-loop/seattlejs-october-2022",
+ "title": "SeattleJS October 2022",
+ "date": "2022-10-12",
+ "sponsors": ["svb"],
+ "talks": ["rachel-lee-nabors-october-2022"]
+ },
+ {
+ "id": "november-2022",
+ "link": "https://ti.to/event-loop/seattlejs-november-2022",
+ "title": "SeattleJS November 2022",
+ "date": "2022-11-09",
+ "sponsors": ["collective-seattle"],
+ "talks": ["matthew-bauer-november-2022", "brian-gershon-november-2022"]
+ },
+ {
+ "id": "december-2022",
+ "link": "https://ti.to/event-loop/seattlejs-december-2022",
+ "title": "SeattleJS December 2022 - Holiday Party Edition",
+ "date": "2022-12-14",
+ "sponsors": ["collective-seattle"],
+ "talks": []
+ },
+ {
+ "id": "january-2023",
+ "link": "https://ti.to/event-loop/seattlejs-january-2023",
+ "title": "SeattleJS January 2023",
+ "date": "2023-01-11",
+ "sponsors": ["aws-skills-center-seattle"],
+ "talks": [
+ "calvin-kipperman-january-2023",
+ "josh-scotland-january-2023",
+ "tim-obrien-january-2023"
+ ],
+ "description": "Join us and celebrate a great start to 2023 with your fellow web devs!\n\nTHANK YOU to the folks at AWS Skills Center Seattle for sponsoring this month! ❤️\n\nTickets are $5 and go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "february-2023",
+ "link": "https://ti.to/event-loop/seattlejs-february-2023",
+ "title": "SeattleJS February 2023",
+ "date": "2023-02-08",
+ "sponsors": ["collective-seattle", "remix"],
+ "talks": [
+ "brian-tran-february-2023",
+ "lupe-canaviri-maydana-februrary-2023",
+ "jacob-ebey-february-2023"
+ ],
+ "description": "Join us and celebrate a great start to 2023 with your fellow web devs!\n\nTickets are $5 and go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "march-2023",
+ "link": "https://ti.to/event-loop/seattlejs-march-2023",
+ "title": "SeattleJS March 2023",
+ "date": "2023-03-08",
+ "sponsors": ["appwrite"],
+ "talks": [
+ "aaroh-mankad-march-2023",
+ "mason-lynass-march-2023",
+ "chris-griffing-march-2023"
+ ],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "april-2023",
+ "link": "https://ti.to/event-loop/seattlejs-april-2023",
+ "title": "SeattleJS April 2023",
+ "date": "2023-04-12",
+ "sponsors": ["amplication"],
+ "talks": [
+ "michael-solati-april-2023",
+ "philip-swan-april-2023",
+ "catherine-johnson-april-2023"
+ ],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "may-2023",
+ "link": "https://ti.to/event-loop/seattlejs-may-2023",
+ "title": "SeattleJS May 2023",
+ "date": "2023-05-10",
+ "sponsors": [],
+ "talks": ["spenser-solys-may-2023", "tiger-oakes-may-2023"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "june-2023",
+ "link": "https://ti.to/event-loop/seattlejs-june-2023",
+ "title": "SeattleJS June 2023",
+ "date": "2023-06-14",
+ "sponsors": ["courier"],
+ "talks": [
+ "cristina-rodriguez-june-2023",
+ "aiden-bai-june-2023",
+ "dm-liao-june-2023"
+ ],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "july-2023",
+ "link": "https://ti.to/event-loop/seattlejs-july-2023",
+ "title": "SeattleJS July 2023",
+ "date": "2023-07-12",
+ "sponsors": ["twilio"],
+ "talks": [
+ "chris-griffing-july-2023",
+ "michael-fitzgerald-july-2023",
+ "geoff-rich-july-2023"
+ ],
+ "description": ""
+ },
+ {
+ "id": "september-2023",
+ "link": "https://ti.to/event-loop/seattlejs-september-2023",
+ "title": "SeattleJS September 2023",
+ "date": "2023-09-13",
+ "sponsors": ["runme.dev"],
+ "talks": [
+ "jan-miksovsky-september-2023",
+ "peli-de-halleux-september-2023",
+ "ben-lower-september-2023"
+ ],
+ "description": ""
+ },
+ {
+ "id": "october-2023",
+ "link": "https://ti.to/event-loop/seattlejs-october-2023",
+ "title": "SeattleJS October 2023",
+ "date": "2023-10-11",
+ "sponsors": ["courier"],
+ "talks": ["caleb-diehl-october-2023", "alan-gonzalez-october-2023"],
+ "description": "Thanks to [Gearhouse](https://joingearhouse.com) for hosting us this month. We will be at their Capitol Hill location for October.\n\n 📍 [800 E Thomas St, Seattle, WA 98102](https://maps.app.goo.gl/LRVEp4yudBrHHRue7)\n\n Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "november-2023",
+ "link": "https://ti.to/event-loop/seattlejs-november-2023",
+ "title": "SeattleJS November 2023",
+ "date": "2023-11-08",
+ "sponsors": ["polaris"],
+ "talks": ["mike-ryan-november-2023", "doug-wade-november-2023"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "holiday-party-2023",
+ "link": "https://ti.to/event-loop/seattlejs-holiday-party-2023",
+ "title": "SeattleJS Holiday Party 2023",
+ "date": "2023-12-13",
+ "sponsors": ["seekout"],
+ "talks": [],
+ "description": "Join us for our annual SeattleJS Holiday Party! Come hang out with your fellow web developers and celebrate the holidays in style at The Collective. Consider bringing a plus one, the more the merrier!\n Tickets are $5 and go up to $10 the day of, so don't delay!"
+ },
+ {
+ "id": "january-2024",
+ "link": "https://ti.to/event-loop/seattlejs-january-2024",
+ "title": "SeattleJS January 2024",
+ "date": "2024-01-10",
+ "sponsors": [],
+ "talks": [],
+ "description": "Join your fellow web devs for an evening of networking and fun!\n\n📅 Wednesday, January 10\n\n🕠 5:30pm - 8pm\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "february-2024",
+ "link": "https://ti.to/event-loop/seattlejs-february-2024",
+ "title": "SeattleJS February 2024",
+ "date": "2024-02-14",
+ "sponsors": ["datastax"],
+ "talks": ["dm-liao-february-2024", "fx-wood-february-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "march-2024",
+ "link": "https://ti.to/event-loop/seattlejs-march-2024",
+ "title": "SeattleJS March 2024",
+ "date": "2024-03-13",
+ "sponsors": ["fireproof"],
+ "talks": ["shruti-kapoor-march-2024", "eric-jensen-march-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "april-2024",
+ "link": "https://ti.to/event-loop/seattlejs-april-2024",
+ "title": "SeattleJS April 2024",
+ "date": "2024-04-10",
+ "sponsors": [],
+ "talks": ["herrington-darkholme-april-2024", "john-pham-april-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below. Drink tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "may-2024",
+ "link": "https://ti.to/event-loop/seattlejs-may-2024",
+ "title": "SeattleJS May 2024",
+ "date": "2024-05-08",
+ "sponsors": ["sentry"],
+ "talks": ["allan-deutsch-may-2024", "sarah-guthals-phd-may-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below. Drink tickets are only $5 but go up to $10 the day of, so don't delay!\n\n📍 [The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109](https://maps.app.goo.gl/iFCSeqBsv7gFKEQ78)"
+ },
+ {
+ "id": "july-2024",
+ "link": "https://lu.ma/0ouxs9r2",
+ "title": "SeattleJS July 2024",
+ "date": "2024-07-10",
+ "sponsors": [],
+ "talks": ["chris-griffing-july-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this time, NOT our previous location!\n\n"
+ },
+ {
+ "id": "august-2024",
+ "link": "https://lu.ma/510fwjo4",
+ "title": "SeattleJS August 2024",
+ "date": "2024-08-14",
+ "sponsors": [],
+ "talks": ["ben-van-citters-august-2024", "allan-deutsch-august-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this month!\n\n"
+ },
+ {
+ "id": "september-2024",
+ "title": "SeattleJS September 2024",
+ "date": "2024-09-11",
+ "sponsors": [],
+ "talks": ["nicholas-patti-september-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Startup Hall on UW campus this month!\n\n"
+ },
+ {
+ "id": "october-2024",
+ "title": "SeattleJS October 2024",
+ "date": "2024-10-09",
+ "sponsors": [],
+ "talks": ["erik-marks-october-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Silicon Valley Bank this month!\n\n"
+ },
+ {
+ "id": "november-2024",
+ "title": "SeattleJS November 2024",
+ "date": "2024-11-13",
+ "sponsors": [],
+ "talks": ["cat-johnson-november-2024", "stacy-davis1-november-2024"],
+ "description": "Join your fellow web devs for an evening of talks, networking and fun! Register ahead of time at the link below.\n\nNOTE: We are at Startup Hall on UW campus this month!\n\n"
+ }
+]
diff --git a/app/data/organizers.json b/src/data/organizers.json
similarity index 74%
rename from app/data/organizers.json
rename to src/data/organizers.json
index bd1d538..be1bcf8 100644
--- a/app/data/organizers.json
+++ b/src/data/organizers.json
@@ -4,34 +4,39 @@
"full_name": "Andre Wiggins",
"links": {
"twitter": "andre_wiggins"
- }
+ },
+ "photo": "andre-wiggins.jpg"
},
{
"id": "carter-rabasa",
"full_name": "Carter Rabasa",
"links": {
"twitter": "crtr0"
- }
+ },
+ "photo": "carter-rabasa.jpg"
},
{
"id": "justin-oliver-lee",
"full_name": "Justin Oliver Lee",
"links": {
"twitter": "JustinOliverLee"
- }
+ },
+ "photo": "justin-oliver-lee.jpg"
},
{
"id": "fx-wood",
"full_name": "FX Wood",
"links": {
"github": "fx-wood"
- }
+ },
+ "photo": "fx-wood.jpg"
},
{
"id": "lucas-steinmacher",
"full_name": "Lucas Steinmacher",
"links": {
"twitter": "Panziewanz"
- }
+ },
+ "photo": "lucas-steinmacher.jpg"
}
]
diff --git a/src/data/speakers.json b/src/data/speakers.json
new file mode 100644
index 0000000..fe847d4
--- /dev/null
+++ b/src/data/speakers.json
@@ -0,0 +1,351 @@
+[
+ {
+ "id": "amber-hoak",
+ "name": "Amber Hoak",
+ "company": "Microsoft Research",
+ "twitter": "amber_hoak",
+ "photo": "amber-hoak.jpg"
+ },
+ {
+ "id": "jamund-ferguson",
+ "name": "Jamund Ferguson",
+ "company": "PayPal",
+ "twitter": "xjamundx",
+ "photo": "jamund-ferguson.jpg"
+ },
+ {
+ "id": "rachel-lee-nabors",
+ "name": "Rachel Lee Nabors",
+ "company": "AWS Amplify",
+ "twitter": "rachelnabors",
+ "photo": "rachel-lee-nabors.jpg"
+ },
+ {
+ "id": "matthew-bauer",
+ "name": "Matthew Bauer",
+ "company": "WebPinata",
+ "twitter": "LotusBladeStorm",
+ "photo": "matthew-bauer.jpg"
+ },
+ {
+ "id": "brian-gershon",
+ "name": "Brian Gershon",
+ "company": "Freelance",
+ "twitter": "brianfive",
+ "photo": "brian-gershon.jpg"
+ },
+ {
+ "id": "calvin-kipperman",
+ "name": "Calvin Kipperman",
+ "company": "Lyft",
+ "twitter": "emnudge",
+ "photo": "calvin-kipperman.jpg"
+ },
+ {
+ "id": "tim-obrien",
+ "name": "Tim O\"Brien",
+ "company": "Wagner Custom Skis",
+ "twitter": "tobrien",
+ "photo": "tim-obrien.jpg"
+ },
+ {
+ "id": "josh-scotland",
+ "name": "Josh Scotland",
+ "company": "Startup",
+ "photo": "josh-scotland.jpg"
+ },
+ {
+ "id": "brian-tran",
+ "name": "Brian Tran",
+ "company": "REMAX",
+ "photo": "brian-tran.jpg",
+ "twitter": "_briantran_"
+ },
+ {
+ "id": "lupe-canaviri-maydana",
+ "name": "Lupe Canaviri Maydana",
+ "company": "Microsoft",
+ "photo": "lupe-canaviri-maydana.png",
+ "twitter": "luucamay_"
+ },
+ {
+ "id": "jacob-ebey",
+ "name": "Jacob Ebey",
+ "company": "Remix / Shopify",
+ "photo": "jacob-ebey.jpg",
+ "twitter": "ebey_jacob"
+ },
+ {
+ "id": "aaroh-mankad",
+ "name": "Aaroh Mankad",
+ "company": "Plaid",
+ "photo": "aaroh-mankad.jpg",
+ "twitter": "aarohmankad"
+ },
+ {
+ "id": "chris-griffing",
+ "name": "Chris Griffing",
+ "company": "GitKraken",
+ "photo": "chris-griffing.jpg",
+ "twitter": "cmgriffing"
+ },
+ {
+ "id": "mason-lynass",
+ "name": "Mason Lynass",
+ "company": "Freelance",
+ "photo": "mason-lynass.jpg"
+ },
+ {
+ "id": "catherine-johnson",
+ "name": "Catherine Johnson",
+ "company": "Microsoft",
+ "photo": "catherine-johnson.jpg",
+ "twitter": ""
+ },
+ {
+ "id": "philip-swan",
+ "name": "Philip Swan",
+ "company": "The Atlantis Project",
+ "photo": "philip-swan.png",
+ "twitter": "tetheredring"
+ },
+ {
+ "id": "michael-solati",
+ "name": "Michael Solati",
+ "company": "Amplication",
+ "photo": "michael-solati.jpg",
+ "twitter": "michaelsolati"
+ },
+ {
+ "id": "spenser-solys",
+ "name": "Spenser Solys",
+ "company": "Project Archer",
+ "photo": "spenser-solys.jpg",
+ "twitter": "scub3d"
+ },
+ {
+ "id": "tiger-oakes",
+ "name": "Tiger Oakes",
+ "company": "Microsoft",
+ "photo": "tiger-oakes.jpg",
+ "twitter": "Not_Woods"
+ },
+ {
+ "id": "dm-liao",
+ "name": "DM Liao",
+ "company": "n/a",
+ "photo": "dm-liao.jpg",
+ "url": "https://amorphic.space",
+ "pronouns": "they/them/theirs"
+ },
+ {
+ "id": "aiden-bai",
+ "name": "Aiden Bai",
+ "company": "Dimension.dev",
+ "photo": "aiden-bai.jpg",
+ "twitter": "aidenybai",
+ "pronouns": "he/him/his",
+ "url": "https://aidenybai.com"
+ },
+ {
+ "id": "cristina-rodriguez",
+ "name": "Cristina Rodriguez",
+ "company": "Techtonica.org",
+ "photo": "cristina-rodriguez.jpg",
+ "twitter": "yosola",
+ "pronouns": "she/her/ella",
+ "url": "https://www.linkedin.com/in/crissrodriguez/"
+ },
+ {
+ "id": "geoff-rich",
+ "name": "Geoff Rich",
+ "company": "Ordergroove",
+ "twitter": "geoffrich_",
+ "pronouns": "he/him",
+ "photo": "geoff-rich.jpg"
+ },
+ {
+ "id": "alan-balasundaram",
+ "name": "Alan Balasundaram",
+ "company": "Expert Opinion MD",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "alan-balasundaram.jpg"
+ },
+ {
+ "id": "michael-fitzgerald",
+ "name": "Michael Fitzgerald",
+ "company": "Fresh Consulting",
+ "twitter": "fitzgerald1337",
+ "pronouns": "he/him/his",
+ "photo": "michael-fitzgerald.png"
+ },
+ {
+ "id": "jan-miksovsky",
+ "name": "Jan Miksovsky",
+ "company": "Independent",
+ "mastadon": "https://fosstodon.org/@JanMiksovsky",
+ "pronouns": "he/him",
+ "photo": "jan-miksovsky.jpg"
+ },
+ {
+ "id": "peli-de-halleux",
+ "name": "Peli de Halleux",
+ "company": "Microsoft",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "peli-de-halleux.jpg"
+ },
+ {
+ "id": "ben-lower",
+ "name": "ben lower",
+ "company": "Fixie",
+ "twitter": "benlower",
+ "pronouns": "he/him/his",
+ "photo": "ben-lower.jpg"
+ },
+ {
+ "id": "caleb-diehl",
+ "name": "Caleb Diehl",
+ "company": "The Associated Press",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "caleb-diehl.jpg"
+ },
+ {
+ "id": "alan-gonzalez",
+ "name": "Alan Gonzalez",
+ "company": "DevMatch",
+ "twitter": "_alanboy",
+ "pronouns": "he/him",
+ "photo": "alan-gonzalez.jpg"
+ },
+ {
+ "id": "mike-ryan",
+ "name": "Mike Ryan",
+ "company": "Polaris",
+ "twitter": "mikeryandev",
+ "pronouns": "he/him",
+ "photo": "mike-ryan.jpg"
+ },
+ {
+ "id": "doug-wade",
+ "name": "Doug Wade",
+ "company": "Skilljar",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "doug-wade.jpg"
+ },
+ {
+ "id": "fx-wood",
+ "name": "FX Wood",
+ "company": "Looking for Opportunities",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "fx-wood.jpg"
+ },
+ {
+ "id": "shruti-kapoor",
+ "name": "Shruti Kapoor",
+ "company": "Slack",
+ "twitter": "shrutikapoor08",
+ "pronouns": "she/her",
+ "photo": "shruti-kapoor.jpg"
+ },
+ {
+ "id": "j-chris-anderson",
+ "name": "J Chris Anderson",
+ "company": "Fireproof",
+ "twitter": "jchris",
+ "pronouns": "he/him",
+ "photo": "j-chris-anderson.jpg"
+ },
+ {
+ "id": "eric-jensen",
+ "name": "Eric Jensen",
+ "company": "Fireproof ",
+ "twitter": "",
+ "pronouns": "he/him",
+ "photo": "eric-jensen.jpg"
+ },
+ {
+ "id": "herrington-darkholme",
+ "name": "Herrington Darkholme",
+ "company": "Freelance",
+ "twitter": "hd_nvim",
+ "pronouns": "he/him/his",
+ "photo": "herrington-darkholme.jpg"
+ },
+ {
+ "id": "john-pham",
+ "name": "John Pham",
+ "company": "Vercel",
+ "twitter": "johnphamous",
+ "pronouns": "he/him/his",
+ "photo": "john-pham.jpg"
+ },
+ {
+ "id": "allan-deutsch",
+ "name": "Allan Deutsch",
+ "company": "The Startup",
+ "twitter": "allandeutsch",
+ "pronouns": "he/him",
+ "photo": "allan-deutsch.png"
+ },
+ {
+ "id": "sarah-guthals-phd",
+ "name": "Sarah Guthals, PhD",
+ "company": "Sentry",
+ "twitter": "drguthals",
+ "pronouns": "she/her/hers",
+ "photo": "sarah-guthals-phd.png"
+ },
+ {
+ "id": "josh-franklin",
+ "name": "Josh Franklin",
+ "company": "N/A",
+ "twitter": "joshfranklin26",
+ "pronouns": "he/him/his",
+ "photo": "josh-franklin.jpg"
+ },
+ {
+ "id": "ben-van-citters",
+ "name": "Ben Van Citters",
+ "company": "Algorithms & Beauty",
+ "twitter": "",
+ "pronouns": "He/him",
+ "photo": "ben-van-citters.jpg"
+ },
+ {
+ "id": "nicholas-patti",
+ "name": "Nicholas Patti",
+ "company": "Freelance",
+ "twitter": "nickspatties",
+ "pronouns": "he/him/his",
+ "photo": "nicholas-patti.jpg"
+ },
+ {
+ "id": "stacy-davis1",
+ "name": "Stacy Davis",
+ "company": "Species360",
+ "twitter": "",
+ "pronouns": "she/her/hers",
+ "photo": "stacy-davis1.jpg"
+ },
+ {
+ "id": "erik-marks",
+ "name": "Erik Marks",
+ "company": "Consensys / MetaMask",
+ "twitter": "rekmarks",
+ "pronouns": "he/they",
+ "photo": "erik-marks.jpg"
+ },
+ {
+ "id": "cat-johnson",
+ "name": "Cat Johnson",
+ "company": "Khan Academy",
+ "twitter": "cat_themachines",
+ "pronouns": "she/her",
+ "photo": "cat-johnson.jpg"
+ }
+]
diff --git a/src/data/sponsors.json b/src/data/sponsors.json
new file mode 100644
index 0000000..c8fa879
--- /dev/null
+++ b/src/data/sponsors.json
@@ -0,0 +1,108 @@
+[
+ {
+ "id": "collective-seattle",
+ "url": "https://www.collectiveseattle.com",
+ "image": "collective.webp"
+ },
+ {
+ "id": "svb",
+ "url": "https://www.svb.com/startup-banking",
+ "image": "svb.svg"
+ },
+ {
+ "id": "aws-skills-center-seattle",
+ "url": "https://aws.amazon.com/training/skills-centers/seattle-skills-center/",
+ "image": "aws-skills-center-seattle.png"
+ },
+ {
+ "id": "formidable",
+ "url": "https://formidable.com",
+ "image": "formidable.svg"
+ },
+ {
+ "id": "customer-io",
+ "url": "https://customer.io/",
+ "image": "customer-io.svg"
+ },
+ {
+ "id": "remix",
+ "url": "https://remix.run/",
+ "image": "remix.png"
+ },
+ {
+ "id": "appwrite",
+ "name": "Appwrite",
+ "url": "https://appwrite.io",
+ "image": "appwrite.jpg",
+ "copy": "Appwrite is a secure open-source backend server provides the core APIs required to build web and mobile applications. Appwrite provides authentication, database, storage, functions, and advanced real-time capabilities."
+ },
+ {
+ "id": "amplication",
+ "name": "Amplication",
+ "url": "https://amplication.com",
+ "image": "amplication.png",
+ "copy": "Amplication is an opensource based SaaS backend development solution that empowers professional developers to accelerate the development of Node.js applications. By using Amplication to build repetitive backend services, development teams will yield significant increases in developer productivity, reliability, and consistency of delivering critical applications to production."
+ },
+ {
+ "id": "twilio",
+ "name": "Twilio",
+ "url": "https://www.twilio.com/en-us",
+ "image": "twilio.png",
+ "copy": "Twilio is the customer layer for the internet, powering the most engaging interactions companies build for their customers. We provide simple tools that solve hard problems, delivered as a developer-first cloud platform with global reach and no shenanigans pricing."
+ },
+ {
+ "id": "aws",
+ "name": "AWS",
+ "url": "https://docs.amplify.aws/",
+ "image": "aws.png",
+ "copy": ""
+ },
+ {
+ "id": "courier",
+ "name": "Courier",
+ "url": "https://courier.com?utm_campaign=devrel-meetups&utm_source=meetups&utm_medium=website",
+ "image": "courier.png",
+ "copy": ""
+ },
+ {
+ "id": "runme.dev",
+ "name": "Runme",
+ "url": "https://runme.dev",
+ "image": "runme.png",
+ "copy": ""
+ },
+ {
+ "id": "polaris",
+ "url": "https://getpolaris.ai",
+ "copy": "Polaris is an AI-powered site reliability tool that helps you detect incidents in real-time. Its tiny JavaScript SDK lets you instrument key user workflows to create indicators of reliability and latency. Apply thresholds to your indicators to define performance objectives and be alerted when your app begins to experience degradations.",
+ "image": "polaris.png"
+ },
+ {
+ "id": "seekout",
+ "name": "SeekOut",
+ "url": "https://www.seekout.com/",
+ "copy": "Grow the talent you have.\nFind the talent you need.\nSeekOut empowers great people and companies to grow together—with actionable insights at every step of your talent journey. ",
+ "image": "seekout.png"
+ },
+ {
+ "id": "datastax",
+ "name": "DataStax",
+ "url": "https://www.datastax.com/",
+ "copy": "DataStax is your one-stop shop for building on GenAI.",
+ "image": "datastax.png"
+ },
+ {
+ "id": "fireproof",
+ "name": "Fireproof",
+ "url": "https://fireproof.storage/",
+ "copy": "Fireproof is an [embedded database for collaborative applications](https://use-fireproof.com/). Install it in your front-end app, or use it in any serverless cloud or edge function. Fireproof’s document API includes live updates, flexible queries, binary attachments, encrypted block replication, and multi-user sync. Fireproof enables developers to ship interactive features faster in any deployment environment.\n\nDeploy your app however you like. Install the Fireproof module into your browser or server app code and sync using remixable open-source adapters. Experience live updates across peers so everyone can collaborate together, with any backend. Render dynamic HTML and interact with APIs from the edge. Connect with the community to add support for more backends.",
+ "image": "fireproof.png"
+ },
+ {
+ "id": "sentry",
+ "name": "Sentry",
+ "url": "https://sentry.io/welcome/",
+ "copy": "Sentry is the application monitoring platform for development teams to holistically monitor their code health from the frontend to the backend to see clearer, solve quicker, and learn continuously.",
+ "image": "sentry.png"
+ }
+]
diff --git a/src/data/talks.json b/src/data/talks.json
new file mode 100644
index 0000000..4602c7d
--- /dev/null
+++ b/src/data/talks.json
@@ -0,0 +1,477 @@
+[
+ {
+ "id": "amber-hoak-may-2022",
+ "speaker_id": "amber-hoak",
+ "event_id": "may-2022",
+ "title": "Stumbling through ML in JavaScript: the good, the bad, and the computationally intensive",
+ "abstract": "Does Tensorflow make you tense? Let's unpack how you can get started with ML in the browser, no math required. Learn how to build models on the browser, why we would use client-side ML, and what ML tooling (and lack of tooling) is in the js ecosystem."
+ },
+ {
+ "id": "jamund-ferguson-june-2022",
+ "speaker_id": "jamund-ferguson",
+ "event_id": "june-2022",
+ "title": "🧟 Web Performance Horror Stories🧛",
+ "abstract": "Experience the cringe inducing horror caused by excessively slow web performance. Be shocked to hear about megabytes of CSS going unused, endlessly duplicated polyfills, input fields freezing the main thread for 50ms per keystroke and assorted other terrors. Together we'll dissect these performance poltergeists and vanquish them from our apps forever."
+ },
+ {
+ "id": "rachel-lee-nabors-october-2022",
+ "speaker_id": "rachel-lee-nabors",
+ "event_id": "october-2022",
+ "title": "The Human API",
+ "abstract": "The only thing harder than writing scalable, usable code is teaching others how to wield it. As the sum of human knowledge continues to grow, so too do the challenges of teaching each other what we need to know not only to build toward the future but also to contribute to the tools of its construction. If only it were possible to transfer knowledge from one engineer directly into the minds of other engineers, like a human RAID! Rachel Lee Nabors loves building such mechanisms for knowledge transfer, from video guides to documentation to curricula. In this talk, they will discuss what doesn't work, what has worked on projects like React and React Native, and what can work for any other open source project today. Teaching is hard. But there are solid ways to approach knowledge transfer at scale."
+ },
+ {
+ "id": "matthew-bauer-november-2022",
+ "speaker_id": "matthew-bauer",
+ "event_id": "november-2022",
+ "title": "Two left feet and an earthquake in Vue: Composition API or Options API?",
+ "abstract": "Vue 3 is controversial. There were many people drawn to vue 2 and not all of them are able to find footing inside Vue 3, despite that being the main version pushed forward. With that being said Evan and the team at Vue have decided to include the options API & composition API as both valid approaches to writing vue applications, but what does that mean for the average user or the user at the end of the bell curve?"
+ },
+ {
+ "id": "brian-gershon-november-2022",
+ "speaker_id": "brian-gershon",
+ "event_id": "november-2022",
+ "title": "Tales of a Transition to Tailwind CSS",
+ "abstract": "After some doubts, I gave Tailwind CSS a try and discovered a new love for styling my web applications. I'll discuss some reasons you'll like it, and also introduce component frameworks built on Tailwind."
+ },
+ {
+ "id": "calvin-kipperman-january-2023",
+ "speaker_id": "calvin-kipperman",
+ "event_id": "january-2023",
+ "title": "React Is Holding Me Hostage",
+ "abstract": "A love & horror story - why React isn't a good model for building interactive applications and why I'm still a React developer."
+ },
+ {
+ "id": "tim-obrien-january-2023",
+ "speaker_id": "tim-obrien",
+ "event_id": "january-2023",
+ "title": "Were Your Skis Cut with Javascript?",
+ "type": "lightning",
+ "abstract": "Just a quick snapshot of how you can use React and Express and Javascript to manufacture skis. What are the pros and cons of using Javascript to generate CNC files and what's worked and not worked? Looking to show a quick demo and also looking for people interested in contributing."
+ },
+ {
+ "id": "josh-scotland-january-2023",
+ "speaker_id": "josh-scotland",
+ "event_id": "january-2023",
+ "title": "Supercharge Your Coding With ChatGPT",
+ "type": "lightning",
+ "abstract": "Learn how to use ChatGPT, a powerful AI programming tool, to enhance your coding skills and boost your productivity. In this demo, we'll explore the capabilities and limitations of ChatGPT to see firsthand how it might revolutionize your workflow."
+ },
+ {
+ "id": "brian-tran-february-2023",
+ "speaker_id": "brian-tran",
+ "event_id": "february-2023",
+ "title": "I want my data and I want it now!",
+ "type": "lightning",
+ "abstract": "A quick talk about stream processing using NodeJS and some other use cases including displaying the data in real-time over WebSockets and React."
+ },
+ {
+ "id": "lupe-canaviri-maydana-februrary-2023",
+ "speaker_id": "lupe-canaviri-maydana",
+ "event_id": "february-2023",
+ "title": "Playwright, everyone can write test",
+ "type": "lightning",
+ "abstract": "In 5 mins I will show you how to create your first end to end test with Playwright"
+ },
+ {
+ "id": "jacob-ebey-february-2023",
+ "speaker_id": "jacob-ebey",
+ "event_id": "february-2023",
+ "title": "\"Promises\" over the wire",
+ "abstract": "Learn how Remix's `defer()` feature utilizes native language features, a single HTTP request and a few react tricks to deliver, what I believe will be, the next big trend in \"full stack frameworks\"."
+ },
+ {
+ "id": "aaroh-mankad-march-2023",
+ "speaker_id": "aaroh-mankad",
+ "event_id": "march-2023",
+ "title": "Tinkering with Framer Motion",
+ "type": "lightning",
+ "abstract": "I've been learning how to use Framer Motion recently, and wanted to walk through how it works, what you can use it for, and go through a couple of the examples from the documentation!"
+ },
+ {
+ "id": "mason-lynass-march-2023",
+ "speaker_id": "mason-lynass",
+ "event_id": "march-2023",
+ "title": "useSound - a creative, versatile tool to use audio & sound effects in React",
+ "type": "lightning",
+ "abstract": "useSound is a custom React hook developed by Josh Comeau, designed to creatively implement audio assets in React applications. I'll talk about installation and setup, differences between useSound and HTMLAudioElement, and quickly showcase a simple musical instrument built in React!"
+ },
+ {
+ "id": "chris-griffing-march-2023",
+ "speaker_id": "chris-griffing",
+ "event_id": "march-2023",
+ "title": "Porting Boring Avatars using Mitosis",
+ "abstract": "boringavatars.com is an awesome avatars library, but it's only for React. People have ported it to other frameworks but they are one-offs. I decided to use Mitosis from builder.io to make \"one repo to rule them all\". In this talk, I will go over the process and some of the issues I encountered along the way."
+ },
+ {
+ "id": "philip-swan-april-2023",
+ "speaker_id": "philip-swan",
+ "event_id": "april-2023",
+ "title": "The Tethered Ring Space Infrastructure Interactive 3D Architecture Model in three.js",
+ "abstract": "The Tethered Ring a game-changing architecture for making space safe, sustainable, and affordable for everyone - which clearly is not going to happen if we keep on using chemical rockets. An on-line interactive three.js-based JavaScript model captures the engineering, science, and economics behind the technology. Now anyone with internet access can review the code and contribute to the project. Come and be inspired!",
+ "type": "regular"
+ },
+ {
+ "id": "catherine-johnson-april-2023",
+ "speaker_id": "catherine-johnson",
+ "event_id": "april-2023",
+ "title": "How to Build Accessible React Components",
+ "abstract": "Hope you are strapped in for some accessibility! In this session we will breakdown how you can use built-in React tools and web accessibility guidelines to create flexible and accessible components for your website.",
+ "type": "regular"
+ },
+ {
+ "id": "michael-solati-april-2023",
+ "speaker_id": "michael-solati",
+ "event_id": "april-2023",
+ "title": "0 to 100 with Lighthouse",
+ "abstract": "There are a slew of tools to help developers improve their web applications: one of them is Google's Lighthouse. In this session you'll learn about what Lighthouse is, and see how you can use Lighthouse CI as part of your build and testing process.",
+ "type": "lightning"
+ },
+ {
+ "id": "spenser-solys-may-2023",
+ "speaker_id": "spenser-solys",
+ "event_id": "may-2023",
+ "title": "Augmented Reality Business Card",
+ "abstract": "I made a \"business card\" using AFrame + AR.js. Just want to show it off",
+ "type": "lightning"
+ },
+ {
+ "id": "tiger-oakes-may-2023",
+ "speaker_id": "tiger-oakes",
+ "event_id": "may-2023",
+ "title": "Hacking an e-reader to show my tea menu",
+ "abstract": "E-Readers are great and use so little power! I wanted to have a tea menu to show guests and for my own reference. I'll share how to generate an e-book with all your drinks in Deno, as well as rendering a custom cover page with SVG. Wow your friends by turning an old device into a smart home tea menu.",
+ "type": "lightning"
+ },
+ {
+ "id": "aiden-bai-june-2023",
+ "speaker_id": "aiden-bai",
+ "event_id": "june-2023",
+ "title": "Virtual DOM: Back in Block",
+ "abstract": "Is the Virtual DOM pure overhead? In this tech talk, Aiden Bai explores the performance implications of the Virtual DOM in frameworks like React and presents an alternative approach called the \"block virtual DOM.\" Aiden delves into the origins of the Virtual DOM, its purpose in addressing performance issues, and the process of diffing and reconciliation. The talk introduces the Block virtual DOM, which takes a different approach to diffing by using static analysis and dirty checking.",
+ "topics": [
+ "reactjs",
+ "millionjs",
+ "nextjs",
+ "performance",
+ "rendering",
+ "javascript",
+ "typescript"
+ ],
+ "type": "lightning"
+ },
+ {
+ "id": "dm-liao-june-2023",
+ "speaker_id": "dm-liao",
+ "event_id": "june-2023",
+ "title": "Using the web to make interactive fanfiction",
+ "abstract": "Over the pandemic, people developed a wide variety of hobbies to fill the time, and for me, that was writing a ridiculous amount of fanfiction. One of the most ambitious pieces was an interactive, choice-based and animated story written using Ink and 'set' with Preact and InkJS, and this talk goes through some of the creative and technical decisions I made to get them to play nicely with each other.",
+ "topics": [
+ "preactjs",
+ "inkjs",
+ "immutable data",
+ "text parsing",
+ "interactive fiction"
+ ],
+ "type": "regular"
+ },
+ {
+ "id": "cristina-rodriguez-june-2023",
+ "speaker_id": "cristina-rodriguez",
+ "event_id": "june-2023",
+ "title": "Overcoming Blank Page Syndrome with your Template",
+ "abstract": "How many times have you thought of a great idea for a project but were not quite sure how to start coding that project? Using templates can help beginning engineers overcome the overwhelm and fear that can come with starting projects. The goal of this talk is to share with everyone who is self-learning to code that templates and automation are their friends, especially for that tedious work of your initial setup. There is no need to start every project from scratch.",
+ "topics": [
+ "javascript",
+ "templates",
+ "projects",
+ "front-end",
+ "backend",
+ "react",
+ "vite"
+ ],
+ "type": "lightning"
+ },
+ {
+ "id": "geoff-rich-july-2023",
+ "speaker_id": "geoff-rich",
+ "event_id": "july-2023",
+ "title": "Web development, streamlined: an introduction to SvelteKit",
+ "abstract": "SvelteKit is an exciting new web framework that recently launched version 1.0. It combines the well-loved Svelte JavaScript framework with everything you need to build a modern web app: routing, type-safe data loading, progressively-enhanced forms, a speedy Vite-powered dev experience, and more. In this talk, I’ll give a crash course on SvelteKit and how you can use it to build fast, resilient web apps of all shapes and sizes.",
+ "topics": ["javascript", " svelte", " sveltekit "],
+ "type": "regular"
+ },
+ {
+ "id": "chris-griffing-july-2023",
+ "speaker_id": "chris-griffing",
+ "event_id": "july-2023",
+ "title": "Protecting the Environment (Variables) via AST",
+ "abstract": "How can we use the AST to detect unused env vars. Geller is a simple tool to do that. Let's dig into how it works and how it crawls the JS/TS AST.",
+ "topics": ["AST", " CI/CD", " Dev Tools"],
+ "type": "lightning"
+ },
+ {
+ "id": "michael-fitzgerald-july-2023",
+ "speaker_id": "michael-fitzgerald",
+ "event_id": "july-2023",
+ "title": "Promise Concurrency in JavaScript",
+ "abstract": "Exploring ways to optimize resolving promises in JavasScript. A few slides with concepts and execution of code snippets with barebones performance measurement. Presenting to spark further discussion and generate feedback / input from others, not to lecture as the expert on the matter.",
+ "topics": ["javascript", " promises", " performance", " concurrency"],
+ "type": "lightning"
+ },
+ {
+ "id": "jan-miksovsky-september-2023",
+ "speaker_id": "jan-miksovsky",
+ "event_id": "september-2023",
+ "title": "Graphs All the Way Down",
+ "abstract": "Distinct APIs for objects, files, sites, and resources obscure the fact that they're all just graphs. I'll introduce a research project leveraging recent JS features and a new coding pattern for graphs to let you quickly transform graphs of anything into a site or other artifact in a natural, expressive way.",
+ "topics": [
+ "front-end development",
+ "static site generators",
+ "documentation pipelines"
+ ],
+ "type": "regular"
+ },
+ {
+ "id": "peli-de-halleux-september-2023",
+ "speaker_id": "peli-de-halleux",
+ "event_id": "september-2023",
+ "title": "DeviceScript - TypeScript for Tiny IoT Devices",
+ "abstract": "Bring your TypeScript skillz to embedded (ESP32, RP2040) using DeviceScript.",
+ "topics": ["embedded", "typescript"],
+ "type": "regular"
+ },
+ {
+ "id": "ben-lower-september-2023",
+ "speaker_id": "ben-lower",
+ "event_id": "september-2023",
+ "title": "Giving LLMs Tools and Ability to do Generative UI",
+ "abstract": "I will show how to enable LLMs to take actions using tools defined using JSX components. Additionally, I will show how to give the LLM the ability to create UI dynamically at runtime to move beyond simple text-based chat experiences.",
+ "topics": ["AI", "LLM", "JavaScript", "React", "JSX"],
+ "type": "lightning"
+ },
+ {
+ "id": "caleb-diehl-october-2023",
+ "speaker_id": "caleb-diehl",
+ "event_id": "october-2023",
+ "title": "Tracking Wildfires for The Associated Press with Maplibre and the ESRI API",
+ "abstract": "Millions of readers rely on the Associated Press's wildfire tracker to get live information about large wildfires across the United States. I am a data visualization developer at the AP and will go over some design, architecture, and data viz decisions we made during a major UI overhaul (which goes live at the end of June). I'll discuss how attendees can build similar interactive maps in React / TypeScript using the same free, open-source mapping libraries and APIs. ",
+ "topics": ["Data visualization", "interactive mapping"],
+ "type": "lightning"
+ },
+ {
+ "id": "alan-gonzalez-october-2023",
+ "speaker_id": "alan-gonzalez",
+ "event_id": "october-2023",
+ "title": "A new type of coding interviews",
+ "abstract": "Technical interviews are either inapplicable leet-code questions or time-consuming take-home projects. This talk presents a new approach that brings the best of both worlds, allowing people to showcase applicable skills. Software Engineering interviews in the browser!",
+ "topics": [
+ "hiring",
+ "coding interviews",
+ "leet-code",
+ "take-homes",
+ "webassembly"
+ ],
+ "type": "lightning"
+ },
+ {
+ "id": "mike-ryan-november-2023",
+ "speaker_id": "mike-ryan",
+ "event_id": "november-2023",
+ "title": "The User Experience of Site Reliability",
+ "abstract": "From CPU-pegged servers to misconfigured load balancers, outages in our systems all result in the same thing: degraded user experience. Let's explore strategies for measuring, managing, and improving reliability in our applications from the perspective of end users.",
+ "topics": ["site reliability", "observability", "user experience"],
+ "type": "regular"
+ },
+ {
+ "id": "doug-wade-november-2023",
+ "speaker_id": "doug-wade",
+ "event_id": "november-2023",
+ "title": "Dual publishing JavaScript packages to deno and node",
+ "abstract": "Learn how take a JavaScript module written for deno and build, test, type check, and publish it for both deno and nodejs using dnt, the Deno to Node Transform build tool",
+ "topics": ["Deno", "nodejs", "npm", "package management"],
+ "type": "regular"
+ },
+ {
+ "id": "fx-wood-february-2024",
+ "speaker_id": "fx-wood",
+ "event_id": "february-2024",
+ "title": "Why You Should Use A DateTime Library (Maybe)",
+ "abstract": "There are some interesting complexities when it comes to working with time. Also some fun stuff about timestamps.",
+ "topics": ["luxon", "datetime", "DateTimeFormat"],
+ "type": "lightning"
+ },
+ {
+ "id": "dm-liao-february-2024",
+ "speaker_id": "dm-liao",
+ "event_id": "february-2024",
+ "title": "Using React with the Godot game engine",
+ "abstract": "Godot is a game engine and editor that is written in C++ and allows you to script games using its custom GDScript language, or C#. So, naturally, I decided that I wanted to make game UI in Javascript using React, and it turns out that that's not that uncommon of an idea! And also not that terrible of an idea! This talk will go through some of the nitty gritty of getting C# and JS to talk to each other, and then creating a custom React renderer to render Godot UI elements.",
+ "topics": ["React", "Godot", "game engine"],
+ "type": "regular"
+ },
+ {
+ "id": "shruti-kapoor-march-2024",
+ "speaker_id": "shruti-kapoor",
+ "event_id": "march-2024",
+ "title": "Building an AI Web App with LangChain and OpenAI",
+ "abstract": "Learn how to build a web app with LangChain and OpenAI. Build the front-end, back-end and create an AI service that integrates with OpenAI to power a web app. ",
+ "topics": ["front-end", "back-end", "AI "],
+ "type": "regular"
+ },
+ {
+ "id": "j-chris-anderson-march-2024",
+ "speaker_id": "j-chris-anderson",
+ "event_id": "march-2024",
+ "title": "Local-first database application starter kits",
+ "abstract": "I'm building a browser-database based on what I learned from CouchDB. It empowers front-end devs to ship data-driven features without getting tied to a backend. Later you can connect almost any cloud for multi-user live collaboration.",
+ "topics": ["database", "react", "sync", "crdt", "local-first"],
+ "type": "regular"
+ },
+ {
+ "id": "eric-jensen-march-2024",
+ "speaker_id": "eric-jensen",
+ "event_id": "march-2024",
+ "title": "Fireproof: A JavaScript database for web applications",
+ "abstract": "Fireproof is a pure JS database with zero setup. Build without constraints, plug in and launch in one step. Come learn about the newest way to create web apps!",
+ "topics": ["database", "sync", "local-first"],
+ "type": "regular"
+ },
+ {
+ "id": "herrington-darkholme-april-2024",
+ "speaker_id": "herrington-darkholme",
+ "event_id": "april-2024",
+ "title": "Benchmark Rusty Parsers: demystify native tooling performance in JavaScript",
+ "abstract": "Native parsers used in JavaScript are not always faster due to extra work across languages. This talk will review several parsers written in JS/Rust and demonstrate the perf characteristics of native programs in NodeJS.\nAvoiding Rust overhead and using multi-core are crucial for performance.\n\nhttps://rs-perf-talk.vercel.app/",
+ "topics": ["javascript", "napi", "rust"],
+ "type": "regular"
+ },
+ {
+ "id": "john-pham-april-2024",
+ "speaker_id": "john-pham",
+ "event_id": "april-2024",
+ "title": "Delightful Design",
+ "abstract": "In this talk, we'll explore how to craft delightful experiences that enhance user engagement, focusing on performance, accessibility, and impressing the user, as seen in products like Vercel, Linear, and Raycast. You'll learn that anyone, regardless of design expertise, can achieve such delightful design.",
+ "topics": ["design"],
+ "type": "regular"
+ },
+ {
+ "id": "allan-deutsch-may-2024",
+ "speaker_id": "allan-deutsch",
+ "event_id": "may-2024",
+ "title": "Adding nominal type safety to your TS code using branded types",
+ "abstract": "Typescript and JavaScript are *structurally* typed - objects of the same shape are assignable. Nominal types can only be assigned to other objects of the same *named type*. Type branding is a technique that brings the safety of nominal typing to typescript.",
+ "topics": ["Typescript", "type safety", "validation"],
+ "type": "lightning"
+ },
+ {
+ "id": "sarah-guthals-phd-may-2024",
+ "speaker_id": "sarah-guthals-phd",
+ "event_id": "may-2024",
+ "title": "Deconstructing Distributed Tracing",
+ "abstract": "Distributed Tracing is a powerful and modern debugging technique that allows you to track the flow and timing of requests as they navigate through every part of your system. Learn the reason why Distributed Tracing exists and how to leverage it.",
+ "topics": ["performance", "tracing", "monitoring"],
+ "type": "regular"
+ },
+ {
+ "id": "josh-franklin-july-2024",
+ "speaker_id": "josh-franklin",
+ "event_id": "july-2024",
+ "title": "\"Efficiently\" Sharing Data Through URLs",
+ "abstract": "What is the most efficient way to store data in a URL? Let's deep dive into how URLs work and write some custom encoding algorithms to find out how much data can be stored in them. Knowing this may allow you to replace your database entirely for some use cases.",
+ "topics": [
+ "How URLs work",
+ "encoding/decoding algorithms",
+ "when to store data in URLs vs. a backend"
+ ],
+ "type": "regular"
+ },
+ {
+ "id": "chris-griffing-july-2024",
+ "speaker_id": "chris-griffing",
+ "event_id": "july-2024",
+ "title": "A Different Kind of Serverless: A History of WASM and case study for SQLite and Whisper.cpp running purely in the browser with no server-side logic",
+ "abstract": "You can build applications with a local-first focus. We will cover what WASM is, how it came to be and some of its history, as well as a case study focused on an app I made for myself. In the case study, we dig into how you might use WASM to run Whisper.cpp for Speech-to-text and also use WASM to host a local SQLite database. The only reason we need a network connection at all for this application is to get the initial JS payload and to download the Whisper models from a remote store since they can get quite large.",
+ "topics": ["WASM", "JS", "SQLite", "Speech-to-text"],
+ "type": "regular"
+ },
+ {
+ "id": "ben-van-citters-august-2024",
+ "speaker_id": "ben-van-citters",
+ "event_id": "august-2024",
+ "title": "Undo/Redo a postmortem",
+ "abstract": "Some thoughts about distributed undo/redo architecture. I did it and you can too!",
+ "topics": ["JavaScript", "undo", "patterns", "rest", "crud"],
+ "type": "regular"
+ },
+ {
+ "id": "allan-deutsch-august-2024",
+ "speaker_id": "allan-deutsch",
+ "event_id": "august-2024",
+ "title": "Classy coding: JavaScript OOP through the ages",
+ "abstract": "Embark on a journey through the history of JavaScript to learn how a variety of OOP challenges were overcome in the past. We will conclude our journey with clean modern syntax and a deeper understanding of classes, objects, and the chain of changes that helped us get here.",
+ "topics": [
+ "javascript",
+ "inheritance",
+ "prototype chains",
+ "JS runtime",
+ "classes",
+ "OOP",
+ "object-oriented programming"
+ ],
+ "type": "lightning"
+ },
+ {
+ "id": "nicholas-patti-september-2024",
+ "speaker_id": "nicholas-patti",
+ "event_id": "september-2024",
+ "title": "Planning the ultimate Limp Bizkit experience with Playwright",
+ "abstract": "How can my friend and I get on stage to perform guitar and bass with Limp Bizkit? The answer lies in the data, and Playwright can help us grab it!",
+ "topics": ["Playwright", "NodeJS", "data scraping", "data analysis"],
+ "type": "lightning"
+ },
+ {
+ "id": "stacy-davis1-october-2024",
+ "speaker_id": "stacy-davis1",
+ "event_id": "october-2024",
+ "title": "Translation: Tokens of Clarity",
+ "abstract": "How does someone even get started with translating? What are some of the details involved? Join me to learn more about translation and localization in a React app, and insights taken from experience leading a translation initiative.",
+ "topics": ["Translation", "localization", "React"],
+ "type": "regular"
+ },
+ {
+ "id": "erik-marks-october-2024",
+ "speaker_id": "erik-marks",
+ "event_id": "october-2024",
+ "title": "How to use eval() in production (and remain gainfully employed)",
+ "abstract": "If you know anything about eval(), it's probably that you should avoid using it at all costs. However, what if using eval() could make your JavaScript program more secure? This is what Hardened JavaScript does, and in this talk we will explore how.",
+ "topics": [
+ "JavaScript",
+ "security",
+ "extensibility",
+ "plugins",
+ "Hardened JavaScript",
+ "Secure EcmaScript",
+ "SES"
+ ],
+ "type": "lightning"
+ },
+ {
+ "id": "cat-johnson-november-2024",
+ "speaker_id": "cat-johnson",
+ "event_id": "november-2024",
+ "title": "Nested Interactive Elements: A Nightmare in Accessibility",
+ "abstract": "There have been numerous remarkable new UX experiences developed over the years. However, few are aware of the challenges involved in building structures with nested interactive elements. We will explore some of these prevalent web UX patterns and delve into the hidden challenges they present. While we may be able to mitigate some of these issues, others serve as horror stories in accessibility.",
+ "topics": ["Accessibility", "HTML", "CSS"],
+ "type": "lightning"
+ },
+ {
+ "id": "stacy-davis1-november-2024",
+ "speaker_id": "stacy-davis1",
+ "event_id": "november-2024",
+ "title": "Translation: Tokens of Clarity",
+ "abstract": "How does someone even get started with translating? What are some of the details involved? Join me to learn more about translation and localization in a React app, and insights taken from experience leading a translation initiative.",
+ "topics": ["Translation", "localization", "React"],
+ "type": "lightning"
+ }
+]
diff --git a/src/data/types.d.ts b/src/data/types.d.ts
new file mode 100644
index 0000000..452a982
--- /dev/null
+++ b/src/data/types.d.ts
@@ -0,0 +1,62 @@
+export interface SJSEvent {
+ id: string
+ title: string
+ date: string
+ link?: string
+ description?: string
+ location?: string
+ sponsors: string[]
+ talks: string[]
+}
+
+export interface InflatedEvent extends Omit {
+ talks: InflatedTalk[]
+ sponsors: Sponsor[]
+}
+
+export interface Speaker {
+ id: string
+ name: string
+ company: string
+ photo: string
+ twitter?: string
+ pronouns?: string
+ location?: string
+}
+
+interface Talk {
+ id: string
+ title: string
+ abstract: string
+ topics?: string[]
+ type?: string
+}
+
+export interface MeetupTalk extends Talk {
+ event_id: string
+ speaker_id: string
+}
+
+export interface ConfTalk extends Talk {
+ speaker: Speaker
+}
+
+export interface InflatedTalk extends Talk {
+ speaker: Speaker
+}
+
+export interface Sponsor {
+ tier?: string
+ id: string
+ url: string
+ image: string
+ name?: string
+ copy?: string
+}
+
+export interface Links {
+ linkedin?: string
+ twitter?: string
+ url?: string
+ github?: string
+}
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..acef35f
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/src/images/blank-seattlejs-header.png b/src/images/blank-seattlejs-header.png
new file mode 100644
index 0000000..1f52401
Binary files /dev/null and b/src/images/blank-seattlejs-header.png differ
diff --git a/src/images/conf/seattlejsconf-2023-logo.png b/src/images/conf/seattlejsconf-2023-logo.png
new file mode 100644
index 0000000..5004077
Binary files /dev/null and b/src/images/conf/seattlejsconf-2023-logo.png differ
diff --git a/src/images/logo.png b/src/images/logo.png
new file mode 100644
index 0000000..3dcd2c6
Binary files /dev/null and b/src/images/logo.png differ
diff --git a/public/images/organizers/andre-wiggins.jpg b/src/images/organizers/andre-wiggins.jpg
similarity index 100%
rename from public/images/organizers/andre-wiggins.jpg
rename to src/images/organizers/andre-wiggins.jpg
diff --git a/src/images/organizers/carrie-rabasa.jpg b/src/images/organizers/carrie-rabasa.jpg
new file mode 100644
index 0000000..6f4f5bb
Binary files /dev/null and b/src/images/organizers/carrie-rabasa.jpg differ
diff --git a/public/images/organizers/carter-rabasa.jpg b/src/images/organizers/carter-rabasa.jpg
similarity index 100%
rename from public/images/organizers/carter-rabasa.jpg
rename to src/images/organizers/carter-rabasa.jpg
diff --git a/public/images/organizers/ehtesh-choudhury.jpg b/src/images/organizers/ehtesh-choudhury.jpg
similarity index 100%
rename from public/images/organizers/ehtesh-choudhury.jpg
rename to src/images/organizers/ehtesh-choudhury.jpg
diff --git a/public/images/organizers/fx-wood.jpg b/src/images/organizers/fx-wood.jpg
similarity index 100%
rename from public/images/organizers/fx-wood.jpg
rename to src/images/organizers/fx-wood.jpg
diff --git a/public/images/organizers/jim-liu.jpg b/src/images/organizers/jim-liu.jpg
similarity index 100%
rename from public/images/organizers/jim-liu.jpg
rename to src/images/organizers/jim-liu.jpg
diff --git a/public/images/organizers/justin-oliver-lee.jpg b/src/images/organizers/justin-oliver-lee.jpg
similarity index 100%
rename from public/images/organizers/justin-oliver-lee.jpg
rename to src/images/organizers/justin-oliver-lee.jpg
diff --git a/public/images/organizers/lucas-steinmacher.jpg b/src/images/organizers/lucas-steinmacher.jpg
similarity index 100%
rename from public/images/organizers/lucas-steinmacher.jpg
rename to src/images/organizers/lucas-steinmacher.jpg
diff --git a/public/images/organizers/rachel-lee-nabors.jpg b/src/images/organizers/rachel-lee-nabors.jpg
similarity index 100%
rename from public/images/organizers/rachel-lee-nabors.jpg
rename to src/images/organizers/rachel-lee-nabors.jpg
diff --git a/public/images/speakers/aaroh-mankad.jpg b/src/images/speakers/aaroh-mankad.jpg
similarity index 100%
rename from public/images/speakers/aaroh-mankad.jpg
rename to src/images/speakers/aaroh-mankad.jpg
diff --git a/public/images/speakers/adam-argyle.jpg b/src/images/speakers/adam-argyle.jpg
similarity index 100%
rename from public/images/speakers/adam-argyle.jpg
rename to src/images/speakers/adam-argyle.jpg
diff --git a/public/images/speakers/aiden-bai.jpg b/src/images/speakers/aiden-bai.jpg
similarity index 100%
rename from public/images/speakers/aiden-bai.jpg
rename to src/images/speakers/aiden-bai.jpg
diff --git a/public/images/speakers/alan-balasundaram.jpg b/src/images/speakers/alan-balasundaram.jpg
similarity index 100%
rename from public/images/speakers/alan-balasundaram.jpg
rename to src/images/speakers/alan-balasundaram.jpg
diff --git a/public/images/speakers/alan-gonzalez.jpg b/src/images/speakers/alan-gonzalez.jpg
similarity index 100%
rename from public/images/speakers/alan-gonzalez.jpg
rename to src/images/speakers/alan-gonzalez.jpg
diff --git a/public/images/speakers/allan-deutsch.png b/src/images/speakers/allan-deutsch.png
similarity index 100%
rename from public/images/speakers/allan-deutsch.png
rename to src/images/speakers/allan-deutsch.png
diff --git a/public/images/speakers/amber-hoak.jpg b/src/images/speakers/amber-hoak.jpg
similarity index 100%
rename from public/images/speakers/amber-hoak.jpg
rename to src/images/speakers/amber-hoak.jpg
diff --git a/public/images/speakers/ben-ilegbodu.jpg b/src/images/speakers/ben-ilegbodu.jpg
similarity index 100%
rename from public/images/speakers/ben-ilegbodu.jpg
rename to src/images/speakers/ben-ilegbodu.jpg
diff --git a/public/images/speakers/ben-lower.jpg b/src/images/speakers/ben-lower.jpg
similarity index 100%
rename from public/images/speakers/ben-lower.jpg
rename to src/images/speakers/ben-lower.jpg
diff --git a/public/images/speakers/ben-van-citters.jpg b/src/images/speakers/ben-van-citters.jpg
similarity index 100%
rename from public/images/speakers/ben-van-citters.jpg
rename to src/images/speakers/ben-van-citters.jpg
diff --git a/public/images/speakers/brian-gershon.jpg b/src/images/speakers/brian-gershon.jpg
similarity index 100%
rename from public/images/speakers/brian-gershon.jpg
rename to src/images/speakers/brian-gershon.jpg
diff --git a/public/images/speakers/brian-tran.jpg b/src/images/speakers/brian-tran.jpg
similarity index 100%
rename from public/images/speakers/brian-tran.jpg
rename to src/images/speakers/brian-tran.jpg
diff --git a/public/images/speakers/brook-riggio.jpg b/src/images/speakers/brook-riggio.jpg
similarity index 100%
rename from public/images/speakers/brook-riggio.jpg
rename to src/images/speakers/brook-riggio.jpg
diff --git a/public/images/speakers/caleb-diehl.jpg b/src/images/speakers/caleb-diehl.jpg
similarity index 100%
rename from public/images/speakers/caleb-diehl.jpg
rename to src/images/speakers/caleb-diehl.jpg
diff --git a/public/images/speakers/calvin-kipperman.jpg b/src/images/speakers/calvin-kipperman.jpg
similarity index 100%
rename from public/images/speakers/calvin-kipperman.jpg
rename to src/images/speakers/calvin-kipperman.jpg
diff --git a/public/images/speakers/cat-johnson.jpg b/src/images/speakers/cat-johnson.jpg
similarity index 100%
rename from public/images/speakers/cat-johnson.jpg
rename to src/images/speakers/cat-johnson.jpg
diff --git a/public/images/speakers/catherine-johnson.jpg b/src/images/speakers/catherine-johnson.jpg
similarity index 100%
rename from public/images/speakers/catherine-johnson.jpg
rename to src/images/speakers/catherine-johnson.jpg
diff --git a/public/images/speakers/chris-griffing.jpg b/src/images/speakers/chris-griffing.jpg
similarity index 100%
rename from public/images/speakers/chris-griffing.jpg
rename to src/images/speakers/chris-griffing.jpg
diff --git a/public/images/speakers/christina-zhu.jpg b/src/images/speakers/christina-zhu.jpg
similarity index 100%
rename from public/images/speakers/christina-zhu.jpg
rename to src/images/speakers/christina-zhu.jpg
diff --git a/public/images/speakers/cristina-rodriguez.jpg b/src/images/speakers/cristina-rodriguez.jpg
similarity index 100%
rename from public/images/speakers/cristina-rodriguez.jpg
rename to src/images/speakers/cristina-rodriguez.jpg
diff --git a/public/images/speakers/daphne-liu.jpg b/src/images/speakers/daphne-liu.jpg
similarity index 100%
rename from public/images/speakers/daphne-liu.jpg
rename to src/images/speakers/daphne-liu.jpg
diff --git a/public/images/speakers/dm-liao.jpg b/src/images/speakers/dm-liao.jpg
similarity index 100%
rename from public/images/speakers/dm-liao.jpg
rename to src/images/speakers/dm-liao.jpg
diff --git a/public/images/speakers/doug-wade.jpg b/src/images/speakers/doug-wade.jpg
similarity index 100%
rename from public/images/speakers/doug-wade.jpg
rename to src/images/speakers/doug-wade.jpg
diff --git a/public/images/speakers/eric-jensen.jpg b/src/images/speakers/eric-jensen.jpg
similarity index 100%
rename from public/images/speakers/eric-jensen.jpg
rename to src/images/speakers/eric-jensen.jpg
diff --git a/public/images/speakers/erik-hanchett.jpg b/src/images/speakers/erik-hanchett.jpg
similarity index 100%
rename from public/images/speakers/erik-hanchett.jpg
rename to src/images/speakers/erik-hanchett.jpg
diff --git a/public/images/speakers/erik-marks.jpg b/src/images/speakers/erik-marks.jpg
similarity index 100%
rename from public/images/speakers/erik-marks.jpg
rename to src/images/speakers/erik-marks.jpg
diff --git a/public/images/speakers/eve-porcello.jpg b/src/images/speakers/eve-porcello.jpg
similarity index 100%
rename from public/images/speakers/eve-porcello.jpg
rename to src/images/speakers/eve-porcello.jpg
diff --git a/public/images/speakers/fx-wood.jpg b/src/images/speakers/fx-wood.jpg
similarity index 100%
rename from public/images/speakers/fx-wood.jpg
rename to src/images/speakers/fx-wood.jpg
diff --git a/public/images/speakers/geoff-rich.jpg b/src/images/speakers/geoff-rich.jpg
similarity index 100%
rename from public/images/speakers/geoff-rich.jpg
rename to src/images/speakers/geoff-rich.jpg
diff --git a/public/images/speakers/herrington-darkholme.jpg b/src/images/speakers/herrington-darkholme.jpg
similarity index 100%
rename from public/images/speakers/herrington-darkholme.jpg
rename to src/images/speakers/herrington-darkholme.jpg
diff --git a/public/images/speakers/j-chris-anderson.jpg b/src/images/speakers/j-chris-anderson.jpg
similarity index 100%
rename from public/images/speakers/j-chris-anderson.jpg
rename to src/images/speakers/j-chris-anderson.jpg
diff --git a/public/images/speakers/jacob-ebey.jpg b/src/images/speakers/jacob-ebey.jpg
similarity index 100%
rename from public/images/speakers/jacob-ebey.jpg
rename to src/images/speakers/jacob-ebey.jpg
diff --git a/public/images/speakers/jamund-ferguson.jpg b/src/images/speakers/jamund-ferguson.jpg
similarity index 100%
rename from public/images/speakers/jamund-ferguson.jpg
rename to src/images/speakers/jamund-ferguson.jpg
diff --git a/public/images/speakers/jan-miksovsky.jpg b/src/images/speakers/jan-miksovsky.jpg
similarity index 100%
rename from public/images/speakers/jan-miksovsky.jpg
rename to src/images/speakers/jan-miksovsky.jpg
diff --git a/public/images/speakers/jason-lengstorf.jpg b/src/images/speakers/jason-lengstorf.jpg
similarity index 100%
rename from public/images/speakers/jason-lengstorf.jpg
rename to src/images/speakers/jason-lengstorf.jpg
diff --git a/public/images/speakers/john-pham.jpg b/src/images/speakers/john-pham.jpg
similarity index 100%
rename from public/images/speakers/john-pham.jpg
rename to src/images/speakers/john-pham.jpg
diff --git a/public/images/speakers/josh-franklin.jpg b/src/images/speakers/josh-franklin.jpg
similarity index 100%
rename from public/images/speakers/josh-franklin.jpg
rename to src/images/speakers/josh-franklin.jpg
diff --git a/public/images/speakers/josh-goldberg.jpg b/src/images/speakers/josh-goldberg.jpg
similarity index 100%
rename from public/images/speakers/josh-goldberg.jpg
rename to src/images/speakers/josh-goldberg.jpg
diff --git a/public/images/speakers/josh-scotland.jpg b/src/images/speakers/josh-scotland.jpg
similarity index 100%
rename from public/images/speakers/josh-scotland.jpg
rename to src/images/speakers/josh-scotland.jpg
diff --git a/public/images/speakers/kevin-whinnery.jpg b/src/images/speakers/kevin-whinnery.jpg
similarity index 100%
rename from public/images/speakers/kevin-whinnery.jpg
rename to src/images/speakers/kevin-whinnery.jpg
diff --git a/public/images/speakers/lauro-silva.jpg b/src/images/speakers/lauro-silva.jpg
similarity index 100%
rename from public/images/speakers/lauro-silva.jpg
rename to src/images/speakers/lauro-silva.jpg
diff --git a/public/images/speakers/lizzie-siegle.jpg b/src/images/speakers/lizzie-siegle.jpg
similarity index 100%
rename from public/images/speakers/lizzie-siegle.jpg
rename to src/images/speakers/lizzie-siegle.jpg
diff --git a/public/images/speakers/luis-montes.jpg b/src/images/speakers/luis-montes.jpg
similarity index 100%
rename from public/images/speakers/luis-montes.jpg
rename to src/images/speakers/luis-montes.jpg
diff --git a/public/images/speakers/lupe-canaviri-maydana.jpg b/src/images/speakers/lupe-canaviri-maydana.jpg
similarity index 100%
rename from public/images/speakers/lupe-canaviri-maydana.jpg
rename to src/images/speakers/lupe-canaviri-maydana.jpg
diff --git a/public/images/speakers/lupe-canaviri-maydana.png b/src/images/speakers/lupe-canaviri-maydana.png
similarity index 100%
rename from public/images/speakers/lupe-canaviri-maydana.png
rename to src/images/speakers/lupe-canaviri-maydana.png
diff --git a/public/images/speakers/mason-lynass.jpg b/src/images/speakers/mason-lynass.jpg
similarity index 100%
rename from public/images/speakers/mason-lynass.jpg
rename to src/images/speakers/mason-lynass.jpg
diff --git a/public/images/speakers/matthew-bauer.jpg b/src/images/speakers/matthew-bauer.jpg
similarity index 100%
rename from public/images/speakers/matthew-bauer.jpg
rename to src/images/speakers/matthew-bauer.jpg
diff --git a/public/images/speakers/michael-fitzgerald.png b/src/images/speakers/michael-fitzgerald.png
similarity index 100%
rename from public/images/speakers/michael-fitzgerald.png
rename to src/images/speakers/michael-fitzgerald.png
diff --git a/public/images/speakers/michael-solati.jpg b/src/images/speakers/michael-solati.jpg
similarity index 100%
rename from public/images/speakers/michael-solati.jpg
rename to src/images/speakers/michael-solati.jpg
diff --git a/public/images/speakers/mike-ryan.jpg b/src/images/speakers/mike-ryan.jpg
similarity index 100%
rename from public/images/speakers/mike-ryan.jpg
rename to src/images/speakers/mike-ryan.jpg
diff --git a/public/images/speakers/nicholas-patti.jpg b/src/images/speakers/nicholas-patti.jpg
similarity index 100%
rename from public/images/speakers/nicholas-patti.jpg
rename to src/images/speakers/nicholas-patti.jpg
diff --git a/public/images/speakers/peli-de-halleux.jpg b/src/images/speakers/peli-de-halleux.jpg
similarity index 100%
rename from public/images/speakers/peli-de-halleux.jpg
rename to src/images/speakers/peli-de-halleux.jpg
diff --git a/public/images/speakers/philip-swan.png b/src/images/speakers/philip-swan.png
similarity index 100%
rename from public/images/speakers/philip-swan.png
rename to src/images/speakers/philip-swan.png
diff --git a/public/images/speakers/rachel-lee-nabors.jpg b/src/images/speakers/rachel-lee-nabors.jpg
similarity index 100%
rename from public/images/speakers/rachel-lee-nabors.jpg
rename to src/images/speakers/rachel-lee-nabors.jpg
diff --git a/public/images/speakers/sarah-guthals-phd.png b/src/images/speakers/sarah-guthals-phd.png
similarity index 100%
rename from public/images/speakers/sarah-guthals-phd.png
rename to src/images/speakers/sarah-guthals-phd.png
diff --git a/public/images/speakers/shruti-kapoor.jpg b/src/images/speakers/shruti-kapoor.jpg
similarity index 100%
rename from public/images/speakers/shruti-kapoor.jpg
rename to src/images/speakers/shruti-kapoor.jpg
diff --git a/public/images/speakers/spenser-solys.jpg b/src/images/speakers/spenser-solys.jpg
similarity index 100%
rename from public/images/speakers/spenser-solys.jpg
rename to src/images/speakers/spenser-solys.jpg
diff --git a/public/images/speakers/stacy-davis1.jpg b/src/images/speakers/stacy-davis1.jpg
similarity index 100%
rename from public/images/speakers/stacy-davis1.jpg
rename to src/images/speakers/stacy-davis1.jpg
diff --git a/public/images/speakers/tiger-oakes.jpg b/src/images/speakers/tiger-oakes.jpg
similarity index 100%
rename from public/images/speakers/tiger-oakes.jpg
rename to src/images/speakers/tiger-oakes.jpg
diff --git a/public/images/speakers/tim-obrien.jpg b/src/images/speakers/tim-obrien.jpg
similarity index 100%
rename from public/images/speakers/tim-obrien.jpg
rename to src/images/speakers/tim-obrien.jpg
diff --git a/public/images/sponsors/amplication.png b/src/images/sponsors/amplication.png
similarity index 100%
rename from public/images/sponsors/amplication.png
rename to src/images/sponsors/amplication.png
diff --git a/public/images/sponsors/appwrite.jpg b/src/images/sponsors/appwrite.jpg
similarity index 100%
rename from public/images/sponsors/appwrite.jpg
rename to src/images/sponsors/appwrite.jpg
diff --git a/public/images/sponsors/appwrite.png b/src/images/sponsors/appwrite.png
similarity index 100%
rename from public/images/sponsors/appwrite.png
rename to src/images/sponsors/appwrite.png
diff --git a/public/images/sponsors/aws-skills-center-seattle.png b/src/images/sponsors/aws-skills-center-seattle.png
similarity index 100%
rename from public/images/sponsors/aws-skills-center-seattle.png
rename to src/images/sponsors/aws-skills-center-seattle.png
diff --git a/public/images/sponsors/aws.png b/src/images/sponsors/aws.png
similarity index 100%
rename from public/images/sponsors/aws.png
rename to src/images/sponsors/aws.png
diff --git a/public/images/sponsors/cloudinary.png b/src/images/sponsors/cloudinary.png
similarity index 100%
rename from public/images/sponsors/cloudinary.png
rename to src/images/sponsors/cloudinary.png
diff --git a/public/images/sponsors/collective.webp b/src/images/sponsors/collective.webp
similarity index 100%
rename from public/images/sponsors/collective.webp
rename to src/images/sponsors/collective.webp
diff --git a/public/images/sponsors/courier.png b/src/images/sponsors/courier.png
similarity index 100%
rename from public/images/sponsors/courier.png
rename to src/images/sponsors/courier.png
diff --git a/public/images/sponsors/customer-io.svg b/src/images/sponsors/customer-io.svg
similarity index 100%
rename from public/images/sponsors/customer-io.svg
rename to src/images/sponsors/customer-io.svg
diff --git a/public/images/sponsors/datastax.png b/src/images/sponsors/datastax.png
similarity index 100%
rename from public/images/sponsors/datastax.png
rename to src/images/sponsors/datastax.png
diff --git a/public/images/sponsors/fireproof.png b/src/images/sponsors/fireproof.png
similarity index 100%
rename from public/images/sponsors/fireproof.png
rename to src/images/sponsors/fireproof.png
diff --git a/public/images/sponsors/formidable.svg b/src/images/sponsors/formidable.svg
similarity index 100%
rename from public/images/sponsors/formidable.svg
rename to src/images/sponsors/formidable.svg
diff --git a/public/images/sponsors/mux.png b/src/images/sponsors/mux.png
similarity index 100%
rename from public/images/sponsors/mux.png
rename to src/images/sponsors/mux.png
diff --git a/public/images/sponsors/mux.svg b/src/images/sponsors/mux.svg
similarity index 100%
rename from public/images/sponsors/mux.svg
rename to src/images/sponsors/mux.svg
diff --git a/public/images/sponsors/polaris.png b/src/images/sponsors/polaris.png
similarity index 100%
rename from public/images/sponsors/polaris.png
rename to src/images/sponsors/polaris.png
diff --git a/public/images/sponsors/remix.png b/src/images/sponsors/remix.png
similarity index 100%
rename from public/images/sponsors/remix.png
rename to src/images/sponsors/remix.png
diff --git a/public/images/sponsors/runme.png b/src/images/sponsors/runme.png
similarity index 100%
rename from public/images/sponsors/runme.png
rename to src/images/sponsors/runme.png
diff --git a/public/images/sponsors/seekout.png b/src/images/sponsors/seekout.png
similarity index 100%
rename from public/images/sponsors/seekout.png
rename to src/images/sponsors/seekout.png
diff --git a/public/images/sponsors/sentry.png b/src/images/sponsors/sentry.png
similarity index 100%
rename from public/images/sponsors/sentry.png
rename to src/images/sponsors/sentry.png
diff --git a/public/images/sponsors/svb.svg b/src/images/sponsors/svb.svg
similarity index 100%
rename from public/images/sponsors/svb.svg
rename to src/images/sponsors/svb.svg
diff --git a/public/images/sponsors/twilio.png b/src/images/sponsors/twilio.png
similarity index 100%
rename from public/images/sponsors/twilio.png
rename to src/images/sponsors/twilio.png
diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
new file mode 100644
index 0000000..56b4e36
--- /dev/null
+++ b/src/layouts/BaseLayout.astro
@@ -0,0 +1,78 @@
+---
+import '../styles/main.css'
+
+let { pageTitle, sharing } = Astro.props as {
+ pageTitle: string
+ sharing?: {
+ image: string
+ }
+}
+
+let imageUrl
+if (sharing) {
+ imageUrl = new URL(sharing.image, Astro.url.origin).toString()
+}
+
+if (pageTitle) {
+ if (!pageTitle.endsWith('SeattleJS')) {
+ pageTitle = `${pageTitle} | SeattleJS`
+ }
+} else {
+ pageTitle = 'SeattleJS'
+}
+
+const description =
+ Astro.props.description ??
+ 'SeattleJS is the largest JavaScript and web developer meetup in Seattle. Our meetings are the 2nd Wednesday of each month. We are an inclusive community and welcome everyone, including folks who are just getting started in tech.'
+---
+
+
+
+
+
+
+
+ {pageTitle}
+
+
+
+ {
+ sharing && imageUrl && (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ )
+ }
+
+
+
+
+
+
+
diff --git a/src/layouts/MarkdownLayout.astro b/src/layouts/MarkdownLayout.astro
new file mode 100644
index 0000000..6a6bac6
--- /dev/null
+++ b/src/layouts/MarkdownLayout.astro
@@ -0,0 +1,6 @@
+---
+import PageLayout from '@/layouts/PageLayout.astro'
+const { frontmatter } = Astro.props
+---
+
+
diff --git a/src/layouts/PageLayout.astro b/src/layouts/PageLayout.astro
new file mode 100644
index 0000000..251280a
--- /dev/null
+++ b/src/layouts/PageLayout.astro
@@ -0,0 +1,10 @@
+---
+import PageContainer from '@/components/PageContainer.astro'
+import Layout from '@/layouts/BaseLayout.astro'
+---
+
+
+
+
+
+
diff --git a/src/pages/404.astro b/src/pages/404.astro
new file mode 100644
index 0000000..91c03a4
--- /dev/null
+++ b/src/pages/404.astro
@@ -0,0 +1,17 @@
+---
+import Footer from '@/components/Footer.astro'
+import Header from '@/components/Header.astro'
+import BaseLayout from '@/layouts/BaseLayout.astro'
+const pageTitle = '404 Not Found'
+---
+
+
+
+
+
+
+
+
diff --git a/app/md/about-us.md b/src/pages/about-us.md
similarity index 91%
rename from app/md/about-us.md
rename to src/pages/about-us.md
index 7278552..01f8229 100644
--- a/app/md/about-us.md
+++ b/src/pages/about-us.md
@@ -2,11 +2,12 @@
title: About Us
excerpt: SeattleJS is a safe and inclusive event for everyone
---
+
![SeattleJS at the Collective](/_public/images/seattlejs-march-2022.jpg)
-SeattleJS is the largest JavaScript and web developer meetup in Seattle.
+SeattleJS is the largest JavaScript and web developer meetup in Seattle.
-We are an inclusive community and welcome everyone, including folks who are just getting started in tech.
+We are an inclusive community and welcome everyone, including folks who are just getting started in tech.
Our mission is to help folks:
@@ -18,4 +19,4 @@ Our mission is to help folks:
Advocate for the open web
-Our meetings are the 2nd Wednesday of each month, we hope you can join us!
\ No newline at end of file
+Our meetings are the 2nd Wednesday of each month, we hope you can join us!
diff --git a/app/md/code-of-conduct.md b/src/pages/code-of-conduct.md
similarity index 97%
rename from app/md/code-of-conduct.md
rename to src/pages/code-of-conduct.md
index 48f180d..7205343 100644
--- a/app/md/code-of-conduct.md
+++ b/src/pages/code-of-conduct.md
@@ -2,6 +2,7 @@
title: Code of Conduct
excerpt: SeattleJS is a safe and inclusive event for everyone
---
+
SeattleJS is dedicated to providing a harassment-free experience for everyone, regardless of gender, gender identity, gender expression, sexual orientation, disability, physical appearance, body size, race, ability, ethnicity, socioeconomic status, or religion (or lack thereof). SeattleJS does not tolerate harassment of conference participants or staff at any time nor in any form.
Anyone violating these guidelines may be removed from the event and/or our platforms at our sole sole discretion.
@@ -10,7 +11,7 @@ Thank you for helping make SeattleJS a welcoming, friendly event for all.
## Expected Behavior
-All communication at our events (in-person or virtual) or on our platforms (Discord, Meetup, etc) should be appropriate for a professional audience including people of many different backgrounds. Please be kind to others.
+All communication at our events (in-person or virtual) or on our platforms (Discord, Meetup, etc) should be appropriate for a professional audience including people of many different backgrounds. Please be kind to others.
Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
@@ -35,7 +36,7 @@ If an attendee or other participant engages in unacceptable behavior, the commun
## If You Witness or Are Subject to Unacceptable Behavior
-If you are subject to or witness unacceptable behavior, or have any other concerns, please notify an Organizer immediately.
+If you are subject to or witness unacceptable behavior, or have any other concerns, please notify an Organizer immediately.
If you are experiencing a life threatening emergency, dial 9-1-1.
diff --git a/src/pages/conf.astro b/src/pages/conf.astro
new file mode 100644
index 0000000..7a9bc04
--- /dev/null
+++ b/src/pages/conf.astro
@@ -0,0 +1,214 @@
+---
+import { Image } from 'astro:assets'
+import Footer from '@/components/Footer.astro'
+import Header from '@/components/Header.astro'
+import Organizers from '@/components/Organizers.astro'
+import Sponsor from '@/components/Sponsor.astro'
+import TalkCard from '@/components/TalkCard.astro'
+import event from '@/data/conf-2023.json'
+import BaseLayout from '@/layouts/BaseLayout.astro'
+import { findImage } from '@/utils/image'
+import { toHTML } from '@/utils/markdown'
+import ConfLogSrc from '@/images/conf/seattlejsconf-2023-logo.png'
+
+const speakerImageGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+ { eager: true },
+)
+---
+
+
+
+
+
+
+
+
+
+
+
+
+ SeattleJS Conf 2023 is a wrap! Check-out the
replay of the livestream and see you all next year for CascadiaJS 2024!
+
+
+ SeattleJS Conf is a very special 1-day conference bringing together ~300
+ web developers to learn, network and have fun!
+
+
+ The talks, from industry exports, will cover the latest and greatest in
+ web technologies, from CSS View Transitions to Deno 2.0 to AI.
+
+
+ The event is being hosted by AWS and will feature a post-conference
+ karaoke party at Optimism Brewing that you won't want to miss!
+
+
When
+
+ Tuesday, August 8, 2023
+ Doors open at 8am
+ Talks run from 9am - 5pm
+ Closing Party runs from 7pm - midnight
+
+
Where
+
+
+
+
+
Speakers
+
+ {
+ event.talks
+ .sort(() => Math.random() - 0.5) // randomize our array of speakers!
+ .map(t => )
+ }
+
+
Sponsors
+
+
+
+
+
+
+
diff --git a/app/md/conf/promo-info.md b/src/pages/conf/promo-info.md
similarity index 89%
rename from app/md/conf/promo-info.md
rename to src/pages/conf/promo-info.md
index 256197e..b53a7f8 100644
--- a/app/md/conf/promo-info.md
+++ b/src/pages/conf/promo-info.md
@@ -1,6 +1,7 @@
---
title: Promo Information
---
+
## One Sentence
SeattleJS Conf is an amazing 1-day conference covering the latest in web development being hosted by AWS on August 8 in downtown Seattle.
@@ -16,18 +17,14 @@ SeattleJS Conf is a very special 1-day conference bringing together ~300 web dev
- Training Workshops on React & TypeScript
- Closing party & karaoke
-The talks, from industry exports, will cover the latest and greatest in web technologies, from CSS View Transitions to Deno 2.0 to AI.
-
-The event is being hosted by AWS and will feature a post-conference karaoke party at Optimism Brewing that you won't want to miss!
+The talks, from industry exports, will cover the latest and greatest in web technologies, from CSS View Transitions to Deno 2.0 to AI.
+The event is being hosted by AWS and will feature a post-conference karaoke party at Optimism Brewing that you won't want to miss!
## Logo
-https://seattlejs.com/_public/images/seattlejsconf-2023-logo-a274507057.png
+https://seattlejs.com/_public/images/seattlejsconf-2023-logo.png
## Website
https://seattlejs.com/conf
-
-
-
diff --git a/app/md/conf/speaker-info.md b/src/pages/conf/speaker-info.md
similarity index 99%
rename from app/md/conf/speaker-info.md
rename to src/pages/conf/speaker-info.md
index 8707442..c2ab2a7 100644
--- a/app/md/conf/speaker-info.md
+++ b/src/pages/conf/speaker-info.md
@@ -1,6 +1,7 @@
---
title: Speaker Information
---
+
Here is a high-level To Do list for speakers at SeattleJS Conf:
diff --git a/src/pages/events/[id].astro b/src/pages/events/[id].astro
new file mode 100644
index 0000000..e5c7087
--- /dev/null
+++ b/src/pages/events/[id].astro
@@ -0,0 +1,222 @@
+---
+import type { InferGetStaticPropsType, GetStaticPaths } from 'astro'
+import { Image } from 'astro:assets'
+
+import { toHTML } from '@/utils/markdown'
+import { inflateEvent } from '@/utils/data'
+import events from '@/data/events.json'
+import BaseLayout from '@/layouts/BaseLayout.astro'
+import PageContainer from '@/components/PageContainer.astro'
+import { findImage } from '@/utils/image'
+
+export const getStaticPaths = (async () => {
+ return events.map(event => ({ params: { id: event.id }, props: { event } }))
+}) satisfies GetStaticPaths
+
+type Props = InferGetStaticPropsType
+
+const { event: baseEvent } = Astro.props as Props
+const event = inflateEvent(baseEvent)
+const { sponsors, talks, description, date, link } = event
+let location = event.location ?? null
+const pageTitle = event.title
+
+const hasTalks = talks && talks.length > 0
+const hasSponsors = sponsors && sponsors.length > 0
+
+const speakerPhotoGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+ { eager: true },
+)
+
+const findSpeakerPhoto = (photo: string) => {
+ return findImage(speakerPhotoGlob, photo)
+}
+
+const sponsorPhotoGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/sponsors/*.{jpeg,jpg,png,gif,webp,svg}',
+ { eager: true },
+)
+
+const findSponsorPhoto = (photo: string) => {
+ return findImage(sponsorPhotoGlob, photo)
+}
+
+// const eventDate = new Date(date)
+// const eventDateStr = `${eventDate.getFullYear()}-${
+// eventDate.getMonth() + 1
+// }`
+//
+// if (!location) {
+// if (eventDateStr < '2024-07') {
+// location = 'The Collective Seattle, 400 Dexter Ave N, Seattle, WA 98109'
+// } else {
+// location =
+// 'Silicon Valley Bank, 920 5th Ave Suite 300, Seattle, WA 98104'
+// }
+// }
+---
+
+
+
+
Copy HTML to clipboard
+
+ {description &&
}
+ {
+ hasSponsors &&
+ sponsors.map(s => (
+
+
+
+
+
+
+
+ Special thanks to our friends at {s.name} {' '}
+ for sponsoring snacks for this month's event! 😎
+
+
+ ))
+ }
+
+
+ 🗓{' '}
+ {
+ new Date(date).toLocaleDateString(undefined, {
+ weekday: 'long',
+ month: 'long',
+ day: 'numeric',
+ })
+ }
+
+ ⏰ 5:30pm - 8:30pm
+ {location && 📍 {location} }
+
+ 🎟 RSVP
+
+
+ {
+ hasTalks &&
+ talks.map(t => (
+
+
+ {t.type === 'lightning' ? '⚡️ ' : ''}
+ {t.title} by {t.speaker.name}
+
+
+
+
+ {t.abstract &&
}
+
+ ))
+ }
+
+ See you all on{' '}
+ {
+ new Date(date).toLocaleDateString(undefined, {
+ month: 'long',
+ day: 'numeric',
+ })
+ }
+
+
+
+
+
+ {description &&
}
+ {location && {location}
}
+ {
+ hasSponsors &&
+ sponsors.map(s => (
+
+
+
+
+
+
+
+ Special thanks to our friends at {s.name} for
+ sponsoring snacks for this month's event! 😎
+
+
+ ))
+ }
+
+
+ 📆{' '}
+ {
+ new Date(date).toLocaleDateString(undefined, {
+ weekday: 'long',
+ month: 'long',
+ day: 'numeric',
+ })
+ }
+
+ ⏰ 5:30pm - 8:30pm
+ {location && 📍 {location} }
+
+ 🎟 RSVP
+
+
+ {
+ hasTalks &&
+ talks.map(t => (
+
+
+ {t.type === 'lightning' ? '⚡️ ' : ''}
+ {t.title} by {t.speaker.name}
+
+
+
+
+ {t.abstract &&
}
+
+ ))
+ }
+
+
+
+
diff --git a/src/pages/events/index.astro b/src/pages/events/index.astro
new file mode 100644
index 0000000..d37973a
--- /dev/null
+++ b/src/pages/events/index.astro
@@ -0,0 +1,47 @@
+---
+import PageLayout from '@/layouts/PageLayout.astro'
+import events from '@/data/events.json'
+
+const pageTitle = 'Our Past Events'
+
+const sortedEvents = events.sort(
+ (a, b) => +new Date(b.date) - +new Date(a.date),
+)
+---
+
+
+ {sortedEvents.length === 0 && No events at the moment.
}
+ {
+ sortedEvents.length && (
+
+
+ {sortedEvents.map(e => (
+
+ {e.title}
+
+ ))}
+
+
+ )
+ }
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 0000000..43bf5ad
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,85 @@
+---
+import BaseLayout from '@/layouts/BaseLayout.astro'
+import { Image } from 'astro:assets'
+import Event from '@/components/Event.astro'
+import Organizers from '@/components/Organizers.astro'
+import Sponsor from '@/components/Sponsor.astro'
+import events from '@/data/events.json'
+import organizers from '@/data/organizers.json'
+import sponsors from '@/data/sponsors.json'
+import heroImgSrc from '@/images/blank-seattlejs-header.png'
+import Footer from '@/components/Footer.astro'
+import Header from '@/components/Header.astro'
+
+const TWELVE_HOURS = 1000 * 60 * 60 * 12
+const futureEvents = events.filter(
+ t => new Date(`${t.date}T21:00-08:00`).getTime() + TWELVE_HOURS > Date.now(),
+)
+
+// const futureEvents = [events.at(-1)]
+---
+
+
+
+
+
+
Upcoming Meetups
+
+
+ {futureEvents.map(event =>
)}
+
+
+
+
Speaking at the SeattleJS Meetup
+
+ No matter who you are and what your experience level is, you can give a
+ talk at SeattleJS. Please consider submitting an idea to our
+ Call for Presenters !
+
+
Sponsors
+
+
+ If your company would like to sponsor an upcoming meetup, please email us
+ at info@seattlejs.com .
+
+
+
Organizers
+
+
+
+
+
+
diff --git a/app/md/join.md b/src/pages/join.md
similarity index 100%
rename from app/md/join.md
rename to src/pages/join.md
diff --git a/src/pages/live.astro b/src/pages/live.astro
new file mode 100644
index 0000000..4855789
--- /dev/null
+++ b/src/pages/live.astro
@@ -0,0 +1,170 @@
+---
+import { Image } from 'astro:assets'
+
+// import LiveReactions from '@/components/conf/LiveReactions.astro'
+import ShowItem from '@/components/conf/ShowItem.astro'
+import SpeakerShowItem from '@/components/conf/SpeakerShowItem.astro'
+import Sponsor from '@/components/Sponsor.astro'
+import PageLayout from '@/layouts/PageLayout.astro'
+import CourierSrc from '@/images/sponsors/courier.png'
+---
+
+
+
+
+
+
+ Thanks for joining us! Check out all the talks on YouTube below.
+
+ {
+ // playbackId ? (
+ //
+ //
+ // {/* */}
+ //
+ // ) : (
+ //
+ // Livestream will begin on August 8 at 9:00am PT.
+ //
+ // )
+ }
+
+
+
Schedule
+
+
Conference
+
Talk Room
+
+
+
+
+
+
+ Break
+
+
+
+
+
+
Lunch Room
+
+
+ Lunch by
+
+
+
Talk Room
+
+
+
+
+
+ Break
+
+
+
+
+
+
+
After Party
+
+
+
+
+
+
diff --git a/app/md/signup-next-steps.md b/src/pages/signup-next-steps.md
similarity index 83%
rename from app/md/signup-next-steps.md
rename to src/pages/signup-next-steps.md
index 328593f..11a5ea9 100644
--- a/app/md/signup-next-steps.md
+++ b/src/pages/signup-next-steps.md
@@ -1,11 +1,11 @@
---
title: Please Confirm Your Email Address
---
-Thanks! We have sent an email to the address you provided.
+
+Thanks! We have sent an email to the address you provided.
- Please click the link in order to confirm that the email address belongs to you.
- You may need to check your "Promotions" or "Updates" folders.
- To ensure you recieve our emails, please filter emails from info@cascadiajs.com to your Primary inbox.
-
diff --git a/app/md/speak.md b/src/pages/speak.md
similarity index 85%
rename from app/md/speak.md
rename to src/pages/speak.md
index 1ed3616..d86cea6 100644
--- a/app/md/speak.md
+++ b/src/pages/speak.md
@@ -2,11 +2,12 @@
title: Speak at SeattleJS
excerpt: SeattleJS is a safe and inclusive event for everyone building on the web
---
+
![Rachel Lee Nabors speaking at SeattleJS](https://pbs.twimg.com/media/Fe6igRiaEAADO0N?format=jpg&name=large)
## Submitting an Idea
-Whether you are new to web development or a seasoned pro, you can give a talk at SeattleJS.
+Whether you are new to web development or a seasoned pro, you can give a talk at SeattleJS.
Don't let the name SeattleJS fool you - we welcome people and presentations regardless of which technologies you are excited about using to build on the web. Talks about technologies like the browser platform, CSS, NodeJS, and other languages and frameworks like Ruby on Rails, Django, and PHP are all welcome here!
@@ -16,9 +17,9 @@ SeattleJS is a friendly and welcoming group. If you've never presented before or
SeattleJS is equipped to support a few different presentation formats:
-- **Lightning talks** are *5-10 minute* sessions that briefly cover a topic. They tend to be more casual, and are a great fit for sharing something new you learned, and interesting problem you solved recently, and other topics that don't require a ton of depth.
-- **Tech sessions** are *20-30 minutes* and cover a technical topic in depth. Full sessions are usually accompanied by slides or demos. These should cover a topic in reasonable depth. These are also a great way to test out a topic before submitting or presenting at a conference.
-- **Workshops** are *interactive* sessions that are *45 minutes or longer*. In a workshop, the presenter guides the audience through one or more **hands-on coding activities** that they complete on their own computers.
+- **Lightning talks** are _5-10 minute_ sessions that briefly cover a topic. They tend to be more casual, and are a great fit for sharing something new you learned, and interesting problem you solved recently, and other topics that don't require a ton of depth.
+- **Tech sessions** are _20-30 minutes_ and cover a technical topic in depth. Full sessions are usually accompanied by slides or demos. These should cover a topic in reasonable depth. These are also a great way to test out a topic before submitting or presenting at a conference.
+- **Workshops** are _interactive_ sessions that are _45 minutes or longer_. In a workshop, the presenter guides the audience through one or more **hands-on coding activities** that they complete on their own computers.
If you've learned something new or have some hard-won wisdom to share, you'll find SeattleJS a warm and welcoming place to speak.
@@ -26,6 +27,6 @@ Fill-out this f
## Delivering Your Talk
-Please plan on being at the venue at 5PM - 30 minutes before doors open. We will use this time to do a tech check and make sure you are setup for a smooth presentation.
+Please plan on being at the venue at 5PM - 30 minutes before doors open. We will use this time to do a tech check and make sure you are setup for a smooth presentation.
-Please plan on plugging your laptop directly into an **HDMI port** and bring an adapter if your laptop doesn't have an HDMI port.
+Please plan on plugging your laptop directly into an **HDMI port** and bring an adapter if your laptop doesn't have an HDMI port.
diff --git a/src/pages/talks/[id].astro b/src/pages/talks/[id].astro
new file mode 100644
index 0000000..55f4636
--- /dev/null
+++ b/src/pages/talks/[id].astro
@@ -0,0 +1,119 @@
+---
+import conf from '@/data/conf-2023.json'
+import talks from '@/data/talks.json'
+import speakers from '@/data/speakers.json'
+import { toHTML } from '@/utils/markdown'
+import { importImage } from '@/utils/image'
+import type { GetStaticPaths, InferGetStaticPropsType } from 'astro'
+import BaseLayout from '@/layouts/BaseLayout.astro'
+import PageContainer from '@/components/PageContainer.astro'
+import Speaker from '@/components/Speaker.astro'
+import ConfSocialCard from '@/components/conf/ConfSocialCard.astro'
+
+export const getStaticPaths = (async () => {
+ const meetupTalks = talks.map(talk => {
+ const speaker = speakers.find(s => s.id === talk.speaker_id)
+ if (!speaker) {
+ throw new Error(`Speaker not found for talk ${talk.id}`)
+ }
+
+ return {
+ params: { id: talk.id },
+ props: {
+ type: 'meetup',
+ talk,
+ speaker,
+ pageTitle: talk.title,
+ sharing: null,
+ },
+ }
+ })
+
+ const confTalks = conf.talks.map(talk => {
+ return {
+ params: { id: talk.id },
+ props: {
+ type: 'conf-2023',
+ talk,
+ speaker: talk.speaker,
+ pageTitle: `SeattleJS Conf 2023 - ${talk.title}`,
+ sharing: {
+ image: `/_public/images/social/${talk.id}.png`,
+ },
+ },
+ }
+ })
+
+ return [...meetupTalks, ...confTalks]
+}) satisfies GetStaticPaths
+
+type Props = InferGetStaticPropsType
+
+const { type, talk, speaker, sharing, pageTitle } = Astro.props as Props
+
+const bodyTitle =
+ 'type' in talk
+ ? (talk.type === 'lightning' ? '⚡️ ' : '') + talk.title
+ : talk.title
+
+const { title, abstract, topics } = talk
+
+const imageGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+)
+const speakerPhoto = await importImage(imageGlob, speaker.photo)
+---
+
+
+ {
+ type === 'conf-2023' && (
+
+
+
+ )
+ }
+
+
+ {
+ topics ? (
+
+ {topics.map(t => (
+
{t}
+ ))}
+
+ ) : null
+ }
+
+
+
+
+
+
+
+
diff --git a/src/pages/talks/index.astro b/src/pages/talks/index.astro
new file mode 100644
index 0000000..5f200b8
--- /dev/null
+++ b/src/pages/talks/index.astro
@@ -0,0 +1,29 @@
+---
+import baseTalks from '@/data/talks.json'
+import PageLayout from '@/layouts/PageLayout.astro'
+import { inflateTalk } from '@/utils/data'
+
+const talks = baseTalks.map(t => inflateTalk(t.id))
+---
+
+
+
+
+
+ {
+ talks.map(t => (
+
+ {t.title} - Speaker: {t.speaker.name}
+
+ ))
+ }
+
+
diff --git a/app/md/volunteer-guide.md b/src/pages/volunteer-guide.md
similarity index 100%
rename from app/md/volunteer-guide.md
rename to src/pages/volunteer-guide.md
index ef92d34..eeb2dd7 100644
--- a/app/md/volunteer-guide.md
+++ b/src/pages/volunteer-guide.md
@@ -2,6 +2,7 @@
title: Volunteer Guide
excerpt: The ins and outs of running SeattleJS
---
+
## Organzing a new (upcoming) meetup
- Log-in to Tito and click "Create a New Event"
@@ -10,4 +11,3 @@ excerpt: The ins and outs of running SeattleJS
- Update the event info in Settings / Basic
- Update Settings / Dates & Times
- Update Settings / Location (if necessary)
-
diff --git a/app/md/volunteer.md b/src/pages/volunteer.md
similarity index 100%
rename from app/md/volunteer.md
rename to src/pages/volunteer.md
diff --git a/app/md/welcome.md b/src/pages/welcome.md
similarity index 77%
rename from app/md/welcome.md
rename to src/pages/welcome.md
index fa2be8b..1f96336 100644
--- a/app/md/welcome.md
+++ b/src/pages/welcome.md
@@ -1,7 +1,8 @@
---
title: Welcome to SeattleJS!
---
-Your email address is confirmed, welcome to our community!
+
+Your email address is confirmed, welcome to our community!
Here are some other ways you can connect with us:
diff --git a/src/pages/workshops/[id].astro b/src/pages/workshops/[id].astro
new file mode 100644
index 0000000..88f285d
--- /dev/null
+++ b/src/pages/workshops/[id].astro
@@ -0,0 +1,117 @@
+---
+import ConfSocialCard from '@/components/conf/ConfSocialCard.astro'
+import PageContainer from '@/components/PageContainer.astro'
+import Speaker from '@/components/Speaker.astro'
+import conf from '@/data/conf-2023.json'
+import BaseLayout from '@/layouts/BaseLayout.astro'
+import { importImage } from '@/utils/image'
+import { toHTML } from '@/utils/markdown'
+import type { GetStaticPaths, InferGetStaticPropsType } from 'astro'
+
+export const getStaticPaths = (async () => {
+ // TODO: Add meetup workshop data
+ //
+ // const meetupTalks = talks.map(talk => {
+ // const speaker = speakers.find(s => s.id === talk.speaker_id)
+ // if (!speaker) {
+ // throw new Error(`Speaker not found for talk ${talk.id}`)
+ // }
+ //
+ // return {
+ // params: { id: talk.id },
+ // props: {
+ // type: 'meetup',
+ // talk,
+ // speaker,
+ // },
+ // }
+ // })
+
+ const confTalks = conf.workshops.map(workshop => {
+ return {
+ params: { id: workshop.id },
+ props: {
+ type: 'conf-2023',
+ workshop,
+ speaker: workshop.speaker,
+ },
+ }
+ })
+
+ return [...confTalks]
+}) satisfies GetStaticPaths
+
+type Props = InferGetStaticPropsType
+
+const { type, workshop } = Astro.props as Props
+const { topics, abstract, speaker } = workshop
+
+const imageGlob = import.meta.glob<{ default: ImageMetadata }>(
+ '@/images/speakers/*.{jpeg,jpg,png,gif,webp,svg}',
+)
+const speakerPhoto = await importImage(imageGlob, speaker.photo)
+
+const pageTitle = `SeattleJS Conf 2023 - ${workshop.title}`
+const sharing = {
+ image: `/_public/images/social/${workshop.id}.png`,
+}
+---
+
+
+ {
+ type === 'conf-2023' && (
+
+
+
+ )
+ }
+
+
+ {
+ topics ? (
+
+ {topics.map(t => (
+
{t}
+ ))}
+
+ ) : null
+ }
+
+
+
+
+
+
+
+
+
diff --git a/src/scripts/initializeQuerySwitch.ts b/src/scripts/initializeQuerySwitch.ts
new file mode 100644
index 0000000..1f9d5ad
--- /dev/null
+++ b/src/scripts/initializeQuerySwitch.ts
@@ -0,0 +1,32 @@
+/**
+ * Show certain elements only when certain query parameters are available. This
+ * function takes an array of queryKey to element selector mappings and shows
+ * the element corresponding to the first queryKey that is present in the URL.
+ *
+ * They are mutually exclusive, so only one element will be shown at a time.
+ *
+ * A key of empty string will represent the default case, which will be shown
+ * when no other query parameters are present.
+ *
+ * @param cases - A mapping of query parameter values to element selectors.
+ */
+export function initializeQuerySwitch(
+ cases: Array<[queryKey: string, selector: string]>,
+): void {
+ const searchParams = new URLSearchParams(location.search)
+ const queryKey =
+ cases.map(([key]) => key).find(key => searchParams.has(key)) || ''
+
+ for (const [key, selector] of cases) {
+ const elements = document.querySelectorAll(selector)
+ for (const element of elements) {
+ if (key === queryKey) {
+ element.removeAttribute('hidden')
+ element.style.display = ''
+ } else {
+ element.setAttribute('hidden', '')
+ element.style.display = 'none'
+ }
+ }
+ }
+}
diff --git a/src/styles/main.css b/src/styles/main.css
new file mode 100644
index 0000000..455cb8b
--- /dev/null
+++ b/src/styles/main.css
@@ -0,0 +1,145 @@
+html,
+body {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ line-height: 1.5em;
+}
+
+body {
+ font-family: canada-type-gibson, sans-serif;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: headline-gothic-atf-round, sans-serif;
+ font-weight: 400;
+}
+
+h1 {
+ font-size: 210%;
+}
+h2 {
+ font-size: 180%;
+ color: #052460;
+}
+h3 {
+ font-size: 150%;
+}
+h4 {
+ font-size: 120%;
+}
+
+a,
+a:visited {
+ color: blue;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+pre {
+ white-space: pre-wrap;
+}
+
+img {
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ object-fit: contain;
+}
+
+input {
+ display: block;
+ margin-bottom: 8px;
+}
+
+i {
+ width: 25px;
+}
+
+a[target='_blank']:after {
+ display: inline-block;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ font: var(--fa-font-solid);
+ font-size: 10px;
+ margin: 0 8px;
+ content: '\f35d';
+}
+
+[hidden] {
+ display: none;
+}
+
+#page {
+ padding: 8px 24px;
+}
+
+.hero-image {
+ height: auto;
+}
+
+.cta {
+ font-family: headline-gothic-atf-round, sans-serif;
+ background-color: #0033ff;
+ border: 4px solid #0033ff;
+ font-weight: 500;
+}
+
+div.cta {
+ font-size: 120%;
+ margin: 16px 0;
+ display: inline-block;
+}
+
+span.cta {
+ font-size: 18px;
+ padding: 8px;
+}
+
+.cta a,
+.cta a:visited {
+ display: inline-block;
+ padding: 8px 16px;
+ color: #fff5cc;
+ text-decoration: none;
+}
+
+.cta:hover {
+ background-color: #112378;
+ border: 4px solid #112378;
+}
+
+.cta.secondary {
+ color: #0033ff;
+ background: none;
+ border: 4px solid #0033ff;
+}
+
+.cta.secondary a,
+.cta.secondary a:visited {
+ color: #0033ff;
+ text-decoration: none;
+}
+
+.cta.secondary:hover {
+ border: 4px solid #112378;
+}
+
+.cta.secondary:hover a {
+ color: #112378;
+}
+
+@media only screen and (min-width: 768px) {
+ #page {
+ width: 60vw;
+ margin: 0 auto;
+ }
+}
diff --git a/src/utils/data.ts b/src/utils/data.ts
new file mode 100644
index 0000000..8c33af2
--- /dev/null
+++ b/src/utils/data.ts
@@ -0,0 +1,39 @@
+import speakers from '@/data/speakers.json'
+import talks from '@/data/talks.json'
+import sponsors from '@/data/sponsors.json'
+import type {
+ InflatedEvent,
+ InflatedTalk,
+ SJSEvent,
+ Sponsor,
+} from '@/data/types'
+
+export function inflateEvent(event: SJSEvent): InflatedEvent {
+ let inflatedEvent: InflatedEvent = { ...event, talks: [], sponsors: [] }
+ if (event.talks) {
+ inflatedEvent.talks = event.talks.map(inflateTalk)
+ }
+ if (event.sponsors) {
+ inflatedEvent.sponsors = event.sponsors.map(inflateSponsors)
+ }
+ return inflatedEvent
+}
+
+function inflateSponsors(sponsor_id: string): Sponsor {
+ let sponsor = sponsors.find(s => s.id === sponsor_id)
+ if (!sponsor) throw new Error(`Sponsor not found: ${sponsor_id}`)
+ return sponsor
+}
+
+export function inflateTalk(talk_id: string): InflatedTalk {
+ let talk = talks.find(t => t.id === talk_id)
+ if (!talk) throw new Error(`Talk not found: ${talk_id}`)
+
+ let speaker = speakers.find(s => s.id === talk.speaker_id)
+ if (!speaker) throw new Error(`Speaker not found: ${talk.speaker_id}`)
+
+ return {
+ ...talk,
+ speaker,
+ }
+}
diff --git a/src/utils/image.ts b/src/utils/image.ts
new file mode 100644
index 0000000..7ce696b
--- /dev/null
+++ b/src/utils/image.ts
@@ -0,0 +1,66 @@
+type ImageGlobResult = Record<
+ string,
+ () => Promise<{
+ default: ImageMetadata
+ }>
+>
+
+/**
+ * When using `import.meta.glob` without any options or with `{eager: false}`,
+ * use this function to import a single image from the glob.
+ *
+ * Useful when you want to dynamically import a single image from a folder.
+ * @param imageGlob The results of `import.meta.glob` without any options or with
+ * `{eager: false}`
+ * @param fileName The file name of the image to import
+ * @returns The imported image metadata
+ */
+export async function importImage(
+ imageGlob: ImageGlobResult,
+ fileName: string,
+): Promise {
+ const imageMetadata = await Object.entries(imageGlob)
+ .filter(([key]) => key.endsWith(fileName))
+ .map(async ([, value]) => {
+ return (await value()).default
+ })[0]
+
+ if (!imageMetadata) {
+ throw new Error(`Image not found with filename "${fileName}"`)
+ }
+
+ return imageMetadata
+}
+
+type ImageGlobSyncResult = Record<
+ string,
+ {
+ default: ImageMetadata
+ }
+>
+
+/**
+ * When using `import.meta.glob` with `{eager: true}`, use this function to find
+ * a single image from the glob.
+ * @param imageGlob The results of `import.meta.glob` with the {eager: true}
+ * option set
+ * @param fileName The file name of the image to find
+ * @param optional Whether or not to throw an error if the image is not found
+ */
+export function findImage(
+ imageGlob: ImageGlobSyncResult,
+ fileName: string,
+ optional?: T,
+): T extends true ? ImageMetadata | null : ImageMetadata {
+ const imageMetadataKey = Object.keys(imageGlob).find(key =>
+ key.endsWith(`/${fileName}`),
+ )
+
+ if (imageMetadataKey) {
+ return imageGlob[imageMetadataKey].default
+ } else if (optional) {
+ return null as T extends true ? ImageMetadata | null : never
+ } else {
+ throw new Error(`Image not found with filename "${fileName}"`)
+ }
+}
diff --git a/src/utils/markdown.ts b/src/utils/markdown.ts
new file mode 100644
index 0000000..7e7e91c
--- /dev/null
+++ b/src/utils/markdown.ts
@@ -0,0 +1,5 @@
+import { marked } from 'marked'
+
+export function toHTML(markdown: string): string {
+ return marked(markdown, { async: false })
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..5173c10
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "extends": "astro/tsconfigs/strict",
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "preact",
+ "resolveJsonModule": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ },
+ "plugins": [
+ {
+ "name": "@astrojs/ts-plugin"
+ }
+ ]
+ },
+ "include": [".astro/types.d.ts", "src"],
+ "exclude": ["dist"]
+}
diff --git a/urls.json b/urls.json
new file mode 100644
index 0000000..c3214cd
--- /dev/null
+++ b/urls.json
@@ -0,0 +1,119 @@
+[
+ "https://seattlejs.com/",
+ "https://seattlejs.com/events",
+ "https://seattlejs.com/_public/styles/main-7e3a3b89c6.css",
+ "https://seattlejs.com/_public/favicon-d60dbc8577.jpg",
+ "https://seattlejs.com/about-us",
+ "https://seattlejs.com/join",
+ "https://seattlejs.com/conf",
+ "https://seattlejs.com/code-of-conduct",
+ "https://seattlejs.com/speak",
+ "https://seattlejs.com/events/november-2024",
+ "https://seattlejs.com/events/october-2024",
+ "https://seattlejs.com/events/september-2024",
+ "https://seattlejs.com/events/august-2024",
+ "https://seattlejs.com/events/july-2024",
+ "https://seattlejs.com/events/may-2024",
+ "https://seattlejs.com/events/april-2024",
+ "https://seattlejs.com/events/march-2024",
+ "https://seattlejs.com/events/february-2024",
+ "https://seattlejs.com/events/january-2024",
+ "https://seattlejs.com/events/holiday-party-2023",
+ "https://seattlejs.com/events/november-2023",
+ "https://seattlejs.com/events/october-2023",
+ "https://seattlejs.com/events/september-2023",
+ "https://seattlejs.com/events/july-2023",
+ "https://seattlejs.com/events/june-2023",
+ "https://seattlejs.com/events/may-2023",
+ "https://seattlejs.com/events/april-2023",
+ "https://seattlejs.com/events/march-2023",
+ "https://seattlejs.com/events/february-2023",
+ "https://seattlejs.com/events/january-2023",
+ "https://seattlejs.com/events/december-2022",
+ "https://seattlejs.com/events/november-2022",
+ "https://seattlejs.com/events/october-2022",
+ "https://seattlejs.com/events/september-2022",
+ "https://seattlejs.com/events/august-2022",
+ "https://seattlejs.com/events/july-2022",
+ "https://seattlejs.com/events/june-2022",
+ "https://seattlejs.com/events/may-2022",
+ "https://seattlejs.com/_public/images/seattlejsconf-sharing-c15b59d9f6.png",
+ "https://seattlejs.com/live",
+ "https://seattlejs.com/talks/deno-2.0",
+ "https://seattlejs.com/talks/dont-fear-the-linter",
+ "https://seattlejs.com/talks/every-process-everywhere-all-at-once",
+ "https://seattlejs.com/talks/creating-a-design-system",
+ "https://seattlejs.com/talks/rebuilding-in-rust",
+ "https://seattlejs.com/talks/react-rendering-with-nextjs",
+ "https://seattlejs.com/talks/flip-no-more",
+ "https://seattlejs.com/talks/langchain-agents",
+ "https://seattlejs.com/talks/move-over-passwords",
+ "https://seattlejs.com/talks/real-time-multiplayer-reactions-component",
+ "https://seattlejs.com/talks/a-plea-for-boring-tech",
+ "https://seattlejs.com/talks/es13-and-beyond",
+ "https://seattlejs.com/workshops/managing-data-in-a-react-application-aug-7",
+ "https://seattlejs.com/workshops/introduction-to-typescript-aug-9",
+ "https://seattlejs.com/workshops/building-ai-apps-aug-10",
+ "https://seattlejs.com/talks/cat-johnson-november-2024",
+ "https://seattlejs.com/talks/stacy-davis1-november-2024",
+ "https://seattlejs.com/talks/erik-marks-october-2024",
+ "https://seattlejs.com/talks/nicholas-patti-september-2024",
+ "https://seattlejs.com/talks/ben-van-citters-august-2024",
+ "https://seattlejs.com/talks/allan-deutsch-august-2024",
+ "https://seattlejs.com/talks/chris-griffing-july-2024",
+ "https://seattlejs.com/talks/allan-deutsch-may-2024",
+ "https://seattlejs.com/talks/sarah-guthals-phd-may-2024",
+ "https://seattlejs.com/talks/herrington-darkholme-april-2024",
+ "https://seattlejs.com/talks/john-pham-april-2024",
+ "https://seattlejs.com/talks/shruti-kapoor-march-2024",
+ "https://seattlejs.com/talks/eric-jensen-march-2024",
+ "https://seattlejs.com/talks/dm-liao-february-2024",
+ "https://seattlejs.com/talks/fx-wood-february-2024",
+ "https://seattlejs.com/talks/mike-ryan-november-2023",
+ "https://seattlejs.com/talks/doug-wade-november-2023",
+ "https://seattlejs.com/talks/caleb-diehl-october-2023",
+ "https://seattlejs.com/talks/alan-gonzalez-october-2023",
+ "https://seattlejs.com/talks/jan-miksovsky-september-2023",
+ "https://seattlejs.com/talks/peli-de-halleux-september-2023",
+ "https://seattlejs.com/talks/ben-lower-september-2023",
+ "https://seattlejs.com/talks/chris-griffing-july-2023",
+ "https://seattlejs.com/talks/michael-fitzgerald-july-2023",
+ "https://seattlejs.com/talks/geoff-rich-july-2023",
+ "https://seattlejs.com/talks/cristina-rodriguez-june-2023",
+ "https://seattlejs.com/talks/aiden-bai-june-2023",
+ "https://seattlejs.com/talks/dm-liao-june-2023",
+ "https://seattlejs.com/talks/spenser-solys-may-2023",
+ "https://seattlejs.com/talks/tiger-oakes-may-2023",
+ "https://seattlejs.com/talks/michael-solati-april-2023",
+ "https://seattlejs.com/talks/philip-swan-april-2023",
+ "https://seattlejs.com/talks/catherine-johnson-april-2023",
+ "https://seattlejs.com/talks/aaroh-mankad-march-2023",
+ "https://seattlejs.com/talks/mason-lynass-march-2023",
+ "https://seattlejs.com/talks/chris-griffing-march-2023",
+ "https://seattlejs.com/talks/brian-tran-february-2023",
+ "https://seattlejs.com/talks/lupe-canaviri-maydana-februrary-2023",
+ "https://seattlejs.com/talks/jacob-ebey-february-2023",
+ "https://seattlejs.com/talks/calvin-kipperman-january-2023",
+ "https://seattlejs.com/talks/josh-scotland-january-2023",
+ "https://seattlejs.com/talks/tim-obrien-january-2023",
+ "https://seattlejs.com/talks/matthew-bauer-november-2022",
+ "https://seattlejs.com/talks/brian-gershon-november-2022",
+ "https://seattlejs.com/talks/rachel-lee-nabors-october-2022",
+ "https://seattlejs.com/talks/jamund-ferguson-june-2022",
+ "https://seattlejs.com/talks/amber-hoak-may-2022",
+ "https://seattlejs.com/_public/images/social/deno-2.0-c4ba3a8139.png",
+ "https://seattlejs.com/_public/images/social/dont-fear-the-linter-3ce4d66746.png",
+ "https://seattlejs.com/_public/images/social/every-process-everywhere-all-at-once-1b6b606242.png",
+ "https://seattlejs.com/_public/images/social/creating-a-design-system-a039a079f7.png",
+ "https://seattlejs.com/_public/images/social/rebuilding-in-rust-2f56ab6a00.png",
+ "https://seattlejs.com/_public/images/social/react-rendering-with-nextjs-b0e96febb4.png",
+ "https://seattlejs.com/_public/images/social/flip-no-more-40a0166c00.png",
+ "https://seattlejs.com/_public/images/social/langchain-agents-ecd1661290.png",
+ "https://seattlejs.com/_public/images/social/move-over-passwords-bf5cc5ec29.png",
+ "https://seattlejs.com/_public/images/social/real-time-multiplayer-reactions-component-a13cd4acad.png",
+ "https://seattlejs.com/_public/images/social/a-plea-for-boring-tech-c74ac95a1f.png",
+ "https://seattlejs.com/_public/images/social/es13-and-beyond-6c42b7dcfd.png",
+ "https://seattlejs.com/_public/images/social/managing-data-in-a-react-application-aug-7-aa8fc7e3d5.png",
+ "https://seattlejs.com/_public/images/social/introduction-to-typescript-aug-9-d7837798fc.png",
+ "https://seattlejs.com/_public/images/social/building-ai-apps-aug-10-3a0a15dead.png"
+]