diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index b4627dab..f9b5d22e 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ -patreon: ownh -custom: ["https://paypal.me/xen42"] +patreon: ownh +custom: ["https://paypal.me/xen42"] diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 249ac6bb..7a6c635f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,45 +1,45 @@ -name: Bug Report -description: File a bug report -labels: ["bug"] -body: - - type: textarea - id: what-happened - attributes: - label: What Happened? - description: Please describe what happened - validations: - required: true - - type: textarea - id: expected - attributes: - label: What was supposed to happen? - description: If applicable, describe what should have happened instead. - validations: - required: false - - type: dropdown - id: platform - attributes: - label: Platform - description: Please provide which platform you were playing on when you encountered this bug. - options: - - Steam - - Epic Games - - Xbox Game Pass - validations: - required: false - - type: textarea - id: mods - attributes: - label: Mods - description: Please define which mods you had enabled when the problem occurred. - render: Markdown - validations: - required: false - - type: textarea - id: logs - attributes: - label: Logs - description: If you can, try to locate the point in the logs where the error occurred and paste the message displayed here. - render: Shell - validations: - required: false +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: textarea + id: what-happened + attributes: + label: What Happened? + description: Please describe what happened + validations: + required: true + - type: textarea + id: expected + attributes: + label: What was supposed to happen? + description: If applicable, describe what should have happened instead. + validations: + required: false + - type: dropdown + id: platform + attributes: + label: Platform + description: Please provide which platform you were playing on when you encountered this bug. + options: + - Steam + - Epic Games + - Xbox Game Pass + validations: + required: false + - type: textarea + id: mods + attributes: + label: Mods + description: Please define which mods you had enabled when the problem occurred. + render: Markdown + validations: + required: false + - type: textarea + id: logs + attributes: + label: Logs + description: If you can, try to locate the point in the logs where the error occurred and paste the message displayed here. + render: Shell + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index bba1726a..793cb1f2 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ -blank_issues_enabled: true -contact_links: - - name: "Need Help with Creating an Addon?" - url: "https://discord.gg/wusTQYbYTc" - about: "Join our discord and look for #nh-addon-discussion" +blank_issues_enabled: true +contact_links: + - name: "Need Help with Creating an Addon?" + url: "https://discord.gg/wusTQYbYTc" + about: "Join our discord and look for #nh-addon-discussion" diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index c0639498..76411026 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,14 +1,14 @@ -name: Feature Request -description: Request a feature you'd like to see in a later release -labels: ["feature"] -body: - - type: textarea - id: feature - attributes: - label: Feature - description: Describe the feature you'd like to see in New Horizons. - - type: textarea - id: context - attributes: - label: Context - description: Provide any additional context such as screenshots or diagrams here. +name: Feature Request +description: Request a feature you'd like to see in a later release +labels: ["feature"] +body: + - type: textarea + id: feature + attributes: + label: Feature + description: Describe the feature you'd like to see in New Horizons. + - type: textarea + id: context + attributes: + label: Context + description: Provide any additional context such as screenshots or diagrams here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6daf72c8..c1d8e92a 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,15 +1,23 @@ - -## Major features -- - - -## Minor features -- - - -## Improvements -- - - -## Bug fixes -- + + +## Major features + +- + + + +## Minor features + +- + + + +## Improvements + +- + + + +## Bug fixes + +- diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0b6d13a3..24435184 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,73 +1,69 @@ -# Usage: -# -# Build: -# uses: "./.github/workflows/build" -# with: -# build_type: Debug -# -# - -name: Build - -on: - workflow_call: - inputs: - build_type: - description: 'Build type to pass to `dotnet`, should be either "Debug" or "Release"' - required: false - default: "Debug" - type: string - outputs: - schemas_changed: - description: 'Have the schemas been updated?' - value: ${{ jobs.Build.outputs.schemas_changed }} - - - -jobs: - Build: - runs-on: windows-latest - outputs: - schemas_changed: ${{ steps.changed_files.outputs.files_changed }} - steps: - - - name: Checkout Repo - uses: actions/checkout@v3 - - - name: Setup .NET - uses: actions/setup-dotnet@v3 - - # Disable Strong Name Verification to let us pull a switch-a-roo - - name: Disable strong name validation - run: "C:\\\"Program Files (x86)\"\\\"Microsoft SDKs\"\\Windows\\v10.0A\\bin\\\"NETFX 4.8 Tools\"\\x64\\sn.exe -Vr *" - - - name: Remove .csproj.user - run: "rm .\\NewHorizons\\NewHorizons.csproj.user" - - - name: Build Project - run: dotnet build -c ${{ inputs.build_type }} - - - name: Generate Schemas - run: .\SchemaExporter\bin\${{ inputs.build_type }}\SchemaExporter.exe - - - name: Delete XML documentation - run: rm .\NewHorizons\bin\${{ inputs.build_type }}\NewHorizons.xml - - - name: Upload Mod Artifact - uses: actions/upload-artifact@v3 - with: - name: xen.NewHorizons.${{ inputs.build_type }} - path: .\NewHorizons\bin\${{ inputs.build_type }} - - - name: Upload Schemas Artifact - uses: actions/upload-artifact@v3 - with: - name: NewHorizons-Schemas-${{ inputs.build_type }} - path: .\NewHorizons\Schemas - - - name: Verify Changed Schemas - uses: tj-actions/verify-changed-files@v12 - id: changed_files - with: - files: NewHorizons/Schemas/** - +# Usage: +# +# Build: +# uses: "./.github/workflows/build" +# with: +# build_type: Debug +# +# + +name: Build + +on: + workflow_call: + inputs: + build_type: + description: 'Build type to pass to `dotnet`, should be either "Debug" or "Release"' + required: false + default: "Debug" + type: string + outputs: + schemas_changed: + description: "Have the schemas been updated?" + value: ${{ jobs.Build.outputs.schemas_changed }} + +jobs: + Build: + runs-on: windows-latest + outputs: + schemas_changed: ${{ steps.changed_files.outputs.files_changed }} + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + + # Disable Strong Name Verification to let us pull a switch-a-roo + - name: Disable strong name validation + run: "C:\\\"Program Files (x86)\"\\\"Microsoft SDKs\"\\Windows\\v10.0A\\bin\\\"NETFX 4.8 Tools\"\\x64\\sn.exe -Vr *" + + - name: Remove .csproj.user + run: "rm .\\NewHorizons\\NewHorizons.csproj.user" + + - name: Build Project + run: dotnet build -c ${{ inputs.build_type }} + + - name: Generate Schemas + run: .\SchemaExporter\bin\${{ inputs.build_type }}\SchemaExporter.exe + + - name: Delete XML documentation + run: rm .\NewHorizons\bin\${{ inputs.build_type }}\NewHorizons.xml + + - name: Upload Mod Artifact + uses: actions/upload-artifact@v3 + with: + name: xen.NewHorizons.${{ inputs.build_type }} + path: .\NewHorizons\bin\${{ inputs.build_type }} + + - name: Upload Schemas Artifact + uses: actions/upload-artifact@v3 + with: + name: NewHorizons-Schemas-${{ inputs.build_type }} + path: .\NewHorizons\Schemas + + - name: Verify Changed Schemas + uses: tj-actions/verify-changed-files@v12 + id: changed_files + with: + files: NewHorizons/Schemas/** diff --git a/.github/workflows/debug_build.yml b/.github/workflows/debug_build.yml index e69d65c4..7638a694 100644 --- a/.github/workflows/debug_build.yml +++ b/.github/workflows/debug_build.yml @@ -13,14 +13,14 @@ on: jobs: Build: - uses: './.github/workflows/build.yaml' + uses: "./.github/workflows/build.yaml" with: build_type: Debug Update_Schemas: - name: 'Update Schemas' + name: "Update Schemas" needs: Build if: ${{ needs.Build.outputs.schemas_changed == 'true' }} - uses: './.github/workflows/update_schemas.yml' + uses: "./.github/workflows/update_schemas.yml" with: artifact_name: NewHorizons-Schemas-Debug secrets: inherit diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index 3a3ce87a..474d9b49 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -1,89 +1,52 @@ -name: Build Docs - -on: - workflow_call: - inputs: - schemas_artifact: - description: "Name of the artifact that has updated schemas, set to `null` to not update" - default: 'null' - required: false - type: string - push: - branches: [main] - paths: - - docs/** - - NewHorizons/Schemas/* - -env: - URL_PREFIX: '/' - PIPENV_VENV_IN_PROJECT: 1 - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - build: - name: Build Docs - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - run: mkdir ./.venv - - - run: cp -r docs/** . - - - name: Cache Dependencies - uses: actions/cache@v3 - id: cache-dependencies - with: - path: ./.venv - key: ${{ runner.os }}-pip-${{ hashFiles('**/Pipfile.lock') }} - restore-keys: | - ${{ runner.os }}-pipenv - - - name: Install dependecies - uses: VaultVulp/action-pipenv@v2.0.1 - with: - command: install --dev - - - name: Download Schemas - if: ${{ inputs.schemas_artifact != 'null' }} - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.schemas_artifact }} - path: NewHorizons/Schemas - - - name: Copy Schemas - run: cp -rf NewHorizons/Schemas content/pages/ - - - name: Build Site - uses: VaultVulp/action-pipenv@v2.0.1 - with: - command: run menagerie generate - - - name: Upload Artifact - if: success() && github.ref == 'refs/heads/main' - uses: actions/upload-pages-artifact@v1 - with: - path: out/ - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - name: Deploy Docs - needs: build - if: github.ref == 'refs/heads/main' - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 - +name: Build Docs + +on: + workflow_call: + inputs: + schemas_artifact: + description: "Name of the artifact that has updated schemas, set to `null` to not update" + default: "null" + required: false + type: string + push: + branches: [main] + paths: + - docs/** + - NewHorizons/Schemas/* + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Download Schemas + if: ${{ inputs.schemas_artifact != 'null' }} + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.schemas_artifact }} + path: NewHorizons/Schemas + - name: Build Site + uses: withastro/action@v1 + with: + path: ./docs + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/.github/workflows/release_build.yml b/.github/workflows/release_build.yml index e2fd7b20..d27381cc 100644 --- a/.github/workflows/release_build.yml +++ b/.github/workflows/release_build.yml @@ -32,9 +32,9 @@ jobs: - name: Read Manifest id: read-manifest uses: notiz-dev/github-action-json-property@release - with: - path: './NewHorizons/manifest.json' - prop_path: 'version' + with: + path: "./NewHorizons/manifest.json" + prop_path: "version" - name: Print version numbers run: | echo "Manifest version: $MANIFEST_VERSION" diff --git a/.github/workflows/update_release.yml b/.github/workflows/update_release.yml index 1bad2aae..171f6349 100644 --- a/.github/workflows/update_release.yml +++ b/.github/workflows/update_release.yml @@ -1,29 +1,29 @@ name: Create/Update Release on: - pull_request: - branches: [main] - types: - - ready_for_review - - edited - - labeled + pull_request: + branches: [main] + types: + - ready_for_review + - edited + - labeled jobs: - Update_Release: - name: Create/Update Release - if: contains(github.event.pull_request.labels.*.name, 'update-pr') - runs-on: ubuntu-latest - steps: - - name: Create/Update Release - uses: ncipollo/release-action@v1 - with: - allowUpdates: true - name: Version ${{ github.event.pull_request.title }} - tag: v${{ github.event.pull_request.title }} - commit: main - body: | - ${{ github.event.pull_request.body }} + Update_Release: + name: Create/Update Release + if: contains(github.event.pull_request.labels.*.name, 'update-pr') + runs-on: ubuntu-latest + steps: + - name: Create/Update Release + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + name: Version ${{ github.event.pull_request.title }} + tag: v${{ github.event.pull_request.title }} + commit: main + body: | + ${{ github.event.pull_request.body }} - **Generated From PR: ${{ github.event.pull_request.html_url }}** - draft: true - prerelease: false + **Generated From PR: ${{ github.event.pull_request.html_url }}** + draft: true + prerelease: false diff --git a/.github/workflows/update_schemas.yml b/.github/workflows/update_schemas.yml index 6bbf8da7..9f9a4194 100644 --- a/.github/workflows/update_schemas.yml +++ b/.github/workflows/update_schemas.yml @@ -5,10 +5,10 @@ on: inputs: artifact_name: required: true - description: 'Name of the artifact to download and check against' + description: "Name of the artifact to download and check against" type: string -# Prevents schemas from trying to update on old commits +# Prevents schemas from trying to update on old commits concurrency: group: "schemas-${{ github.ref }}" cancel-in-progress: true @@ -27,14 +27,14 @@ jobs: with: name: ${{ inputs.artifact_name }} path: NewHorizons/Schemas/ - + - name: Commit Schemas run: | git config --local user.email "bwc9876@gmail.com" git config --local user.name "Ben C" git add NewHorizons/Schemas/** git commit -m "Updated Schemas" - + - name: Push Schemas uses: ad-m/github-push-action@master with: diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 9120e2b5..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "yaml.schemas": { - "https://json.schemastore.org/github-workflow.json": "vscode-vfs://github%2B7b2276223a312c22726566223a7b2274797065223a342c226964223a226465766f70732f6e65772d776f726b666c6f7773227d7d/xen-42/outer-wilds-new-horizons/.github/workflows/build.yaml" - } -} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b24939ed..240a8b08 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,128 +1,128 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -xen#5498. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +xen#5498. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a8477288..42f21879 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,69 +1,70 @@ -# Contributing - -Thank you for choosing to contribute to New Horizons! - -## Getting Started - -To get started, [fork this repository](https://github.com/xen-42/outer-wilds-new-horizons/fork). -Once you have a fork created, create a new branch off of `dev` where you will make your changes. -Then, clone your fork and checkout your new branch. - -## Building - -To build a development release of New Horizons, use the `Debug` build target. -This will automatically build to your mods directory in OWML (so long as it's in `%APPDATA%/OuterWildsModManager/OWML`). - -### Getting Line Numbers - -To save yourself the pain of decoding where in a function an error occured, you can [download this dll file](https://cdn.discordapp.com/attachments/929787137895854100/936860223983976448/mono-2.0-bdwgc.dll) and place it in `MonoBleedingEdge/EmbedRuntime` of the game's folder. -Then (so long as you build targeting `Debug`), line numbers will be shown in any error that comes from New Horizons - -## Provide examples -When adding a new feature, include a complete set of planet config files that will sufficiently demonstrate the functionality of the feature/bug fix/improvement. This way reviewers can just copy paste these files into the New Horizons planets folder. - -## Updating The Schema - -When you add fields to config classes, please document them using XML documentation so that our action can generate a proper schema. - -```cs -/// -/// This is my new field! -/// -public string myField; -``` - -You can also use `Range` (from `System.ComponentModel.DataAnnotations` NOT Unity), and `DefaultValue`: - -```cs -/// -/// This is my new field! -/// -[Range(0, 100)] -[DefaultValue(50)] -public int myField; -``` - -### Enums - -You can also setup enums in the config classes: - -```cs -[JsonConverter(typeof(StringEnumConverter))] -public enum MyCoolEnum { - [EnumMember(Value = @"value1")] - Value1 = 0, - [EnumMember(Value = @"value2")] - Value2 = 1, -} - -/// -/// My enum field -/// -public MyCoolEnum enumField; -``` - -These will automatically be converted from strings to the proper enum type. - -## Contributing to Documentation - -If you wish to contribute to the documentation, take a look at [Setup.md](docs/Setup.md) in the docs folder. +# Contributing + +Thank you for choosing to contribute to New Horizons! + +## Getting Started + +To get started, [fork this repository](https://github.com/xen-42/outer-wilds-new-horizons/fork). +Once you have a fork created, create a new branch off of `dev` where you will make your changes. +Then, clone your fork and checkout your new branch. + +## Building + +To build a development release of New Horizons, use the `Debug` build target. +This will automatically build to your mods directory in OWML (so long as it's in `%APPDATA%/OuterWildsModManager/OWML`). + +### Getting Line Numbers + +To save yourself the pain of decoding where in a function an error occured, you can [download this dll file](https://cdn.discordapp.com/attachments/929787137895854100/936860223983976448/mono-2.0-bdwgc.dll) and place it in `MonoBleedingEdge/EmbedRuntime` of the game's folder. +Then (so long as you build targeting `Debug`), line numbers will be shown in any error that comes from New Horizons + +## Provide examples + +When adding a new feature, include a complete set of planet config files that will sufficiently demonstrate the functionality of the feature/bug fix/improvement. This way reviewers can just copy paste these files into the New Horizons planets folder. + +## Updating The Schema + +When you add fields to config classes, please document them using XML documentation so that our action can generate a proper schema. + +```cs +/// +/// This is my new field! +/// +public string myField; +``` + +You can also use `Range` (from `System.ComponentModel.DataAnnotations` NOT Unity), and `DefaultValue`: + +```cs +/// +/// This is my new field! +/// +[Range(0, 100)] +[DefaultValue(50)] +public int myField; +``` + +### Enums + +You can also setup enums in the config classes: + +```cs +[JsonConverter(typeof(StringEnumConverter))] +public enum MyCoolEnum { + [EnumMember(Value = @"value1")] + Value1 = 0, + [EnumMember(Value = @"value2")] + Value2 = 1, +} + +/// +/// My enum field +/// +public MyCoolEnum enumField; +``` + +These will automatically be converted from strings to the proper enum type. + +## Contributing to Documentation + +If you wish to contribute to the documentation, take a look at [CONTRIBUTING.md](docs/CONTRIBUTING.md) in the docs folder. diff --git a/NewHorizons/Schemas/text_schema.xsd b/NewHorizons/Schemas/text_schema.xsd index 168caf62..297e21cd 100644 --- a/NewHorizons/Schemas/text_schema.xsd +++ b/NewHorizons/Schemas/text_schema.xsd @@ -7,59 +7,49 @@ - - The different text blocks of this object - + The different text blocks of this object - + - - The conditions for unlocking ship log facts - + The conditions for unlocking ship log facts - - + + + - - The id of this text block - + The id of this text block - - The id of the parent text block - + The id of the parent text block - + - - + - + - - + - - The text to show for this option - + The text to show for this option @@ -68,23 +58,20 @@ - + - - + - + - - + - - Facts to reveal when the player goes through this dialogue node - + Facts to reveal when the player goes through this dialogue + node @@ -95,18 +82,15 @@ - - The ID of a fact to reveal - + The ID of a fact to reveal - - The text block ids (separated by commas) that need to be read to reveal that fact - + The text block ids (separated by commas) that need to be read + to reveal that fact - + \ No newline at end of file diff --git a/README.md b/README.md index a8960beb..49cfb2ff 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,99 @@ -![new horizons thumbnail 2](https://user-images.githubusercontent.com/22628069/154112130-b777f618-245f-44c9-9408-e11141fc5fde.png) - - -[![Support me on Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Downh%26type%3Dpatrons&style=flat)](https://patreon.com/ownh) -[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.com/paypalme/xen42) -![Current version](https://img.shields.io/github/manifest-json/v/xen-42/outer-wilds-new-horizons?color=gree&filename=NewHorizons%2Fmanifest.json) -![Downloads](https://img.shields.io/github/downloads/xen-42/outer-wilds-new-horizons/total) -![Downloads of newest version](https://img.shields.io/github/downloads/xen-42/outer-wilds-new-horizons/latest/total) -![Latest release date](https://img.shields.io/github/release-date/xen-42/outer-wilds-new-horizons) -[![Build](https://github.com/xen-42/outer-wilds-new-horizons/actions/workflows/build.yaml/badge.svg)](https://github.com/xen-42/outer-wilds-new-horizons/actions/workflows/build.yaml) - -*Do you want to create planets using New Horizons?* Then check out our [website](https://nh.outerwildsmods.com/) for all our documentation! - -If you want to see examples of what NH can do check out the [examples add-on](https://github.com/xen-42/ow-new-horizons-examples) or [real solar system add-on](https://github.com/xen-42/outer-wilds-real-solar-system). - -Check the ship's log for how to use your warp drive to travel between star systems! - - - -- [Incompatible mods](#incompatible-mods) -- [Supported mods](#supported-mods) -- [Development](#development) -- [Contact](#contact) -- [Credits](#credits) - - - -## Incompatible mods -- Quantum Space Buddies. -- OW Randomizer. - -## Supported Mods -New Horizons has optional support for a few other mods: -- [Discord Rich Presence](https://outerwildsmods.com/mods/discordrichpresence/): Showcase what New Horizons worlds you're exploring in your Discord status! -- [Voice Acting Mod](https://outerwildsmods.com/mods/voiceactingmod/): Characters in NH can be given voice lines which will work with this mod installed. Try it out by downloading NH Examples and talking to Ernesto! -- [Achievements+](https://outerwildsmods.com/mods/achievements/): New Horizons and its addons have achievements you can unlock with this mod installed! - -## Features -- Load planet meshes or details from asset bundles -- Use our [template Unity project](https://github.com/xen-42/outer-wilds-unity-template) to create assets for use in NH, including all game scripts recovered using UtinyRipper -- Separate solar system scenes accessible via wormhole OR via the ship's new warp drive feature accessible via the ship's log -- Remove or edit existing planets, including what they orbit around -- Create custom planets from heightmaps/texturemaps -- Create stars (and supernovae), comets, asteroid belts, satellites, quantum planets/moons, and custom Dark Bramble dimensions. -- Add stock planet features to custom ones, such as geysers, cloak fields, meteor-launching volcanoes, rafts, tornados, and Dark Bramble seeds/nodes. -- Binary orbits -- Signalscope signals and custom frequencies -- Surface scatter: rocks, trees, etc, using in-game models, or custom ones -- Black hole / white hole pairs -- Custom dialogue, slide-reel projections, translatable text, and custom ship log entries for rumour mode and map mode -- Funnels and variable surface height (can be made of sand/water/lava/star) - -## Development -If you want to help (please dear god help us) then check out the [contact](#contact) info below or the [contributing](https://github.com/xen-42/outer-wilds-new-horizons/blob/master/CONTRIBUTING.md) page. - -The Unity project we use to make asset bundles for this mod is [here](https://github.com/xen-42/new-horizons-unity). - -## Contact -Join the [Outer Wilds Modding Discord](https://discord.gg/MvbCbBz6Q6) if you have any questions or just want to chat about modding! Theres a New Horizons category there dedicated to discussion of this mod. - -## Credits -Main authors: -- [xen](https://github.com/xen-42) -- [Bwc9876](https://github.com/Bwc9876) (New Horizons v0.9.0 onwards) - -New Horizons was made with help from: -- [JohnCorby](https://github.com/JohnCorby) -- [MegaPiggy](https://github.com/MegaPiggy) -- [FreezeDriedMangos](https://github.com/FreezeDriedMangos) -- [Trifid](https://github.com/TerrificTrifid) -- [Hawkbar](https://github.com/Hawkbat) -- And many others, see the [contributors](https://github.com/Outer-Wilds-New-Horizons/new-horizons/graphs/contributors) page. - -Translation credits: -- Russian: Tlya -- German: Nolram -- Spanish: Ciborgm9, Ink, GayCoffee -- French: xen -- Japanese: TRSasasusu - -New Horizons was based off [Marshmallow](https://github.com/misternebula/Marshmallow) was made by: -- [_nebula](https://github.com/misternebula) - -with help from: -- TAImatem -- AmazingAlek -- Raicuparta -- and the Outer Wilds discord server. +![new horizons thumbnail 2](https://user-images.githubusercontent.com/22628069/154112130-b777f618-245f-44c9-9408-e11141fc5fde.png) + +[![Support me on Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Downh%26type%3Dpatrons&style=flat)](https://patreon.com/ownh) +[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.com/paypalme/xen42) +![Current version](https://img.shields.io/github/manifest-json/v/xen-42/outer-wilds-new-horizons?color=gree&filename=NewHorizons%2Fmanifest.json) +![Downloads](https://img.shields.io/github/downloads/xen-42/outer-wilds-new-horizons/total) +![Downloads of newest version](https://img.shields.io/github/downloads/xen-42/outer-wilds-new-horizons/latest/total) +![Latest release date](https://img.shields.io/github/release-date/xen-42/outer-wilds-new-horizons) +[![Build](https://github.com/xen-42/outer-wilds-new-horizons/actions/workflows/build.yaml/badge.svg)](https://github.com/xen-42/outer-wilds-new-horizons/actions/workflows/build.yaml) + +_Do you want to create planets using New Horizons?_ Then check out our [website](https://nh.outerwildsmods.com/) for all our documentation! + +If you want to see examples of what NH can do check out the [examples add-on](https://github.com/xen-42/ow-new-horizons-examples) or [real solar system add-on](https://github.com/xen-42/outer-wilds-real-solar-system). + +Check the ship's log for how to use your warp drive to travel between star systems! + + + +- [Incompatible mods](#incompatible-mods) +- [Supported mods](#supported-mods) +- [Development](#development) +- [Contact](#contact) +- [Credits](#credits) + + + +## Incompatible mods + +- Quantum Space Buddies. +- OW Randomizer. + +## Supported Mods + +New Horizons has optional support for a few other mods: + +- [Discord Rich Presence](https://outerwildsmods.com/mods/discordrichpresence/): Showcase what New Horizons worlds you're exploring in your Discord status! +- [Voice Acting Mod](https://outerwildsmods.com/mods/voiceactingmod/): Characters in NH can be given voice lines which will work with this mod installed. Try it out by downloading NH Examples and talking to Ernesto! +- [Achievements+](https://outerwildsmods.com/mods/achievements/): New Horizons and its addons have achievements you can unlock with this mod installed! + +## Features + +- Load planet meshes or details from asset bundles +- Use our [template Unity project](https://github.com/xen-42/outer-wilds-unity-template) to create assets for use in NH, including all game scripts recovered using UtinyRipper +- Separate solar system scenes accessible via wormhole OR via the ship's new warp drive feature accessible via the ship's log +- Remove or edit existing planets, including what they orbit around +- Create custom planets from heightmaps/texturemaps +- Create stars (and supernovae), comets, asteroid belts, satellites, quantum planets/moons, and custom Dark Bramble dimensions. +- Add stock planet features to custom ones, such as geysers, cloak fields, meteor-launching volcanoes, rafts, tornados, and Dark Bramble seeds/nodes. +- Binary orbits +- Signalscope signals and custom frequencies +- Surface scatter: rocks, trees, etc, using in-game models, or custom ones +- Black hole / white hole pairs +- Custom dialogue, slide-reel projections, translatable text, and custom ship log entries for rumour mode and map mode +- Funnels and variable surface height (can be made of sand/water/lava/star) + +## Development + +If you want to help (please dear god help us) then check out the [contact](#contact) info below or the [contributing](https://github.com/xen-42/outer-wilds-new-horizons/blob/master/CONTRIBUTING.md) page. + +The Unity project we use to make asset bundles for this mod is [here](https://github.com/xen-42/new-horizons-unity). + +## Contact + +Join the [Outer Wilds Modding Discord](https://discord.gg/MvbCbBz6Q6) if you have any questions or just want to chat about modding! Theres a New Horizons category there dedicated to discussion of this mod. + +## Credits + +Main authors: + +- [xen](https://github.com/xen-42) +- [Bwc9876](https://github.com/Bwc9876) (New Horizons v0.9.0 onwards) + +New Horizons was made with help from: + +- [JohnCorby](https://github.com/JohnCorby) +- [MegaPiggy](https://github.com/MegaPiggy) +- [FreezeDriedMangos](https://github.com/FreezeDriedMangos) +- [Trifid](https://github.com/TerrificTrifid) +- [Hawkbar](https://github.com/Hawkbat) +- And many others, see the [contributors](https://github.com/Outer-Wilds-New-Horizons/new-horizons/graphs/contributors) page. + +Translation credits: + +- Russian: Tlya +- German: Nolram +- Spanish: Ciborgm9, Ink, GayCoffee +- French: xen +- Japanese: TRSasasusu + +New Horizons was based off [Marshmallow](https://github.com/misternebula/Marshmallow) was made by: + +- [\_nebula](https://github.com/misternebula) + +with help from: + +- TAImatem +- AmazingAlek +- Raicuparta +- and the Outer Wilds discord server. diff --git a/docs/.eslintrc.yml b/docs/.eslintrc.yml new file mode 100644 index 00000000..7e6563df --- /dev/null +++ b/docs/.eslintrc.yml @@ -0,0 +1,15 @@ +env: + browser: true + es2021: true +extends: + - eslint:recommended + - plugin:@typescript-eslint/recommended +overrides: [] +parser: "@typescript-eslint/parser" +parserOptions: + ecmaVersion: latest + sourceType: module +plugins: + - "@typescript-eslint" +rules: + "@typescript-eslint/no-non-null-assertion": off diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..129d37f1 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,23 @@ +# build output +dist/ +# generated types +.astro/ +# generated schema pages +src/content/docs/schemas/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store diff --git a/docs/.prettierignore b/docs/.prettierignore new file mode 100644 index 00000000..77738287 --- /dev/null +++ b/docs/.prettierignore @@ -0,0 +1 @@ +dist/ \ No newline at end of file diff --git a/docs/.prettierrc.yml b/docs/.prettierrc.yml new file mode 100644 index 00000000..1b86d7e4 --- /dev/null +++ b/docs/.prettierrc.yml @@ -0,0 +1,7 @@ +$schema: "https://json.schemastore.org/prettierrc" +tabWidth: 4 +semi: true +singleQuote: false +trailingComma: none +printWidth: 100 +endOfLine: lf diff --git a/docs/.vscode/extensions.json b/docs/.vscode/extensions.json new file mode 100644 index 00000000..330669cb --- /dev/null +++ b/docs/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "astro-build.astro-vscode", + "davidanson.vscode-markdownlint", + "yzhang.markdown-all-in-one", + "esbenp.prettier-vscode" + ], + "unwantedRecommendations": [] +} diff --git a/docs/.vscode/launch.json b/docs/.vscode/launch.json new file mode 100644 index 00000000..e368c540 --- /dev/null +++ b/docs/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 00000000..6e7191ae --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Contributing To NH Docs + +## Introduction + +Thank you for your interest in contributing to NH Docs! We are excited to have you here. Before you start contributing, we would like you to take a few minutes to read through this document. It will help you understand how we work and how you can contribute. + +## How Pages Are Organized + +Pages in the NH docs are all markdown files. The folder with all the pages is in `src/content/docs`. + +- `index.mdx` Is a special file that is the home page of the docs. This is a markdown X file that allows us to use Astro components in the markdown. +- `start-here` is the folder that contains all the pages for the start here section of the docs. +- `getting-started` is the folder that contains all the pages for the getting started section of the docs. +- `reference` is the folder that contains all the pages for the api section of the docs. + +Finally, the `schemas` folder contains all the schema pages. You might notice that the schema folder is not present in GitHub. This is because the schema pages are auto-generated from the schema files in `../NewHorizons/Schemas`. In order to edit these you need to edit the C# class they correspond to. More info in the main contributing document found one folder up. + +## How To Edit Pages + +As said before, all pages are markdown files. This means that you can edit them with any text editor. You can even edit them directly on GitHub. However, we recommend using VS Code with the markdown preview extension. This will allow you to see a preview of the page as you edit it. + +One thing to note is the section fenced with `---` at the top of each page. This is the frontmatter. It contains metadata about the page. You will most likely only need to edit the `title` and `description` fields. The `title` field is the title of the page. The `description` field is the description of the page. This is used for SEO purposes. You can view all frontmatter options [on the starlight docs](https://starlight.astro.build/reference/frontmatter/). + +If you open this folder (`docs` not the entire repo), VSCode should prompt you to install the recommended extensions. If it doesn't, you can install them manually. The recommended extensions are: + +- astro-build.astro-vscode +- davidanson.vscode-markdownlint +- yzhang.markdown-all-in-one +- esbenp.prettier-vscode + +## How To Add Pages + +Adding pages is very simple. All you need to do is create a new markdown file in the folder you want the page to be in. Then, add the frontmatter to the top of the file. Finally, add the content of the page. You can use the other pages as a reference for how to do this. Advanced pages can be created using Astro components. You can learn more about Astro components [on the Astro docs](https://docs.astro.build/en/core-concepts/astro-components/). You'll need to use `.mdx` instead of `.md` if you want to use Astro components. + +## How To Add Images + +Images are stored in `src/assets/docs-images`. Each page has a folder in here for its images. To add an image create a folder and name it the name of your page. Then do the following: + +```md +![My Image](@/assets/docs-images//) +``` + +Replace `` with the name of your page and `` with the name of your image. + +Your images will be automatically optimized when the site is built. + +## Building The Site + +If you want to get a local copy of the site running, you'll need a few programs + +- [Node.js](https://nodejs.org/en/) +- [PNPM](https://pnpm.io/) + +Once you have these installed, you can run the following commands to get the site running locally: + +```bash +pnpm i +pnpm dev +``` + +This will install all the dependencies and start the dev server. You can view the site at `https://localhost:4321/`. + +You can also run `pnpm build` to build the site. The built site will be in the `dist` folder. + +## Submitting Your Changes + +Before anything, please run `pnpm format` on your changes. This will format all the files in the repo. This is important because it ensures that all the files are formatted the same way. This makes it easier to review your changes. + +Next, create a new branch for your changes. Then, commit your changes to that branch. Finally, push your branch to GitHub and open a pull request with the `documentation` label. diff --git a/docs/Pipfile b/docs/Pipfile deleted file mode 100644 index 6648fd16..00000000 --- a/docs/Pipfile +++ /dev/null @@ -1,12 +0,0 @@ -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] - -[dev-packages] -menagerie-docs = "*" - -[requires] -python_version = "3.11" diff --git a/docs/Pipfile.lock b/docs/Pipfile.lock deleted file mode 100644 index 4bb7eed8..00000000 --- a/docs/Pipfile.lock +++ /dev/null @@ -1,613 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "e93f7f7087f635da529dc8dbaa56be872c12a26be4d8cfcaa9393f12fe7f1bda" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.11" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": {}, - "develop": { - "attrs": { - "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" - ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" - }, - "beautifulsoup4": { - "hashes": [ - "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591", - "sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234" - ], - "markers": "python_full_version >= '3.6.0'", - "version": "==4.12.0" - }, - "certifi": { - "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" - ], - "markers": "python_version >= '3.6'", - "version": "==2022.12.7" - }, - "charset-normalizer": { - "hashes": [ - "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", - "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", - "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", - "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", - "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", - "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", - "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", - "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", - "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", - "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", - "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", - "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", - "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", - "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", - "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", - "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", - "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", - "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", - "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", - "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", - "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", - "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", - "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", - "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", - "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", - "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", - "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", - "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", - "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", - "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", - "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", - "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", - "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", - "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", - "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", - "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", - "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", - "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", - "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", - "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", - "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", - "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", - "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", - "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", - "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", - "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", - "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", - "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", - "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", - "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", - "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", - "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", - "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", - "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", - "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", - "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", - "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", - "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", - "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", - "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", - "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", - "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", - "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", - "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", - "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", - "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", - "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", - "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", - "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", - "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", - "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", - "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", - "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", - "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", - "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" - ], - "markers": "python_full_version >= '3.7.0'", - "version": "==3.1.0" - }, - "click": { - "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" - ], - "markers": "python_version >= '3.7'", - "version": "==8.1.3" - }, - "dataclasses-json": { - "hashes": [ - "sha256:bc285b5f892094c3a53d558858a88553dd6a61a11ab1a8128a0e554385dcc5dd", - "sha256:c2c11bc8214fbf709ffc369d11446ff6945254a7f09128154a7620613d8fda90" - ], - "markers": "python_version >= '3.6'", - "version": "==0.5.7" - }, - "elementpath": { - "hashes": [ - "sha256:2b1b524223d70fd6dd63a36b9bc32e4919c96a272c2d1454094c4d85086bc6f8", - "sha256:dbd7eba3cf0b3b4934f627ba24851a3e0798ef2bc9104555a4cd831f2e6e8e14" - ], - "markers": "python_version >= '3.7'", - "version": "==4.1.0" - }, - "htmlmin": { - "hashes": [ - "sha256:50c1ef4630374a5d723900096a961cff426dff46b48f34d194a81bbe14eca178" - ], - "version": "==0.1.12" - }, - "idna": { - "hashes": [ - "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", - "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" - ], - "markers": "python_version >= '3.5'", - "version": "==3.4" - }, - "jinja2": { - "hashes": [ - "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", - "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" - ], - "markers": "python_version >= '3.7'", - "version": "==3.1.2" - }, - "json-minify": { - "hashes": [ - "sha256:268e6966c0f1dcb32ac54e1d047b83deba9ce711c0763ceba63f26d3aeedf656", - "sha256:499717626144a533d64ed4a1513976cf2212958b6806a66e07dd8e22207df559" - ], - "version": "==0.3.0" - }, - "json-schema-for-humans": { - "hashes": [ - "sha256:1e34f1ae053c0884a52bcfc415f8de10a9dc918554523912f53015d202549f37", - "sha256:62a72dd2edb064fb6f2cb6939670185b80a79317b1e7cdb2132634287b142493" - ], - "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==0.44.4" - }, - "jsonschema": { - "hashes": [ - "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", - "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" - ], - "markers": "python_version >= '3.7'", - "version": "==4.17.3" - }, - "libsass": { - "hashes": [ - "sha256:081e256ab3c5f3f09c7b8dea3bf3bf5e64a97c6995fd9eea880639b3f93a9f9a", - "sha256:3ab5ad18e47db560f4f0c09e3d28cf3bb1a44711257488ac2adad69f4f7f8425", - "sha256:65455a2728b696b62100eb5932604aa13a29f4ac9a305d95773c14aaa7200aaf", - "sha256:89c5ce497fcf3aba1dd1b19aae93b99f68257e5f2026b731b00a872f13324c7f", - "sha256:f1efc1b612299c88aec9e39d6ca0c266d360daa5b19d9430bdeaffffa86993f9" - ], - "markers": "python_version >= '3.6'", - "version": "==0.22.0" - }, - "markdown": { - "hashes": [ - "sha256:31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49", - "sha256:96c3ba1261de2f7547b46a00ea8463832c921d3f9d6aba3f255a6f71386db20c" - ], - "markers": "python_version >= '3.6'", - "version": "==3.3.4" - }, - "markdown2": { - "hashes": [ - "sha256:7d49ca871d3e0e412c65d7d21fcbc13ae897f7876f3e5f14dd4db3b7fbf27f10", - "sha256:90475aca3d9c8e7df6d70c51de5bbbe9edf7fcf6a380bd1044d321500f5445da" - ], - "markers": "python_version >= '3.5' and python_version < '4'", - "version": "==2.4.8" - }, - "markupsafe": { - "hashes": [ - "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed", - "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc", - "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2", - "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460", - "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7", - "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0", - "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1", - "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa", - "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03", - "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323", - "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65", - "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013", - "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036", - "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f", - "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4", - "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419", - "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2", - "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619", - "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a", - "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a", - "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd", - "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7", - "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666", - "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65", - "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859", - "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625", - "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff", - "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156", - "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd", - "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba", - "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f", - "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1", - "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094", - "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a", - "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513", - "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed", - "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d", - "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3", - "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147", - "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c", - "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603", - "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601", - "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a", - "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1", - "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d", - "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3", - "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54", - "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2", - "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6", - "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58" - ], - "markers": "python_version >= '3.7'", - "version": "==2.1.2" - }, - "marshmallow": { - "hashes": [ - "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78", - "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b" - ], - "markers": "python_version >= '3.7'", - "version": "==3.19.0" - }, - "marshmallow-enum": { - "hashes": [ - "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58", - "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072" - ], - "version": "==1.5.1" - }, - "menagerie-docs": { - "hashes": [ - "sha256:ad6ff178b3edc493b7e031d932616e4aaef788c2e796494e729fb2fb96c334eb", - "sha256:bfd5b78c8a2931983a1941ee2e96204b93e5ff90f5bbc0e0178c763de42b844f" - ], - "index": "pypi", - "version": "==0.1.14" - }, - "more-itertools": { - "hashes": [ - "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d", - "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3" - ], - "markers": "python_version >= '3.7'", - "version": "==9.1.0" - }, - "mypy-extensions": { - "hashes": [ - "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", - "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" - ], - "markers": "python_version >= '3.5'", - "version": "==1.0.0" - }, - "ndicts": { - "hashes": [ - "sha256:010b0c94180fe89e7e0d5fa89909c4bd7784c52d56908d4d776337c9358378e9", - "sha256:1a1f31cdb770c037c9cc9bc27a8493e43bfe035a606d3630c2e3d14eabe7bfbf" - ], - "markers": "python_version >= '3.8' and python_version < '4.0'", - "version": "==0.3.0" - }, - "packaging": { - "hashes": [ - "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", - "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" - ], - "markers": "python_version >= '3.7'", - "version": "==23.0" - }, - "pillow": { - "hashes": [ - "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33", - "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b", - "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e", - "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35", - "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153", - "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9", - "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569", - "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57", - "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8", - "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1", - "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264", - "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157", - "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9", - "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133", - "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9", - "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab", - "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6", - "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5", - "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df", - "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503", - "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b", - "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa", - "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327", - "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493", - "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d", - "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4", - "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4", - "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35", - "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2", - "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c", - "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011", - "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a", - "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e", - "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f", - "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848", - "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57", - "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f", - "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c", - "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9", - "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5", - "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9", - "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d", - "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0", - "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1", - "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e", - "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815", - "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0", - "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b", - "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd", - "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c", - "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3", - "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab", - "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858", - "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5", - "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee", - "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343", - "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb", - "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47", - "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed", - "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837", - "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286", - "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28", - "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628", - "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df", - "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d", - "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d", - "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a", - "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6", - "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336", - "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132", - "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070", - "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe", - "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a", - "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd", - "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391", - "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a", - "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12" - ], - "markers": "python_version >= '3.7'", - "version": "==9.4.0" - }, - "pygments": { - "hashes": [ - "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", - "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" - ], - "markers": "python_version >= '3.6'", - "version": "==2.14.0" - }, - "pyrsistent": { - "hashes": [ - "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", - "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", - "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", - "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", - "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", - "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", - "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", - "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", - "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", - "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", - "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", - "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", - "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", - "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", - "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", - "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", - "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", - "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", - "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", - "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", - "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", - "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", - "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", - "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", - "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", - "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", - "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" - ], - "markers": "python_version >= '3.7'", - "version": "==0.19.3" - }, - "pytz": { - "hashes": [ - "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", - "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" - ], - "version": "==2023.3" - }, - "pyyaml": { - "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "markers": "python_version >= '3.6'", - "version": "==6.0" - }, - "rcssmin": { - "hashes": [ - "sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72", - "sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a", - "sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a", - "sha256:4f9400b4366d29f5f5446f58e78549afa8338e6a59740c73115e9f6ac413dc64", - "sha256:705c9112d0ed54ea40aecf97e7fd29bdf0f1c46d278a32d8f957f31dde90778a", - "sha256:79421230dd67c37ec61ed9892813d2b839b68f2f48ef55c75f976e81701d60b4", - "sha256:868215e1fd0e92a6122e0ed5973dfc7bb8330fe1e92274d05b2585253b38c0ca", - "sha256:8a26fec3c1e6b7a3765ccbaccc20fbb5c0ed3422cc381e01a2607f08d7621c44", - "sha256:8fcfd10ae2a1c4ce231a33013f2539e07c3836bf17cc945cc25cc30bf8e68e45", - "sha256:908fe072efd2432fb0975a61124609a8e05021367f6a3463d45f5e3e74c4fdda", - "sha256:914e589f40573035006913861ed2adc28fbe70082a8b6bff5be7ee430b7b5c2e", - "sha256:a04d58a2a21e9a089306d3f99c4b12bf5b656a79c198ef2321e80f8fd9afab06", - "sha256:a417735d4023d47d048a6288c88dbceadd20abaaf65a11bb4fda1e8458057019", - "sha256:c30f8bc839747b6da59274e0c6e4361915d66532e26448d589cb2b1846d7bf11", - "sha256:c7278c1c25bb90d8e554df92cfb3b6a1195004ead50f764653d3093933ee0877", - "sha256:c7728e3b546b1b6ea08cab721e8e21409dbcc11b881d0b87d10b0be8930af2a2", - "sha256:cf74d7ea5e191f0f344b354eed8b7c83eeafbd9a97bec3a579c3d26edf11b005", - "sha256:d0afc6e7b64ef30d6dcde88830ec1a237b9f16a39f920a8fd159928684ccf8db", - "sha256:d4e263fa9428704fd94c2cb565c7519ca1d225217943f71caffe6741ab5b9df1", - "sha256:e923c105100ab70abde1c01d3196ddd6b07255e32073685542be4e3a60870c8e", - "sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1", - "sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f", - "sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51" - ], - "version": "==1.1.1" - }, - "requests": { - "hashes": [ - "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa", - "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.2" - }, - "rjsmin": { - "hashes": [ - "sha256:113132a40ce7d03b2ced4fac215f0297338ed1c207394b739266efab7831988b", - "sha256:122aa52bcf7ad9f12728d309012d1308c6ecfe4d6b09ea867a110dcad7b7728c", - "sha256:145c6af8df42d8af102d0d39a6de2e5fa66aef9e38947cfb9d65377d1b9940b2", - "sha256:1f982be8e011438777a94307279b40134a3935fc0f079312ee299725b8af5411", - "sha256:3453ee6d5e7a2723ec45c2909e2382371783400e8d51952b692884c6d850a3d0", - "sha256:35827844d2085bd59d34214dfba6f1fc42a215c455887437b07dbf9c73019cc1", - "sha256:35f21046504544e2941e04190ce24161255479133751550e36ddb3f4af0ecdca", - "sha256:5d67ec09da46a492186e35cabca02a0d092eda5ef5b408a419b99ee4acf28d5c", - "sha256:747bc9d3bc8a220f40858e6aad50b2ae2eb7f69c924d4fa3803b81be1c1ddd02", - "sha256:7dd58b5ed88233bc61dc80b0ed87b93a1786031d9977c70d335221ef1ac5581a", - "sha256:812af25c08d6a5ae98019a2e1b47ebb47f7469abd351670c353d619eaeae4064", - "sha256:8a6710e358c661dcdcfd027e67de3afd72a6af4c88101dcf110de39e9bbded39", - "sha256:8c340e251619c97571a5ade20f147f1f7e8664f66a2d6d7319e05e3ef6a4423c", - "sha256:99c074cd6a8302ff47118a9c3d086f89328dc8e5c4b105aa1f348fb85c765a30", - "sha256:b8464629a18fe69f70677854c93a3707976024b226a0ce62707c618f923e1346", - "sha256:bbd7a0abaa394afd951f5d4e05249d306fec1c9674bfee179787674dddd0bdb7", - "sha256:bc5bc2f94e59bc81562c572b7f1bdd6bcec4f61168dc68a2993bad2d355b6e19", - "sha256:bd1faedc425006d9e86b23837d164f01d105b7a8b66b767a9766d0014773db2a", - "sha256:ca90630b84fe94bb07739c3e3793e87d30c6ee450dde08653121f0d9153c8d0d", - "sha256:d332e44a1b21ad63401cc7eebc81157e3d982d5fb503bb4faaea5028068d71e9", - "sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3", - "sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807", - "sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65" - ], - "version": "==1.2.1" - }, - "soupsieve": { - "hashes": [ - "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955", - "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a" - ], - "markers": "python_version >= '3.7'", - "version": "==2.4" - }, - "typing-extensions": { - "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" - ], - "markers": "python_version >= '3.7'", - "version": "==4.5.0" - }, - "typing-inspect": { - "hashes": [ - "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188", - "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d" - ], - "version": "==0.8.0" - }, - "urllib3": { - "hashes": [ - "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", - "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.15" - }, - "xmlschema": { - "hashes": [ - "sha256:0caa96668807b4b51c42a0fe2b6610752bc59f069615df3e34dcfffb962973fd", - "sha256:557f3632b54b6ff10576736bba62e43db84eb60f6465a83818576cd9ffcc1799" - ], - "markers": "python_version >= '3.7'", - "version": "==2.2.2" - } - } -} diff --git a/docs/Setup.md b/docs/Setup.md deleted file mode 100644 index c443f581..00000000 --- a/docs/Setup.md +++ /dev/null @@ -1,41 +0,0 @@ -# Setup to build docs - -## Requirements -- Python 3.10 - -## Clone the repo -Clone the entire repo and navigate to the docs folder -```shell -git clone https://github.com/xen-42/outer-wilds-new-horizons -cd outer-wilds-new-horizons/docs -``` - -## Setup Pipenv -Install pipenv if you haven't already -```shell -pip install --user pipenv -``` -Install dependencies -```shell -pipenv install --dev -``` - -## Environment Variables -- URL_PREFIX: Path to put before all links and static files, see below for recommended values - - Production and Local Builds: "/" - - PyCharm Development Server: "/outer-wilds-new-horizons/docs/out/" - -## Copy Schemas -Create a folder called `schemas` in the `docs/content/pages/` folder and copy all schemas to generate into it, make sure not to add this folder to git. -Production build automatically copies over schemas. - -## Generating -Run `generate` with pipenv -```shell -pipenv run menagerie generate -``` - -## Opening -- Production: Go to the site -- Local: Go into `docs/out` in a new terminal window and run `py -m http.server 8080` and then connect to http://localhost:8080/ -- PyCharm Development Server: Right click `out/index.html` -> Open In -> Browser -> Default diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs new file mode 100644 index 00000000..61ba83dc --- /dev/null +++ b/docs/astro.config.mjs @@ -0,0 +1,111 @@ +import { defineConfig } from "astro/config"; +import starlight from "@astrojs/starlight"; + +import rehypeExternalLinks from "rehype-external-links"; + +import makeSchemasPlugin from "./src/plugins/schema-plugin"; + +const url = "https://nh.outerwildsmods.com"; + +const schemas = [ + "body_schema.json", + "star_system_schema.json", + "translation_schema.json", + "addon_manifest_schema.json", + "dialogue_schema.xsd", + "text_schema.xsd", + "shiplog_schema.xsd" +]; + +const ogMeta = (name, val) => ({ + tag: "meta", + attrs: { + property: `og:${name}`, + content: val + } +}); + +const twMeta = (name, val) => ({ + tag: "meta", + attrs: { + name: `twitter:${name}`, + content: val + } +}); + +// https://astro.build/config +export default defineConfig({ + site: url, + compressHTML: true, + markdown: { + rehypePlugins: [rehypeExternalLinks] + }, + integrations: [ + starlight({ + title: "New Horizons", + description: + "Documentation on how to use the New Horizons planet creation tool for Outer Wilds.", + defaultLocale: "en-us", + favicon: "/favicon.png", + plugins: [makeSchemasPlugin({ schemas })], + components: { + PageSidebar: "/src/components/ConditionalPageSidebar.astro" + }, + customCss: ["/src/styles/custom.css"], + logo: { + src: "/src/assets/icon.webp", + alt: "The New Horizons Logo" + }, + social: { + github: "https://github.com/Outer-Wilds-New-Horizons/new-horizons", + discord: "https://discord.gg/wusTQYbYTc" + }, + head: [ + ogMeta("image", `${url}/og_image.webp`), + ogMeta("image:width", "1200"), + ogMeta("image:height", "400"), + twMeta("card", "summary"), + twMeta("image", `${url}/og_image.webp`), + { tag: "meta", attrs: { name: "theme-color", content: "#ffab8a" } } + ], + sidebar: [ + { + label: "Start Here", + autogenerate: { + directory: "start-here" + } + }, + { + label: "Guides", + autogenerate: { + directory: "guides" + } + }, + { + label: "Schemas", + items: [ + { label: "Celestial Body Schema", link: "schemas/body-schema" }, + { label: "Star System Schema", link: "schemas/star-system-schema" }, + { label: "Translation Schema", link: "schemas/translation-schema" }, + { label: "Addon Manifest Schema", link: "schemas/addon-manifest-schema" }, + { label: "Dialogue Schema", link: "schemas/dialogue-schema" }, + { label: "Text Schema", link: "schemas/text-schema" }, + { label: "Ship Log Schema", link: "schemas/shiplog-schema" } + ] + }, + { + label: "Reference", + autogenerate: { + directory: "reference" + } + } + ] + }) + ], + // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp + image: { + service: { + entrypoint: "astro/assets/services/sharp" + } + } +}); diff --git a/docs/config.json b/docs/config.json deleted file mode 100644 index 3f15c8e4..00000000 --- a/docs/config.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/Bwc9876/menagerie/master/menagerie/schemas/config_schema.json", - "cache_enabled": false, - "base_url": "https://nh.outerwildsmods.com/", - "themes": { - "bootstrap": "https://bootswatch.com/5/darkly/bootstrap.min.css", - "highlight_js": "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.4.0/styles/github-dark-dimmed.min.css", - "theme": "dark" - }, - "styles": { - "base": "styles/nh_base.css" - }, - "search": { - "enabled": false, - "site": "nh.outerwildsmods.com" - }, - "brand": { - "app_name": "New Horizons", - "favicon_folder": "fav/", - "navbar_icon": "images/icon.webp", - "navbar_icon_size": [ - 29, - 29 - ], - "socials": [ - { - "name": "Discord", - "link": "https://discord.gg/wusTQYbYTc", - "icon": "discord" - }, - { - "name": "GitHub", - "link": "https://github.com/xen-42/outer-wilds-new-horizons", - "icon": "github" - }, - { - "name": "Patreon", - "link": "https://patreon.com/ownh", - "icon": "coin" - } - ], - "meta": { - "search_console_code": "SafYg2zgXPfpW4MZbkBTpAtuNs5W7N-upr08Kv6tyMo", - "description": "Documentation on how to use the New Horizons planet creation tool for Outer Wilds.", - "keywords": [ - "New Horizons", - "Outer Wilds", - "Modding", - "C#", - "Unity" - ], - "categories": [ - "games", - "utilities" - ], - "image": "images/home/home_logo.webp", - "image_alt": "The New Horizons Logo", - "theme_color": "#ffab8a", - "bg_color": "#1a1a1a" - }, - "footer": { - "show_made_with": false, - "links": [ - { - "link": "https://github.com/xen-42/outer-wilds-new-horizons/issues/new/choose", - "text": "Report an issue", - "external": true - } - ] - } - } -} diff --git a/docs/content/pages/404.md b/docs/content/pages/404.md deleted file mode 100644 index 2d3034e9..00000000 --- a/docs/content/pages/404.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -Title: Page not Found -Hide_In_Nav: True -Render_TOC: False ---- - -# Page Not Found - -The page you requested could not be found. - diff --git a/docs/content/pages/editor.md b/docs/content/pages/editor.md deleted file mode 100644 index fd314789..00000000 --- a/docs/content/pages/editor.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -Title: Config Editor -Sort_Priority: 50 ---- - -# Config Editor - -Are you tired of manually editing JSON? Do you want richer validation than a JSON schema? Well then the config editor may be for you! - -This page outlines how to install and use the config editor. - -## Installation - -To get started, head over to the [releases page for the editor](https://github.com/Outer-Wilds-New-Horizons/nh-config-editor/releases/latest) and install the file for your OS: - -- Windows: The .msi file (not the .msi.zip and .msi.zip.sig file) -- MacOS: The .AppImage file (not the .AppImage.tar.gz or the .AppImage.tar.gz.sig file) - -Follow the installer instructions to complete setup - -## Creating a New Project - -Creating a new project is as simple as clicking the button. -Fill out the form with thr info for your mod and a new project will be made at the specified path. - -## Editing Files - -To edit a file, navigate to it in the left panel and click on it. - -### JSON files - -JSON files (planets, systems, etc) have a graphical interface for editing, **this will clear comments!** - -If you don't want comments to be cleared, use the text editor - -#### Using the Text Editor - -Already familiar with JSON and prefer text-based editing? Simply open up settings (File -> Settings) and turn on the "Always use Text Editor" option. - -### Image and Audio Files - -You can view images and play audio files with this editor. - -### XML Files - -Right now, XML support is limited. You'll get syntax highlighting but no error checking or autofill. - - -## Running the Game - -You can start the game from the editor by selecting Project -> Run Project this will open a new window where you can run the game - -### Log Port - -If you're using the mod manager and would like logs to appear there, you need to get the log port from the console, it's always the first entry in the logs. Keep in mind this port changes whenever you restart the manager. - -![Get the log port]({{ "images/editor/log_port.webp"|static }}) - - -## Building - -The editor also provides a system for building your mod to a zip file, which can then be uploaded to GitHub in a release. To do this, press Project -> Build (Release) - - - diff --git a/docs/content/pages/faq.jinja2 b/docs/content/pages/faq.jinja2 deleted file mode 100644 index 717f0d4a..00000000 --- a/docs/content/pages/faq.jinja2 +++ /dev/null @@ -1,88 +0,0 @@ -{#~ Title:FAQ ~#} -{#~ Sort_Priority:95 ~#} -{#~ Render_TOC:False ~#} - - -{% macro faq(id, q, a) %} -
-

- -

-
-
- {{ ("A: " + a)|simple_md|replace('

', '

')|safe }} -

-
-
-{% endmacro %} - -

FAQ

- -
- {{ - faq( - "is-easy", - "How easy is it to make a planet mod?", - "Easy, you don't even need to know how to code! Just start off slowly and make a single planet with a few surface details. Don't try to make a full DLC-scale story mod on your first try." - ) - }} - {{ - faq( - "model-whole-planet", - "Can I model my entire planet in Blender and put it into the game?", - "Yes! Follow the instructions on the Detailing page. All you have to do is add that model as a single detail prop at the center of the planet." - ) - }} - {{ - faq( - "why-no-planet", - "Why doesn't my planet show up in game?", - "Have you checked the logs for errors? Are you using a program like [VSCode](https://code.visualstudio.com/){ target='_blank' } to write your configs that validates them against our schema to catch your errors? Do you incrementally test each new planet that you add, or did you write 10 json files and then try them all at once? If you're still not sure, come by our [Discord channel](https://discord.gg/wusTQYbYTc){ target='_blank' } (`#nh-addon-discussion`) and we'll try to help out!" - ) - }} - {{ - faq( - "ui-program", - "Will you make a UI program to generate json files in the future?", - "Yes! It's available [on GitHub](https://github.com/Outer-Wilds-New-Horizons/nh-config-editor){ target='_blank' }." - ) - }} - {{ - faq( - "when-version-1", - "When will New Horizons get to version 1.0.0.", - "It already did **BOZO**!!!!!" - ) - }} - {{ - faq( - "feature-request", - "When will (*insert feature request here*) be implemented into New Horizons?", - "If it's on the road-map, eventually. If it's not on the road-map let us know and we'll see if it's something we can consider adding." - ) - }} - {{ - faq( - "i-dont-use-reload-configs", - "It takes so long to test my mod because I keep having to restart my game whenever I change something in a config.", - "That's not a question. But go into your mod settings in game and enable Debug mode on New Horizons. Now there will be a “Reload Configs” button in your options screen that will reload all your planets without restarting your game!" - ) - }} - {{ - faq( - "rails", - "Will you ditch the physics simulation and instead track planet positions on their orbits as a function of time, effectively putting the planets on rails and thereby making the game more efficient and accurate at the expense of the game's original vision as being an actual simulation of orbital mechanics?", - "**No.**" - ) - }} - {{ - faq( - "jammer", - "Will Jammer Be Added?", - "Yes! Check **your front door**" - ) - }} -
- diff --git a/docs/content/pages/home.md b/docs/content/pages/home.md deleted file mode 100644 index 6fc7c70e..00000000 --- a/docs/content/pages/home.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -Title: Home -Out_File: index -Sort_Priority: 100 ---- - -![New Horizons Logo]({{ 'images/home/home_logo.webp'|static }}) - -# Outer Wilds New Horizons - -This is the official documentation for [New Horizons](https://github.com/xen-42/outer-wilds-new-horizons), a framework for creating custom planets in the game [Outer Wilds](https://www.mobiusdigitalgames.com/outer-wilds.html) by Mobius Digital. Planets are created using simple JSON and XML files and are loaded at runtime. An [API]({{ "API"|route }}) is also provided for more advanced use-cases. - -## Getting Started - -For a guide on getting started with New Horizons, go to the [Getting Started]({{ "Getting Started"|route }}) page. - -## Helpful Resources - -The texturemap/heightmap feature was inspired by the Kerbal Space Program mod Kopernicus. A lot of the same techniques that apply to -planet creation there apply to New Horizons. If you need help with planetary texturing, check out [The KSP texturing guide](https://forum.kerbalspaceprogram.com/index.php?/topic/165285-planetary-texturing-guide-repository/){ target="_blank" }. - -[Photopea](https://www.photopea.com/){ target="_blank" } is a free browser-based photo editor which has useful features like -rectangular-to-polar coordinate transformation, useful for fixing abnormalities at the poles of your planets. - -### Helpful Mods - -These mods are useful when developing your addon - -- [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer){ target="_blank" } - Used to find the paths of game objects for copying and can be used to manually position props, ship log entries, and more. -- [Collider Visualizer](https://outerwildsmods.com/mods/collidervisualizer){ target="_blank" } - Useful when creating dialogue triggers or reveal volumes -- [Save Editor](https://outerwildsmods.com/mods/saveeditor){ target="_blank" } - Useful when creating a custom [ship log]({{ "Ship Log"|route }}), can be used to reveal all custom facts so you can see them in the ship's computer - -### Helpful Tools - -These tools/references are highly recommended - -- [VSCode](https://code.visualstudio.com/){ target="_blank" } -- [VSCode XML Addon](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml){ target="_blank" } -- [XML Basics Tutorial](https://www.w3schools.com/xml/xml_whatis.asp){ target="_blank" } -- [JSON Basics Tutorial](https://www.tutorialspoint.com/json/index.htm){ target="_blank" } -- [The Examples Mod](https://github.com/xen-42/ow-new-horizons-examples){ target="_blank" } - -## Disclaimer - -This work is unofficial fan content created under permission from the [Mobius Digital Fan Content Policy](https://www.mobiusdigitalgames.com/fan-content-policy.html). It includes materials which are the property of Mobius Digital, and it is neither approved nor endorsed by Mobius Digital. - -We are not responsible for any mods created using the New Horizons modding framework and assume no responsibility in the event an addon violates the terms. - -## License - -The license for this project is available [on the GitHub repository](https://github.com/xen-42/outer-wilds-new-horizons/blob/main/LICENSE). diff --git a/docs/content/pages/reference/_folder.json b/docs/content/pages/reference/_folder.json deleted file mode 100644 index 42d3390d..00000000 --- a/docs/content/pages/reference/_folder.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://github.com/Bwc9876/menagerie/raw/master/menagerie/schemas/folder_schema.json", - "sort_priority": 15 -} \ No newline at end of file diff --git a/docs/content/pages/reference/audio_enum.md b/docs/content/pages/reference/audio_enum.md deleted file mode 100644 index f3afe4c2..00000000 --- a/docs/content/pages/reference/audio_enum.md +++ /dev/null @@ -1,1934 +0,0 @@ ---- -Title: AudioClip Values -Description: Numbers for audio values for slide reels -Hide_In_Nav: False -Render_TOC: False ---- - -# Audio values - -These values can be used to set the sound for slide reels, signals, audio volumes, cloak volumes, and star system travel music. Normally this will be set with a parameter called "audio". - -## AudioType - -Ignore the numbers, just take what is on the left of the equals sign. - -None = 0, -Menu_RebindKey = 1, -Menu_ResetDefaults = 2, -Menu_UpDown = 3, -Menu_LeftRight = 4, -Menu_ChangeTab = 5, -Menu_Pause = 6, -Menu_Unpause = 7, -Menu_SliderIncrement = 8, -ToolScopeEquip = 100, -ToolScopeUnequip = 101, -ToolScopeSwitchFreq = 104, -ToolScopeStatic = 105, -ToolScopeHideAndSeekSignal = 106, -ToolScopeZoomAdjust = 107, -ToolScopeIdentifySignal = 108, -ToolItemScrollPickUp = 200, -ToolItemScrollDrop = 201, -ToolItemScrollInsert = 202, -ToolItemScrollRemove = 203, -ToolItemWarpCorePickUp = 204, -ToolItemWarpCoreDrop = 205, -ToolItemWarpCoreInsert = 206, -ToolItemWarpCoreRemove = 207, -ToolItemSharedStonePickUp = 208, -ToolItemSharedStoneDrop = 209, -ToolItemSharedStoneInsert = 210, -ToolItemSharedStoneRemove = 211, -ToolRepairing_LP = 300, -ToolRepairComplete = 301, -ToolTranslatorEquip = 400, -ToolTranslatorUnequip = 401, -ToolTranslateText_LP = 402, -ToolFlashlightOn = 500, -ToolFlashlightOff = 501, -ToolFlashlightFlicker = 502, -ToolProbeEquip = 600, -ToolProbeUnequip = 601, -ToolProbeLaunch = 602, -ToolProbeLaunchUnderwater = 603, -ToolProbeTakePhoto = 604, -ToolProbeTakeReversePhoto = 605, -ToolProbeRetrieve = 606, -ToolProbeFlight_LP = 607, -ToolProbeAttach = 608, -ToolProbeChangeMode = 609, -ToolMarshmallowEquip = 700, -ToolMarshmallowReplace = 701, -ToolMarshmallowIgnite = 702, -ToolMarshmallowBlowOut = 703, -ToolMarshmallowEat = 704, -ToolMarshmallowEatBurnt = 705, -ToolMarshmallowToss = 706, -PlayerSuitWearSuit = 800, -PlayerSuitRemoveSuit = 801, -PlayerSuitWearHelmet = 802, -PlayerSuitRemoveHelmet = 803, -PlayerSuitOxygenRefill = 804, -PlayerSuitOxygenLeak_In = 805, -PlayerSuitOxygenLeak_LP = 806, -PlayerSuitOxygenLeak_Out = 807, -PlayerSuitLockOn = 808, -PlayerSuitLockOff = 809, -PlayerSuitWarning = 810, -PlayerSuitCriticalWarning = 811, -PlayerSuitJetpackThrustTranslational_LP = 812, -PlayerSuitJetpackThrustRotational = 813, -PlayerSuitJetpackBoost = 814, -PlayerSuitJetpackThrustRotationalUnderwater_LP = 816, -PlayerSuitJetpackThrustUnderwater_LP = 817, -PlayerSuitRainOnHelmet = 818, -PlayerSuitNotificationTextScroll_In = 820, -PlayerSuitNotificationTextScroll_LP = 821, -PlayerSuitHelmetCrack = 822, -PlayerSuitOxygenRefill_Short = 823, -PlayerSuitPatchPuncture = 824, -PlayerSuitJetpackOxygenPropellant_LP = 825, -PlayerBreathing_LP = 850, -PlayerBreathing_LowOxygen_LP = 851, -PlayerGasp_Light = 852, -PlayerGasp_Medium = 853, -PlayerGasp_Heavy = 854, -Asphyxiate_Start_Suit = 855, -Asphyxiate_Start_NoSuit = 856, -Asphyxiate_End_Suit = 857, -Asphyxiate_End_NoSuit = 858, -Drowning_Start = 859, -Drowing_End = 860, -PlayerGasp_StopSuffocating = 861, -PlayerGasp_StopSuffocating_Suit = 862, -EnterVolumeDamageHeat_LP = 900, -EnterVolumeDamageGhostfire_LP = 901, -EnterVolumeDamageLava_LP = 902, -EnterVolumeDamageFire_LP = 903, -HazardFirstContactDamage = 904, -ElectricShock = 905, -Splash_GhostMatter = 950, -Splash_Lava = 951, -Submerge_Player = 952, -Submerge_Ship = 953, -Splash_Water_Probe = 954, -Splash_Water_Player = 955, -Splash_Water_Ship = 956, -NonDiaMapActivation = 1000, -DialogueEnter = 1001, -DialogueAdvance = 1002, -DialogueExit = 1003, -NonDiaUIAffirmativeSFX = 1004, -NonDiaUINegativeSFX = 1005, -TapeRecorder_Start = 1006, -TapeRecorder_LP = 1007, -TapeRecorder_Stop = 1008, -PlayerTurbulence_LP = 1050, -ShipTurbulence_LP = 1051, -ShipRattle_LP = 1052, -ShipReentryBurn_LP = 1053, -PLACEHOLDER = 1100, -LandingGrass = 1102, -LandingDirt = 1103, -LandingStone = 1104, -LandingMetal = 1105, -LandingNomaiMetal = 1106, -LandingSand = 1107, -LandingIce = 1108, -LandingWater = 1109, -ImpactUnderwater = 1110, -ImpactLowSpeed = 1111, -ImpactMediumSpeed = 1112, -ImpactHighSpeed = 1113, -MovementFootstep = 1114, -MovementRunningStep = 1115, -MovementGrassFootstep = 1116, -MovementDirtFootstep = 1117, -MovementStoneFootstep = 1118, -MovementMetalFootstep = 1119, -MovementNomaiMetalFootstep = 1120, -MovementSandFootstep = 1121, -MovementIceFootstep = 1122, -MovementShallowWaterFootstep = 1123, -MovementJump = 1124, -MovementWoodCreakFootstep = 1134, -MovementWoodCreakLanding = 1135, -MovementWoodFootstep = 1136, -MovementWoodLanding = 1137, -MovementSnowFootstep = 1138, -MovementSnowLanding = 1139, -MovementIceLSiding = 1140, -MovementGlassFootsteps = 1141, -MovementGlassLanding = 1142, -MovementPassingBushes = 1143, -MovementLeavesFootsteps = 1144, -MovementLeavesLanding = 1145, -MovementGravelFootsteps = 1146, -MovementGravelLanding = 1147, -KnockOverCairn = 1150, -DefaultPropImpact = 1151, -NomaiShuttleImpact = 1152, -ModelShipImpact = 1153, -ShipCockpitScopeActivate = 1200, -ShipCockpitScopeDeactivate = 1201, -ShipCockpitScopeZoomIn = 1202, -ShipCockpitScopeZoomOut = 1203, -ShipCockpitScopeSwitchFreq = 1204, -ShipCockpitScopeScreenSlide_LP = 1205, -ShipCockpitScopeScreenKachunk = 1206, -ShipCockpitMasterAlarm_LP = 1207, -ShipCockpitAutopilotActivate = 1208, -ShipCockpitAutopilotDeactivate = 1209, -ShipCockpitBuckleUp = 1210, -ShipCockpitUnbuckle = 1211, -ShipCockpitConsoleReadout_In = 1212, -ShipCockpitConsoleReadout_LP = 1213, -ShipCockpitHeadlightsOn = 1214, -ShipCockpitHeadlightsOff = 1215, -ShipCockpitLandingCamActivate = 1216, -ShipCockpitLandingCamDeactivate = 1217, -ShipCockpitLandingCamStatic_LP = 1218, -ShipCockpitProbeCameraScreenRotation = 1219, -ShipCockpitProbeActivate = 1220, -ShipCockpitProbeDeactivate = 1221, -ShipCockpitProbeLaunch = 1222, -ShipCockpitProbeLaunchUnderwater = 1223, -ShipCockpitProbeTakePhoto = 1224, -ShipCockpitProbeRetrieve = 1225, -ShipCockpitLandingCamAmbient_LP = 1226, -ShipCockpitEject = 1227, -ShipCabinUseMedkit = 1300, -ShipCabinUseRefueller = 1301, -ShipCabinComputerActivate = 1302, -ShipCabinComputerAmbient_LP = 1303, -ShipHatchOpen = 1304, -ShipHatchClose = 1305, -ShipHullGroan = 1309, -ShipCabinAmbience = 1310, -ShipEatenGroan = 1311, -ShipLogBootUp = 1350, -ShipLogAmbience_LP = 1351, -ShipLogEnterDetectiveMode = 1355, -ShipLogEnterMapMode = 1356, -ShipLogNavigate_LP = 1357, -ShipLogSelectPlanet = 1360, -ShipLogDeselectPlanet = 1361, -ShipLogMoveBetweenPlanets = 1362, -ShipLogMoveBetweenEntries = 1363, -ShipLogRevealEntry = 1365, -ShipLogHighlightEntry = 1366, -ShipLogSelectEntry = 1367, -ShipLogDeselectEntry = 1368, -ShipLogTextReveal_LP = 1370, -ShipLogMarkLocation = 1390, -ShipLogUnmarkLocation = 1391, -ShipDamageExternalTankLeak_LP = 1400, -ShipDamageElectricSparking_LP = 1401, -ShipDamageCockpitGlassCrack = 1402, -ShipDamageShipExplosion = 1403, -ShipDamageSingleElectricSpark = 1404, -ShipDamageFuelLeak_LP = 1405, -ShipDamageOxygenLeak_LP = 1406, -ShipDamageElectricalFailure = 1407, -ShipImpact_NoDamage = 1420, -ShipImpact_LightDamage = 1421, -ShipImpact_MediumDamage = 1422, -ShipImpact_HeavyDamage = 1423, -Ship_LandingPad_Soft = 1424, -Ship_LandingPad_Hard = 1425, -ShipThrustIgnition = 1500, -ShipThrustRotational = 1501, -ShipThrustRotationalUnderwater = 1502, -ShipThrustTranslational_LP = 1503, -ShipThrustTranslationalUnderwater_LP = 1504, -ShipThrustAfterburn_LP = 1505, -NomaiHologram_LP = 1550, -NomaiHologramActivate = 1551, -NomaiHologramDeactivate = 1552, -NomaiRemoteCameraAmbient_LP = 1553, -NomaiRemoteCameraEntry = 1554, -NomaiRemoteCameraExit = 1555, -NomaiComputerAmbient = 1600, -NomaiComputerRingActivate = 1601, -NomaiComputerRingDeactivate = 1602, -NomaiOrbStartDrag = 1603, -NomaiOrbDragging_LP = 1604, -NomaiOrbRolling_LP = 1605, -NomaiOrbSlotActivated = 1606, -NomaiGravCrystalAmbient_LP = 1609, -NomaiGravCrystalFlickerAmbient_LP = 1610, -NomaiGravityCannonAmbient_LP = 1611, -NomaiGravityCannonActivate = 1612, -NomaiGravityCannonDeactivate = 1613, -NomaiTractorBeamActivate = 1614, -NomaiTractorBeamDeactivate = 1615, -NomaiTractorBeamAmbient_LP = 1616, -NomaiRecorderAmbient_LP = 1617, -NomaiEscapePodDistressSignal_LP = 1618, -NomaiTextReveal_LP = 1619, -NomaiDataStream_LP = 1620, -NomaiPowerOn = 1621, -NomaiPowerOff = 1622, -NomaiLightsOn = 1623, -NomaiLightsOff = 1624, -NomaiAirLockAirPourIn = 1625, -NomaiAirLockAirPourOut = 1626, -NomaiDoorAirLockOpen = 1627, -NomaiDoorStart = 1628, -NomaiDoorStop = 1629, -NomaiDoorSlide_LP = 1630, -NomaiDoorStartBig = 1631, -NomaiDoorStopBig = 1632, -NomaiDoorSlideBig_LP = 1633, -NomaiHeadStatueRotate_LP = 1634, -NomaiPedestalSlide_LP = 1635, -NomaiPedestalContact = 1636, -NomaiEscapePodHatch = 1645, -NomaiTimeLoopOpen = 1646, -NomaiTimeLoopClose = 1647, -NomaiVesselPowerUp = 1648, -NomaiPillarRaiseLower_LP = 1649, -NomaiPillarRotate = 1650, -NomaiAirlockSlide_LP = 1651, -NomaiAirlockWaterPourOut = 1652, -NomaiAirlockWaterPourIn = 1653, -HT_SurfaceAmbience_LP = 1700, -HT_CaveAmbientBig_LP = 1702, -HT_CaveAmbientSmall_LP = 1703, -HT_SandColumnEnd_LP = 1705, -HT_SandColumnStart_LP = 1706, -HT_SandfallSmallBottom_LP = 1707, -HT_SandRiver_LP = 1708, -HT_InsideSandfall_Suit_LP = 1709, -HT_InsideSandfall_Ship_LP = 1710, -TH_ModelShipCrash = 1800, -TH_SatelliteSnapshot = 1801, -TH_RetrieveModelShip = 1803, -TH_ZeroGTrainingAllRepaired = 1804, -TH_CanyonAmbienceDay_LP = 1807, -TH_CanyonAmbienceNight_LP = 1808, -TH_HiAltitudeAmbienceDay_LP = 1809, -TH_HiAltitudeAmbienceNight_LP = 1810, -TH_ZeroGCaveAmbient_LP = 1811, -TH_UnderwaterCurrent_LP = 1812, -TH_UnderwaterAmbience_LP = 1813, -TH_MuseumAmbience_LP = 1814, -TH_BridgeCreaking_LP = 1819, -TH_Campfire_LP = 1820, -TH_FlagFlapping_LP = 1821, -TH_GeyserEnd = 1822, -TH_Geyser_LP = 1823, -TH_GeyserStart = 1824, -TH_Insects_LP = 1825, -TH_LiftActivate = 1826, -TH_LiftArrives = 1827, -TH_Lift_LP = 1828, -TH_ProjectorActivate = 1829, -TH_ProjectorRun_LP = 1830, -TH_ProjectorStop = 1831, -TH_RiverWaterFlow_LP = 1832, -TH_Waterfall_LP = 1833, -TH_WaterWheel_LP = 1834, -TH_ModelRocketThrustRotational = 1835, -TH_ModelRocketThrustTranslational_LP = 1836, -TH_Campfire_Ignite = 1837, -TH_RockingChair = 1838, -TH_BanjoTuning = 1839, -TH_PickaxeImpact = 1840, -TH_WoodCarving = 1841, -TH_RadioSignal_LP = 1842, -BH_BreakawayFragment = 1900, -BH_VolcanicMoonSurface_LP = 1901, -BH_BreakawayPlatform = 1902, -BH_MeteorImpact = 1903, -BH_BlackHoleEmission = 1904, -BH_SurfaceAmbience_LP = 1905, -BH_SubsurfaceAmbience_LP = 1906, -WHS_StationActivation = 1907, -BH_ForgeMoving_LP = 1908, -BH_MeteorLaunch = 1909, -GD_OceanSurface_LP = 2000, -GD_UnderwaterAmbient_LP = 2002, -GD_CoreAmbient_LP = 2004, -GD_ElectricBarrier_LP = 2005, -GD_Tornado_LP = 2006, -GD_Lightning = 2007, -GD_RainAmbient_LP = 2008, -GD_IslandSplash = 2009, -GD_IslandFalling = 2010, -GD_IslandLiftedByTornado = 2011, -GD_WavesBeach_LP = 2012, -GD_WavesRock_LP = 2013, -GD_CaveAmbience_LP = 2014, -GD_UnderwaterCurrent_LP = 2015, -DBAnglerfishLurking_LP = 2100, -DBAnglerfishChasing_LP = 2101, -DBAnglerfishDetectDisturbance = 2102, -DBAnglerfishDetectTarget = 2103, -DBAnglerfishBite = 2104, -DBAnglerfishChomp = 2105, -DBAnglerfishOpeningMouth = 2106, -DB_Ambience_LP = 2107, -DB_VineImpact = 2108, -CometAmbience_LP = 2200, -CometIceMelting_LP = 2201, -SolanumStaffContact = 2210, -SolanumStomp = 2211, -SolanumCairnAssembly = 2212, -SolanumCairnSettle = 2213, -SolanumSymbolReveal = 2214, -SolanumEnterWriting = 2215, -SolanumExitWriting = 2216, -SolanumEnterIcon = 2217, -SolanumExitIcon = 2218, -SolanumEnterRaiseCairn = 2219, -SolanumExitRaiseCairn = 2220, -EyeAmbience_LP = 2250, -EyeLightning = 2251, -EyeVortex_LP = 2252, -VesselAmbience_LP = 2253, -EyeVortexEntry = 2254, -EyeVortexExit = 2255, -EyeGalaxyZoom = 2260, -EyeGalaxyBlowAway = 2261, -EyeBigGalaxyBurn = 2262, -EyeShuttleFlight = 2270, -EyeShuttleIntoLight = 2271, -EyeSmokeSpherePulse = 2280, -EyeSmokeSphereCollapse = 2281, -EyeCosmicInflation = 2282, -EyeBigBang = 2283, -EyeBigBangWall_LP = 2284, -EyeSmokeSphereEntry = 2285, -EyeSphereInflation = 2286, -TravelerEsker = 2300, -TravelerChert = 2301, -TravelerRiebeck = 2302, -TravelerGabbro = 2303, -TravelerFeldspar = 2304, -TravelerNomai = 2305, -TravelerEnd_All = 2306, -TravelerEnd_NoPiano = 2307, -SingularityCreate = 2400, -SingularityCollapse = 2401, -SingularityOnPlayerEnterExit = 2402, -SingularityOnObjectEnter = 2403, -SingularityOnObjectExit = 2404, -Singularity_BlackHole_LP = 2405, -Singularity_WhiteHole_LP = 2406, -VesselSingularityCreate = 2407, -VesselSingularityCollapse = 2408, -Sun_Ambience_LP = 2412, -Sun_Explosion = 2413, -Sun_SupernovaWall_LP = 2414, -Sun_Collapse = 2415, -QuantumAmbience_LP = 2424, -WhiteHoleAmbience_LP = 2425, -BlackHoleAmbience_LP = 2426, -TimelineEndEffect_Shadow = 2427, -TimelineEndEffect_Cracks = 2428, -TimelineEndEffect_Shatter = 2429, -FigBackerVideo = 2440, -CometPurr = 2441, -Death_Instant = 2450, -Death_Crushed = 2451, -Death_Energy = 2452, -Death_Digestion = 2453, -Death_TimeLoop = 2454, -Death_Self = 2455, -Death_BigBang = 2456, -Death_Lava = 2457, -Death_CrushedByElevator = 2458, -MemoryUplink_Start = 2460, -MemoryUplink_End = 2461, -MemoryUplink_LP = 2462, -MemoryUplink_Overlay_LP = 2463, -Flashback_End = 2465, -Flashback_Base_LP = 2466, -Flashback_Overlay_1_LP = 2467, -Flashback_Overlay_2_LP = 2468, -NomaiRuinsBaseTrack = 2500, -NomaiRuinsBaseScaryTrack = 2501, -NomaiRuinsOverlayTracks = 2502, -HT_City = 2503, -TH_Observatory = 2504, -TH_Village = 2505, -BH_Observatory = 2506, -GD_UnderwaterExploration = 2507, -QM_Ambient = 2508, -DB_Ambient = 2509, -TimeLoopDevice_Ambient = 2510, -EndOfTime = 2511, -EndOfTime_DBFinal = 2512, -EndOfTime_Final = 2513, -Travel_Theme = 2514, -SunStation = 2515, -SadNomaiTheme = 2516, -DB_VesselDiscovery = 2517, -EYE_ForestOfGalaxies = 2518, -EndOfTime_Final_LP = 2519, -EYE_QuantumFoamApproach = 2520, -EYE_EndOfGame = 2521, -MainMenuTheme = 2522, -FinalCredits = 2523, -PostCredits = 2524, -KazooTheme = 2525, -Raft_Impact_Light = 2550, -Raft_Impact_Medium = 2551, -Raft_Impact_Heavy = 2552, -Raft_Push = 2553, -Raft_Reel_Start = 2554, -Raft_Reel_Loop = 2555, -Raft_Reel_End = 2556, -Raft_Socket = 2557, -Raft_Release = 2558, -Raft_RunAground = 2559, -Raft_Move_Start = 2560, -Raft_Move_Loop = 2561, -Raft_Move_End = 2562, -Raft_Impact_Player = 2563, -Raft_DW_Turbo = 2564, -Door_SensorSliding_Loop = 2570, -Door_Loop = 2571, -Door_Loop_Creaking = 2572, -Door_OpenStart = 2573, -Door_OpenStop = 2574, -Door_CloseStart = 2575, -Door_CloseStop = 2576, -Door_Metal_OpenStart = 2577, -Door_Metal_OpenStop = 2578, -Door_Metal_CloseStart = 2579, -Door_Metal_CloseStop = 2580, -Door_Small_OpenStart = 2581, -Door_Small_OpenStop = 2582, -Door_Small_CloseStart = 2583, -Door_Small_CloseStop = 2584, -SecretPassage_Start = 2590, -SecretPassage_Loop = 2591, -SecretPassage_Stop = 2592, -Airlock_Open = 2593, -Airlock_Loop = 2594, -Airlock_Close = 2595, -Airlock_Pressurize = 2596, -Airlock_Depressurize = 2597, -AirRushingOut = 2598, -SlideReel_Pickup = 2600, -SlideReel_Drop = 2601, -SlideReel_Insert = 2602, -SlideReel_Remove = 2603, -Lantern_Pickup = 2604, -Lantern_Drop = 2605, -Lantern_Insert = 2606, -Lantern_Remove = 2607, -Lantern_ShortOut = 2608, -Artifact_Pickup = 2609, -Artifact_Drop = 2610, -Artifact_Light = 2611, -Artifact_Extinguish = 2612, -Artifact_Conceal = 2613, -Artifact_Unconceal = 2614, -Artifact_Focus = 2615, -Artifact_Unfocus = 2616, -Artifact_Crackling_Loop = 2617, -Artifact_Insert = 2618, -Artifact_Remove = 2619, -VisionTorch_ProjectionOn = 2620, -VisionTorch_ProjectionOff = 2621, -VisionTorch_EnterVision = 2622, -VisionTorch_ExitVision = 2623, -VisionTorch_NextSlide = 2624, -VisionTorch_Scanning_Loop = 2625, -VisionTorch_Crackling_Loop = 2626, -VisionTorch_Give = 2627, -VisionTorch_Take = 2628, -DamBreak_RW_Base = 2650, -DamBreak_DW_Base = 2651, -DamBreak_RW_Water = 2652, -DamCrack = 2653, -DamCrack_Loop = 2654, -WaterSpray_Small = 2660, -WaterSpray_Large = 2661, -Splash_Medium = 2662, -Splash_Large = 2663, -WoodDebris = 2670, -WoodImpact_Small = 2671, -WoodImpact_Large = 2672, -HouseCollapse_Zone3 = 2673, -GeneralDestruction = 2674, -HouseDestruction = 2675, -StiltDestruction = 2676, -Tower_RW_Tilt = 2680, -Tower_RW_Fall_1 = 2681, -Tower_RW_Fall_2 = 2682, -Tower_DW_Tilt = 2683, -Tower_DW_Fall_1 = 2684, -Tower_DW_Fall_2 = 2685, -Tower_RW_Splash = 2686, -SolarSail_RW_Start = 2690, -SolarSail_RW_End = 2691, -SolarSail_RW_Loop = 2692, -SolarSail_DW_Start = 2693, -SolarSail_DW_End = 2694, -SolarSail_DW_Loop = 2695, -StationFlicker_RW = 2696, -StationFlicker_DW = 2697, -StationShudder_RW = 2698, -StationShudder_DW = 2699, -River_DW_Base = 2700, -FloodWave_DW_Loop = 2701, -River_DW_Lake = 2703, -Candle_Light_Big = 2719, -Candle_Light_Small = 2720, -Candle_Extinguish = 2721, -DreamFire_Crackling_Loop = 2722, -DreamFire_Extinguish = 2723, -DreamFire_Explosion = 2724, -LodgeFire_Crackling_Loop = 2725, -ProjectorTotem_Pulse = 2729, -ProjectorTotem_Light = 2730, -ProjectorTotem_Extinguish = 2731, -ProjectorTotem_Blow = 2732, -GrappleTotem_Zoom = 2733, -GrappleTotem_RetroZoom = 2734, -Simulation_Enter = 2739, -Simulation_Exit = 2740, -IllusoryWall_Enter = 2741, -IllusoryWall_Exit = 2742, -LoadingZone_Enter = 2743, -LoadingZone_Exit = 2744, -LoadingZone_GlitchOut = 2745, -LoadingZone_Loop = 2746, -Glitch_Loop = 2747, -Sarcophagus_OpenFail = 2760, -Sarcophagus_Open = 2761, -Sarcophagus_SomethingIsComing = 2762, -Sarcophagus_TunnelAmbience = 2763, -Sarcophagus_LightsOnAmbience = 2764, -Ambience_DW_Base = 2775, -Ambience_DW_LightsOut = 2776, -Ambience_DW_Hotel = 2777, -Ambience_DW_Nature = 2778, -Ambience_DW_Forest = 2781, -Ambience_DW_Simulation = 2782, -Ambience_DW_Underground = 2784, -Ambience_DW_FireRoom = 2787, -PointSounds_DW_TreeCreak = 2790, -PointSounds_DW_Creature_1 = 2791, -PointSounds_DW_Creature_2 = 2792, -PointSounds_DW_Hotel_2 = 2795, -AlarmChime_RW = 2798, -AlarmChime_DW = 2799, -LightSensor_On = 2800, -LightSensor_Off = 2801, -LightSensor_Loop = 2802, -Projector_Prev = 2803, -Projector_Next = 2804, -Cloak_Entry = 2805, -Cloak_Exit = 2806, -GearRotate_Light = 2807, -GearRotate_Heavy = 2808, -GearRotate_Fail = 2809, -CodeTotem_Horizontal = 2810, -CodeTotem_Vertical = 2811, -CageElevator_Start = 2817, -CageElevator_Loop_Winch = 2818, -CageElevator_End = 2819, -CageElevator_Loop_Rattle = 2820, -Ambience_RW_Lab = 2873, -Ambience_RW_Tunnel = 2874, -Ambience_RW_FireRoom = 2875, -Ambience_RW_Base = 2876, -Ambience_RW_Cave = 2877, -Ambience_RW_Indoor = 2878, -River_RW_Base = 2879, -River_Underwater = 2880, -River_Reservoir = 2881, -River_Rapids = 2882, -River_Underwater_Rapids = 2883, -FloodWave_RW_Loop = 2884, -River_RW_Small = 2885, -River_RW_Stream = 2886, -PostCredit_RuinReveal = 2887, -PostCredit_LanternLight = 2889, -RaftTravel_River = 2890, -RaftTravel_Reservoir = 2891, -GhostSequence_ReducedFrights = 2895, -GhostSequence_Suspense = 2896, -GhostSequence_Dread = 2897, -GhostSequence_Fear = 2898, -GhostSequence_Fear_Slam = 2899, -EndOfTime_Dream = 2900, -StationDiscovery = 2901, -DreamFireRoom = 2902, -EyeTemple_Stinger = 2903, -EyeTemple_Basement = 2904, -SlideBurningRoom = 2905, -SubmergedStructure = 2906, -SecretLibrary = 2907, -DreamRuinsOverlayTracks = 2908, -DreamRuinsBaseTrack = 2909, -TravelerPrisoner = 2910, -TravelerEnd_All_Prisoner = 2911, -TravelerEnd_NoPiano_Prisoner = 2912, -Prisoner_Elevator = 2913, -Prisoner_Reveal = 2914, -Prisoner_Catharsis = 2915, -SecretPortrait = 2916, -SecretKorok = 2917, -PartyHouse_Traveler = 2920, -PartyHouse_Vocals = 2921, -PartyHouse_Drone = 2922, -PartyHouse_Bass = 2923, -Reel_Secret_Backdrop_A = 2924, -Reel_Secret_Backdrop_B = 2925, -Reel_Secret_Beat_Peephole_A = 2926, -Reel_Secret_Beat_Peephole_B = 2927, -Reel_Secret_Beat_Tower_A = 2928, -Reel_Secret_Beat_Tower_B = 2929, -Reel_Secret_Beat_Lantern = 2930, -Reel_Lab_Backdrop_Fail = 2933, -Reel_Lab_Backdrop_Success = 2934, -Reel_Lab_Backdrop_Testing = 2935, -Reel_Backdrop_Burnt = 2938, -Reel_1_Backdrop_A = 2940, -Reel_1_Beat_A = 2945, -Reel_1_Beat_B = 2946, -Reel_1_Beat_C = 2947, -Reel_2_Backdrop_A = 2950, -Reel_2_Backdrop_B = 2951, -Reel_2_Beat_A = 2955, -Reel_2_Beat_B = 2956, -Reel_2_Beat_C = 2957, -Reel_2_Beat_D = 2958, -Reel_3_Backdrop_A = 2960, -Reel_3_Backdrop_B = 2961, -Reel_3_Backdrop_C = 2962, -Reel_3_Beat_A = 2965, -Reel_3_Beat_B = 2966, -Reel_3_Beat_C = 2967, -Reel_3_Beat_D = 2968, -Reel_4_Backdrop_A = 2970, -Reel_4_Beat_A = 2975, -Reel_4_Beat_B = 2976, -Reel_4_Beat_C = 2977, -Reel_4_Beat_D = 2978, -Reel_5_Long = 2980, -Reel_5_Short = 2981, -Reel_Farewell = 2985, -Reel_Rule_Beat_DarkDiscovery = 2986, -Reel_Rule_Backdrop_Discovery = 2987, -Reel_Rule_Beat_Discovery = 2988, -Reel_Rule_Backdrop_Dream = 2989, -Reel_Rule_Backdrop_Normal = 2990, -Reel_Rule_Backdrop_Glitch = 2991, -Reel_LibraryPath_Backdrop = 2992, -Reel_Rule2a_Beat_A = 2993, -Reel_Seal_Backdrop = 2994, -Reel_Burning_Backdrop_A = 2995, -Reel_Burning_Backdrop_B = 2996, -Reel_Burning_Beat_A = 2997, -Reel_Burning_Beat_B = 2998, -Reel_Burning_Beat_C = 2999, -Ghost_DeathGroup = 3000, -Ghost_DeathSingle = 3001, -Ghost_Grab_Swish = 3002, -Ghost_Grab_Contact = 3003, -Ghost_BlowOut_Charge = 3004, -Ghost_BlowOut_Extinguish = 3005, -Ghost_NeckSnap = 3006, -Ghost_Identify_Curious = 3010, -Ghost_Identify_Irritated = 3011, -Ghost_Identify_Fail = 3012, -Ghost_Chase = 3013, -Ghost_Stalk = 3014, -Ghost_Hunt = 3015, -Ghost_HuntFail = 3016, -Ghost_Grab_Scream = 3017, -Ghost_Stalk_Fast = 3018, -Ghost_Grab_Shout = 3019, -Ghost_SomeoneIsInHereHowl = 3020, -Ghost_IntruderConfirmed = 3021, -Ghost_IntruderConfirmedResponse = 3022, -Ghost_CallForHelp = 3023, -Ghost_CallForHelpResponse = 3024, -Ghost_Laugh = 3025, -Ghost_Footstep_Wood = 3030, -Ghost_Footstep_Wood_Running = 3031, -Ghost_Footstep_Forest = 3032, -Ghost_Footstep_Forest_Running = 3033, -Ghost_Footstep_Gravel = 3034, -Ghost_Footstep_Wood_Stompy = 3035, -Prisoner_ReactToVision_Vocals = 3050, -Prisoner_RevealToStand_Vocals_1 = 3051, -Prisoner_RevealToStand_Vocals_2 = 3052, -Prisoner_PickUpArtifact = 3053, -Prisoner_PickUpTorch = 3054, -Prisoner_ClothFoley = 3055 - -## AudioClip values - -This is a list of AudioClips that will also work, there's a lot of overlap with the AudioType list. Many old addons with signals use values from this list. - - - Hotel Oneshot - Heavy Thud 4 - - Tool_Put_Away_01 - - OW Quantum Lightning 091118 AP 07 - - OW_GD_ElectricBarrier_Idle_Loop - - Nomai_Stone_Door_End_V2_11 - - General Destruction 1 - - Dream Rule 02 backdrop loop 072321_2 AP - - amb_observatory - - Dream World Water Ambience - Creek 3 - - Pickup_Rock_01 - - gasp_traumatic4_lessmale - - Ship_Impact_Light_Damage_V3_06 - - BlackHole_02 - - OW_GD_WavesAgainstRock - - OW_TH_AmbienceInCanyons - - OW_PR_FootstepsBushRustle_03 - - OW_PR_ActivateProbeMode - - Ghost Walk Footstep Wood_v2 6 - - rockingchair4 - - Water Spray Impact 4 - - OW Secret Library 040821_2 AP - - Real World Dam Break Alex Composite 2 - - Ghost Run Footstep Wood_v2 4 - - UI_Enter_Dialog_V6-002_highpass_2 - - Spark_10 - - Mournful Prisoner 3 - - OW_PR_FootstepsLeaves_06 - - FootstepsWoodCreak_02 - - OW Dreamworld Ruins 072021 AP 02c - - OW_PR_HitWallUnderwater1 - - OW_TH_RiverWaterFlow_loop - - OW ReelBeat 01c 021021 AP - - FootstepsWoodCreak_07 - - Ignite_Marshmallow_03 - - Marshmallow_Replace_02 - - Ship_FuelLeak - - Raft Heavy Impact 5 - - elevatorloop - - Real World Alarm Bell Oneshot 3 - - BigBang_EndFlash - - OW_FinalEndTimes_DB_loop - - fogsphere_pulse4 - - Ringworld Ambience 3 - - Destruction Impact 4 - - Artifact Unconceal - - OW_NM_DoorStart_06 - - OW_PR_SignalscopeZoomOut - - Nomai_Stone_Door_End_Big_V2_03 - - Player Gravel Footstep 3 - - General Destruction 5 - - OW Dream Fire Room 121820_4 AP LP - - OW_PR_DeactivateProbeMode - - OW_PR_LandInWater4 - - OW_PR_FootstepsJumpNomai_04 - - OW_PR_FootstepsJumpMetal_03 - - WarpCore_Remove_V3_01 - - Probe_SnapShot_03 - - Ghost Idle Search 4 - - Solanum_Foley_IconExit - - Dream Fire Room Ambience Test 1 - - Lantern Extinguish 4 - - OW_PR_OxygenLeakingFromSuit_loop_louder - - Wood Door Open Stop - - OW_PR_FootstepsJumpGrass_01 - - OW_SP_ThrustAfterburn - - OW_PR_FootstepsGrass_01 - - Real World Alarm Bell Oneshot 4 - - OW_PR_FootstepsNomai_04 - - Hotel Oneshot - Heavy Thud 2 - - Light Sensor Fade In 4 - - AnglerFish_OpenMouth_v2_01 - - Footstep_Run4 - - Ghost Walk Footstep Forest 6 - - OW_PR_FootstepsGrass_06 - - OW_GD_AmbienceRain - - RotationalThruster04 - - OW New Raft Music 082321_4 AP theme - - Spark_01 - - OW Muted End Times 040821 AP - - Nomai_WhiteHoleStationActivation - - Tool_Take_Out_02 - - OW_PR_FootstepsJumpDirt_05 - - mallowpuff2 - - Dreamworld Tower Fall Part 2 - - Jump_Into_Fogsphere_04 - - FootstepsWoodCreak_05 - - OW_SP_MetalCreak_14 - - OW_NM_DoorStart_03 - - drowning_firsthalf2 - - Forest Oneshot - Tree Creak 4 - - shiplog_misc1 - - FootstepsWoodCreak_04 - - Real World Dam Crack - - OW_NM_DoorStart_09 - - OW_SP_LandingPadHard4 - - OW_PR_FootstepsSand_06 - - BH_Ambience_Surface - - Ghost Grunt 3 - - glass_crack_02 - - House Destruction 3 - - OW_QuantumMoon - - Orb_Roll_Energy_Loop_v2_01 - - OW Eye Of The Universe 082018_2 AP - - Footstep3 - - OW_NM_DoorStart_Big_01 - - OW Dreamworld Ruins Story Beats 071621 AP 1d - - Dream World Tidal Wave Loop - - Nomai_Stone_Door_End_Big_V2_15 - - OW_SP_ActivateComputer 1 - - OW_PR_FootstepsIce_07 - - Raft Light Impact V2 3 - - UI_Pause_v2_08 - - signalscope_static - - OW_SP_LandingCamActivated 1 - - Footstep4 - - OW_PR_FootstepsSand_03 - - Prisoner Pick Up Vision Torch - - OW_SP_MetalCreak_16 - - OW_SP_Touchdown_04 - - Platform_Break_V2_03 - - OW Nomai Time Loop Device 081818 AP - - RockPile_Fall_02 - - Ship_Impact_No_Damage_V3_02 - - Destruction Impact 7 - - Ghost Grab Player 2 - - Forest Oneshot - Tree Creak 5 - - OW_PR_FootstepsMetal_01 - - OW NM Flashback 082818_3 AP base - - Projector Totem Light 2 - - Slot_Linking_Stone_Loop_02 - - breathing_suit3 - - OW_PR_FootstepsWood_07 - - OW_SP_HeadlightsOff_v2 - - Nomai_Stone_Door_End_V2_06 - - Fix_Puncture_03 - - OW Dream Rule LP 032421 AP glitch - - Real World Tidal Wave Loop Louder - - OW Dreamworld Ruins 072021 AP 02loop - - gasp_normal11_lessmale - - OW ReelBeat 01a 021021 AP - - OW_TH_ModelRocketThrustRotational_01 - - OW_PR_FootstepsBushRustle_05 - - OW NomaiRuinsRegular 081918 AP motif3c v2 - - OW Final End Times 022519_2 AP LOOP1 - - OW_PR_FootstepsSand_01 - - Anglerfish_Awake4 - - OW_PR_FootstepsJumpIce_04 - - Fix_Puncture_01 - - Raft Light Impact V2 1 - - Warp_Loop_01_v2 - - Ghost Start Hunt Grunt 1 - - Destruction Debris 4 - - Solanum_IconAppear_V3 - - OW_SP_ActivateComputer_OneShot - - Destruction Impact 8 - - OW_SP_ShipGroan1_v2 - - OW ReelBackdrop 02a 021021 AP - - OW_NM_ComputerRing1 - - OW_PR_FootstepsJumpGlass_04 - - Forest Oneshot - Tree Creak 6 - - OW_GD_HeatLightning_01 - - Raft Heavy Impacts V2 3 - - Solanum_Foley_RockFormStart - - Raft Light Impact V2 5 - - Ghost Grunt 4 - - OW_PR_FootstepsJumpDirt_06 - - OW_PR_FootstepsJumpGrass_03 - - OW_TravelerTheme_whistling - - Raft Heavy Impact 2 - - Nature Oneshot - Distant Deep Creature 1 - - OW_SP_CloseHatch_v2 - - linkingstone_in - - OW_PR_FootstepsSnow_03 - - OW_NM_OrbDeSelect_Energy_02 - - Impact_Light_02 - - Nomai_Stone_Door_End_V2_10 - - Fix_Puncture_07 - - OW_NM_HoleEnterExit - - OW NM Nomai Ruins 081718 AP - - OW_PR_OxygenRefill - - GhostMatter_Splash_v4_05 - - glass_crack_01 - - Ignite_Marshmallow_02 - - Ship_Impact_Medium_Damage_V3_03 - - Forest Oneshot - Animal 4 - - OW_PR_FootstepsIce_02 - - OW_GD_RainOnHelmet - - Spaceship_RattleLoop - - BigBang_WhooshLeadToExplo - - OW_TH_Campfire_loop_01 - - bigbang_cosmicinflation_v2 - - Hotel Oneshot - Heavy Creak 4 - - OW_PR_FootstepsJumpGrass_02 - - Tronworld Ambience 1 - - AnglerFish_Target_v2_07 - - Eye_of_Universe_Ambience_v2_01 - - OW_PR_FootstepsJumpLeaves_04 - - OW_PR_FootstepsJumpSnow_03 - - OW_PR_FootstepsJumpGlass_01 - - OW Traveler Theme 091118 AP FINAL TIME NO PIANO EDIT - - OW ReelBeat 02f 082521 AP - - Metal Door Close Stop - - medkit - - OW_NM_BlackHole_Lp - - Ghost Blow Out Lantern - - OW_PR_MarshmallowEatBurnt_shorter - - Solanum_Foley_IconEnter - - OW_PR_SignalscopeSwitchFrequencies - - Prisoner Pick Up Artifact - - OW_PR_BanjoStrum_3b - - Water Spray Impact 5 - - UI_Advance_Dialog_V6-002_highpass - - Destruction Debris 8 - - OW_PR_FootstepsDirt_06 - - Vision Torch - Step In - - OW_NM_DoorStart_Big_04 - - OW_PR_FootstepsBushRustle_06 - - Hotel Oneshot - Creak 5 - - OW_PR_FootstepsJumpLeaves_01 - - OW_SP_ShipGroan4_v2 - - Jump_Into_Fogsphere_03 - - Dreamworld Forest Ambience 2 - - OW_PR_FootstepsJumpRock_02 - - CrushedByElevator - - Player Gravel Footstep 1 - - House Destruction 4 - - Ghost Begin Stalk Grunt 1 - - flashlightOff - - OW ReelBeat 04b_2 040921 AP - - OW_PR_FootstepsRock_02 - - AshTwinCore_Open_01 - - OW_SP_HeadlightsOn_v2 - - Tower Fall Part 2 - - OW_NM_DoorStart_Big_02 - - Meteor_Impact_01_b - - OW_SP_LandingCamStatic - - OW_PR_FootstepsWood_01 - - gasp_light5 - - OW_PR_FootstepsGrass_03 - - Spark_03 - - Loading Tunnel - Loop - - FootstepsJumpWoodCreak_02 - - OW_Main_Menu - - Lantern Put Down - - OW Secret Library Whispers LP 040821 AP REF MIX - - OW_DB_Ambience - - Vision Torch Light Rays - On - - Hotel Oneshot - Creak 1 - - Dreamworld Nature Ambience 4 - - OW_PR_ThrustRotationalUnderwater_04 - - OW_PR_FootstepsJumpGrass_06 - - Nomai_Stone_Door_End_Big_V2_09 - - Ship_Impact_No_Damage_V3_01 - - Raft Movement Stop 3 - - Destruction Impact 9 - - Recorder_Start_Button - - AnglerFish_Target_v2_14 - - Ghost Begin Chase Grunt 2 - - Hotel Oneshot - Creak 6 - - Fragment_Break - - Tronworld Exit 2 - - Ghost Walk Footstep Forest 2 - - Incinerate_v3_01 - - Light Sensor Fade Out 3 - - OW_TravelerTheme_flute - - OW_PR_FootstepsLeaves_02 - - OW_PR_FootstepsLeaves_01 - - Fix_Puncture_05 - - Ghost Walk Footstep Wood_v2 3 - - OW_PR_FootstepsJumpSand_01 - - Sarcophagus Strain 2 - - OW_PR_HitWallUnderwater4 - - OW_PR_FootstepsRock_03 - - Loading Tunnel - Unload - - OW_PR_FootstepsJumpNomai_03 - - OW_PR_FootstepsDirt_07 - - OW_PR_FootstepsSnow_04 - - Wood Door Close Stop - - OW_PR_FootstepsJumpIce_02 - - OW ReelBeat 04a 031521 AP - - Raft Light Impact V2 2 - - Meteor_Impact_02_b - - JellyFish_Shock_02 - - Metal Door Open Start - - OW_GD_UnderwaterCurrent - - OW_GD_HeatLightning_06 - - nomai_textbranchout_noenergy2 - - asphyxiation_nosuit_secondhalf_version3 - - Artifact Focus - - Ice_Cave_Amb_loop_v3_01 - - Forest Oneshot - Tree Creak 3 - - OW NomaiRuinsRegular 081918 AP motif4c - - Dreamworld Lights Out Ambience 4 - - Projector Next Slide 2 - - BeaconIdea4 - - Destruction Impact 1 - - OW_PR_FootstepsNomai_06 - - OW_NM_FlickeryGravityCrystalAmbience - - OW Demonic Vocal Sting 082321 AP - - OW Quantum Lightning 091118 AP 08 - - OW_NM_SadTheme_older - - Nature Oneshot - Distant Creature 2 - less reverb - - FootstepsJumpWoodCreak_03 - - OW_PR_FootstepsJumpSand_02 - - Player Gravel Footstep 8 - - OW_PR_FootstepsSnow_06 - - gasp_traumatic3_lessmale - - Real World Dam Break Water Oneshot - - Repair_Loop - - OW_TH_FlagFlapping_loop._01 - - Ship_Impact_Light_Damage_V3_02 - - Raft Socket - - Jump_Into_TinyGalaxy_v2_01 - - OW NomaiRuinsRegular 081918 AP motif7c - - gasp_normal13_lessmale - - Sandfall_Inside_Loop_01 - - Solanum_RocksForm - - Fix_Puncture_06 - - OW Dreamworld Ruins Story Beats 071621 AP 1h - - Sarcophagus Open 2 - - fogsphere_pulse2 - - Elevator Rattle Loop 3 - - IllusoryWall_Alex - - OW_GD_HeatLightning_04 - - Nomai_Stone_Door_End_Big_V2_14 - - OW_PR_FootstepsJumpMetal_01 - - Vine_Crash_V3_03_LowPassDelay - - OW_PR_BanjoStrum_2b - - OW_PR_FootstepsGlass_05 - - OW_PR_FootstepsLeaves_07 - - OW_NM_DoorStart_01 - - OW_PR_FootstepsGrass_05 - - OW_PR_FootstepsJumpIce_01 - - OW_PR_ThrustRotationalUnderwater_01 - - Anglerfish_Chase_Breathing - - OW_PR_FootstepsRock_04 - - Metal Door Close Start - - Gear Rotate 1 - - Airlock Loop - - Solanum_Foley_RockFormEnd - - mallowpuff3 - - OW_PR_FootstepsSand_05 - - OW_PR_FootstepsJumpRock_01 - - Artifact Unfocus - - OW Eye Of The Universe 082818_2 AP - - OW_PR_FootstepsJumpRock_03 - - galaxy_zoomout2 - - OW_GD_IslandFalling_v2_loop - - Projector Previous Slide 2 - - Ignite_CampFire_04 - - SpaceshipAlarm2_3Iterations - - Ghost Individual Death 3 - - OW_PR_FootstepsJumpNomai_01 - - OW_PR_FootstepsJumpSnow_01 - - Forest Oneshot - Animal 2 - - OW_PR_FootstepsJumpDirt_01 - - Dreamworld Tower Fall Part 1 - - Ship_Impact_Medium_Damage_V3_05 - - OW_NM_ComputerRing3 - - OW_PR_SuitOn - - Airlock Pressurize - - OW_PR_FootstepsBushRustle_01 - - OW_PR_FootstepsNomai_02 - - Ship_Impact_Medium_Damage_V3_04 - - OW_NM_VesselDiscovery - - PlayerSubmerge - - Player Gravel Footstep 5 - - OW_EndTimes - - HGT_SandColumn_Ship - - OW ReelBeat 02c 021021 AP - - Spark_09 - - OW_PR_FootstepsSand_02 - - Damage_Light_05 - - OW_NM_ComputerRingFall2 - - gasp_traumatic7_lessmale - - Ghost Investigation Grunt - - Dream World Alarm Bell Oneshot 2 - - rockingchair2 - - OW_PR_FootstepsJumpDirt_04 - - Projector Next Slide - - OW_PR_FootstepsSand_08 - - OW_NM_WHAmbience2_v2 - - drowning_secondhalf2 - - Ghost Walk Footstep Forest 1 - - Prisoner Cloth Foley 3 - - OW_PR_FootstepsGlass_03 - - Vision Torch Scanning - Loop - - Raft Medium Impact V2 2 - - Hotel Oneshot - Heavy Thud 3 - - Destruction Impact - Large 4 - - OW_PR_FootstepsJumpLeaves_03 - - OW_PR_FootstepsJumpSand_03 - - OW Dreamworld Ruins SILENCE 02 - - OW_PR_FootstepsWood_06 - - ModelRocket_LightImpact - - shiplog_scanningloop - - OW Ghost Ambiences v2 011221 AP low LP - - OW NomaiRuinsRegular 081918 AP motif2c - - glass_crack_03 - - Fix_Puncture_08 - - OW_PR_FootstepsSnow_01 - - OW_PR_FootstepsDirt_01 - - asphyxiation_nosuit_firsthalf1 - - OW_NM_DoorSlide_Big_LP_01 - - OW_SUN_SupernovaWall - - OW_NM_DoorAirLockAirPourOut_03 - - OW_PR_ThrustUnderwater - - Solar Sail Stop - - OW_TH_Waterwheel_loop - - Forest Oneshot - Tree Creak 1 - - OW ReelBackdrop 03a 050321 LOOP - - Platform_Break_V2_04 - - FireBall_01 - - OW ReelBackdrop 01a 022521 AP - - Dreamworld Lights Out Ambience 1 - - Nomai_Stone_Door_End_Big_V2_11 - - Spark_07 - - OW_SP_ThrustTranslationalUnderwater - - Dream World Water Ambience - Creek 1 - - Ghost Begin Stalk Grunt 2 - - Comet_Purr - - JellyFish_Shock_04 - - OW_PR_FootstepsWood_08 - - Raft Reeling Loop - - shiplog_switchmode_forward - - Station Light Flicker - Dreamworld - - Lantern Wake Up Light 3 - - flashlightOn - - Dreamworld Base Ambience 1 - - Ship_Impact_Heavy_Damage_V3_09 - - Crushed_To_Death_V2_01 - - ow_kazoo_theme - - JetPack_NotificationBeep - - Ghost Run Footstep Wood_v2 1 - - OW_PR_FootstepsJumpNomai_05 - - OW_NM_DataStream_v2 - - UI_Tab_v2_02 - - OW_PR_ProbeTakePicture - - OW_NM_GravityCannonAmbience - - OW NM Flashback 082818 AP loop - - OW_SP_LandingPadSoft4 - - OW_PR_FootstepsGlass_07 - - WarpCore_Insert_V3_01 - - OW_NM_TractorBeamLP - - ShipRepair_Finish - - Ghost Begin Chase Grunt 1 - - Destruction Impact 2 - - OW_PR_FootstepsLeaves_08 - - Recorder_Stop_Button - - OW_PR_FootstepsLeaves_04 - - OW_PR_Jump1 - - Jump_Into_TinyGalaxy_v2_04 - - OW_GD_Tornado_v2_04 - - OW_PR_FootstepsJumpDirt_02 - - OW_SP_ConsoleReadoutStart - - OW_NM_EscapePodHatch - - OW_PR_FootstepsJumpNomai_02 - - Light Sensor Fade In 1 - - Light Sensor Fade In 2 - - Hotel Oneshot - Creak 9 - - CampfireTune_All_Reverb - - Recording_Loop_03 - - PartyHouseWhistle_Confident - - mallowpuff4 - - OW_NM_WhiteHoleAmbienceL - - Station Shudder - - drowning_firsthalf1 - - UI_Exit_Dialog_V6-002_highpass - - Dream World Dam Break - - Dreamfire Extinguish 1 - - MediumSplash - - Vision Torch - First Slide Appears - - Footstep1 - - OW_TravelerTheme_drums - - Artifact Conceal - - HGT_Ambience_Cave_Small - - HGT_Ambience_Cave_Big - - OW_TH_Waterfall_loop_01 - - OW Discovery 083021_2 AP darker shorter - - Secret Passageway Open Loop 2 - - Hotel Oneshot - Creak 4 - - supernova_explosion_deepnuclear2 - - Ghost Shout 7 - - OW NM Flashback 081718 AP slam - - Airlock Close - - OW_TH_FlagFlapping_loop._02 - - OW_SP_RefuelJetpack_v2_short - - Ship_Impact_No_Damage_V3_03 - - Raft Medium Impact V2 4 - - Anglerfish_Awake3 - - Wood Door Open Start - - OW_TH_FlagFlapping_loop - - Slide Reel Pickup 2 - - Tronworld Ambience 2 Alex Hack - - Ghost Run Footstep Wood_v2 5 - - Ignite_CampFire_03 - - Single Ghost Scream 14 - - Raft Start Reeling - - OW_PR_FootstepsGrass_08 - - Tronworld Enter 2 - - OW_PR_ProbeUnderwaterLaunch - - OW_GD_IslandCrashingInWater_v2 - - Grapple Totem Zoom In - - OW ReelBeat 02a 021021 AP - - Nomai_Stone_Door_End_V2_08 - - OW_PR_FootstepsJumpGlass_02 - - OW_NM_DoorStart_02 - - Destruction Impact - Large 3 - - OW_SP_SignalscopeSlideV2 - - OW NomaiRuinsRegular 081918 AP motif6c - - Wood Door Close Start 3 Alex - - Destruction Impact - Large 2 - - Nomai_Stone_Door_End_Big_V2_01 - - OW_NM_ComputerAmbienceLP - - Anglerfish_Awake2 - - OW_TH_Insects_loop_03 - - OW_PR_SignalscopeActivate - - OW_NM_ComputerRingFall1 - - OW_PR_FootstepsDirt_02 - - OW_NM_ShuttleLight - - Single Ghost Scream 1 - - Ghost Identify Fail - - OW_SP_ShipGroan5_v2 - - Cloaking Field Exit - - OW_PR_FootstepsNomai_01 - - OW Dreamworld Ruins 072021 AP 02e - - Forest Oneshot - Tree Creak 2 - - fogsphere_pulse1 - - OW_PR_PullOutStick - - OW_PR_LockOn - - Nomai_Stone_Door_End_Big_V2_07 - - OW_PR_FootstepsJumpSand_06 - - InstantDeath2_Long_Ringing - - Light Sensor Door Stop 2 - - Light Sensor Door Loop 2 - - OW_TH_GeyserEnd_02 - - pickaxe_01 - - OW_PR_FootstepsWaterWade_03 - - RockPile_Fall_03 - - OW_PR_ThrustAfterburn_v2_01 - - Light Sensor Fade Out 2 - - Light Sensor Fade In 3 - - OW Finally Set Free 072021_2 AP - - Ghost Blow Out Lantern Charge - - Wood Door Loop - - BigBang_Explo - - TH_Geyser_Loop_v3 - - Water Spray Impact 8 - - OW_TH_FlagFlapping_loop._03 - - OW_PR_FootstepsJumpLeaves_02 - - OW_PR_FootstepsIceSlide_Lp_01 - - Dreamworld Lights Out Ambience 3 - - knife_scrape_01 - - OW OBSERVATORY 011317 AP - - Footstep_Run5 - - Light Sensor Door Open 2 - - Jetpack_O2_loop_01 - - OW_PR_FootstepsJumpWood_04 - - OW_SP_BuckleUp - - Probe_SnapShot_02 - - Pickup_Ceramic_01 - - OW_PR_FootstepsWood_03 - - Destruction Debris 3 - - OW_PR_SignalscopeDeactivate - - OW_PR_OxygenLeakingFromSuit_loop - - Probe_SnapShot_01 - - Dreamworld Ghost Hotel Ambience 2 - - Slide Reel Put Down 2 - - Nomai_Stone_Door_End_V2_07 - - OW_SP_ProbeLauncherRotation_v2 - - OW_PR_MarshmallowEatUnburnt_noMmm_v3 - - SystemBackOnline - - Ghost Idle Search 1 - - Ship_Impact_Light_Damage_V3_03 - - OW Dreamworld Ruins Story Beats 071621 AP 1i - - OW_PR_FootstepsGrass_02 - - OW_NM_DoorSlide_LP_02 - - Ringworld Cave Ambience - - Fix_Puncture_02 - - OW_PR_FootstepsWaterWade_08 - - OW_TH_GeyserStart_01 - - OW_TH_Insects_loop_01 - - OW ReelBeat 04d_2 040921 AP - - OW_TH_ProjectorStop - - Prisoner Cloth Foley 6 - - Dream World Alarm Bell Oneshot 3 - - shiplog_selectplanet2 - - Nature Oneshot - Distant Creature 1 - less reverb - - OW_PR_FootstepsDirt_08 - - Spark_04 - - OW_GD_HeatLightning_02 - - OW Secret Loop 090121 AP muted - - Creature Voice Test 1 Short - - General Destruction 4 - - House Destruction 1 - - OW_PR_FootstepsSnow_02 - - Huge Splash 2 - - Player Gravel Footstep 4 - - Ghost Grab Player 1 - - shiplog_switchmode_back - - OW_PR_FootstepsJumpWood_03 - - OW_PR_FootstepsJumpMetal_05 - - OW_SP_AutopilotEngaged 1 - - OW_NM_DoorAirlockOpen_03 - - OW Dreamworld Ruins 072021 AP 02b - - Ghost Investiagation Grunt 2 - - Wood Door Close Start 2 - - Real World Alarm Bell Oneshot 2 - - OW Fabric SFX 102119 AP screen shatter SHORT - - OW_NM_Ruins_ambience_scary_loop - - Raft Heavy Impact 1 - - OW Whispers 041321_2 AP LP - - Ghost Run Footstep Forest 4 - - Vine_Crash_V3_01_LowPassDelay - - Solanum_Foley_HandLower - - OW_PR_FootstepsSand_07 - - Grapple Totem Zoom Out Louder - - Ship_Impact_Heavy_Damage_V3_07 - - OW_PR_FootstepsIce_01 - - OW Ghost Ambiences v2 011221 AP pad LP - - Raft Movement Stop - - OW_TH_Museum - - gasp_normal12_lessmale - - OW_PR_FootstepsJumpRock_05 - - OW_SP_ThrustRotationalUnderwater_02 - - Pool_Exit_v3 - - Flashlight_Malfunction_02 - - OW NomaiRuinsRegular 081918 AP motif1c - - Nomai_Stone_Door_End_V2_05 - - OW_PR_FootstepsLeaves_05 - - Nomai_Stone_Door_End_V2_09 - - asphyxiation_suit_secondhalf1 - - Spark_08 - - OW Aquatic Exploration 050318 AP LOOP - - OW_TH_GeyserEnd_01 - - UI_Navigate_03 - - OW ReelBeat 02b 021021 AP - - Player_Impact_Damage_Light_02 - - OW_PR_FootstepsWood_02 - - Jump_Into_TinyGalaxy_v2_02 - - OW_PR_ThrustRotationalUnderwater_05 - - Atmosphere_High_Suit - - OW_SP_MetalCreak_04 - - OW Prisoner Reveal 063021 AP - - Ghost Grunt 1 - - OW_PR_FootstepsJumpDirt_03 - - OW Reelbeat 03c 061721 AP - - Nomai_Stone_Door_End_Big_V2_10 - - Damage_Light_01 - - PutDown_Rock_01 - - OW_TH_ModelRocketCrashing - - OW ReelBeat 03b 032521 AP - - OW END OF GAME 021818 AP - - Raft Movement Start 3 - - Impact_Light_03 - - OW_NM_Tech_Advanced - - Ghost Walk Footstep Wood_v2 4 - - OW_PR_FootstepsJumpWood_05 - - OW_PR_FootstepsMetal_02 - - FootstepsJumpWoodCreak_01 - - OW Timber Hearth 032719 AP v2 - - Hotel Oneshot - Heavy Creak 3 - - shiplog_highlight - - OW_GD_Tornado_v2_03 - - RotationalThruster02 - - OW Quantum Lightning 091118 AP 06 - - JetPack_NotificationBeep_Fast - - SmallSplash - - Ghost Run Footstep Forest 3 - - Nomai_Stone_Door_End_Big_V2_04 - - OW Prisoner Elevator 061121_5 AP loop - - Tower Fall Part 1 - - OW_PR_FootstepsMetal_03 - - OW_PR_FootstepsRock_01 - - Ignite_Marshmallow_01 - - Ignite_CampFire_02 - - Ghost Walk Footstep Wood_v2 5 - - OW_GD_AmbienceCave - - Ship_Impact_Heavy_Damage_V3_11 - - Raft Release - - elevatorstop - - Hotel Oneshot - Creak 2 - - Station Light Flicker - - Forest Oneshot - Tree Creak 7 - - OW_GD_HeatLightning_03 - - Nomai_Stone_Door_End_Big_V2_08 - - OW_TH_AmbienceHighAltitude - - Water Spray Impact 3 - - Ghost Grunt 2_SmoothFade - - linkingstone_out - - Ghost Shout 6 - - Ghost Individual Death 4 - - shiplog_highlight2 - - OW_PR_FootstepsMetal_04 - - OW Morning Cello 101718_2 - - Spark_11 - - fogsphere_jump2_delayed - - Nomai_Stone_Door_End_V2_04 - - OW_SP_ElectricalDamageLP - - OW_PR_FootstepsGlass_02 - - Ghost Run Footstep Forest 6 - - OW_NM_CenterClampsRemoving - - OW_SP_ThrustRotationalUnderwater_03 - - OW_NM_InsertScroll - - GhostMatter_Splash_v4_02 - - Airlock Open - - OW_PR_TranslatorTranslateNew - - Ship_Impact_Heavy_Damage_V3_10 - - House Destruction 2 - - shiplog_newentry3_softer - - OW_TravelerTheme_piano - - Stilts Destruction 3 - - OW_PR_LockOff - - OW_TH_ModelRocketThrustTranslational_01 - - Hotel Oneshot - Creak 8 - - Dreamworld Candle Lighting Test Variation 6 - - Stilts Destruction 4 - - OW_SUN_BurnPlanet - - Real World Dam Crack Water Loop - - OW Final End Times 022519_2 AP LOOP2 - - OxygenRefill_Short - - OW ReelBeat 03a 031521 AP - - OW NomaiRuinsRegular 081918 AP motif5c v2 - - StoryReel5Short 063021_3 AP - - OW_GD_AmbienceOcean - - OW_TH_BridgeCreaking_loop - - OW Traveler Theme 021821 AP FINAL TIME NO PIANO ADD PRISONER - - OW_SP_ShipAmbiance_01 - - Prisoner Grunt 2 - - OW_NM_ComputerRingFall3 - - OW_NM_DoorStart_04 - - Ghost Neck Snap - - Nomai_Warp_01 - - General Destruction 2 - - pickaxe_02 - - OW_PR_FootstepsSnow_07 - - Lava_Splash_02 - - OW_PR_FootstepsGlass_06 - - Anglerfish_Awake - - OW_PR_ProbeRetrieval - - OW_PR_FootstepsJumpSnow_04 - - Lantern Wake Up Light 2 - - Secret Passageway Open Stop 2 - - Lantern Shorting Out 2 - - OW_PR_BanjoStrum_1b - - OW_PR_FootstepsSnow_08 - - Air Rushing Out Into Space - - OW_PR_FootstepsJumpGlass_03 - - OW_PR_ProbeInAirSound - - shiplog_movebetweenplanets - - OW_PR_BanjoStrum_4b - - Raft Stop Reeling - - OW Traveler Theme 091118 AP FINAL TIME WITH PIANO EDIT - - OW_PR_FootstepsMetal_08 - - OW ReelBeat 04a_2 040921 AP - - OW_SP_ShipExploding - - OW_PR_FootstepsJumpMetal_02 - - OW_TH_ModelRocketThrustRotational_04 - - JellyFish_Shock_03 - - OW No-Eye Ruins 121120_2 AP LP - - OW_GD_HeatLightning_05 - - OW_NM_GravityCrystalAmbience_Louder - - OW_GD_HeatLightning_07 - - Solar Sail Loop 2 - - OW_PR_FootstepsBushRustle_02 - - CityLights_Off_01 - - RotationalThruster01 - - OW_NM_BHEnterItem_v2 - - OW_PR_FootstepsBushRustle_09 - - Vision Torch - Vision Dissolves - - OW_PR_FootstepsJumpMetal_04 - - Lantern Remove 2 - - Player_Impact_Damage_Light_01 - - StoryReel5Full 062821_4 AP - - OW_PR_FootstepsWaterWade_07 - - OW_NM_SkypeLP - - OW_SP_ShipGroan2_v2 - - Volcano_Ambience_Loop_V2 - - AnglerFish_Chomp_Loop_v2 - - Destruction Debris 2 - - OW_PR_LandInWater2 - - OW_PR_FootstepsIce_05 - - Footstep_Run1 - - Anglerfish_ChompBite_01 - - Destruction Debris 1 - - Ghost Run Footstep Forest 1 - - AnglerFish_Target_v2_02 - - Signalscope_Zoom_Loop - - BH_Ambience_Below_Crust - - fogsphere_pulse3 - - OW_GD_HeatLightning_08 - - AshTwinCore_Close_01 - - Airlock Depressurize - - OW_TH_ModelRocketThrustRotational_03 - - OW_NM_ComputerRing2 - - RockPile_Fall_05 - - Vision Torch Fire - Loop - - OW Farewell 061721 AP - - Hologram_Enter_v2_01 - - OW_PR_ThrustRotationalUnderwater_03 - - Forest Oneshot - Tree Creak 8 - - OW_PR_LandInWater3 - - Hotel Oneshot - Creak 3 - - Hotel Oneshot - Heavy Thud 1 - - Distant Ghost Cacophony 1 - - Footstep_Run2 - - OW_TH_ProjectorRun_loop - - OW_PR_FootstepsJumpGrass_04 - - Destruction Impact - Large 5 - - FootstepsWoodCreak_03 - - OW_PR_FootstepsIce_03 - - Solanum_Foley_HandRaise - - OW_NM_DoorStart_Big_03 - - Candle Extinguishing Test Variation 6 - - Ignite_CampFire_01 - - Nature Oneshot - Distant Creature 3 - less reverb - - Real World Water Ambience - Slow River - - Ghost Grunt 5 - - IceMelt_v2_LowPass - - OW_NM_GravityCannonDeactivated - - OW Ghost Sequence 011121 AP LOW SUSPENSE LP - - Anglerfish_Sleeping - - Real World Water Ambience - Slow River 2 - - OW_PR_FootstepsWaterWade_02 - - Ghost Walk Footstep Forest 3 - - Spark_05 - - OW No-Eye Ruins 082121 AP stinger - - Nature Oneshot - Distant Deep Creature 3 - - OW_NM_SunStation - - Projector Totem Extinguish 1 - - Dreamfire Crackling Loop 3 - - OW Ghost Ambiences 012921_2 AP slam - - Dreamfire Explosion - - Dream World Water Ambience - Creek 8 - - OW_PR_FootstepsSnow_05 - - OW_PR_FootstepsIce_04 - - Dream World Water Ambience - Creek 5 - - Ghost Run Footstep Forest 2 - - OW_NM_DoorStart_08 - - Outer Wilds Party House v8 050321_2 AP traveler drone - - Hotel Oneshot - Heavy Creak 1 - - Secret Passageway Open Start 2 - - FootstepsWoodCreak_01 - - Ghost Grunt 8 - - OW_PR_FootstepsMetal_06 - - Probe_Attach_v3_02 - - OW_PR_LandInWater1 - - FootstepsWoodCreak_06 - - OW_PR_FootstepsBushRustle_04 - - Projector Totem Blow - - OW_PR_FootstepsWaterWade_01 - - Raft Movement Loop - - OW_SP_ThrustRotationalUnderwater_01 - - OW_PR_FallingIntoLavaBeep_loop - - Ship_Impact_Light_Damage_V3_01 - - Ship_Impact_Medium_Damage_V3_02 - - Ghost Walk Footstep Wood_v2 1 - - Nomai_Stone_Door_End_Big_V2_02 - - OW ReelBeat 04c_2 040921 AP - - Raft Push - - OW_PR_FootstepsJumpIce_03 - - Nomai_Stone_Door_End_Big_V2_05 - - Destruction Impact 5 - - HGT_SandFallSmall_Inside - - OW Quantum Lightning 091118 AP 01 - - OW_PR_OxygenLeakingFromSuit_in - - OW_PR_HelmetOn - - OW_SP_AutopilotDisengaged 1 - - PutDown_Ceramic_01 - - OW_PR_FootstepsMetal_07 - - Water Spray Impact 7 - - Dream World Alarm Bell Oneshot 4 - - CityLights_On_01 - - rockingchair3 - - fogsphere_pulse5 - - Nomai_ShipPowerOn_V2_01 - - OW_GD_IslandSuckedInTornado - - OW_NM_DoorStart_05 - - Probe_Attach_v3_01 - - OW_PR_ThrustRotationalUnderwater_02 - - Outer Wilds Party House v8 050321_3 AP traveler - - Artifact Put Down - - OW ReelBeat 01b 021021 AP - - stoppedasphyxiating_suit2 - - FootstepsJumpWoodCreak_04 - - Destruction Debris 6 - - Nomai_Warp_03_Shorter - - mallowpuff1 - - OW ReelBeat 02d 021021 AP - - OW_TravelerTheme_harmonica - - shiplog_misc4 - - Projector Totem Extinguish 3 - - OW ReelBackdrop 02b 021021 AP - - OW_PR_FootstepsDirt_03 - - Lava_Splash_01 - - Engine_Start_V2 - - Solar Sail Start - - OW_PR_ThrustTranslational_v2_01 - - Light Sensor Fade Out 1 - - Prisoner Cloth Foley 4 - - OW Quantum Lightning 091118 AP 02 - - OW_NM_RemoveScroll - - asphyxiation_suit_firsthalf2 - - OW_TH_AmbienceNightInCanyons - - Footstep2 - - OW ReelBackdrop 03b LOOP 031521 AP - - OW_SP_ThrustRotationalUnderwater_04 - - OW_PR_FootstepsNomai_08 - - OW_PR_FootstepsNomai_03 - - OW ReelBeat 03d 061121 AP - - OW_PR_FootstepsJumpSand_04 - - RotationalThruster03 - - Stilts Destruction 5 - - Raft Run Aground - - OW Space Station 081420_2 AP - - OW_PR_FootstepsWaterWade_06 - - Spark_02 - - Cloaking Field Entry - - OW_NM_DataWormhole - - OW_QuantumSignal - - General Destruction 3 - - OW New Raft Music 082321_4 AP quiet - - OW_SP_Unbuckle - - Real World Water Ambience - Calm 2 - - Prisoner Grunt 3 - - OW_NM_OrbMoveGlass_lp_01 - - Prisoner Cloth Foley 7 - - OW_PR_FootstepsRock_05 - - OW Traveler Theme 021821 AP FINAL TIME WITH PIANO ADD PRISONER - - OW Quantum Lightning 091118 AP 03 - - OW_TH_ModelRocketThrustRotational_02 - - OW_PR_HitWallUnderwater3 - - Flashlight_Malfunction_03 - - OW NM Flashback 082818 loop overlay AP - - supernova_corecollapse_10sec_fadeOut - - OW_PR_FootstepsWood_05 - - rockingchair1 - - Power_Failure_v2_02 - - OW_PR_FootstepsMetal_05 - - Stilts Destruction 2 - - Dreamworld Tower Tilt - - OW New Texture 082921 AP loop - - Lantern Insert 3 - - OW_PR_FootstepsNomai_07 - - OW_PR_FootstepsJumpWood_06 - - Pool_Enter_v3_Fade - - Raft Movement Start - - OW_PR_FootstepsNomai_05 - - OW_PR_HardSplash - - Destruction Debris 5 - - Dreamworld Candle Lighting Test Variation 2 - - OW NM Flashback 082818_2 AP stinger delayed - - Ghost Shout 4 - - Nomai_Stone_Door_End_Big_V2_06 - - Tower Tilt - - OW_NM_DoorStart_Big_06 - - OW_PR_FootstepsLeaves_03 - - Ghost Run Footstep Wood_v2 3 - - OW_NM_BHExitItem_v2 - - Ghost Idle Search 5 - - Forest Oneshot - Animal 1 - - OW Dreamworld Ruins 072021 AP 02d - - OW_PR_FootstepsJumpSnow_02 - - Platform_Break_V2_01 - - OW Party House 092820 AP short loop - - OW_PR_FootstepsRock_06 - - OW_SP_ThrustTranslational - - Footstep6 - - OW_PR_FootstepsWaterWade_05 - - Ghost Start Hunt Grunt 2 - - OW Dreamworld Ruins 072021 AP 02f - - Nomai_Stone_Door_End_Big_V2_12 - - Jump_Into_TinyGalaxy_v2_03 - - Footstep_Run3 - - Negative1 - - OW_TravelerTheme_banjo - - SandColumnEnd_v2 - - OW_PR_FootstepsJumpSand_05 - - Dreamworld Lights Out Ambience 2 - - OW Blair Witch Project 082921_3 AP darker mix loop - - Fig_Backer_Sat_Audio_V3 - - OW_PR_FootstepsGlass_01 - - Light Sensor Fade Out 4 - - Projector Totem Light 1 - - Player Gravel Footstep 6 - - OW_TH_GeyserStart_03 - - Slide Reel Remove 3 - - Ship_Impact_Medium_Damage_V3_06 - - OW Quantum Lightning 091118 AP 05 - - OW_GD_Tornado_v2_01 - - OW_SP_ActivateComputerLP - - Footstep_Run6 - - Spark_13 - - Vine_Crash_V3_02_LowPassDelay - - OW Slideshow BURNT LOOP small 031521_2 AP - - Raft Heavy Impact 4 - - Light Sensor Door Loop - Door Sensor Sliding - - Sarcophagus Strain 3 - - Loading Tunnel - Load - - elevatorstart - - Nomai_Stone_Door_End_V2_02 - - OW_GD_Tornado_v2_02 - - OW_NM_DoorAirLockAirPourOut_01 - - OW_TravelerTheme_newtraveler 061021 AP - - OW ReelBackdrop 04a_3 041321 AP LP - - OW_PR_FootstepsJumpRock_04 - - Damage_Heavy_04 - - Raft Movement Stop 2 - - OW_SP_AnalogClick2_v2 - - Nomai_Stone_Door_End_V2_01 - - OW_PR_FootstepsRock_07 - - Raft Light Impact V2 4 - - Marshmallow_Replace_01 - - Footstep5 - - Destruction Impact 3 - - Helmet_Glass_Crack_08 - - Ghost Run Footstep Wood_v2 6 - - OW End Credits 022019_3 AP - - Raft Heavy Impacts V2 2 - - Nomai_Stone_Door_End_Big_V2_13 - - OW_NM_GravityCannonActivated - - Outer Wilds Party House v8 050321_2 AP Bass - - Ringworld Muffled Indoor Ambience - - Ghost Run Footstep Wood_v2 2 - - OW_GD_AmbienceUndewater - - Forge_Loop_V3_03 - - OW_PR_CampfireAmbience - - OW_PR_FootstepsRock_08 - - Platform_Break_V2_02 - - OW_PR_FootstepsJumpWood_02 - - OW Eye Temple 121820_2 AP LP - - OW_GD_WavesAgainstBeach - - OW_PR_ThrowProbe - - OW_NM_DoorStart_07 - - OW_PR_FootstepsSand_04 - - Lantern Pickup - - Real World Water Ambience - Rapids 2 - - OW_PR_FootstepsWood_04 - - OW_NM_TractorBeamPowerUp - - OW New Stinger 082921 AP - - OW_PR_FootstepsGrass_07 - - Hotel Oneshot - Creak 7 - - Player_On_Fire_Loop - - OW_TH_UnderwaterRushing - - GhostMatter_Splash_v4_01 - - OW_SP_ThrustRotationalUnderwater_06 - - OW Fabric SFX 102119 AP rip FADE OUT - - OW Dreamworld Ruins 072021 AP 02a - - Spark_06 - - OW_SP_SignalscopeChunkV2 - - Player Gravel Footstep 2 - - OW_PR_FootstepsBushRustle_07 - - Hologram_Exit_v2_01 - - Metal Door Open Stop - - OW_PR_FootstepsJumpWood_01 - - OW_PR_FootstepsWaterWade_04 - - Nature Oneshot - Distant Deep Creature 2 - - Stilts Destruction 1 - - OW NM Flashback 082818 AP overlay1 - - drowning_secondhalf1 - - Gear Rotate Locked_Short - - Prisoner Cloth Foley 5 - - shiplog_deselectplanet - - Orb_End_v3_01 - - Atmosphere_High_Ship - - Solar Sail Start 2 - - knife_scrape_02 - - OW_TH_GeyserEnd_03 - - Meteor_Impact_03_b - - Destruction Impact 6 - - JellyFish_Shock_01 - - Light Sensor Loop - - Candle Extinguishing Test Variation 4 - - Vision Torch Light Rays - Off - - OW_NM_DoorSlide_Big_LP_05 - - OW_PR_FootstepsDirt_05 - - Sand_Column_Start_v2_03 - - Water Spray Impact 6 - - OW_NM_DoorStart_Big_07 - - OW_SP_ShipGroan3_v2 - - Heat_Damage_Loop_01 - - OW_SP_LandingCamDeactivated 1 - - breathing_lowO2_6 - - OW_PR_OxygenLeakingFromSuit_out - - LogUpdated_001 - - Vine_Crash_V3_04_LowPassDelay - - Destruction Debris 7 - - Hotel Oneshot - Heavy Creak 2 - - OW_PR_HelmetOff - - OW_PR_FootstepsGrass_04 - - Forest Oneshot - Animal 3 - - OW Discovery 083021_2 AP shorter - - Slide Reel Insert 3 - - OW_NM_BHEnterExitPlayer_v2 - - Ship_Impact_Light_Damage_V3_05 - - OW_SP_OpenHatch_NoBeep - - OW_SP_ThrustRotationalUnderwater_05 - - ShipSubmerge - - Artifact Fire Loop - - OW_DarkBramble_loop - - OW_PR_FootstepsBushRustle_08 - - OW NM Nomai City 081718 AP LOOP - - Solar Sail Stop 2 - - Destruction Impact - Large 1 - - OW Dream Rule LP 032421 AP normal - - Solar Sail Loop - - OW_TH_GeyserStart_02 - - Ship_Impact_No_Damage_V3_05 - - OW_PR_FootstepsIce_06 - - Outer Wilds Party House v8 050321_2 AP vocals - - asphyxiation_suit_secondhalf2 - - Affirmative1 - - Spark_12 - - OW_SP_ConsoleReadoutLP - - OW ReelBackdrop 03c 042621 AP LP - - gasp_light9 - - Nomai_Stone_Door_End_V2_03 - - OW_PR_FootstepsJumpNomai_06 - - OW_PR_FootstepsGlass_04 - - OW_PR_FootstepsDirt_04 - - Destruction Debris 9 - - OW_PR_FootstepsIce_08 - - OW_PR_SuitOff - - Artifact Pickup - - OW_SUN_Ambience_v4 - - JellyFish_Shock_05 - - OW_TH_Underwater - - Station Shudder - Dreamworld - - Ghost Walk Footstep Forest 5 - - OW_TH_ProjectorActivate - - asphyxiation_suit_firsthalf1 - - OW_PR_SignalscopeZoomIn - - HGT_Ambience_Surface - - FootstepsWoodCreak_08 - - GhostMatter_Splash_v4_03 - - UI_Tab_v2_05 - - Raft Medium Impact V2 3 - - OW_NM_TractorBeamPowerDown - - OW_Travel_Theme_Remaster - - Big_Galaxy_Burn_v2_01 - - OW_TH_Insects_loop_02 - - Raft Heavy Impact 3 - - Raft Movement Start 2 - - OW Quantum Lightning 091118 AP 04 - - OW_TH_FlagFlapping_loop._04 - - OW_TH_ModelRocketThrustTranslational_02 - - knife_scrape_03 - - Incinerate_v3_02 - - Light Sensor Rotate - - OW_NM_EscapePodDistressSignal - - MapZoomOut_Tone - - OW_NM_DoorStart_Big_05 - - Player Gravel Footstep 7 - - Ghost Walk Footstep Wood_v2 2 - - Ghost Run Footstep Forest 5 - - Ghost Walk Footstep Forest 4 - - OW_PR_HitWallUnderwater2 - - OW NM Flashback 082818_2 AP stinger - - OW_PR_FootstepsJumpGrass_05 - - Fix_Puncture_04 - - Ghost Idle Search 3 diff --git a/docs/content/pages/secret.md b/docs/content/pages/secret.md deleted file mode 100644 index 9e54ecdf..00000000 --- a/docs/content/pages/secret.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -Title: Hidden Page -Description: Hehe funny secret -Hide_In_Nav: True ---- - -# Hello!! - -Uh idk what to put here thought it would be funny haha - -![Cow](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia1.tenor.com%2Fimages%2F964831e7eccb34007e82c065a50679ef%2Ftenor.gif%3Fitemid%3D18924714&f=1&nofb=1) - -## It's Morbin' Time - -![image](https://user-images.githubusercontent.com/25644444/178856213-44cb0a38-6d3d-4af6-b7f8-0ae6cda8d44a.png) - -## Test - -aaaaaaaaaaaaaaaaaaaaaaaaa - -## 9/2/22 - -Where were you when new horizons docs died, im going gorbo mode - - diff --git a/docs/content/pages/tutorials/creating_addon.md b/docs/content/pages/tutorials/creating_addon.md deleted file mode 100644 index fc88919f..00000000 --- a/docs/content/pages/tutorials/creating_addon.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -Title: Creating An Addon -Sort_Priority: 85 ---- - -# Creating An Addon - -Up until now, you've been using the sandbox feature of New Horizons (simply placing your files in the `xen.NewHorizons` folder). -While this is the easiest way to get started, you won't be able to publish your work like this. In this tutorial we will: - -- Create a new GitHub repository from a template -- Use GitHub Desktop to clone this repository to our computer -- Edit the files in this repository to make our addon - -## Making a GitHub Repository - -To get started, we need a place to store our code. GitHub is one of the most popular websites to store source code, and it's also what the mod database uses to let people access our mod. -First you're going to want to [create a GitHub account](https://github.com/signup){ target="_blank" }, and then head to [this repository](https://github.com/xen-42/ow-new-horizons-config-template){ target="_blank" }. -Now, click the green "Use This Template" button. - -- Set the Name to your username followed by a dot (`.`), followed by your mod's name in PascalCase (no spaces, new words have capital letters). So for example if my username was "Test" and my mod's name was "Really Cool Addon", I would name the repo `Test.ReallyCoolAddon`. -- The description is what will appear in the mod manager under the mod's name, you can always edit it later -- You can set the visibility to what you want; But when you go to publish your mod, it will need to be public - -## Cloning the Repository - -Now that we've created our GitHub repository (or "repo"), we need to clone (or download) it onto our computer. -To do this we recommend using the [GitHub Desktop App](https://desktop.github.com/){ target="_blank" }, as it's much easier to use than having to fight with the command line. - -Once we open GitHub desktop we're going to log in, select File -> Options -> Accounts and sign in to your newly created GitHub account. -Now we're ready to clone the repo, select File -> Clone Repository. Your repository should appear in the list. -Before you click "Clone", we need to select where to store the repo, open up the mod manager and go to "Settings", then copy the value located in the "OWML path" field and paste it in the "Local path" field on GitHub desktop. -This *will* show an error, and this is going to sound extremely stupid, but just click the "Choose..." button, and press "Select Folder" and it will be fixed. - -Our repository is now cloned to our computer! - -## Editing Files - -Now that our repo is cloned, we're going to need to edit the files in it. -To get started editing the files, simply click "Open in Visual Studio Code" in GitHub Desktop. - -### Files Explanation - -- .github: This folder contains special files for use on GitHub, they aren't useful right now but will be when we go to publish the mod -- planets: This folder contains a single example config file that destroys the Quantum Moon, we'll keep it for now so we can test our addon later. -- .gitattributes: This is another file that will be useful when publishing -- default-config.json: This file is used in C#-based mods to allow a custom options menu, New Horizons doesn't support a custom options menu, but we still need the file here in order for the addon to work. -- manifest.json: This is the first file we're going to edit, we need to fill it out with information about our mod - - First you're going to set `author` to your author name, this should be the same name that you used when creating the GitHub repo. - - Next, set `name` to the name you want to appear in the mod manager and website. - - Now set `uniqueName` to the name of your GitHub Repo. - - You can leave `version`, `owmlVersion`, and `dependencies` alone -- NewHorizonsConfig.dll: This is the heart of your addon, make sure to never move or rename it. -- README.md: This file is displayed on the mod website when you go to a specific mod's page, you can delete the current contents. - - This file is a [markdown](https://www.markdowntutorial.com/){ target="_blank" } file, if you're not comfortable writing an entire README right now, just write a small description of your mod. - -### Committing The Changes - -Now that we have our files set up, switch back to GitHub desktop, you'll notice that the files you've changed have appeared in a list on the left. -What GitHub Desktop does is keep track of changes you make to your files over time. -Then, once you're ready, you commit these changes to your repo by filling out the "Summary" field with a small description of your changes, and then pressing the blue button that says "commit to main". - -Think of committing like taking a snapshot of your project at this moment in time. If you ever mess up your project, you can always revert to another commit to get back to a working version. It is highly recommended to commit often, there is no downside to committing too much. - -### Pushing The Changes - -OK, so we've committed our new changes, but these commits still only exist on our computer, to get these changes onto GitHub we can click the "Push Origin" button on the top right. - -## Testing The Addon - -Now that we have our manifest filled out, go take a look at the "Mods" tab in the manager and scroll to the bottom of the "Enabled Mods" list. - -You should see your mod there with the downloads counter set as a dash and the version set to "0.0.0". - -### Checking In-Game - -Now when you click "Start Game" and load into the solar system, you should be able to notice that the quantum moon is gone entirely, this means that your addon and its configs were successfully loaded. - -## Going Forward - -Now instead of using the New Horizons mod folder, you can use your own mod's folder instead. - -**Next Up: [Planet Generation]({{ "Planet Generation"|route }})** diff --git a/docs/content/pages/tutorials/getting_started.md b/docs/content/pages/tutorials/getting_started.md deleted file mode 100644 index 1b2da307..00000000 --- a/docs/content/pages/tutorials/getting_started.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -Title: Getting Started -Sort_Priority: 100 ---- - -# Getting Started - -Congrats on taking the first step to becoming an addon developer! -This tutorial will outline how to begin learning to use new horizons. - -## Recommended Tools - -It's strongly recommended you get [VSCode](https://code.visualstudio.com/){ target="_blank" } to edit your files, as it can provide syntax and error highlighting. - -## Using The Sandbox - -Making an entirely separate addon can get a little complicated, so New Horizons provides a way to play around without the need to set up a full addon. -To get started, navigate to your mod manager and click the ⋮ symbol, then select "Show In Explorer". - -![Select "Show in explorer"]({{ "images/getting_started/mod_manager_show_in_explorer.webp"|static }}) - -Now, create a new folder named "planets". As the name suggests, New Horizons will search the files in this folder for planets to generate. - -## Making Your First Planet - -To get started, create a new file in this folder called `wetrock.json`, we'll explain what that .json at the end means soon. -Open this file in VSCode (you can do so by right-clicking the file and clicking "Open with Code") -Once in VSCode, paste this code into the file: - -```json -{ - "name": "Wetrock", - "$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/body_schema.json", - "starSystem": "SolarSystem", - "Base": { - "groundSize": 100, - "surfaceSize": 101, - "surfaceGravity": 12, - "hasMapMarker": true - }, - "Orbit": { - "semiMajorAxis": 1300, - "primaryBody": "TIMBER_HEARTH", - "isMoon": true, - "isTidallyLocked": true - }, - "Atmosphere": { - "size": 150, - "fogTint": { - "r": 200, - "g": 255, - "b": 255, - "a": 255 - }, - "fogSize": 150, - "fogDensity": 0.2, - "hasRain": true - } -} -``` - -This language is **J**ava**S**cript **O**bject **N**otation, or JSON. -It's a common way to convey data in many programs. - -## Understanding JSON - -All JSON files start out with an `object`, or a set of key value mappings, for example if we represent a person as JSON it might look like: - -```json -{ - "name": "Jim" -} -``` - -Those braces (`{}`) denote an object, and by doing `"name": "Jim"` we're saying that the name of this person is Jim; -`"name"` is the key, and `"Jim"` is the value. - -Objects can have multiple keys as well, as long as you separate them by commas: - -```json -{ - "name": "Jim", - "age": 23 -} -``` - -But wait! why is `Jim` in quotation marks while `23` isn't? that's because of something called data types. -Each value has a datatype, in this case `"Jim"` is a `string`, because it represents a *string* of characters. -Age is a `number`, it represents a numerical value. If we put 23 in quotation marks, its data type switches from a number to a string. -And if we remove the quotation marks from `"Jim"` we get a syntax error (a red underline). Datatypes are a common source of errors, which is why we recommend using an editor like VSCode. - -### JSON Data Types - -Here's a list of data types you'll use when making your addons: - -#### String - -A set of characters surrounded in quotation marks - -```json -"Im a string!" -``` - -If you need to use quotation marks within your string, place a backslash (`\`) before them - -```json -"\"Im a string!\" - Mr. String Stringerton" -``` - -#### Number - -A numerical value, can be negative and have decimals, **not** surrounded in quotation marks - -```json --25.3 -``` - -#### Boolean - -A `true` or `false` value, think of it like an on or off switch, also not surrounded in quotation marks - -```json -true -``` - -```json -false -``` - -#### Array - -A set of values, values can be of any data type. Items are seperated by commas. - -```json -[23, 45, 56] -``` - -```json -["Bob", "Suzy", "Mark"] -``` - -And they can be empty like so: - -```json -[] -``` - -#### Object - -A set of key value pairs, where each key is a string and each value can be of any data type (even other objects!) - -```json -{ - "name": "Jim", - "age": 23, - "isMarried": false, - "clothes": { - "shirtColor": "red", - "pantsColor": "blue" - }, - "friends": ["Bob", "Wade"], - "enemies": [] -} -``` - -## Back to Wetrock - -Now that we understand JSON better, let's look at that config file again: - -```json -{ - "name": "Wetrock", - "$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/body_schema.json", - "starSystem": "SolarSystem", - "Base": { - "groundSize": 100, - "surfaceSize": 101, - "surfaceGravity": 12, - "hasMapMarker": true - }, - "Orbit": { - "semiMajorAxis": 1300, - "primaryBody": "TIMBER_HEARTH", - "isMoon": true, - "isTidallyLocked": true - }, - "Atmosphere": { - "size": 150, - "fogTint": { - "r": 200, - "g": 255, - "b": 255, - "a": 255 - }, - "fogSize": 150, - "fogDensity": 0.2, - "hasRain": true - } -} -``` - -Here we can see we have a planet object, which name is "Wetrock", and is in the "SolarSystem" (Base-game) star system. -It has an object called Base, which has a groundSize of 100, and a surfaceSize of 101, and the list continues on. - -Alright so now that we understand how the file is structures, let's look into what each value actually does: - -- `name` simply sets the name of the planet -- `$schema` we'll get to in a second -- `starSystem` specifies what star system this planet is located in, in this case we're using the base game star system, so we put "SolarSystem" - - Then it has an object called `Base` - - Base has a `groundSize` of 100, this generates a perfect sphere that is 100 units in radius as the ground of our planet - - It also has a `surfaceSize` of 101, surface size is used in many calculations, it's generally good to set it to a bit bigger than ground size. - - `surfaceGravity` describes the strength of gravity on this planet, in this case it's 12 which is the same as Timber Hearth - - `hasMapMarker` tells new horizons that we want this planet to have a marker on the map screen - - Next it has another object called `Orbit` - - `semiMajorAxis` specifies the radius of the orbit (how far away the body is from its parent) - - `primaryBody` is set to TIMBER_HEARTH, this makes our planet orbit timber hearth - - `isMoon` simply tells the game how close you have to be to the planet in map mode before its name appears - - `isTidallyLocked` makes sure that one side of our planet is always facing timber hearth (the primary body) - - Finally, we have `Atmosphere` - - Its `size` is 150, this simply sets how far away from the planet our atmosphere stretches - - Its `fogTint` is set to a color which is an object with r, g, b, and a properties (properties is another word for keys) - - `fogSize` determines how far away the fog stretches from the planet - - `fogDensity` is simply how dense the fog is - - `hasRain` makes rainfall on the planet - -### What's a Schema? - -That `$schema` property is a bit special, it instructs VSCode to use a pre-made schema to provide a better editing experience. -With the schema you get: - -- Automatic descriptions for properties when hovering over keys -- Automatic error detection for incorrect data types or values -- Autocomplete, also called IntelliSense - -## Testing The Planet - -With the new planet created (*and saved!*), launch the game through the mod manager and click resume expedition. If all went well you should be able to open your map and see wetrock orbiting Timber Hearth. - -If you run into issues please make sure: - -- You placed the JSON file in a folder called `planets` in the New Horizons mod folder -- There are no red or yellow squiggly lines in your file - -## Experiment! - -With that, try tweaking some value like groundSize and semiMajorAxis, get a feel for how editing JSON works. - -## Reloading Configs - -It can get annoying when you have to keep closing and opening the game over and over again to test changes, that's why New Horizons has a "Reload Configs" feature. -To enable it, head to your Mods menu and select New Horizons and check the box that says Debug, this will cause a "Reload Configs" option to appear in your pause menu which will reload changes from your filesystem. -You may also notice blue and yellow logs start appearing in your console, this is New Horizons providing additional info on what it's currently doing, it can be helpful when you're trying to track down an issue. - -## Modules - -Base, Atmosphere, and Orbit are all modules, which define the different aspects of your planet, modules are represented by JSON objects - -**Next Up: [Reading Schemas]({{ "Reading Schemas"|route }})** diff --git a/docs/content/pages/tutorials/reading_schemas.md b/docs/content/pages/tutorials/reading_schemas.md deleted file mode 100644 index db162888..00000000 --- a/docs/content/pages/tutorials/reading_schemas.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -Title: Reading Schemas -Sort_Priority: 90 ---- - -# Reading Schema Pages - -Reading and understanding the schema pages are key to knowing how to create planets. While these tutorials may be helpful, they won't cover everything, and new features may be added before the tutorial on them can be written. - -## Celestial Body Schema - -The [celestial body schema]({{ "Celestial Body Schema"|route }}) is the schema for making planets, there are other schemas which will be explained later but for now let's focus on this one. - -![The Celestial Body Schema Page]({{ "images/reading_schemas/body_schema_1.webp"|static }}) - -As you can see the type of this is `object`, which we talked about in the previous section. -We can also observe a blue badge that says "No Additional Properties", this signifies that you can't add keys to the object that aren't in the schema, for example: - -```json -{ - "name": "Wetrock", - "coolKey": "Look at my cool key!" -} -``` - -Will result in a warning in VSCode. Now, this will *not* prevent the planet from being loaded, however you should still avoid doing it. - -## Simple Properties - -![The name property on the celestial body schema]({{ "images/reading_schemas/body_schema_2.webp"|static }}) - -Next up let's look at `name`, this field is required, meaning you *have* to have it for a planet to load. -When we click on name we first see a breadcrumb, this is essentially a guide of where you are in the schema, right now we're in the name property of the root (topmost) object. -We can also see it's description, its type is `string`, and that it requires at least one character (so you can't just put `""`). - -Badges can also show stuff such as the default value, the minimum and maximum values, and more. - -## Object Properties - -![The Base object on the celestial body schema]({{ "images/reading_schemas/body_schema_3.webp"|static }}) - -Next let's look at an `object` within our root `object`, let's use `Base` as the example. - -Here we can see it's similar to our root object, in that it doesn't allow additional properties. -We can also see all of its properties listed out. - -## Array Properties - -Now let's take a look over at [removeChildren]({{ "Celestial Body Schema"|route }}#removeChildren) to see how arrays work (if you're wondering how you can get the page to scroll to a specific property, simply click on the property and copy the URL in your URL bar) - -![The curve property on a star in the celestial body schema]({{ "images/reading_schemas/body_schema_4.webp"|static }}) - -Here we can see that the type is an `array`, and each item in this array must be a `string` - -## Enum Properties - -Enum properties simply mean that they must be of one of the values shown, for example [Ring fluid type]({{ "Celestial Body Schema"|route }}#Ring_fluidType) has to be one of these values. - -![The enum values of fluidType]({{ "images/reading_schemas/body_schema_5.webp"|static }}) - -## Some Vocabulary - -- GameObject: Essentially just any object in, well, the game. You can view these object in a tree-like structure with the [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer) mod. Every GameObject has a path, which is sort of like a file path in that it's a list of parent GameObjects seperated by forward slashes followed by the GameObject's name. -- Component: By themselves, a GameObject doesn't actually *do* anything, components provide stuff like collision, rendering, and logistics to GameObjects -- Config: Just another name for a JSON file "planet config" simply means a json file that describes a planet -- Module: A specific section of the config (e.g. Base, Atmosphere, etc), these usually start with capital letters - -## Note About File Paths - -Whenever a description refers to the "relative path" of a file, it means relative to the mod's directory, this means you **must** include the `planets` folder in the path: - -```json -"planets/assets/images/MyCoolImage.png" -``` - -## Other Schemas - -There are other schemas available, some are for JSON, and some are for XML. - -## Moving Forward - -Now that you know how to read the schema pages, you can understand the rest of this site. A lot of the other tutorials here will often tell you to take a look at schemas to explain what certain properties do. - -**Next Up: [Creating An Addon]({{ "Creating An Addon"|route }})** diff --git a/docs/content/pages/tutorials/star_system.md b/docs/content/pages/tutorials/star_system.md deleted file mode 100644 index aa3218de..00000000 --- a/docs/content/pages/tutorials/star_system.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -Title: Star Systems -Description: A guide to editing a custom star system in New Horizons -Sort_Priority: 65 ---- - -# Intro - -Welcome! This page outlines how to edit a custom star system. - -## Getting Started - -Star Systems are placed in a folder called systems within your mod folder. - -The name of your star system config must be the same as the unique id used in the `starSystem` field of your planet configs. Example: `xen.RealSolarSystem.json`. - -A star system config file will look something like this: - -```json -{ - "$schema": "https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/star_system_schema.json", - "travelAudio": "assets/Travel.mp3", - "Vessel": { - "coords": { - "x": [ 4, 0, 3, 1 ], - "y": [ 0, 5, 4 ], - "z": [ 5, 4, 0, 3, 1 ] - }, - "vesselPosition": { - "x": 0, - "y": 0, - "z": 8000 - } - } -} -``` - -To see all the different things you can put into a config file check out the [Star System Schema]({{ 'Star System Schema'|route}}). - -## Vessel Coordinates - -You can warp to custom star systems via the Nomai vessel. Each coordinate has to be 2-6 points long. -These are the points for each coordinate node. When making your unique coordinate you should only use each point once. -![nomaiCoordinateIndexes]({{ "images/star_system/nomai_coordinate_indexes.webp"|static }}) - -### Hearthian Solar System Vessel Coordinates - -You can use these coordinates to warp back to the hearthian solar system. -![hearthianSolarSystemCoordinates]({{ "images/star_system/hearthian_solar_system_coordinates.webp"|static }}) \ No newline at end of file diff --git a/docs/content/pages/tutorials/translation.md b/docs/content/pages/tutorials/translation.md deleted file mode 100644 index c31d14c1..00000000 --- a/docs/content/pages/tutorials/translation.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -Title: Translations -Sort_Priority: 60 ---- - -# Translations - -There are 12 supported languages in Outer Wilds: english, spanish_la, german, french, italian, polish, portuguese_br, japanese, russian, chinese_simple, korean, and turkish. - -All translations must go in a folder in the root directory called "translations". - -In this folder you can put json files with the name of the language you want to translate for. Inside this file just follow the translation schema. - -Here's an example, for `russian.json`: - -```json -{ - "$schema": "https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/translation_schema.json", - "DialogueDictionary" : - { - "Fred" : "Фред", - "You looking at something?" : "Ты что-то искал?", - "Aren't you guys all supposed to be dead?" : "А разве номаи не вымерли?", - "OH MY GOD A LIVING NOMAI AHHH WHAT HOW?!" : "ААААА, ЖИВАЯ НОМАИ?!" - }, - "ShipLogDictionary" : - { - "Unexpected guests" : "Незванные гости", - "Visitors" : "Гости", - "When I went to sleep by the campfire only Slate was here, who are these characters?" : "Когда я ложился спать у костра здесь был только Сланец. Кто все остальные?", - "I met a talking jellyfish. His name is Geswaldo!" : "Я встретил говорящую медузу. Его зовут Гесвальдо!" - } -} -``` - -# CLI Tool - -Are you tired of manually translating JSON? Do you want an automatic translator? Well then the [nh-translation-helper](https://www.npmjs.com/package/nh-translation-helper){ target="_blank" } may be for you! - -This tool has the following features: - -- Extract text from XML files and create english.json as the translation source. -- Translate english.json to create a json file for another language. - -This section outlines how to install and use the nh-translation-helper. - -## Installation - -To get started, head over to the [repo for the tool](https://github.com/96-38/nh-translation-helper){ target="_blank" } and prepare the requirements: - -- Install [Node.js](https://nodejs.org/){ target="_blank" } >= 12.0.0 - - Install the LTS version. -- Get [DeepL API](https://www.deepl.com/docs-api){ target="_blank" } Key (Free or Pro) - - Sign up [here](https://www.deepl.com/pro#developer){ target="_blank" } - -When you are ready, execute the following command in a terminal or command prompt: - -```bash -npm i -g nh-translation-helper -``` - -Now your installation is complete! - -You can use the tool by executing the following command in a terminal or command prompt: - -```bash -nh-translation-helper -``` - -## Generating a english.json from XML - -Select `Generate english.json from XML files` and enter the path of your project folder. - -You are done! a english.json has been generated in "*your_project_root*/translations/". - -## Translating english.json to another language - -Select `Translate JSON (DeepL API key required)` and enter the path of your project folder. ( Note: **Not** the path to the "translations" folder. ) - -Select the source and target languages. - -You are done! a translated json file has been generated in "*your_project_root*/translations/". - -Please enter the DeepL API key for the first time only. The API key will be saved on your PC. - -## Note - -- Not supported extracting UIDictionary and AchievementTranslations - - It is difficult to parse these automatically, and the number of words is small that it would be better to add them by MOD developers manually for better results. - - Translating UIDictionary and AchievementTranslations is supported. - -- Not supported translation into Korean - - Translation is provided by the DeepL API, so it is not possible to translate into languages that are not supported by DeepL. - -- The generated translations are "**not**" perfect - - It is a machine translation though DeepL. The translations on DeepL are known to be too casual or to abbreviate some sentences. - - It will need to be manually corrected to make it a good translation. However, this tool allows you to prototype and is more efficient than starting from scratch. Also, the CDATA tag has been removed from the translated text and must be added manually. - -- Parsing errors may occur when trying to translate manually created JSON files - - In many cases, this is due to a specific comment in the JSON. Please remove the comments and try again. - - Most comments are processed normally, but errors may occur if the comment contains special symbols or if the comment is located at the end of a JSON object. diff --git a/docs/content/pages/tutorials/update_existing.md b/docs/content/pages/tutorials/update_existing.md deleted file mode 100644 index 76d127db..00000000 --- a/docs/content/pages/tutorials/update_existing.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -Title: Update Planets -Sort_Priority: 85 ---- - -# Update Existing Planets - -Similar to above, make a config where "Name" is the name of the planet. The name should be able to just match their in-game english names, however if you encounter any issues with that here are the in-code names for planets that are guaranteed to work: `SUN`, `CAVE_TWIN` (Ember Twin), `TOWER_TWIN` (Ash Twin), `TIMBER_HEARTH`, `BRITTLE_HOLLOW`, `GIANTS_DEEP`, `DARK_BRAMBLE`, `COMET` (Interloper), `WHITE_HOLE`, `WHITE_HOLE_TARGET` (Whitehole station I believe), `QUANTUM_MOON`, `ORBITAL_PROBE_CANNON`, `TIMBER_MOON` (Attlerock), `VOLCANIC_MOON` (Hollow's Lantern), `DREAMWORLD`, `MapSatellite`, `RINGWORLD` (the Stranger). - -Only some of the above modules are supported (currently) for existing planets. Things you cannot modify for existing planets include: heightmaps, procedural generation, gravity, or their orbits. You also can't make them into stars or binary focal points (but why would you want to, just delete them and replace them entirely). However, this still means there are many things you can do: completely change their atmospheres, give them rings, asteroid belts, comet tails, lava, water, prop details, or signals. - -You can also delete parts of an existing planet. Here's part of an example config which would delete the rising sand from Ember Twin: -```json -{ - "name": "Ember Twin", - "removeChildren": [ - "SandSphere_Rising" - ] -} -``` - -In `childrenToDestroy` you list the relative paths for the children of the planet's gameObject that you want to delete. - -## Destroy Existing Planets - -You do this (but with the appropriate name) as its own config. -```json -{ - "name" : "Ember Twin", - "destroy" : true -} -``` - -Remember that if you destroy Timber Hearth you better put a `Spawn` module on another planet. If you want to entirely replace the solar system you can destroy everything, including the sun. Also, deleting a planet destroys anything orbiting it, so if you want to replace the solar system you can just destroy the sun. If you're making a brand new star system, you don't have to worry about deleting any existing planets; they won't be there. diff --git a/docs/content/pages/tutorials/xml.md b/docs/content/pages/tutorials/xml.md deleted file mode 100644 index 5c4db19e..00000000 --- a/docs/content/pages/tutorials/xml.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -Title: Understanding XML -Sort_Priority: 50 ---- - -# Understanding XML - -XML is the other language New Horizons uses for content. -XML files are usually passed straight to the game's code instead of going through New Horizons. - -## Syntax - -XML is composed of tags, a tag can represent a section or attribute - -```xml - - Jim - 32 - - -``` - -Notice how each tag is closed by an identical tag with a slash at the front (i.e. `` is closed by ``). - -If the tag has no content you can use the self-closing tag shorthand (i.e. `` doesn't need a closing tag because of the `/` at the end). - -This XML could be written in JSON as: - -```json -{ - "name": "Jim", - "age": 32, - "isMarried": true -} -``` - -XML is a lot more descriptive, you can actually tell that the object is supposed to be a person by the name of the tag. - -## Structure - -All XML files must have **one** top-level tag, this varies depending on what you're using it for (like how ship logs use a `` tag). - -## Schemas - -XML files can also have schemas, you specify them by adding attributes to the top-level tag: - -```xml - - -``` - -In order to get schema validation and autofill you'll need the [Redhat XML VSCode extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml){ target="_blank" }. - -## Uses - -XML is used for the following: - -- [Ship log Entries]({{ "Ship Log"|route }}) -- [Dialogue]({{ "Dialogue"|route }}) -- [Translatable Text](#) - - - diff --git a/docs/content/static/fav/android-icon-144x144.png b/docs/content/static/fav/android-icon-144x144.png deleted file mode 100644 index 17b6fa7d..00000000 Binary files a/docs/content/static/fav/android-icon-144x144.png and /dev/null differ diff --git a/docs/content/static/fav/android-icon-192x192.png b/docs/content/static/fav/android-icon-192x192.png deleted file mode 100644 index 8d38ba72..00000000 Binary files a/docs/content/static/fav/android-icon-192x192.png and /dev/null differ diff --git a/docs/content/static/fav/android-icon-36x36.png b/docs/content/static/fav/android-icon-36x36.png deleted file mode 100644 index ff9772b6..00000000 Binary files a/docs/content/static/fav/android-icon-36x36.png and /dev/null differ diff --git a/docs/content/static/fav/android-icon-48x48.png b/docs/content/static/fav/android-icon-48x48.png deleted file mode 100644 index b357eea8..00000000 Binary files a/docs/content/static/fav/android-icon-48x48.png and /dev/null differ diff --git a/docs/content/static/fav/android-icon-72x72.png b/docs/content/static/fav/android-icon-72x72.png deleted file mode 100644 index 003df7fd..00000000 Binary files a/docs/content/static/fav/android-icon-72x72.png and /dev/null differ diff --git a/docs/content/static/fav/android-icon-96x96.png b/docs/content/static/fav/android-icon-96x96.png deleted file mode 100644 index dd49d8f6..00000000 Binary files a/docs/content/static/fav/android-icon-96x96.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-114x114.png b/docs/content/static/fav/apple-icon-114x114.png deleted file mode 100644 index 0f3aff02..00000000 Binary files a/docs/content/static/fav/apple-icon-114x114.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-120x120.png b/docs/content/static/fav/apple-icon-120x120.png deleted file mode 100644 index 79eefd2b..00000000 Binary files a/docs/content/static/fav/apple-icon-120x120.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-144x144.png b/docs/content/static/fav/apple-icon-144x144.png deleted file mode 100644 index 468e9a14..00000000 Binary files a/docs/content/static/fav/apple-icon-144x144.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-152x152.png b/docs/content/static/fav/apple-icon-152x152.png deleted file mode 100644 index fe7d9574..00000000 Binary files a/docs/content/static/fav/apple-icon-152x152.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-180x180.png b/docs/content/static/fav/apple-icon-180x180.png deleted file mode 100644 index 2a20d00c..00000000 Binary files a/docs/content/static/fav/apple-icon-180x180.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-57x57.png b/docs/content/static/fav/apple-icon-57x57.png deleted file mode 100644 index 5e53e804..00000000 Binary files a/docs/content/static/fav/apple-icon-57x57.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-60x60.png b/docs/content/static/fav/apple-icon-60x60.png deleted file mode 100644 index a9bb6896..00000000 Binary files a/docs/content/static/fav/apple-icon-60x60.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-72x72.png b/docs/content/static/fav/apple-icon-72x72.png deleted file mode 100644 index 003df7fd..00000000 Binary files a/docs/content/static/fav/apple-icon-72x72.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-76x76.png b/docs/content/static/fav/apple-icon-76x76.png deleted file mode 100644 index 8667162a..00000000 Binary files a/docs/content/static/fav/apple-icon-76x76.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon-precomposed.png b/docs/content/static/fav/apple-icon-precomposed.png deleted file mode 100644 index d0ee742f..00000000 Binary files a/docs/content/static/fav/apple-icon-precomposed.png and /dev/null differ diff --git a/docs/content/static/fav/apple-icon.png b/docs/content/static/fav/apple-icon.png deleted file mode 100644 index d0ee742f..00000000 Binary files a/docs/content/static/fav/apple-icon.png and /dev/null differ diff --git a/docs/content/static/fav/favicon-16x16.png b/docs/content/static/fav/favicon-16x16.png deleted file mode 100644 index f0fb6adb..00000000 Binary files a/docs/content/static/fav/favicon-16x16.png and /dev/null differ diff --git a/docs/content/static/fav/favicon-32x32.png b/docs/content/static/fav/favicon-32x32.png deleted file mode 100644 index a07e2f46..00000000 Binary files a/docs/content/static/fav/favicon-32x32.png and /dev/null differ diff --git a/docs/content/static/fav/favicon-96x96.png b/docs/content/static/fav/favicon-96x96.png deleted file mode 100644 index d4923279..00000000 Binary files a/docs/content/static/fav/favicon-96x96.png and /dev/null differ diff --git a/docs/content/static/fav/favicon.ico b/docs/content/static/fav/favicon.ico deleted file mode 100644 index a943dc7b..00000000 Binary files a/docs/content/static/fav/favicon.ico and /dev/null differ diff --git a/docs/content/static/fav/ms-icon-144x144.png b/docs/content/static/fav/ms-icon-144x144.png deleted file mode 100644 index 468e9a14..00000000 Binary files a/docs/content/static/fav/ms-icon-144x144.png and /dev/null differ diff --git a/docs/content/static/fav/ms-icon-150x150.png b/docs/content/static/fav/ms-icon-150x150.png deleted file mode 100644 index e2534568..00000000 Binary files a/docs/content/static/fav/ms-icon-150x150.png and /dev/null differ diff --git a/docs/content/static/fav/ms-icon-70x70.png b/docs/content/static/fav/ms-icon-70x70.png deleted file mode 100644 index 03d36d3d..00000000 Binary files a/docs/content/static/fav/ms-icon-70x70.png and /dev/null differ diff --git a/docs/content/static/images/editor/log_port.webp b/docs/content/static/images/editor/log_port.webp deleted file mode 100644 index 0382c847..00000000 Binary files a/docs/content/static/images/editor/log_port.webp and /dev/null differ diff --git a/docs/content/static/images/icon.webp b/docs/content/static/images/icon.webp deleted file mode 100644 index 8a331437..00000000 Binary files a/docs/content/static/images/icon.webp and /dev/null differ diff --git a/docs/content/static/images/reading_schemas/body_schema_1.webp b/docs/content/static/images/reading_schemas/body_schema_1.webp deleted file mode 100644 index 066440da..00000000 Binary files a/docs/content/static/images/reading_schemas/body_schema_1.webp and /dev/null differ diff --git a/docs/content/static/images/reading_schemas/body_schema_2.webp b/docs/content/static/images/reading_schemas/body_schema_2.webp deleted file mode 100644 index eb101a75..00000000 Binary files a/docs/content/static/images/reading_schemas/body_schema_2.webp and /dev/null differ diff --git a/docs/content/static/images/reading_schemas/body_schema_3.webp b/docs/content/static/images/reading_schemas/body_schema_3.webp deleted file mode 100644 index 3ca75b14..00000000 Binary files a/docs/content/static/images/reading_schemas/body_schema_3.webp and /dev/null differ diff --git a/docs/content/static/images/reading_schemas/body_schema_4.webp b/docs/content/static/images/reading_schemas/body_schema_4.webp deleted file mode 100644 index 5e218ec0..00000000 Binary files a/docs/content/static/images/reading_schemas/body_schema_4.webp and /dev/null differ diff --git a/docs/content/static/images/reading_schemas/body_schema_5.webp b/docs/content/static/images/reading_schemas/body_schema_5.webp deleted file mode 100644 index 9c88e15c..00000000 Binary files a/docs/content/static/images/reading_schemas/body_schema_5.webp and /dev/null differ diff --git a/docs/content/static/styles/nh_base.css b/docs/content/static/styles/nh_base.css deleted file mode 100644 index e958d35a..00000000 --- a/docs/content/static/styles/nh_base.css +++ /dev/null @@ -1,54 +0,0 @@ -pre > code { - background-color: #1a1a1a !important; - border-radius: .25rem !important; -} - -::-webkit-scrollbar { - width: 10px; - height: 10px; -} - -::-webkit-scrollbar-track { - background: var(--bs-dark); - border-radius: 5px; -} - -::-webkit-scrollbar-thumb { - background: var(--bs-secondary); - border-radius: 5px; -} - -::-webkit-scrollbar-thumb:hover { - background: #555; -} - -.accordion-button { - background-color: #2b2b2b !important; -} - -.accordion-button:not(.collapsed)::after { - color: #effff7 !important; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); -} - -.accordion-item { - border: 1px solid rgba(0, 0, 0, 0.4) !important; -} - -.accordion-button:not(.collapsed) { - color: #effff7; - background-color: #2b2b2b; -} - -.accordion-button:not(.collapsed)::after { - color: #effff7; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); -} - -.accordion-item { - border: 1px solid rgba(0, 0, 0, 0.4); -} - -.accordion-body { - background-color: #353535 !important; -} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..dac99368 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,29 @@ +{ + "name": "nh-docs", + "private": true, + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro", + "format": "prettier --write ." + }, + "dependencies": { + "@astrojs/starlight": "^0.14.0", + "astro": "3.6.4", + "rehype-external-links": "^3.0.0", + "sharp": "^0.33.0" + }, + "devDependencies": { + "@apidevtools/json-schema-ref-parser": "^11.1.0", + "eslint": "^8.54.0", + "eslint-plugin-prettier": "^5.0.1", + "fast-xml-parser": "^4.3.2", + "prettier": "^3.1.0", + "prettier-plugin-astro": "^0.12.2", + "xml-js": "^1.6.11" + } +} diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml new file mode 100644 index 00000000..265f361d --- /dev/null +++ b/docs/pnpm-lock.yaml @@ -0,0 +1,7346 @@ +lockfileVersion: "6.0" + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + "@astrojs/starlight": + specifier: ^0.14.0 + version: 0.14.0(astro@3.6.4) + astro: + specifier: 3.6.4 + version: 3.6.4 + rehype-external-links: + specifier: ^3.0.0 + version: 3.0.0 + sharp: + specifier: ^0.33.0 + version: 0.33.0 + +devDependencies: + "@apidevtools/json-schema-ref-parser": + specifier: ^11.1.0 + version: 11.1.0 + eslint: + specifier: ^8.54.0 + version: 8.54.0 + eslint-plugin-prettier: + specifier: ^5.0.1 + version: 5.0.1(eslint@8.54.0)(prettier@3.1.0) + fast-xml-parser: + specifier: ^4.3.2 + version: 4.3.2 + prettier: + specifier: ^3.1.0 + version: 3.1.0 + prettier-plugin-astro: + specifier: ^0.12.2 + version: 0.12.2 + xml-js: + specifier: ^1.6.11 + version: 1.6.11 + +packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: + { + integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + } + engines: { node: ">=0.10.0" } + dev: true + + /@ampproject/remapping@2.2.1: + resolution: + { + integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + "@jridgewell/trace-mapping": 0.3.20 + dev: false + + /@apidevtools/json-schema-ref-parser@11.1.0: + resolution: + { + integrity: sha512-g/VW9ZQEFJAOwAyUb8JFf7MLiLy2uEB4rU270rGzDwICxnxMlPy0O11KVePSgS36K1NI29gSlK84n5INGhd4Ag== + } + engines: { node: ">= 16" } + dependencies: + "@jsdevtools/ono": 7.1.3 + "@types/json-schema": 7.0.15 + "@types/lodash.clonedeep": 4.5.9 + js-yaml: 4.1.0 + lodash.clonedeep: 4.5.0 + dev: true + + /@astrojs/compiler@1.8.2: + resolution: + { + integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw== + } + dev: true + + /@astrojs/compiler@2.3.2: + resolution: + { + integrity: sha512-jkY7bCVxl27KeZsSxIZ+pqACe+g8VQUdTiSJRj/sXYdIaZlW3ZMq4qF2M17P/oDt3LBq0zLNwQr4Cb7fSpRGxQ== + } + dev: false + + /@astrojs/internal-helpers@0.2.1: + resolution: + { + integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A== + } + dev: false + + /@astrojs/markdown-remark@3.5.0(astro@3.6.4): + resolution: + { + integrity: sha512-q7vdIqzYhxpsfghg2YmkmSXCfp4w7lBTYP+SSHw89wVhC5Riltr3u8w2otBRxNLSByNi+ht/gGkFC23Shetytw== + } + peerDependencies: + astro: ^3.0.0 + dependencies: + "@astrojs/prism": 3.0.0 + astro: 3.6.4 + github-slugger: 2.0.0 + import-meta-resolve: 3.1.1 + mdast-util-definitions: 6.0.0 + rehype-raw: 6.1.1 + rehype-stringify: 9.0.4 + remark-gfm: 3.0.1 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + remark-smartypants: 2.0.0 + shikiji: 0.6.13 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/mdx@1.1.5(astro@3.6.4): + resolution: + { + integrity: sha512-4bveyB1Lb1vWo2kdHJjQYoCytWlrIjAxHATHUTuYnBPmdPjsfy9wuCnb9rozwyyarDABx87CzG5gotBNYd+dVA== + } + engines: { node: ">=18.14.1" } + peerDependencies: + astro: ^3.0.0 + dependencies: + "@astrojs/markdown-remark": 3.5.0(astro@3.6.4) + "@mdx-js/mdx": 2.3.0 + acorn: 8.11.2 + astro: 3.6.4 + es-module-lexer: 1.4.1 + estree-util-visit: 1.2.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + hast-util-to-html: 8.0.4 + kleur: 4.1.5 + rehype-raw: 6.1.1 + remark-gfm: 3.0.1 + remark-smartypants: 2.0.0 + source-map: 0.7.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/prism@3.0.0: + resolution: + { + integrity: sha512-g61lZupWq1bYbcBnYZqdjndShr/J3l/oFobBKPA3+qMat146zce3nz2kdO4giGbhYDt4gYdhmoBz0vZJ4sIurQ== + } + engines: { node: ">=18.14.1" } + dependencies: + prismjs: 1.29.0 + dev: false + + /@astrojs/sitemap@3.0.3: + resolution: + { + integrity: sha512-+GRKp1yho9dpHBcMcU6JpbL41k0yYZghOkNsMRb8QIRflbGHvd787tdv9oIZ5NJj0SqAuOlqp2UpqLkJXuAe2A== + } + dependencies: + sitemap: 7.1.1 + zod: 3.22.4 + dev: false + + /@astrojs/starlight@0.14.0(astro@3.6.4): + resolution: + { + integrity: sha512-wrve52CIIymvntjf2QCfCFpYrmZTyD1qObkvLImeGDVAAyNdUnNlj6MU6SkqQg2fQkJcX9Kh4zkwepm79zYveQ== + } + peerDependencies: + astro: ^3.2.0 + dependencies: + "@astrojs/mdx": 1.1.5(astro@3.6.4) + "@astrojs/sitemap": 3.0.3 + "@pagefind/default-ui": 1.0.4 + "@types/mdast": 3.0.15 + astro: 3.6.4 + astro-expressive-code: 0.29.2(astro@3.6.4) + bcp-47: 2.1.0 + execa: 8.0.1 + hast-util-select: 5.0.5 + hastscript: 7.2.0 + pagefind: 1.0.4 + rehype: 12.0.1 + remark-directive: 2.0.1 + unified: 10.1.2 + unist-util-remove: 3.1.1 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/telemetry@3.0.4: + resolution: + { + integrity: sha512-A+0c7k/Xy293xx6odsYZuXiaHO0PL+bnDoXOc47sGDF5ffIKdKQGRPFl2NMlCF4L0NqN4Ynbgnaip+pPF0s7pQ== + } + engines: { node: ">=18.14.1" } + dependencies: + ci-info: 3.9.0 + debug: 4.3.4 + dlv: 1.1.3 + dset: 3.1.3 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/code-frame@7.23.5: + resolution: + { + integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/highlight": 7.23.4 + chalk: 2.4.2 + dev: false + + /@babel/compat-data@7.23.5: + resolution: + { + integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/core@7.23.5: + resolution: + { + integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== + } + engines: { node: ">=6.9.0" } + dependencies: + "@ampproject/remapping": 2.2.1 + "@babel/code-frame": 7.23.5 + "@babel/generator": 7.23.5 + "@babel/helper-compilation-targets": 7.22.15 + "@babel/helper-module-transforms": 7.23.3(@babel/core@7.23.5) + "@babel/helpers": 7.23.5 + "@babel/parser": 7.23.5 + "@babel/template": 7.22.15 + "@babel/traverse": 7.23.5 + "@babel/types": 7.23.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/generator@7.23.5: + resolution: + { + integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + "@jridgewell/gen-mapping": 0.3.3 + "@jridgewell/trace-mapping": 0.3.20 + jsesc: 2.5.2 + dev: false + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: + { + integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-compilation-targets@7.22.15: + resolution: + { + integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/compat-data": 7.23.5 + "@babel/helper-validator-option": 7.23.5 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false + + /@babel/helper-environment-visitor@7.22.20: + resolution: + { + integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/helper-function-name@7.23.0: + resolution: + { + integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.22.15 + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-hoist-variables@7.22.5: + resolution: + { + integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-module-imports@7.22.15: + resolution: + { + integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): + resolution: + { + integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.23.5 + "@babel/helper-environment-visitor": 7.22.20 + "@babel/helper-module-imports": 7.22.15 + "@babel/helper-simple-access": 7.22.5 + "@babel/helper-split-export-declaration": 7.22.6 + "@babel/helper-validator-identifier": 7.22.20 + dev: false + + /@babel/helper-plugin-utils@7.22.5: + resolution: + { + integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/helper-simple-access@7.22.5: + resolution: + { + integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: + { + integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/helper-string-parser@7.23.4: + resolution: + { + integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/helper-validator-identifier@7.22.20: + resolution: + { + integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/helper-validator-option@7.23.5: + resolution: + { + integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + } + engines: { node: ">=6.9.0" } + dev: false + + /@babel/helpers@7.23.5: + resolution: + { + integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.22.15 + "@babel/traverse": 7.23.5 + "@babel/types": 7.23.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/highlight@7.23.4: + resolution: + { + integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: false + + /@babel/parser@7.23.5: + resolution: + { + integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): + resolution: + { + integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.23.5 + "@babel/helper-plugin-utils": 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.5): + resolution: + { + integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.23.5 + "@babel/helper-annotate-as-pure": 7.22.5 + "@babel/helper-module-imports": 7.22.15 + "@babel/helper-plugin-utils": 7.22.5 + "@babel/plugin-syntax-jsx": 7.23.3(@babel/core@7.23.5) + "@babel/types": 7.23.5 + dev: false + + /@babel/template@7.22.15: + resolution: + { + integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.23.5 + "@babel/parser": 7.23.5 + "@babel/types": 7.23.5 + dev: false + + /@babel/traverse@7.23.5: + resolution: + { + integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== + } + engines: { node: ">=6.9.0" } + 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.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/types@7.23.5: + resolution: + { + integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.23.4 + "@babel/helper-validator-identifier": 7.22.20 + to-fast-properties: 2.0.0 + dev: false + + /@ctrl/tinycolor@3.6.1: + resolution: + { + integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + } + engines: { node: ">=10" } + dev: false + + /@emnapi/runtime@0.44.0: + resolution: + { + integrity: sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw== + } + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: + { + integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64@0.19.8: + resolution: + { + integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: + { + integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.19.8: + resolution: + { + integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA== + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: + { + integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.19.8: + resolution: + { + integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A== + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: + { + integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.19.8: + resolution: + { + integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: + { + integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.19.8: + resolution: + { + integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q== + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: + { + integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.19.8: + resolution: + { + integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: + { + integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.19.8: + resolution: + { + integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg== + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: + { + integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.19.8: + resolution: + { + integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: + { + integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.19.8: + resolution: + { + integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ== + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: + { + integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.19.8: + resolution: + { + integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: + { + integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.19.8: + resolution: + { + integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ== + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: + { + integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.19.8: + resolution: + { + integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q== + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: + { + integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.19.8: + resolution: + { + integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg== + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: + { + integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.19.8: + resolution: + { + integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg== + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: + { + integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.19.8: + resolution: + { + integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg== + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: + { + integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.19.8: + resolution: + { + integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg== + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: + { + integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.19.8: + resolution: + { + integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw== + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: + { + integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.19.8: + resolution: + { + integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: + { + integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.19.8: + resolution: + { + integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w== + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: + { + integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.19.8: + resolution: + { + integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg== + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: + { + integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.19.8: + resolution: + { + integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw== + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: + { + integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.19.8: + resolution: + { + integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA== + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.54.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: + { + integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + dev: true + + /@eslint/eslintrc@2.1.3: + resolution: + { + integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.54.0: + resolution: + { + integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@expressive-code/core@0.29.2: + resolution: + { + integrity: sha512-QJv5rDqSpx8WcAE4cZE+9GE31NtkN3i1zdr0KmdgwcIAEixhgxCFfngMoHWYYcLQnBMCIsFCyHnS39SAL4ub0Q== + } + dependencies: + "@ctrl/tinycolor": 3.6.1 + hast-util-to-html: 8.0.4 + hastscript: 7.2.0 + postcss: 8.4.31 + postcss-nested: 6.0.1(postcss@8.4.31) + dev: false + + /@expressive-code/plugin-frames@0.29.2: + resolution: + { + integrity: sha512-qQoDHB3iW7+Jb38omXGcaMNCbcBnGOijREDU5VW8TkFKzwx63gxcia8EYzzuCK15A2Pa8/5YqgE+0RrwKTGXHA== + } + dependencies: + "@expressive-code/core": 0.29.2 + hastscript: 7.2.0 + dev: false + + /@expressive-code/plugin-shiki@0.29.2: + resolution: + { + integrity: sha512-ZRcG0Rh7S98XzHqTVlZd4pMcXehv6bjSzdM0r0LT2LpCl5oAbzx5DBYCy6BFKu2Qc4UkhTm04obXZSWoAtSaGw== + } + dependencies: + "@expressive-code/core": 0.29.2 + shiki: 0.14.5 + dev: false + + /@expressive-code/plugin-text-markers@0.29.2: + resolution: + { + integrity: sha512-2jhmKIUIizTTnkasFQMmonNNMKmKQxfIIIZcsCLZ0ZaJdBkU0OueAVfQbk0amsrsiPL2ihJ3iDh0JZE0Ztz0AA== + } + dependencies: + "@expressive-code/core": 0.29.2 + hastscript: 7.2.0 + unist-util-visit-parents: 5.1.3 + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: + { + integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + } + engines: { node: ">=12.22" } + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: + { + integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + } + dev: true + + /@img/sharp-darwin-arm64@0.33.0: + resolution: + { + integrity: sha512-070tEheekI1LJWTGPC9WlQEa5UoKTXzzlORBHMX4TbfUxMiL336YHR8vBEUNsjse0RJCX8dZ4ZXwT595aEF1ug== + } + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.0.0 + dev: false + optional: true + + /@img/sharp-darwin-x64@0.33.0: + resolution: + { + integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw== + } + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.0.0 + dev: false + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.0: + resolution: + { + integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw== + } + engines: { macos: ">=11", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.0: + resolution: + { + integrity: sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA== + } + engines: { macos: ">=10.13", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.0: + resolution: + { + integrity: sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA== + } + engines: { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm@1.0.0: + resolution: + { + integrity: sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw== + } + engines: { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.0: + resolution: + { + integrity: sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw== + } + engines: { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-x64@1.0.0: + resolution: + { + integrity: sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q== + } + engines: { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.0: + resolution: + { + integrity: sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ== + } + engines: { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.0: + resolution: + { + integrity: sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg== + } + engines: { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-linux-arm64@0.33.0: + resolution: + { + integrity: sha512-dcomVSrtgF70SyOr8RCOCQ8XGVThXwe71A1d8MGA+mXEVRJ/J6/TrCbBEJh9ddcEIIsrnrkolaEvYSHqVhswQw== + } + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-arm@0.33.0: + resolution: + { + integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg== + } + engines: + { + glibc: ">=2.28", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.0: + resolution: + { + integrity: sha512-TiVJbx38J2rNVfA309ffSOB+3/7wOsZYQEOlKqOUdWD/nqkjNGrX+YQGz7nzcf5oy2lC+d37+w183iNXRZNngQ== + } + engines: + { + glibc: ">=2.28", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.0.0 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.0: + resolution: + { + integrity: sha512-PaZM4Zi7/Ek71WgTdvR+KzTZpBqrQOFcPe7/8ZoPRlTYYRe43k6TWsf4GVH6XKRLMYeSp8J89RfAhBrSP4itNA== + } + engines: + { + glibc: ">=2.26", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.0: + resolution: + { + integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg== + } + engines: + { + musl: ">=1.2.2", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.0.0 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.0: + resolution: + { + integrity: sha512-CecqgB/CnkvCWFhmfN9ZhPGMLXaEBXl4o7WtA6U3Ztrlh/s7FUKX4vNxpMSYLIrWuuzjiaYdfU3+Tdqh1xaHfw== + } + engines: + { + musl: ">=1.2.2", + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.0.0 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.0: + resolution: + { + integrity: sha512-Hn4js32gUX9qkISlemZBUPuMs0k/xNJebUNl/L6djnU07B/HAA2KaxRVb3HvbU5fL242hLOcp0+tR+M8dvJUFw== + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [wasm32] + requiresBuild: true + dependencies: + "@emnapi/runtime": 0.44.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.0: + resolution: + { + integrity: sha512-5HfcsCZi3l5nPRF2q3bllMVMDXBqEWI3Q8KQONfzl0TferFE5lnsIG0A1YrntMAGqvkzdW6y1Ci1A2uTvxhfzg== + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.0: + resolution: + { + integrity: sha512-i3DtP/2ce1yKFj4OzOnOYltOEL/+dp4dc4dJXJBv6god1AFTcmkaA99H/7SwOmkCOBQkbVvA3lCGm3/5nDtf9Q== + } + engines: + { + node: ^18.17.0 || ^20.3.0 || >=21.0.0, + npm: ">=9.6.5", + pnpm: ">=7.1.0", + yarn: ">=3.2.0" + } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/trace-mapping": 0.3.20 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: + { + integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + } + dev: false + + /@jridgewell/trace-mapping@0.3.20: + resolution: + { + integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + } + dependencies: + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.4.15 + dev: false + + /@jsdevtools/ono@7.1.3: + resolution: + { + integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + } + dev: true + + /@mdx-js/mdx@2.3.0: + resolution: + { + integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA== + } + dependencies: + "@types/estree-jsx": 1.0.3 + "@types/mdx": 2.0.10 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.2.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.3 + markdown-extensions: 1.1.1 + periscopic: 3.1.0 + remark-mdx: 2.3.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + } + engines: { node: ">= 8" } + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + + /@pagefind/darwin-arm64@1.0.4: + resolution: + { + integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ== + } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@pagefind/darwin-x64@1.0.4: + resolution: + { + integrity: sha512-xkdvp0D9Ld/ZKsjo/y1bgfhTEU72ITimd2PMMQtts7jf6JPIOJbsiErCvm37m/qMFuPGEq/8d+fZ4pydOj08HQ== + } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@pagefind/default-ui@1.0.4: + resolution: + { + integrity: sha512-edkcaPSKq67C49Vehjo+LQCpT615v4d7JRhfGzFPccePvdklaL+VXrfghN/uIfsdoG+HoLI1PcYy2iFcB9CTkw== + } + dev: false + + /@pagefind/linux-arm64@1.0.4: + resolution: + { + integrity: sha512-jGBrcCzIrMnNxLKVtogaQyajVfTAXM59KlBEwg6vTn8NW4fQ6nuFbbhlG4dTIsaamjEM5e8ZBEAKZfTB/qd9xw== + } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@pagefind/linux-x64@1.0.4: + resolution: + { + integrity: sha512-LIn/QcvcEtLEBqKe5vpSbSC2O3fvqbRCWOTIklslqSORisCsvzsWbP6j+LYxE9q0oWIfkdMoWV1vrE/oCKRxHg== + } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@pagefind/windows-x64@1.0.4: + resolution: + { + integrity: sha512-QlBCVeZfj9fc9sbUgdOz76ZDbeK4xZihOBAFqGuRJeChfM8pnVeH9iqSnXgO3+m9oITugTf7PicyRUFAG76xeQ== + } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@pkgr/utils@2.4.2: + resolution: + { + integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@types/acorn@4.0.6: + resolution: + { + integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== + } + dependencies: + "@types/estree": 1.0.5 + dev: false + + /@types/babel__core@7.20.5: + resolution: + { + integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + } + dependencies: + "@babel/parser": 7.23.5 + "@babel/types": 7.23.5 + "@types/babel__generator": 7.6.7 + "@types/babel__template": 7.4.4 + "@types/babel__traverse": 7.20.4 + dev: false + + /@types/babel__generator@7.6.7: + resolution: + { + integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== + } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@types/babel__template@7.4.4: + resolution: + { + integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + } + dependencies: + "@babel/parser": 7.23.5 + "@babel/types": 7.23.5 + dev: false + + /@types/babel__traverse@7.20.4: + resolution: + { + integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== + } + dependencies: + "@babel/types": 7.23.5 + dev: false + + /@types/debug@4.1.12: + resolution: + { + integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + } + dependencies: + "@types/ms": 0.7.34 + dev: false + + /@types/estree-jsx@1.0.3: + resolution: + { + integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w== + } + dependencies: + "@types/estree": 1.0.5 + dev: false + + /@types/estree@1.0.5: + resolution: + { + integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + } + dev: false + + /@types/hast@2.3.8: + resolution: + { + integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /@types/hast@3.0.3: + resolution: + { + integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ== + } + dependencies: + "@types/unist": 3.0.2 + dev: false + + /@types/json-schema@7.0.15: + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + } + dev: true + + /@types/lodash.clonedeep@4.5.9: + resolution: + { + integrity: sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q== + } + dependencies: + "@types/lodash": 4.14.202 + dev: true + + /@types/lodash@4.14.202: + resolution: + { + integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + } + dev: true + + /@types/mdast@3.0.15: + resolution: + { + integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /@types/mdast@4.0.3: + resolution: + { + integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== + } + dependencies: + "@types/unist": 3.0.2 + dev: false + + /@types/mdx@2.0.10: + resolution: + { + integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg== + } + dev: false + + /@types/ms@0.7.34: + resolution: + { + integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + } + dev: false + + /@types/nlcst@1.0.4: + resolution: + { + integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /@types/node@17.0.45: + resolution: + { + integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + } + dev: false + + /@types/parse5@6.0.3: + resolution: + { + integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + } + dev: false + + /@types/sax@1.2.7: + resolution: + { + integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== + } + dependencies: + "@types/node": 17.0.45 + dev: false + + /@types/unist@2.0.10: + resolution: + { + integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== + } + dev: false + + /@types/unist@3.0.2: + resolution: + { + integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + } + dev: false + + /@ungap/structured-clone@1.2.0: + resolution: + { + integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + } + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + + /acorn@8.11.2: + resolution: + { + integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + } + engines: { node: ">=0.4.0" } + hasBin: true + + /ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-align@3.0.1: + resolution: + { + integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + } + dependencies: + string-width: 4.2.3 + dev: false + + /ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + } + engines: { node: ">=8" } + + /ansi-regex@6.0.1: + resolution: + { + integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + } + engines: { node: ">=12" } + dev: false + + /ansi-sequence-parser@1.1.1: + resolution: + { + integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== + } + dev: false + + /ansi-styles@3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + } + engines: { node: ">=4" } + dependencies: + color-convert: 1.9.3 + dev: false + + /ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: + { + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + } + engines: { node: ">=12" } + dev: false + + /anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /arg@5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + } + dev: false + + /argparse@1.0.10: + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + } + dependencies: + sprintf-js: 1.0.3 + dev: false + + /argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + } + + /array-iterate@2.0.1: + resolution: + { + integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg== + } + dev: false + + /astring@1.8.6: + resolution: + { + integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== + } + hasBin: true + dev: false + + /astro-expressive-code@0.29.2(astro@3.6.4): + resolution: + { + integrity: sha512-fVslVRplAQGaZyVkAFOM1csHqWDkhPzBhXEMEKfjHCzk8CMnl5VPD9yljx48GizwbB0EId68uIc6xO2hoVK9rQ== + } + peerDependencies: + astro: ^3.0.0-beta + dependencies: + astro: 3.6.4 + remark-expressive-code: 0.29.2 + dev: false + + /astro@3.6.4: + resolution: + { + integrity: sha512-YatUyWEQ9GUC79Wc2zbovy6D6bXPW9++Z6PYs4GDamEDspUSnnzL/INB7WJqgFI0xAFk9jcUr+MZYjkdWqXYTw== + } + engines: { node: ">=18.14.1", npm: ">=6.14.0" } + hasBin: true + dependencies: + "@astrojs/compiler": 2.3.2 + "@astrojs/internal-helpers": 0.2.1 + "@astrojs/markdown-remark": 3.5.0(astro@3.6.4) + "@astrojs/telemetry": 3.0.4 + "@babel/core": 7.23.5 + "@babel/generator": 7.23.5 + "@babel/parser": 7.23.5 + "@babel/plugin-transform-react-jsx": 7.23.4(@babel/core@7.23.5) + "@babel/traverse": 7.23.5 + "@babel/types": 7.23.5 + "@types/babel__core": 7.20.5 + acorn: 8.11.2 + boxen: 7.1.1 + chokidar: 3.5.3 + ci-info: 3.9.0 + clsx: 2.0.0 + common-ancestor-path: 1.0.1 + cookie: 0.5.0 + debug: 4.3.4 + deterministic-object-hash: 1.3.1 + devalue: 4.3.2 + diff: 5.1.0 + es-module-lexer: 1.4.1 + esbuild: 0.19.8 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mdast-util-to-hast: 12.3.0 + mime: 3.0.0 + ora: 7.0.1 + p-limit: 4.0.0 + p-queue: 7.4.1 + path-to-regexp: 6.2.1 + preferred-pm: 3.1.2 + probe-image-size: 7.2.3 + prompts: 2.4.2 + rehype: 12.0.1 + resolve: 1.22.8 + semver: 7.5.4 + server-destroy: 1.0.1 + shikiji: 0.6.13 + string-width: 6.1.0 + strip-ansi: 7.1.0 + tsconfck: 3.0.0 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + vite: 4.5.0 + vitefu: 0.2.5(vite@4.5.0) + which-pm: 2.1.1 + yargs-parser: 21.1.1 + zod: 3.22.4 + optionalDependencies: + sharp: 0.32.6 + transitivePeerDependencies: + - "@types/node" + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + dev: false + + /b4a@1.6.4: + resolution: + { + integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== + } + requiresBuild: true + dev: false + optional: true + + /bail@2.0.2: + resolution: + { + integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + } + dev: false + + /balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + } + dev: true + + /base64-js@1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + } + dev: false + + /bcp-47-match@2.0.3: + resolution: + { + integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ== + } + dev: false + + /bcp-47@2.1.0: + resolution: + { + integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w== + } + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /big-integer@1.6.52: + resolution: + { + integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + } + engines: { node: ">=0.6" } + dev: true + + /binary-extensions@2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + } + engines: { node: ">=8" } + dev: false + + /bl@4.1.0: + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + } + requiresBuild: true + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + optional: true + + /bl@5.1.0: + resolution: + { + integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + } + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /boolbase@1.0.0: + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + } + dev: false + + /boxen@7.1.1: + resolution: + { + integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + } + engines: { node: ">=14.16" } + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + + /bplist-parser@0.2.0: + resolution: + { + integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + } + engines: { node: ">= 5.10.0" } + dependencies: + big-integer: 1.6.52 + dev: true + + /brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + + /browserslist@4.22.1: + resolution: + { + integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001565 + electron-to-chromium: 1.4.597 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: false + + /buffer@5.7.1: + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + } + requiresBuild: true + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + optional: true + + /buffer@6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /bundle-name@3.0.0: + resolution: + { + integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + } + engines: { node: ">=12" } + dependencies: + run-applescript: 5.0.0 + dev: true + + /callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + } + engines: { node: ">=6" } + dev: true + + /camelcase@7.0.1: + resolution: + { + integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + } + engines: { node: ">=14.16" } + dev: false + + /caniuse-lite@1.0.30001565: + resolution: + { + integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== + } + dev: false + + /ccount@2.0.1: + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + } + dev: false + + /chalk@2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + } + engines: { node: ">=4" } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + + /chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: + { + integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + dev: false + + /character-entities-html4@2.1.0: + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + } + dev: false + + /character-entities-legacy@3.0.0: + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + } + dev: false + + /character-entities@2.0.2: + resolution: + { + integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + } + dev: false + + /character-reference-invalid@2.0.1: + resolution: + { + integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + } + dev: false + + /chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /chownr@1.1.4: + resolution: + { + integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + } + requiresBuild: true + dev: false + optional: true + + /ci-info@3.9.0: + resolution: + { + integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + } + engines: { node: ">=8" } + dev: false + + /cli-boxes@3.0.0: + resolution: + { + integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + } + engines: { node: ">=10" } + dev: false + + /cli-cursor@4.0.0: + resolution: + { + integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + restore-cursor: 4.0.0 + dev: false + + /cli-spinners@2.9.2: + resolution: + { + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + } + engines: { node: ">=6" } + dev: false + + /clsx@2.0.0: + resolution: + { + integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + } + engines: { node: ">=6" } + dev: false + + /color-convert@1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + } + dependencies: + color-name: 1.1.3 + dev: false + + /color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + } + dev: false + + /color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + } + + /color-string@1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + } + engines: { node: ">=12.5.0" } + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + + /comma-separated-tokens@2.0.3: + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + } + dev: false + + /common-ancestor-path@1.0.1: + resolution: + { + integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + } + dev: false + + /concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + } + dev: true + + /convert-source-map@2.0.0: + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + } + dev: false + + /cookie@0.5.0: + resolution: + { + integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + } + engines: { node: ">= 0.6" } + dev: false + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-selector-parser@1.4.1: + resolution: + { + integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g== + } + dev: false + + /cssesc@3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + } + engines: { node: ">=4" } + hasBin: true + dev: false + + /debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decode-named-character-reference@1.0.2: + resolution: + { + integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + } + dependencies: + character-entities: 2.0.2 + dev: false + + /decompress-response@6.0.0: + resolution: + { + integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + } + engines: { node: ">=10" } + requiresBuild: true + dependencies: + mimic-response: 3.1.0 + dev: false + optional: true + + /deep-extend@0.6.0: + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + } + engines: { node: ">=4.0.0" } + requiresBuild: true + dev: false + optional: true + + /deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + } + dev: true + + /default-browser-id@3.0.0: + resolution: + { + integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + } + engines: { node: ">=12" } + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: + { + integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + } + engines: { node: ">=14.16" } + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + } + engines: { node: ">=12" } + dev: true + + /dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + } + engines: { node: ">=6" } + dev: false + + /detect-libc@2.0.2: + resolution: + { + integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + } + engines: { node: ">=8" } + dev: false + + /deterministic-object-hash@1.3.1: + resolution: + { + integrity: sha512-kQDIieBUreEgY+akq0N7o4FzZCr27dPG1xr3wq267vPwDlSXQ3UMcBXHqTGUBaM/5WDS1jwTYjxRhUzHeuiAvw== + } + dev: false + + /devalue@4.3.2: + resolution: + { + integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg== + } + dev: false + + /devlop@1.1.0: + resolution: + { + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + } + dependencies: + dequal: 2.0.3 + dev: false + + /diff@5.1.0: + resolution: + { + integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + } + engines: { node: ">=0.3.1" } + dev: false + + /direction@2.0.1: + resolution: + { + integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA== + } + hasBin: true + dev: false + + /dlv@1.1.3: + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + } + dev: false + + /doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + dev: true + + /dset@3.1.3: + resolution: + { + integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== + } + engines: { node: ">=4" } + dev: false + + /eastasianwidth@0.2.0: + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + } + dev: false + + /electron-to-chromium@1.4.597: + resolution: + { + integrity: sha512-0XOQNqHhg2YgRVRUrS4M4vWjFCFIP2ETXcXe/0KIQBjXE9Cpy+tgzzYfuq6HGai3hWq0YywtG+5XK8fyG08EjA== + } + dev: false + + /emoji-regex@10.3.0: + resolution: + { + integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + } + dev: false + + /emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + } + dev: false + + /emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + } + dev: false + + /end-of-stream@1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + } + requiresBuild: true + dependencies: + once: 1.4.0 + dev: false + optional: true + + /entities@4.5.0: + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + } + engines: { node: ">=0.12" } + dev: false + + /es-module-lexer@1.4.1: + resolution: + { + integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + } + dev: false + + /esbuild@0.18.20: + resolution: + { + integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.18.20 + "@esbuild/android-arm64": 0.18.20 + "@esbuild/android-x64": 0.18.20 + "@esbuild/darwin-arm64": 0.18.20 + "@esbuild/darwin-x64": 0.18.20 + "@esbuild/freebsd-arm64": 0.18.20 + "@esbuild/freebsd-x64": 0.18.20 + "@esbuild/linux-arm": 0.18.20 + "@esbuild/linux-arm64": 0.18.20 + "@esbuild/linux-ia32": 0.18.20 + "@esbuild/linux-loong64": 0.18.20 + "@esbuild/linux-mips64el": 0.18.20 + "@esbuild/linux-ppc64": 0.18.20 + "@esbuild/linux-riscv64": 0.18.20 + "@esbuild/linux-s390x": 0.18.20 + "@esbuild/linux-x64": 0.18.20 + "@esbuild/netbsd-x64": 0.18.20 + "@esbuild/openbsd-x64": 0.18.20 + "@esbuild/sunos-x64": 0.18.20 + "@esbuild/win32-arm64": 0.18.20 + "@esbuild/win32-ia32": 0.18.20 + "@esbuild/win32-x64": 0.18.20 + dev: false + + /esbuild@0.19.8: + resolution: + { + integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w== + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.19.8 + "@esbuild/android-arm64": 0.19.8 + "@esbuild/android-x64": 0.19.8 + "@esbuild/darwin-arm64": 0.19.8 + "@esbuild/darwin-x64": 0.19.8 + "@esbuild/freebsd-arm64": 0.19.8 + "@esbuild/freebsd-x64": 0.19.8 + "@esbuild/linux-arm": 0.19.8 + "@esbuild/linux-arm64": 0.19.8 + "@esbuild/linux-ia32": 0.19.8 + "@esbuild/linux-loong64": 0.19.8 + "@esbuild/linux-mips64el": 0.19.8 + "@esbuild/linux-ppc64": 0.19.8 + "@esbuild/linux-riscv64": 0.19.8 + "@esbuild/linux-s390x": 0.19.8 + "@esbuild/linux-x64": 0.19.8 + "@esbuild/netbsd-x64": 0.19.8 + "@esbuild/openbsd-x64": 0.19.8 + "@esbuild/sunos-x64": 0.19.8 + "@esbuild/win32-arm64": 0.19.8 + "@esbuild/win32-ia32": 0.19.8 + "@esbuild/win32-x64": 0.19.8 + dev: false + + /escalade@3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + } + engines: { node: ">=6" } + dev: false + + /escape-string-regexp@1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + } + engines: { node: ">=0.8.0" } + dev: false + + /escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + } + engines: { node: ">=10" } + dev: true + + /escape-string-regexp@5.0.0: + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + } + engines: { node: ">=12" } + dev: false + + /eslint-plugin-prettier@5.0.1(eslint@8.54.0)(prettier@3.1.0): + resolution: + { + integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: "*" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.54.0 + prettier: 3.1.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + + /eslint-scope@7.2.2: + resolution: + { + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /eslint@8.54.0: + resolution: + { + integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint-community/eslint-utils": 4.4.0(eslint@8.54.0) + "@eslint-community/regexpp": 4.10.0 + "@eslint/eslintrc": 2.1.3 + "@eslint/js": 8.54.0 + "@humanwhocodes/config-array": 0.11.13 + "@humanwhocodes/module-importer": 1.0.1 + "@nodelib/fs.walk": 1.2.8 + "@ungap/structured-clone": 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: + { + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + } + engines: { node: ">=4" } + hasBin: true + dev: false + + /esquery@1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + } + engines: { node: ">=4.0" } + dev: true + + /estree-util-attach-comments@2.1.1: + resolution: + { + integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w== + } + dependencies: + "@types/estree": 1.0.5 + dev: false + + /estree-util-build-jsx@2.2.2: + resolution: + { + integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg== + } + dependencies: + "@types/estree-jsx": 1.0.3 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 + dev: false + + /estree-util-is-identifier-name@2.1.0: + resolution: + { + integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ== + } + dev: false + + /estree-util-to-js@1.2.0: + resolution: + { + integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA== + } + dependencies: + "@types/estree-jsx": 1.0.3 + astring: 1.8.6 + source-map: 0.7.4 + dev: false + + /estree-util-visit@1.2.1: + resolution: + { + integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw== + } + dependencies: + "@types/estree-jsx": 1.0.3 + "@types/unist": 2.0.10 + dev: false + + /estree-walker@3.0.3: + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + } + dependencies: + "@types/estree": 1.0.5 + dev: false + + /esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + } + engines: { node: ">=0.10.0" } + dev: true + + /eventemitter3@5.0.1: + resolution: + { + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + } + dev: false + + /execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: + { + integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + } + engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /execa@8.0.1: + resolution: + { + integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + } + engines: { node: ">=16.17" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: false + + /expand-template@2.0.3: + resolution: + { + integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + } + engines: { node: ">=6" } + requiresBuild: true + dev: false + optional: true + + /expressive-code@0.29.2: + resolution: + { + integrity: sha512-UwC+GjYSUbonH8gYlHS4fmh0TSdyrdDry88GdVYVUiN2EI1nh7Duu8s2cpYvFsObPIeUXsbHLWTygBO1XhXtEQ== + } + dependencies: + "@expressive-code/core": 0.29.2 + "@expressive-code/plugin-frames": 0.29.2 + "@expressive-code/plugin-shiki": 0.29.2 + "@expressive-code/plugin-text-markers": 0.29.2 + dev: false + + /extend-shallow@2.0.1: + resolution: + { + integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + } + engines: { node: ">=0.10.0" } + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend@3.0.2: + resolution: + { + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + } + dev: false + + /fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + } + dev: true + + /fast-diff@1.3.0: + resolution: + { + integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + } + dev: true + + /fast-fifo@1.3.2: + resolution: + { + integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + } + requiresBuild: true + dev: false + optional: true + + /fast-glob@3.3.2: + resolution: + { + integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + } + dev: true + + /fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + } + dev: true + + /fast-xml-parser@4.3.2: + resolution: + { + integrity: sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg== + } + hasBin: true + dependencies: + strnum: 1.0.5 + dev: true + + /fastq@1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + } + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + } + engines: { node: ">=8" } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + + /find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /find-yarn-workspace-root2@1.2.16: + resolution: + { + integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== + } + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + dev: false + + /flat-cache@3.2.0: + resolution: + { + integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: + { + integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + } + dev: true + + /fs-constants@1.0.0: + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + } + requiresBuild: true + dev: false + optional: true + + /fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + } + dev: true + + /fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /function-bind@1.1.2: + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + } + dev: false + + /gensync@1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + } + engines: { node: ">=6.9.0" } + dev: false + + /get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + } + engines: { node: ">=10" } + dev: true + + /get-stream@8.0.1: + resolution: + { + integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + } + engines: { node: ">=16" } + dev: false + + /github-from-package@0.0.0: + resolution: + { + integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + } + requiresBuild: true + dev: false + optional: true + + /github-slugger@2.0.0: + resolution: + { + integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== + } + dev: false + + /glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + } + engines: { node: ">=4" } + dev: false + + /globals@13.23.0: + resolution: + { + integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + dev: true + + /graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + } + dev: false + + /graphemer@1.4.0: + resolution: + { + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + } + dev: true + + /gray-matter@4.0.3: + resolution: + { + integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + } + engines: { node: ">=6.0" } + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + + /has-flag@3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + } + engines: { node: ">=4" } + dev: false + + /has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + } + engines: { node: ">=8" } + dev: true + + /hasown@2.0.0: + resolution: + { + integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + } + engines: { node: ">= 0.4" } + dependencies: + function-bind: 1.1.2 + dev: false + + /hast-util-from-parse5@7.1.2: + resolution: + { + integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw== + } + dependencies: + "@types/hast": 2.3.8 + "@types/unist": 2.0.10 + hastscript: 7.2.0 + property-information: 6.4.0 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + dev: false + + /hast-util-from-parse5@8.0.1: + resolution: + { + integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== + } + dependencies: + "@types/hast": 3.0.3 + "@types/unist": 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.4.0 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + dev: false + + /hast-util-has-property@2.0.1: + resolution: + { + integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg== + } + dev: false + + /hast-util-is-element@3.0.0: + resolution: + { + integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g== + } + dependencies: + "@types/hast": 3.0.3 + dev: false + + /hast-util-parse-selector@3.1.1: + resolution: + { + integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== + } + dependencies: + "@types/hast": 2.3.8 + dev: false + + /hast-util-parse-selector@4.0.0: + resolution: + { + integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + } + dependencies: + "@types/hast": 3.0.3 + dev: false + + /hast-util-raw@7.2.3: + resolution: + { + integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg== + } + dependencies: + "@types/hast": 2.3.8 + "@types/parse5": 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-raw@9.0.1: + resolution: + { + integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA== + } + dependencies: + "@types/hast": 3.0.3 + "@types/unist": 3.0.2 + "@ungap/structured-clone": 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.0.2 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-select@5.0.5: + resolution: + { + integrity: sha512-QQhWMhgTFRhCaQdgTKzZ5g31GLQ9qRb1hZtDPMqQaOhpLBziWcshUS0uCR5IJ0U1jrK/mxg35fmcq+Dp/Cy2Aw== + } + dependencies: + "@types/hast": 2.3.8 + "@types/unist": 2.0.10 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 1.4.1 + direction: 2.0.1 + hast-util-has-property: 2.0.1 + hast-util-to-string: 2.0.0 + hast-util-whitespace: 2.0.1 + not: 0.1.0 + nth-check: 2.1.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: false + + /hast-util-to-estree@2.3.3: + resolution: + { + integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ== + } + dependencies: + "@types/estree": 1.0.5 + "@types/estree-jsx": 1.0.3 + "@types/hast": 2.3.8 + "@types/unist": 2.0.10 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-html@8.0.4: + resolution: + { + integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA== + } + dependencies: + "@types/hast": 2.3.8 + "@types/unist": 2.0.10 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + dev: false + + /hast-util-to-html@9.0.0: + resolution: + { + integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw== + } + dependencies: + "@types/hast": 3.0.3 + "@types/unist": 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 9.0.1 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.0.2 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + dev: false + + /hast-util-to-parse5@7.1.0: + resolution: + { + integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw== + } + dependencies: + "@types/hast": 2.3.8 + comma-separated-tokens: 2.0.3 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-parse5@8.0.0: + resolution: + { + integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== + } + dependencies: + "@types/hast": 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-string@2.0.0: + resolution: + { + integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A== + } + dependencies: + "@types/hast": 2.3.8 + dev: false + + /hast-util-whitespace@2.0.1: + resolution: + { + integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== + } + dev: false + + /hast-util-whitespace@3.0.0: + resolution: + { + integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + } + dependencies: + "@types/hast": 3.0.3 + dev: false + + /hastscript@7.2.0: + resolution: + { + integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== + } + dependencies: + "@types/hast": 2.3.8 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + dev: false + + /hastscript@8.0.0: + resolution: + { + integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== + } + dependencies: + "@types/hast": 3.0.3 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + dev: false + + /html-escaper@3.0.3: + resolution: + { + integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ== + } + dev: false + + /html-void-elements@2.0.1: + resolution: + { + integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + } + dev: false + + /html-void-elements@3.0.0: + resolution: + { + integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + } + dev: false + + /http-cache-semantics@4.1.1: + resolution: + { + integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + } + dev: false + + /human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + } + engines: { node: ">=10.17.0" } + dev: true + + /human-signals@4.3.1: + resolution: + { + integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + } + engines: { node: ">=14.18.0" } + dev: true + + /human-signals@5.0.0: + resolution: + { + integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + } + engines: { node: ">=16.17.0" } + dev: false + + /iconv-lite@0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + } + engines: { node: ">=0.10.0" } + dependencies: + safer-buffer: 2.1.2 + dev: false + + /ieee754@1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + } + dev: false + + /ignore@5.3.0: + resolution: + { + integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + } + engines: { node: ">= 4" } + dev: true + + /import-fresh@3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-meta-resolve@3.1.1: + resolution: + { + integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw== + } + dev: false + + /imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + } + engines: { node: ">=0.8.19" } + dev: true + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + } + + /ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + } + requiresBuild: true + dev: false + optional: true + + /inline-style-parser@0.1.1: + resolution: + { + integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + } + dev: false + + /is-absolute-url@4.0.1: + resolution: + { + integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: false + + /is-alphabetical@2.0.1: + resolution: + { + integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + } + dev: false + + /is-alphanumerical@2.0.1: + resolution: + { + integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + } + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + } + dev: false + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-buffer@2.0.5: + resolution: + { + integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + } + engines: { node: ">=4" } + dev: false + + /is-core-module@2.13.1: + resolution: + { + integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + } + dependencies: + hasown: 2.0.0 + dev: false + + /is-decimal@2.0.1: + resolution: + { + integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + } + dev: false + + /is-docker@2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + } + engines: { node: ">=8" } + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + + /is-extendable@0.1.1: + resolution: + { + integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + } + engines: { node: ">=0.10.0" } + dev: false + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + } + engines: { node: ">=0.10.0" } + + /is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + } + engines: { node: ">=8" } + dev: false + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal@2.0.1: + resolution: + { + integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + } + dev: false + + /is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + } + engines: { node: ">=14.16" } + hasBin: true + dependencies: + is-docker: 3.0.0 + + /is-interactive@2.0.0: + resolution: + { + integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + } + engines: { node: ">=12" } + dev: false + + /is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + } + engines: { node: ">=0.12.0" } + + /is-path-inside@3.0.3: + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + } + engines: { node: ">=8" } + dev: true + + /is-plain-obj@4.1.0: + resolution: + { + integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + } + engines: { node: ">=12" } + dev: false + + /is-reference@3.0.2: + resolution: + { + integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + } + dependencies: + "@types/estree": 1.0.5 + dev: false + + /is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + } + engines: { node: ">=8" } + dev: true + + /is-stream@3.0.0: + resolution: + { + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + /is-unicode-supported@1.3.0: + resolution: + { + integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + } + engines: { node: ">=12" } + dev: false + + /is-wsl@2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + } + engines: { node: ">=8" } + dependencies: + is-docker: 2.2.1 + dev: true + + /is-wsl@3.1.0: + resolution: + { + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + } + engines: { node: ">=16" } + dependencies: + is-inside-container: 1.0.0 + dev: false + + /isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + } + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + } + dev: false + + /js-yaml@3.14.1: + resolution: + { + integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + + /js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + } + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + } + engines: { node: ">=4" } + hasBin: true + dev: false + + /json-buffer@3.0.1: + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + } + dev: true + + /json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + } + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + } + dev: true + + /json5@2.2.3: + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + } + engines: { node: ">=6" } + hasBin: true + dev: false + + /jsonc-parser@3.2.0: + resolution: + { + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + } + dev: false + + /keyv@4.5.4: + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + } + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@6.0.3: + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + } + engines: { node: ">=0.10.0" } + dev: false + + /kleur@3.0.3: + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + } + engines: { node: ">=6" } + dev: false + + /kleur@4.1.5: + resolution: + { + integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + } + engines: { node: ">=6" } + dev: false + + /levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /load-yaml-file@0.2.0: + resolution: + { + integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== + } + engines: { node: ">=6" } + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: false + + /locate-path@5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + } + engines: { node: ">=8" } + dependencies: + p-locate: 4.1.0 + dev: false + + /locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + + /lodash.clonedeep@4.5.0: + resolution: + { + integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + } + dev: true + + /lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + } + + /log-symbols@5.1.0: + resolution: + { + integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== + } + engines: { node: ">=12" } + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + dev: false + + /longest-streak@3.1.0: + resolution: + { + integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + } + dev: false + + /lru-cache@5.1.1: + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + } + dependencies: + yallist: 3.1.1 + dev: false + + /lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + dev: false + + /magic-string@0.30.5: + resolution: + { + integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + } + engines: { node: ">=12" } + dependencies: + "@jridgewell/sourcemap-codec": 1.4.15 + dev: false + + /markdown-extensions@1.1.1: + resolution: + { + integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== + } + engines: { node: ">=0.10.0" } + dev: false + + /markdown-table@3.0.3: + resolution: + { + integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + } + dev: false + + /mdast-util-definitions@5.1.2: + resolution: + { + integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== + } + dependencies: + "@types/mdast": 3.0.15 + "@types/unist": 2.0.10 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-definitions@6.0.0: + resolution: + { + integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ== + } + dependencies: + "@types/mdast": 4.0.3 + "@types/unist": 3.0.2 + unist-util-visit: 5.0.0 + dev: false + + /mdast-util-directive@2.2.4: + resolution: + { + integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ== + } + dependencies: + "@types/mdast": 3.0.15 + "@types/unist": 2.0.10 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-visit-parents: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-find-and-replace@2.2.2: + resolution: + { + integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== + } + dependencies: + "@types/mdast": 3.0.15 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /mdast-util-from-markdown@1.3.1: + resolution: + { + integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + } + dependencies: + "@types/mdast": 3.0.15 + "@types/unist": 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@1.0.3: + resolution: + { + integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== + } + dependencies: + "@types/mdast": 3.0.15 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.2.0 + dev: false + + /mdast-util-gfm-footnote@1.0.2: + resolution: + { + integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.1.0 + dev: false + + /mdast-util-gfm-strikethrough@1.0.3: + resolution: + { + integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm-table@1.0.7: + resolution: + { + integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== + } + dependencies: + "@types/mdast": 3.0.15 + markdown-table: 3.0.3 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@1.0.2: + resolution: + { + integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm@2.0.2: + resolution: + { + integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== + } + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression@1.3.2: + resolution: + { + integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA== + } + dependencies: + "@types/estree-jsx": 1.0.3 + "@types/hast": 2.3.8 + "@types/mdast": 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx@2.1.4: + resolution: + { + integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA== + } + dependencies: + "@types/estree-jsx": 1.0.3 + "@types/hast": 2.3.8 + "@types/mdast": 3.0.15 + "@types/unist": 2.0.10 + ccount: 2.0.1 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx@2.0.1: + resolution: + { + integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw== + } + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 2.1.4 + mdast-util-mdxjs-esm: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@1.3.1: + resolution: + { + integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w== + } + dependencies: + "@types/estree-jsx": 1.0.3 + "@types/hast": 2.3.8 + "@types/mdast": 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@3.0.1: + resolution: + { + integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== + } + dependencies: + "@types/mdast": 3.0.15 + unist-util-is: 5.2.1 + dev: false + + /mdast-util-to-hast@12.3.0: + resolution: + { + integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== + } + dependencies: + "@types/hast": 2.3.8 + "@types/mdast": 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-to-hast@13.0.2: + resolution: + { + integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og== + } + dependencies: + "@types/hast": 3.0.3 + "@types/mdast": 4.0.3 + "@ungap/structured-clone": 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + dev: false + + /mdast-util-to-markdown@1.5.0: + resolution: + { + integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== + } + dependencies: + "@types/mdast": 3.0.15 + "@types/unist": 2.0.10 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@3.2.0: + resolution: + { + integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + } + dependencies: + "@types/mdast": 3.0.15 + dev: false + + /merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + } + + /merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + } + engines: { node: ">= 8" } + + /micromark-core-commonmark@1.1.0: + resolution: + { + integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-directive@2.2.1: + resolution: + { + integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug== + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + parse-entities: 4.0.1 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-autolink-literal@1.0.5: + resolution: + { + integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-extension-gfm-footnote@1.1.2: + resolution: + { + integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q== + } + dependencies: + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-strikethrough@1.0.7: + resolution: + { + integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw== + } + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-table@1.0.7: + resolution: + { + integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw== + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-tagfilter@1.0.2: + resolution: + { + integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g== + } + dependencies: + micromark-util-types: 1.1.0 + dev: false + + /micromark-extension-gfm-task-list-item@1.0.5: + resolution: + { + integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ== + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm@2.0.3: + resolution: + { + integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ== + } + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 + micromark-extension-gfm-tagfilter: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-extension-mdx-expression@1.0.8: + resolution: + { + integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw== + } + dependencies: + "@types/estree": 1.0.5 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-extension-mdx-jsx@1.0.5: + resolution: + { + integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA== + } + dependencies: + "@types/acorn": 4.0.6 + "@types/estree": 1.0.5 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + + /micromark-extension-mdx-md@1.0.1: + resolution: + { + integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA== + } + dependencies: + micromark-util-types: 1.1.0 + dev: false + + /micromark-extension-mdxjs-esm@1.0.5: + resolution: + { + integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w== + } + dependencies: + "@types/estree": 1.0.5 + micromark-core-commonmark: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + + /micromark-extension-mdxjs@1.0.1: + resolution: + { + integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q== + } + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-jsx: 1.0.5 + micromark-extension-mdx-md: 1.0.1 + micromark-extension-mdxjs-esm: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-destination@1.1.0: + resolution: + { + integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-label@1.1.0: + resolution: + { + integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-factory-mdx-expression@1.0.9: + resolution: + { + integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA== + } + dependencies: + "@types/estree": 1.0.5 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + + /micromark-factory-space@1.1.0: + resolution: + { + integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-title@1.1.0: + resolution: + { + integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-whitespace@1.1.0: + resolution: + { + integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== + } + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-character@1.2.0: + resolution: + { + integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + } + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-character@2.0.1: + resolution: + { + integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw== + } + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@1.1.0: + resolution: + { + integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-classify-character@1.1.0: + resolution: + { + integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-combine-extensions@1.1.0: + resolution: + { + integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== + } + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: + { + integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-decode-string@1.1.0: + resolution: + { + integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-encode@1.1.0: + resolution: + { + integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== + } + dev: false + + /micromark-util-encode@2.0.0: + resolution: + { + integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== + } + dev: false + + /micromark-util-events-to-acorn@1.2.3: + resolution: + { + integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w== + } + dependencies: + "@types/acorn": 4.0.6 + "@types/estree": 1.0.5 + "@types/unist": 2.0.10 + estree-util-visit: 1.2.1 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + + /micromark-util-html-tag-name@1.2.0: + resolution: + { + integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== + } + dev: false + + /micromark-util-normalize-identifier@1.1.0: + resolution: + { + integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== + } + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-resolve-all@1.1.0: + resolution: + { + integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== + } + dependencies: + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-sanitize-uri@1.2.0: + resolution: + { + integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== + } + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-sanitize-uri@2.0.0: + resolution: + { + integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== + } + dependencies: + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-subtokenize@1.1.0: + resolution: + { + integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== + } + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-util-symbol@1.1.0: + resolution: + { + integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + } + dev: false + + /micromark-util-symbol@2.0.0: + resolution: + { + integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== + } + dev: false + + /micromark-util-types@1.1.0: + resolution: + { + integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + } + dev: false + + /micromark-util-types@2.0.0: + resolution: + { + integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== + } + dev: false + + /micromark@3.2.0: + resolution: + { + integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== + } + dependencies: + "@types/debug": 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime@3.0.0: + resolution: + { + integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + } + engines: { node: ">=10.0.0" } + hasBin: true + dev: false + + /mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + } + engines: { node: ">=6" } + + /mimic-fn@4.0.0: + resolution: + { + integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + } + engines: { node: ">=12" } + + /mimic-response@3.1.0: + resolution: + { + integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + } + engines: { node: ">=10" } + requiresBuild: true + dev: false + optional: true + + /minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + } + requiresBuild: true + dev: false + optional: true + + /mkdirp-classic@0.5.3: + resolution: + { + integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + } + requiresBuild: true + dev: false + optional: true + + /mri@1.2.0: + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + } + engines: { node: ">=4" } + dev: false + + /ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + } + dev: false + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + } + + /ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + } + dev: false + + /nanoid@3.3.7: + resolution: + { + integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + dev: false + + /napi-build-utils@1.0.2: + resolution: + { + integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + } + requiresBuild: true + dev: false + optional: true + + /natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + } + dev: true + + /needle@2.9.1: + resolution: + { + integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + } + engines: { node: ">= 4.4.x" } + hasBin: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /nlcst-to-string@3.1.1: + resolution: + { + integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw== + } + dependencies: + "@types/nlcst": 1.0.4 + dev: false + + /node-abi@3.51.0: + resolution: + { + integrity: sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA== + } + engines: { node: ">=10" } + requiresBuild: true + dependencies: + semver: 7.5.4 + dev: false + optional: true + + /node-addon-api@6.1.0: + resolution: + { + integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + } + requiresBuild: true + dev: false + optional: true + + /node-releases@2.0.13: + resolution: + { + integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + } + dev: false + + /normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + } + engines: { node: ">=0.10.0" } + dev: false + + /not@0.1.0: + resolution: + { + integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA== + } + dev: false + + /npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + } + engines: { node: ">=8" } + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: + { + integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + path-key: 4.0.0 + + /nth-check@2.1.1: + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + } + dependencies: + boolbase: 1.0.0 + dev: false + + /once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + } + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + } + engines: { node: ">=6" } + dependencies: + mimic-fn: 2.1.0 + + /onetime@6.0.0: + resolution: + { + integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + } + engines: { node: ">=12" } + dependencies: + mimic-fn: 4.0.0 + + /open@9.1.0: + resolution: + { + integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + } + engines: { node: ">=14.16" } + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: + { + integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + } + engines: { node: ">= 0.8.0" } + dependencies: + "@aashutoshrathi/word-wrap": 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@7.0.1: + resolution: + { + integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw== + } + engines: { node: ">=16" } + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.0 + dev: false + + /p-limit@2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + } + engines: { node: ">=6" } + dependencies: + p-try: 2.2.0 + dev: false + + /p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + + /p-limit@4.0.0: + resolution: + { + integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + yocto-queue: 1.0.0 + dev: false + + /p-locate@4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + } + engines: { node: ">=8" } + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + + /p-queue@7.4.1: + resolution: + { + integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + } + engines: { node: ">=12" } + dependencies: + eventemitter3: 5.0.1 + p-timeout: 5.1.0 + dev: false + + /p-timeout@5.1.0: + resolution: + { + integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + } + engines: { node: ">=12" } + dev: false + + /p-try@2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + } + engines: { node: ">=6" } + dev: false + + /pagefind@1.0.4: + resolution: + { + integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w== + } + hasBin: true + optionalDependencies: + "@pagefind/darwin-arm64": 1.0.4 + "@pagefind/darwin-x64": 1.0.4 + "@pagefind/linux-arm64": 1.0.4 + "@pagefind/linux-x64": 1.0.4 + "@pagefind/windows-x64": 1.0.4 + dev: false + + /parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + dev: true + + /parse-entities@4.0.1: + resolution: + { + integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== + } + dependencies: + "@types/unist": 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-latin@5.0.1: + resolution: + { + integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg== + } + dependencies: + nlcst-to-string: 3.1.1 + unist-util-modify-children: 3.1.1 + unist-util-visit-children: 2.0.2 + dev: false + + /parse5@6.0.1: + resolution: + { + integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + } + dev: false + + /parse5@7.1.2: + resolution: + { + integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + } + dependencies: + entities: 4.5.0 + dev: false + + /path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + } + engines: { node: ">=8" } + + /path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + } + engines: { node: ">=0.10.0" } + dev: true + + /path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + } + engines: { node: ">=8" } + + /path-key@4.0.0: + resolution: + { + integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + } + engines: { node: ">=12" } + + /path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + } + dev: false + + /path-to-regexp@6.2.1: + resolution: + { + integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + } + dev: false + + /periscopic@3.1.0: + resolution: + { + integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + } + dependencies: + "@types/estree": 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: false + + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + } + + /picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + } + engines: { node: ">=8.6" } + + /pify@4.0.1: + resolution: + { + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + } + engines: { node: ">=6" } + dev: false + + /pkg-dir@4.2.0: + resolution: + { + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + } + engines: { node: ">=8" } + dependencies: + find-up: 4.1.0 + dev: false + + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: + { + integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-selector-parser@6.0.13: + resolution: + { + integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + } + engines: { node: ">=4" } + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss@8.4.31: + resolution: + { + integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /prebuild-install@7.1.1: + resolution: + { + integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + } + engines: { node: ">=10" } + hasBin: true + requiresBuild: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.51.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + optional: true + + /preferred-pm@3.1.2: + resolution: + { + integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q== + } + engines: { node: ">=10" } + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + dev: false + + /prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + } + engines: { node: ">= 0.8.0" } + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: + { + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + } + engines: { node: ">=6.0.0" } + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier-plugin-astro@0.12.2: + resolution: + { + integrity: sha512-1OXSEht27zrnX7rCa0bEpLdspeumFW4hnj4+JzPuG5bRlSOAhD0rbXBNZfRD9q0Qbr00EcCcnjd6k6M8q+GfTA== + } + engines: { node: ^14.15.0 || >=16.0.0 } + dependencies: + "@astrojs/compiler": 1.8.2 + prettier: 3.1.0 + sass-formatter: 0.7.8 + dev: true + + /prettier@3.1.0: + resolution: + { + integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== + } + engines: { node: ">=14" } + hasBin: true + dev: true + + /prismjs@1.29.0: + resolution: + { + integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + } + engines: { node: ">=6" } + dev: false + + /probe-image-size@7.2.3: + resolution: + { + integrity: sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w== + } + dependencies: + lodash.merge: 4.6.2 + needle: 2.9.1 + stream-parser: 0.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /prompts@2.4.2: + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + } + engines: { node: ">= 6" } + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + + /property-information@6.4.0: + resolution: + { + integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ== + } + dev: false + + /pump@3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + } + requiresBuild: true + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + optional: true + + /punycode@2.3.1: + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + } + engines: { node: ">=6" } + dev: true + + /queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + } + + /queue-tick@1.0.1: + resolution: + { + integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + } + requiresBuild: true + dev: false + optional: true + + /rc@1.2.8: + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + } + hasBin: true + requiresBuild: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + optional: true + + /readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + } + engines: { node: ">= 6" } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: false + + /rehype-external-links@3.0.0: + resolution: + { + integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw== + } + dependencies: + "@types/hast": 3.0.3 + "@ungap/structured-clone": 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + dev: false + + /rehype-parse@8.0.5: + resolution: + { + integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A== + } + dependencies: + "@types/hast": 2.3.8 + hast-util-from-parse5: 7.1.2 + parse5: 6.0.1 + unified: 10.1.2 + dev: false + + /rehype-raw@6.1.1: + resolution: + { + integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ== + } + dependencies: + "@types/hast": 2.3.8 + hast-util-raw: 7.2.3 + unified: 10.1.2 + dev: false + + /rehype-stringify@9.0.4: + resolution: + { + integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ== + } + dependencies: + "@types/hast": 2.3.8 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + dev: false + + /rehype@12.0.1: + resolution: + { + integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw== + } + dependencies: + "@types/hast": 2.3.8 + rehype-parse: 8.0.5 + rehype-stringify: 9.0.4 + unified: 10.1.2 + dev: false + + /remark-directive@2.0.1: + resolution: + { + integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-directive: 2.2.4 + micromark-extension-directive: 2.2.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-expressive-code@0.29.2: + resolution: + { + integrity: sha512-XIsrURhMOJNOUkCSp0OQ3suAZxNIS6ZkubjOxlTLyViOuVPmvRIXp36t6om9PYSwbxesorM+DNJpsla297GzQQ== + } + dependencies: + expressive-code: 0.29.2 + hast-util-to-html: 8.0.4 + unist-util-visit: 4.1.2 + dev: false + + /remark-gfm@3.0.1: + resolution: + { + integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-gfm: 2.0.2 + micromark-extension-gfm: 2.0.3 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-mdx@2.3.0: + resolution: + { + integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g== + } + dependencies: + mdast-util-mdx: 2.0.1 + micromark-extension-mdxjs: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@10.0.2: + resolution: + { + integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw== + } + dependencies: + "@types/mdast": 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype@10.1.0: + resolution: + { + integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + } + dependencies: + "@types/hast": 2.3.8 + "@types/mdast": 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + dev: false + + /remark-smartypants@2.0.0: + resolution: + { + integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + retext: 8.1.0 + retext-smartypants: 5.2.0 + unist-util-visit: 4.1.2 + dev: false + + /resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + } + engines: { node: ">=4" } + dev: true + + /resolve@1.22.8: + resolution: + { + integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + } + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /restore-cursor@4.0.0: + resolution: + { + integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + + /retext-latin@3.1.0: + resolution: + { + integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ== + } + dependencies: + "@types/nlcst": 1.0.4 + parse-latin: 5.0.1 + unherit: 3.0.1 + unified: 10.1.2 + dev: false + + /retext-smartypants@5.2.0: + resolution: + { + integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw== + } + dependencies: + "@types/nlcst": 1.0.4 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + unist-util-visit: 4.1.2 + dev: false + + /retext-stringify@3.1.0: + resolution: + { + integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w== + } + dependencies: + "@types/nlcst": 1.0.4 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + dev: false + + /retext@8.1.0: + resolution: + { + integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q== + } + dependencies: + "@types/nlcst": 1.0.4 + retext-latin: 3.1.0 + retext-stringify: 3.1.0 + unified: 10.1.2 + dev: false + + /reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + /rimraf@3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + } + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.29.4: + resolution: + { + integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + } + engines: { node: ">=14.18.0", npm: ">=8.0.0" } + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /run-applescript@5.0.0: + resolution: + { + integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + } + engines: { node: ">=12" } + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + } + dependencies: + queue-microtask: 1.2.3 + + /s.color@0.0.15: + resolution: + { + integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA== + } + dev: true + + /sade@1.8.1: + resolution: + { + integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + } + engines: { node: ">=6" } + dependencies: + mri: 1.2.0 + dev: false + + /safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + } + dev: false + + /safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + } + dev: false + + /sass-formatter@0.7.8: + resolution: + { + integrity: sha512-7fI2a8THglflhhYis7k06eUf92VQuJoXzEs2KRP0r1bluFxKFvLx0Ns7c478oYGM0fPfrr846ZRWVi2MAgHt9Q== + } + dependencies: + suf-log: 2.5.3 + dev: true + + /sax@1.3.0: + resolution: + { + integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + } + + /section-matter@1.0.0: + resolution: + { + integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + } + engines: { node: ">=4" } + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: false + + /semver@6.3.1: + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + } + hasBin: true + dev: false + + /semver@7.5.4: + resolution: + { + integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /server-destroy@1.0.1: + resolution: + { + integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ== + } + dev: false + + /sharp@0.32.6: + resolution: + { + integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== + } + engines: { node: ">=14.15.0" } + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + optional: true + + /sharp@0.33.0: + resolution: + { + integrity: sha512-99DZKudjm/Rmz+M0/26t4DKpXyywAOJaayGS9boEn7FvgtG0RYBi46uPE2c+obcJRtA3AZa0QwJot63gJQ1F0Q== + } + engines: { libvips: ">=8.15.0", node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + semver: 7.5.4 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.33.0 + "@img/sharp-darwin-x64": 0.33.0 + "@img/sharp-libvips-darwin-arm64": 1.0.0 + "@img/sharp-libvips-darwin-x64": 1.0.0 + "@img/sharp-libvips-linux-arm": 1.0.0 + "@img/sharp-libvips-linux-arm64": 1.0.0 + "@img/sharp-libvips-linux-s390x": 1.0.0 + "@img/sharp-libvips-linux-x64": 1.0.0 + "@img/sharp-libvips-linuxmusl-arm64": 1.0.0 + "@img/sharp-libvips-linuxmusl-x64": 1.0.0 + "@img/sharp-linux-arm": 0.33.0 + "@img/sharp-linux-arm64": 0.33.0 + "@img/sharp-linux-s390x": 0.33.0 + "@img/sharp-linux-x64": 0.33.0 + "@img/sharp-linuxmusl-arm64": 0.33.0 + "@img/sharp-linuxmusl-x64": 0.33.0 + "@img/sharp-wasm32": 0.33.0 + "@img/sharp-win32-ia32": 0.33.0 + "@img/sharp-win32-x64": 0.33.0 + dev: false + + /shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + } + engines: { node: ">=8" } + + /shiki@0.14.5: + resolution: + { + integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw== + } + dependencies: + ansi-sequence-parser: 1.1.1 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: false + + /shikiji@0.6.13: + resolution: + { + integrity: sha512-4T7X39csvhT0p7GDnq9vysWddf2b6BeioiN3Ymhnt3xcy9tXmDcnsEFVxX18Z4YcQgEE/w48dLJ4pPPUcG9KkA== + } + dependencies: + hast-util-to-html: 9.0.0 + dev: false + + /signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + } + + /signal-exit@4.1.0: + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + } + engines: { node: ">=14" } + dev: false + + /simple-concat@1.0.1: + resolution: + { + integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + } + requiresBuild: true + dev: false + optional: true + + /simple-get@4.0.1: + resolution: + { + integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + } + requiresBuild: true + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + optional: true + + /simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + } + dependencies: + is-arrayish: 0.3.2 + dev: false + + /sisteransi@1.0.5: + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + } + dev: false + + /sitemap@7.1.1: + resolution: + { + integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== + } + engines: { node: ">=12.0.0", npm: ">=5.6.0" } + hasBin: true + dependencies: + "@types/node": 17.0.45 + "@types/sax": 1.2.7 + arg: 5.0.2 + sax: 1.3.0 + dev: false + + /source-map-js@1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + } + engines: { node: ">=0.10.0" } + dev: false + + /source-map@0.7.4: + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + } + engines: { node: ">= 8" } + dev: false + + /space-separated-tokens@2.0.2: + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + } + dev: false + + /sprintf-js@1.0.3: + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + } + dev: false + + /stdin-discarder@0.1.0: + resolution: + { + integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + bl: 5.1.0 + dev: false + + /stream-parser@0.3.1: + resolution: + { + integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== + } + dependencies: + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /streamx@2.15.5: + resolution: + { + integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg== + } + requiresBuild: true + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + optional: true + + /string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + } + engines: { node: ">=8" } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + } + engines: { node: ">=12" } + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string-width@6.1.0: + resolution: + { + integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ== + } + engines: { node: ">=16" } + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.3.0 + strip-ansi: 7.1.0 + dev: false + + /string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + } + dependencies: + safe-buffer: 5.2.1 + dev: false + + /stringify-entities@4.0.3: + resolution: + { + integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + } + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: + { + integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + } + engines: { node: ">=12" } + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom-string@1.0.0: + resolution: + { + integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + } + engines: { node: ">=0.10.0" } + dev: false + + /strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + } + engines: { node: ">=4" } + dev: false + + /strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + } + engines: { node: ">=6" } + dev: true + + /strip-final-newline@3.0.0: + resolution: + { + integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + } + engines: { node: ">=12" } + + /strip-json-comments@2.0.1: + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + } + engines: { node: ">=0.10.0" } + requiresBuild: true + dev: false + optional: true + + /strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + } + engines: { node: ">=8" } + dev: true + + /strnum@1.0.5: + resolution: + { + integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + } + dev: true + + /style-to-object@0.4.4: + resolution: + { + integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== + } + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /suf-log@2.5.3: + resolution: + { + integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow== + } + dependencies: + s.color: 0.0.15 + dev: true + + /supports-color@5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + } + engines: { node: ">=4" } + dependencies: + has-flag: 3.0.0 + dev: false + + /supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + } + engines: { node: ">= 0.4" } + dev: false + + /synckit@0.8.5: + resolution: + { + integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + } + engines: { node: ^14.18.0 || >=16.0.0 } + dependencies: + "@pkgr/utils": 2.4.2 + tslib: 2.6.2 + dev: true + + /tar-fs@2.1.1: + resolution: + { + integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + } + requiresBuild: true + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + optional: true + + /tar-fs@3.0.4: + resolution: + { + integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== + } + requiresBuild: true + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + optional: true + + /tar-stream@2.2.0: + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + } + engines: { node: ">=6" } + requiresBuild: true + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + optional: true + + /tar-stream@3.1.6: + resolution: + { + integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== + } + requiresBuild: true + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.5 + dev: false + optional: true + + /text-table@0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + } + dev: true + + /titleize@3.0.0: + resolution: + { + integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + } + engines: { node: ">=12" } + dev: true + + /to-fast-properties@2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + } + engines: { node: ">=4" } + dev: false + + /to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + + /trim-lines@3.0.1: + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + } + dev: false + + /trough@2.1.0: + resolution: + { + integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + } + dev: false + + /tsconfck@3.0.0: + resolution: + { + integrity: sha512-w3wnsIrJNi7avf4Zb0VjOoodoO0woEqGgZGQm+LHH9przdUI+XDKsWAXwxHA1DaRTjeuZNcregSzr7RaA8zG9A== + } + engines: { node: ^18 || >=20 } + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dev: false + + /tslib@2.6.2: + resolution: + { + integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + } + + /tunnel-agent@0.6.0: + resolution: + { + integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + } + requiresBuild: true + dependencies: + safe-buffer: 5.2.1 + dev: false + optional: true + + /type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + } + engines: { node: ">=10" } + dev: true + + /type-fest@2.19.0: + resolution: + { + integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + } + engines: { node: ">=12.20" } + dev: false + + /unherit@3.0.1: + resolution: + { + integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg== + } + dev: false + + /unified@10.1.2: + resolution: + { + integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + } + dependencies: + "@types/unist": 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.7 + dev: false + + /unist-util-generated@2.0.1: + resolution: + { + integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== + } + dev: false + + /unist-util-is@5.2.1: + resolution: + { + integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /unist-util-is@6.0.0: + resolution: + { + integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + } + dependencies: + "@types/unist": 3.0.2 + dev: false + + /unist-util-modify-children@3.1.1: + resolution: + { + integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA== + } + dependencies: + "@types/unist": 2.0.10 + array-iterate: 2.0.1 + dev: false + + /unist-util-position-from-estree@1.1.2: + resolution: + { + integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /unist-util-position@4.0.4: + resolution: + { + integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /unist-util-position@5.0.0: + resolution: + { + integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + } + dependencies: + "@types/unist": 3.0.2 + dev: false + + /unist-util-remove-position@4.0.2: + resolution: + { + integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ== + } + dependencies: + "@types/unist": 2.0.10 + unist-util-visit: 4.1.2 + dev: false + + /unist-util-remove@3.1.1: + resolution: + { + integrity: sha512-kfCqZK5YVY5yEa89tvpl7KnBBHu2c6CzMkqHUrlOqaRgGOMp0sMvwWOVrbAtj03KhovQB7i96Gda72v/EFE0vw== + } + dependencies: + "@types/unist": 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /unist-util-stringify-position@3.0.3: + resolution: + { + integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: + { + integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + } + dependencies: + "@types/unist": 3.0.2 + dev: false + + /unist-util-visit-children@2.0.2: + resolution: + { + integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q== + } + dependencies: + "@types/unist": 2.0.10 + dev: false + + /unist-util-visit-parents@5.1.3: + resolution: + { + integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + } + dependencies: + "@types/unist": 2.0.10 + unist-util-is: 5.2.1 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: + { + integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + } + dependencies: + "@types/unist": 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@4.1.2: + resolution: + { + integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== + } + dependencies: + "@types/unist": 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /unist-util-visit@5.0.0: + resolution: + { + integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + } + dependencies: + "@types/unist": 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /untildify@4.0.0: + resolution: + { + integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + } + engines: { node: ">=8" } + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: + { + integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + + /uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + } + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + } + dev: false + + /uvu@0.5.6: + resolution: + { + integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + } + engines: { node: ">=8" } + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: false + + /vfile-location@4.1.0: + resolution: + { + integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw== + } + dependencies: + "@types/unist": 2.0.10 + vfile: 5.3.7 + dev: false + + /vfile-location@5.0.2: + resolution: + { + integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== + } + dependencies: + "@types/unist": 3.0.2 + vfile: 6.0.1 + dev: false + + /vfile-message@3.1.4: + resolution: + { + integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== + } + dependencies: + "@types/unist": 2.0.10 + unist-util-stringify-position: 3.0.3 + dev: false + + /vfile-message@4.0.2: + resolution: + { + integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + } + dependencies: + "@types/unist": 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@5.3.7: + resolution: + { + integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== + } + dependencies: + "@types/unist": 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: false + + /vfile@6.0.1: + resolution: + { + integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== + } + dependencies: + "@types/unist": 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + + /vite@4.5.0: + resolution: + { + integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== + } + engines: { node: ^14.18.0 || >=16.0.0 } + hasBin: true + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /vitefu@0.2.5(vite@4.5.0): + resolution: + { + integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q== + } + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.5.0 + dev: false + + /vscode-oniguruma@1.7.0: + resolution: + { + integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== + } + dev: false + + /vscode-textmate@8.0.0: + resolution: + { + integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== + } + dev: false + + /web-namespaces@2.0.1: + resolution: + { + integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + } + dev: false + + /which-pm-runs@1.1.0: + resolution: + { + integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA== + } + engines: { node: ">=4" } + dev: false + + /which-pm@2.0.0: + resolution: + { + integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== + } + engines: { node: ">=8.15" } + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: false + + /which-pm@2.1.1: + resolution: + { + integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ== + } + engines: { node: ">=8.15" } + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: false + + /which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + + /widest-line@4.0.1: + resolution: + { + integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + } + engines: { node: ">=12" } + dependencies: + string-width: 5.1.2 + dev: false + + /wrap-ansi@8.1.0: + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + } + engines: { node: ">=12" } + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + } + + /xml-js@1.6.11: + resolution: + { + integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + } + hasBin: true + dependencies: + sax: 1.3.0 + dev: true + + /yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + } + dev: false + + /yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + } + dev: false + + /yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + } + engines: { node: ">=12" } + dev: false + + /yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + } + engines: { node: ">=10" } + + /yocto-queue@1.0.0: + resolution: + { + integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + } + engines: { node: ">=12.20" } + dev: false + + /zod@3.22.4: + resolution: + { + integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== + } + dev: false + + /zwitch@2.0.4: + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== + } + dev: false diff --git a/docs/content/static/fav/ms-icon-310x310.png b/docs/public/favicon.png similarity index 100% rename from docs/content/static/fav/ms-icon-310x310.png rename to docs/public/favicon.png diff --git a/docs/public/make-scrollable-code-focusable.js b/docs/public/make-scrollable-code-focusable.js new file mode 100644 index 00000000..297eb1b3 --- /dev/null +++ b/docs/public/make-scrollable-code-focusable.js @@ -0,0 +1,3 @@ +Array.from(document.getElementsByTagName("pre")).forEach((element) => { + element.setAttribute("tabindex", "0"); +}); diff --git a/docs/content/static/images/home/home_logo.webp b/docs/public/og_image.webp similarity index 100% rename from docs/content/static/images/home/home_logo.webp rename to docs/public/og_image.webp diff --git a/docs/public/robots.txt b/docs/public/robots.txt new file mode 100644 index 00000000..dfa3fb4d --- /dev/null +++ b/docs/public/robots.txt @@ -0,0 +1,5 @@ +User-agent: * +Disallow: /audio-enum/ +Disallow: /404.html + +Sitemap: https://nh.outerwildsmods.com/sitemap-index.xml diff --git a/docs/content/static/images/detailing/asset_bundle.webp b/docs/src/assets/docs-images/details/asset_bundle.webp similarity index 100% rename from docs/content/static/images/detailing/asset_bundle.webp rename to docs/src/assets/docs-images/details/asset_bundle.webp diff --git a/docs/content/static/images/getting_started/mod_manager_show_in_explorer.webp b/docs/src/assets/docs-images/getting_started/mod_manager_show_in_explorer.webp similarity index 100% rename from docs/content/static/images/getting_started/mod_manager_show_in_explorer.webp rename to docs/src/assets/docs-images/getting_started/mod_manager_show_in_explorer.webp diff --git a/docs/content/static/images/planet_gen/earth_heightmap.webp b/docs/src/assets/docs-images/planet_gen/earth_heightmap.webp similarity index 100% rename from docs/content/static/images/planet_gen/earth_heightmap.webp rename to docs/src/assets/docs-images/planet_gen/earth_heightmap.webp diff --git a/docs/content/static/images/ship_log/auto_map_mode.webp b/docs/src/assets/docs-images/ship_log/auto_map_mode.webp similarity index 100% rename from docs/content/static/images/ship_log/auto_map_mode.webp rename to docs/src/assets/docs-images/ship_log/auto_map_mode.webp diff --git a/docs/content/static/images/ship_log/auto_rumor_mode.webp b/docs/src/assets/docs-images/ship_log/auto_rumor_mode.webp similarity index 100% rename from docs/content/static/images/ship_log/auto_rumor_mode.webp rename to docs/src/assets/docs-images/ship_log/auto_rumor_mode.webp diff --git a/docs/content/static/images/ship_log/change_color.webp b/docs/src/assets/docs-images/ship_log/change_color.webp similarity index 100% rename from docs/content/static/images/ship_log/change_color.webp rename to docs/src/assets/docs-images/ship_log/change_color.webp diff --git a/docs/content/static/images/ship_log/child_entry_example.webp b/docs/src/assets/docs-images/ship_log/child_entry_example.webp similarity index 100% rename from docs/content/static/images/ship_log/child_entry_example.webp rename to docs/src/assets/docs-images/ship_log/child_entry_example.webp diff --git a/docs/content/static/images/ship_log/curiosity_example.webp b/docs/src/assets/docs-images/ship_log/curiosity_example.webp similarity index 100% rename from docs/content/static/images/ship_log/curiosity_example.webp rename to docs/src/assets/docs-images/ship_log/curiosity_example.webp diff --git a/docs/content/static/images/ship_log/entry_example.webp b/docs/src/assets/docs-images/ship_log/entry_example.webp similarity index 100% rename from docs/content/static/images/ship_log/entry_example.webp rename to docs/src/assets/docs-images/ship_log/entry_example.webp diff --git a/docs/content/static/images/ship_log/entry_position.webp b/docs/src/assets/docs-images/ship_log/entry_position.webp similarity index 100% rename from docs/content/static/images/ship_log/entry_position.webp rename to docs/src/assets/docs-images/ship_log/entry_position.webp diff --git a/docs/content/static/images/ship_log/explore_example.webp b/docs/src/assets/docs-images/ship_log/explore_example.webp similarity index 100% rename from docs/content/static/images/ship_log/explore_example.webp rename to docs/src/assets/docs-images/ship_log/explore_example.webp diff --git a/docs/content/static/images/ship_log/map_indices.webp b/docs/src/assets/docs-images/ship_log/map_indices.webp similarity index 100% rename from docs/content/static/images/ship_log/map_indices.webp rename to docs/src/assets/docs-images/ship_log/map_indices.webp diff --git a/docs/content/static/images/ship_log/rumor_example.webp b/docs/src/assets/docs-images/ship_log/rumor_example.webp similarity index 100% rename from docs/content/static/images/ship_log/rumor_example.webp rename to docs/src/assets/docs-images/ship_log/rumor_example.webp diff --git a/docs/content/static/images/star_system/hearthian_solar_system_coordinates.webp b/docs/src/assets/docs-images/star_systems/hearthian_solar_system_coordinates.webp similarity index 100% rename from docs/content/static/images/star_system/hearthian_solar_system_coordinates.webp rename to docs/src/assets/docs-images/star_systems/hearthian_solar_system_coordinates.webp diff --git a/docs/content/static/images/star_system/nomai_coordinate_indexes.webp b/docs/src/assets/docs-images/star_systems/nomai_coordinate_indexes.webp similarity index 100% rename from docs/content/static/images/star_system/nomai_coordinate_indexes.webp rename to docs/src/assets/docs-images/star_systems/nomai_coordinate_indexes.webp diff --git a/docs/src/assets/icon.webp b/docs/src/assets/icon.webp new file mode 100644 index 00000000..bff23680 Binary files /dev/null and b/docs/src/assets/icon.webp differ diff --git a/docs/src/assets/splash_hero_image.webp b/docs/src/assets/splash_hero_image.webp new file mode 100644 index 00000000..20f248b9 Binary files /dev/null and b/docs/src/assets/splash_hero_image.webp differ diff --git a/docs/src/components/ConditionalPageSidebar.astro b/docs/src/components/ConditionalPageSidebar.astro new file mode 100644 index 00000000..a088212e --- /dev/null +++ b/docs/src/components/ConditionalPageSidebar.astro @@ -0,0 +1,52 @@ +--- +import type { Props } from "@astrojs/starlight/props"; +import Default from "@astrojs/starlight/components/PageSidebar.astro"; +import { SchemaTools } from "@/util/schema_utils"; +import type { MarkdownHeading } from "astro"; + +const isSchema = Astro.props.slug.startsWith("schemas/") && !Astro.props.slug.endsWith("/defs"); + +type TocItem = Exclude["items"]["find"]>, undefined>; + +const injectChild = (items: TocItem[], item: TocItem): void => { + const lastItem = items.at(-1); + if (!lastItem || lastItem.depth >= item.depth) { + items.push(item); + } else { + return injectChild(lastItem.children, item); + } +} + +function generateToC( + headings: MarkdownHeading[], + title: string +) { + const toc: Array = [{ depth: 2, slug: "_top", text: title, children: [] }]; + for (const heading of headings) injectChild(toc, { ...heading, children: [] }); + return toc; +} + +let props = Astro.props; + +if (isSchema) { + const schemaFileName = props.entry.data.schemaFile; + if (schemaFileName) { + let schema = SchemaTools.readSchema(schemaFileName); + const defName = props.entry.data.defName; + if (defName) { + schema = SchemaTools.getDefs(schema).find(d => d.slug === defName)!; + } + const headings = SchemaTools.getHeaders(schema); + props.headings = headings; + props.toc!.items = generateToC(headings, props.entry.data.title); + } +} +--- + +{ + ( + + + + ) +} diff --git a/docs/src/components/InterfaceFile.astro b/docs/src/components/InterfaceFile.astro new file mode 100644 index 00000000..6fb206af --- /dev/null +++ b/docs/src/components/InterfaceFile.astro @@ -0,0 +1,9 @@ +--- + +import { readFileSync } from "fs"; + +const content = readFileSync("../NewHorizons/INewHorizons.cs"); + +--- + +{content} diff --git a/docs/src/components/Schemas/Breadcrumb.astro b/docs/src/components/Schemas/Breadcrumb.astro new file mode 100644 index 00000000..6f79a533 --- /dev/null +++ b/docs/src/components/Schemas/Breadcrumb.astro @@ -0,0 +1,28 @@ +--- +import type { Schema } from "@/util/schema_utils"; +import { SchemaTools } from "@/util/schema_utils"; + +export interface Props { + schema: Schema; + onlyDefs?: boolean; +} + +const { schema, onlyDefs } = Astro.props; +--- + +
+ {onlyDefs ? SchemaTools.getTitle(schema) : schema.rootTitle} + / Definitions + {!(onlyDefs ?? false) && <> / {schema.slug}} +
+ + diff --git a/docs/src/components/Schemas/Content.astro b/docs/src/components/Schemas/Content.astro new file mode 100644 index 00000000..ae8090b8 --- /dev/null +++ b/docs/src/components/Schemas/Content.astro @@ -0,0 +1,184 @@ +--- +import { SchemaTools } from "@/util/schema_utils"; +import type { Schema } from "@/util/schema_utils"; + +export interface Props { + schema: Schema; + level: number; + isDef?: boolean; +} + +// Makes TS Happy +type HeadingType = "h2" | "h3" | "h4" | "h5" | "h6"; + +const levelMap: HeadingType[] = ["h2", "h2", "h3", "h4", "h5", "h6"]; + +const { schema, level, isDef } = Astro.props; + +const description = SchemaTools.getDescription(schema); +const type = SchemaTools.getType(schema); +const link = `https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/${schema.fileName}`; +const refSlug = SchemaTools.getRefSlug(schema); +const enumVals = SchemaTools.getEnumValues(schema); +const props = SchemaTools.getProps(schema, level); + +const HeadingTag = levelMap[level] ?? "h6"; +--- + +
+
+ { + level !== 0 && ( + + {level !== 0 && ( + + )} + {SchemaTools.getTitle(schema)} + + ) + } +
+ {level === 0 && Schema Type: {schema.internalSchema.type}} + { + SchemaTools.getRequired(schema) && level !== 0 && ( + Required + ) + } + {type && Type: {type}} + {SchemaTools.getAdditionalBadges(schema).map((b) => {b})} +
+
+ { + level === 0 && !isDef && ( + + ) + } + {description ?

{description}

:

No Description Found

} + { + enumVals.length !== 0 && ( + <> +

Must be equal to any of the following:

+
    + {enumVals.map((v) => ( +
  • + {v} +
  • + ))} +
+ + ) + } + { + refSlug && ( + + See Definitions/{refSlug} + + ) + } + { + props.length !== 0 && ( +
+ {props.map(([_, child], i) => ( + <> + {i !== 0 &&
} + + + ))} +
+ ) + } +
+ + diff --git a/docs/src/components/Schemas/DefinitionList.astro b/docs/src/components/Schemas/DefinitionList.astro new file mode 100644 index 00000000..4ea8299f --- /dev/null +++ b/docs/src/components/Schemas/DefinitionList.astro @@ -0,0 +1,21 @@ +--- +import { SchemaTools } from '@/util/schema_utils'; +import Breadcrumb from '@/components/Schemas/Breadcrumb.astro'; + +interface Props { + fileName: string; +} + +const { fileName } = Astro.props; + +const schema = SchemaTools.readSchema(fileName); + +const defs = SchemaTools.getDefs(schema); + +--- + + + + diff --git a/docs/src/components/Schemas/Schema.astro b/docs/src/components/Schemas/Schema.astro new file mode 100644 index 00000000..977c1bf5 --- /dev/null +++ b/docs/src/components/Schemas/Schema.astro @@ -0,0 +1,15 @@ +--- +import { SchemaTools } from '@/util/schema_utils'; +import Content from '@/components/Schemas/Content.astro'; + +interface Props { + fileName: string; +} + +const { fileName } = Astro.props; + +const schema = SchemaTools.readSchema(fileName); + +--- + + diff --git a/docs/src/components/Schemas/SchemaDef.astro b/docs/src/components/Schemas/SchemaDef.astro new file mode 100644 index 00000000..d5e9acc4 --- /dev/null +++ b/docs/src/components/Schemas/SchemaDef.astro @@ -0,0 +1,21 @@ +--- +import { SchemaTools } from '@/util/schema_utils'; +import Breadcrumb from '@/components/Schemas/Breadcrumb.astro'; +import Content from '@/components/Schemas/Content.astro'; + +interface Props { + fileName: string; + def: string; +} + +const { fileName, def } = Astro.props; + +const schema = SchemaTools.readSchema(fileName); +const defs = SchemaTools.getDefs(schema); + +const targetDef = defs.find(d => d.slug === def); + +--- + + + diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts new file mode 100644 index 00000000..429ea4ed --- /dev/null +++ b/docs/src/content/config.ts @@ -0,0 +1,13 @@ +import { defineCollection, z } from "astro:content"; +import { docsSchema } from "@astrojs/starlight/schema"; + +export const collections = { + docs: defineCollection({ + schema: docsSchema({ + extend: z.object({ + schemaFile: z.string().optional(), + defName: z.string().optional() + }) + }) + }) +}; diff --git a/docs/content/pages/tutorials/details.md b/docs/src/content/docs/guides/details.md similarity index 60% rename from docs/content/pages/tutorials/details.md rename to docs/src/content/docs/guides/details.md index 1c4c0cae..35549a0f 100644 --- a/docs/content/pages/tutorials/details.md +++ b/docs/src/content/docs/guides/details.md @@ -1,15 +1,13 @@ --- -Title: Detailing -Sort_Priority: 80 +title: Detailing +description: A guide to adding details to planets in New Horizons --- -# Details/Scatterer +For physical objects there are currently two ways of setting them up: specify an asset bundle and path to load a custom asset you created, or specify the path to the item you want to copy from the game in the scene hierarchy. Use the [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer) mod to find an object you want to copy onto your new body. Some objects work better than others for this. Good luck. Some pointers: -For physical objects there are currently two ways of setting them up: specify an asset bundle and path to load a custom asset you created, or specify the path to the item you want to copy from the game in the scene hierarchy. Use the [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer){ target="_blank" } mod to find an object you want to copy onto your new body. Some objects work better than others for this. Good luck. Some pointers: - -- Use "Object Explorer" to search -- Generally you can find planets by writing their name with no spaces/punctuation followed by "_Body". -- There's also [this community-maintained list of props](https://docs.google.com/spreadsheets/d/1VJaglB1kRL0VqaXhvXepIeymo93zqhWex-j7_QDm6NE/edit?usp=sharing) which you can use to find interesting props and check to see if they have collision. +- Use "Object Explorer" to search +- Generally you can find planets by writing their name with no spaces/punctuation followed by "\_Body". +- There's also [this community-maintained list of props](https://docs.google.com/spreadsheets/d/1VJaglB1kRL0VqaXhvXepIeymo93zqhWex-j7_QDm6NE/edit?usp=sharing) which you can use to find interesting props and check to see if they have collision. ## Using the Prop Placer @@ -19,23 +17,9 @@ The Prop Placer is a convenience tool that lets you manually place details from 1. Pause the game. You will see an extra menu option titled "Toggle Prop Placer Menu". Click it 2. The prop placer menu should now be open. At the bottom of the menu, you will see a list of mods. Click yours. - 1. This menu scrolls. If you do not see your mod, it may be further down the list. + 1. This menu scrolls. If you do not see your mod, it may be further down the list. 3. The Prop Placer is now active! Unpause the game, and you can now place Nomai vases using "G" -### How to Save - -1. In the Prop Placer Menu, you will see a greyed out button titled "Update your mod's configs". -2. Click the small button to the left of it. -3. Click "Update your mod's configs" to save! - -!!! alert-danger "IMPORTANT" - Your updated configs will save *only* to your mod's build folder, eg "AppData\Roaming\OuterWildsModManager\OWML\Mods\you.yourModName" - -!!! alert-warning "WARNING" - Dying in-game will cause you to lose all work since you last saved. Make sure to save often. - -What's that? You want to place something other than just vases? Well I can't say I agree with your choices, but here's how you would do that. - ### How to Select Props 1. Pause the game again. The prop placer menu should still be visible. @@ -47,25 +31,25 @@ What's that? You want to place something other than just vases? Well I can't say ### Extra features -1. Made a mistake? **Press the "-" key to undo.** Press the "+" key to redo. -2. If you have the Unity Explorer mod enabled, you can use this to tweak the position, rotation, and scale of your props. Your changes will be saved. -3. Want to save some recently placed props between game launches? On the recently placed props list, click the star next to the prop's name to favorite it. -4. Found a bug that ruined your configs? Check `AppData\Roaming\OuterWildsModManager\OWML\Mods\xen.NewHorizons\configBackups` for backup saves of your work. Folders are titled "\[date\]T\[time\]". -5. Want to add props to Ember Twin but don't feel like making a config file for it? We got you! Place that prop and the config file will be created automatically on your next save. +1. Made a mistake? **Press the "-" key to undo.** Press the "+" key to redo. +2. If you have the Unity Explorer mod enabled, you can use this to tweak the position, rotation, and scale of your props. Your changes will be saved. +3. Want to save some recently placed props between game launches? On the recently placed props list, click the star next to the prop's name to favorite it. +4. Found a bug that ruined your configs? Check `AppData\Roaming\OuterWildsModManager\OWML\Mods\xen.NewHorizons\configBackups` for backup saves of your work. Folders are titled "\[date\]T\[time\]". +5. Want to add props to Ember Twin but don't feel like making a config file for it? We got you! Place that prop and the config file will be created automatically on your next save. 6. This even works for planets that were created by other mods! ## Asset Bundles -Here is a template project: [Outer Wilds Unity Template](https://github.com/xen-42/outer-wilds-unity-template){ target="_blank" } +Here is a template project: [Outer Wilds Unity Template](https://github.com/xen-42/outer-wilds-unity-template) The template project contains ripped versions of all the game scripts, meaning you can put things like DirectionalForceVolumes in your Unity project to have artificial gravity volumes loaded right into the game. If for whatever reason you want to set up a Unity project manually instead of using the template, follow these instructions: -1. Start up a Unity 2017 project (I use Unity 2017.4.40f1 (64-bit), so if you use something else I can't guarantee it will work). The DLC updated Outer Wilds to 2019.4.27 so that probably works, but I personally haven't tried it. +1. Start up a Unity 2019.4.39f1 project 2. In the "Assets" folder in Unity, create a new folder called "Editor". In it create a file called "CreateAssetBundle.cs" with the following code in it: -```cs +```cs title="Editor/CreateAssetBundle.cs" using UnityEditor; using UnityEngine; using System.IO; @@ -87,35 +71,36 @@ public class CreateAssetBundles 3. Create your object in the Unity scene and save it as a prefab. 4. Add all files used (models, prefabs, textures, materials, etc.) to an asset bundle by selecting them and using the dropdown in the bottom right. Here I am adding a rover model to my "rss" asset bundle for the Real Solar System add-on. -![setting asset bundle]({{ 'images/detailing/asset_bundle.webp'|static }}) -5. In the top left click the "Assets" drop-down and select "Build AssetBundles". This should create your asset bundle in a folder in the root directory called "StreamingAssets". -6. Copy the asset bundle and asset bundle .manifest files from StreamingAssets into your mod's "planets" folder. If you did everything properly they should work in game. To double-check everything is included, open the .manifest file in a text editor to see the files included and their paths. +![setting asset bundle](@/assets/docs-images/details/asset_bundle.webp) + +1. In the top left click the "Assets" drop-down and select "Build AssetBundles". This should create your asset bundle in a folder in the root directory called "StreamingAssets". +2. Copy the asset bundle and asset bundle .manifest files from StreamingAssets into your mod's "planets" folder. If you did everything properly they should work in game. To double-check everything is included, open the .manifest file in a text editor to see the files included and their paths. ## Importing a planet's surface from Unity -Making a planet's entire surface from a Unity prefab is the exact same thing as adding one single big detail at position (0, 0, 0). +Making a planet's entire surface from a Unity prefab is the exact same thing as adding one single big detail at position (0, 0, 0). ## Examples To add a Mars rover to the red planet in [RSS](https://github.com/xen-42/outer-wilds-real-solar-system), its model was put in an asset bundle as explained above, and then the following was put into the `Props` module: -```json +```json {5-6} { - "Props": { - "Details": [ - { - "assetBundle": "planets/assetbundle/rss", - "path": "Assets/RSS/Prefabs/Rover.prefab", - "position": { - "x": 146.5099, - "y": -10.83688, - "z": -36.02736 - }, - "alignToNormal": true - } - ] - } + "Props": { + "Details": [ + { + "assetBundle": "planets/assetbundle/rss", + "path": "Assets/RSS/Prefabs/Rover.prefab", + "position": { + "x": 146.5099, + "y": -10.83688, + "z": -36.02736 + }, + "alignToNormal": true + } + ] + } } ``` @@ -123,14 +108,14 @@ To scatter 12 trees from the Dream World around Wetrock in [NH Examples](https:/ ```json { - "Props": { - "Scatter": [ - { - "path": "DreamWorld_Body/Sector_DreamWorld/Sector_DreamZone_1/Props_DreamZone_1/OtherComponentsGroup/Trees_Z1/DreamHouseIsland/Tree_DW_M_Var", - "count": 12 - } - ] - } + "Props": { + "Scatter": [ + { + "path": "DreamWorld_Body/Sector_DreamWorld/Sector_DreamZone_1/Props_DreamZone_1/OtherComponentsGroup/Trees_Z1/DreamHouseIsland/Tree_DW_M_Var", + "count": 12 + } + ] + } } ``` @@ -138,29 +123,29 @@ You can swap these around too. The following would scatter 12 Mars rovers across ```json { - "Props": { - "Details": [ - { - "path": "DreamWorld_Body/Sector_DreamWorld/Sector_DreamZone_1/Props_DreamZone_1/OtherComponentsGroup/Trees_Z1/DreamHouseIsland/Tree_DW_M_Var", - "position": { - "x": 146.5099, - "y": -10.83688, - "z": -36.02736 - }, - "alignToNormal": true - } - ], - "Scatter": [ - { - "assetBundle": "planets/assetbundle/rss", - "path": "Assets/RSS/Prefabs/Rover.prefab", - "count": 12 - } - ] - } + "Props": { + "Details": [ + { + "path": "DreamWorld_Body/Sector_DreamWorld/Sector_DreamZone_1/Props_DreamZone_1/OtherComponentsGroup/Trees_Z1/DreamHouseIsland/Tree_DW_M_Var", + "position": { + "x": 146.5099, + "y": -10.83688, + "z": -36.02736 + }, + "alignToNormal": true + } + ], + "Scatter": [ + { + "assetBundle": "planets/assetbundle/rss", + "path": "Assets/RSS/Prefabs/Rover.prefab", + "count": 12 + } + ] + } } ``` ## Use the schema -To view additional options for detailing, check [the schema]({{ "Celestial Body Schema"|route}}#Props_details) +To view additional options for detailing, check [the schema](/schemas/body-schema/defs/propmodule#details) diff --git a/docs/content/pages/tutorials/dialogue.md b/docs/src/content/docs/guides/dialogue.md similarity index 82% rename from docs/content/pages/tutorials/dialogue.md rename to docs/src/content/docs/guides/dialogue.md index bd44c160..a2f1aa86 100644 --- a/docs/content/pages/tutorials/dialogue.md +++ b/docs/src/content/docs/guides/dialogue.md @@ -1,15 +1,10 @@ --- -Title: Dialogue -Description: Guide to making dialogue in New Horizons -Sort_Priority: 30 +title: Dialogue +description: Guide to making dialogue in New Horizons --- -# Dialogue - This page goes over how to use dialogue in New Horizons. -You may want to view [Understanding XML]({{ "Understanding XML"|route }}) if you haven't already. - ## Understanding Dialogue ### Dialogue Tree @@ -22,11 +17,11 @@ A node is a set of pages shown to the player followed by options the player can ### Condition -A condition is a yes/no value stored **for this loop and this loop only**. It can be used to show new dialogue options, stop someone from talking to you (looking at you Slate), and more. +A condition is a yes/no value stored **for this loop and this loop only**. It can be used to show new dialogue options, stop someone from talking to you (looking at you Slate), and more. ### Persistent Condition -A persistent condition is similar to a condition, except it *persists* through loops, and is saved on the players save file. +A persistent condition is similar to a condition, except it _persists_ through loops, and is saved on the players save file. ### Remote Trigger @@ -36,7 +31,7 @@ A remote trigger is used to have an NPC talk to you from a distance; ex: Slate s Here's an example dialogue XML: -```xml +```xml title="ExampleDialogue.xml" Start Start Part 2 - + Goto 1 @@ -67,14 +62,14 @@ Here's an example dialogue XML: - + 1 This is 1 - + Goto 2 @@ -86,7 +81,7 @@ Here's an example dialogue XML: - + 2 @@ -104,7 +99,7 @@ Here's an example dialogue XML: - + End @@ -121,26 +116,26 @@ To use the dialogue XML you have created, you simply need to reference it in the ```json { - "Props": { - "dialogue": [ - { - "position": {"x": 5, "y": 10, "z": 0}, - "xmlFile": "planets/path/to/your_file.xml" - } - ] - } + "Props": { + "dialogue": [ + { + "position": { "x": 5, "y": 10, "z": 0 }, + "xmlFile": "planets/path/to/your_file.xml" + } + ] + } } ``` ## Dialogue Config -To view the options for the dialogue prop, check [the schema]({{ "Celestial Body Schema"|route }}#Props_dialogue) +To view the options for the dialogue prop, check [the schema](/schemas/body-schema/defs/propmodule#dialogue) ## Controlling Conditions You can set condition in dialogue with the `` and `` tags -```xml +```xml {3-4} EXAMPLE_CONDITION @@ -151,7 +146,7 @@ You can set condition in dialogue with the `` and `` in the `` tag instead of a ` +First thing you should specify about your planet is its orbit. `primaryBody` will specify what planet this body will orbit. If you're in a new solar system and want this planet to be the center, set `centerOfSolarSystem` to `true` (keep in mind `centerOfSolarSystem` is in the `Base` module, not `Orbit`). Next up you'll need to specify the [orbital parameters](https://en.wikipedia.org/wiki/Orbital_elements). ## Heightmaps -Heightmaps are a way to generate unique terrain on your planet. First you specify a maximum and minimum height, and then specify a [heightMap]({{ "Celestial Body Schema"|route }}#HeightMap_heightMap) image. The more white a section of that image is, the closer to `maxHeight` that part of the terrain will be. Finally, you specify a `textureMap` which is an image that gets applied to the terrain. +Heightmaps are a way to generate unique terrain on your planet. First you specify a maximum and minimum height, and then specify a [heightMap](/schemas/body-schema/defs/heightmapmodule#heightMap) image. The more white a section of that image is, the closer to `maxHeight` that part of the terrain will be. Finally, you specify a `textureMap` which is an image that gets applied to the terrain. Here's an example heightmap of earth from the Real Solar System addon. -![Earth's Heightmap]({{ "images/planet_gen/earth_heightmap.webp"|static }}) +![Earth's Heightmap](@/assets/docs-images/planet_gen/earth_heightmap.webp) -```json +```json title="cool_planet.json" { "name": "My Cool Planet", "HeightMap": { @@ -31,22 +29,22 @@ Here's an example heightmap of earth from the Real Solar System addon. } ``` -There are also tools to help generate these images for you such as [Textures For Planets](https://www.texturesforplanets.com/){ target="_blank" }. +There are also tools to help generate these images for you such as [Textures For Planets](https://www.texturesforplanets.com/). ## Variable Size Modules The following modules support variable sizing, meaning they can change scale over the course of the loop. -- Water -- Lava -- Star -- Sand -- Funnel -- Ring +- Water +- Lava +- Star +- Sand +- Funnel +- Ring To do this, simply specify a `curve` property on the module -```json +```json title="cool_water_planet.json" { "name": "My Cool Planet", "Water": { @@ -71,7 +69,7 @@ This makes the water on this planet shrink over the course of 22 minutes. In order to create a quantum planet, first create a normal planet. Then, create a second planet config with the same `name` as the first and `isQuantumState` set to `true`. This makes the second planet a quantum state of the first, anything you specify here will only apply when the planet is in this state. -```json +```json title="cool_planet_sun_state.json" { "name": "MyPlanet", "Orbit": { @@ -81,7 +79,7 @@ This makes the second planet a quantum state of the first, anything you specify } ``` -```json +```json {3} title="cool_planet_th_state.json" { "name": "MyPlanet", "isQuantumState": true, @@ -96,7 +94,7 @@ This makes the second planet a quantum state of the first, anything you specify To create a binary system of planets (like ash twin and ember twin), first create a config with `FocalPoint` set -```json +```json {7-10} title="center.json" { "name": "My Focal Point", "Orbit": { @@ -112,7 +110,7 @@ To create a binary system of planets (like ash twin and ember twin), first creat Now in each config set the `primaryBody` to the focal point -```json +```json title="a.json" { "name": "Planet A", "Orbit": { @@ -124,7 +122,7 @@ Now in each config set the `primaryBody` to the focal point } ``` -```json +```json title="b.json" { "name": "Planet B", "Orbit": { diff --git a/docs/content/pages/tutorials/publishing.md b/docs/src/content/docs/guides/publishing.md similarity index 56% rename from docs/content/pages/tutorials/publishing.md rename to docs/src/content/docs/guides/publishing.md index 661ab3b8..65ad5f70 100644 --- a/docs/content/pages/tutorials/publishing.md +++ b/docs/src/content/docs/guides/publishing.md @@ -1,56 +1,48 @@ --- -Title: Publishing Addons -Sort_Priority: 1 +title: Publishing Addons --- -# Publishing Your Addon +This page goes over how to publish a release for your mod and submit your mod to the [outer wilds mod database](https://github.com/ow-mods/ow-mod-db) for review. -This page goes over how to publish a release for your mod and submit your mod to the [outer wilds mod database](https://github.com/ow-mods/ow-mod-db) for review. - -This guide assumes you've created your addon by following [the addon creation guide]({{ "Creating An Addon"|route }}). +This guide assumes you've created your addon by following [the addon creation guide in Getting Started](/start-here/getting-started#creating-addons). ## Housekeeping Before you release anything, you'll want to make sure: -- Your mod has a descriptive `README.md`. (This will be shown on the website) -- Your repo has the description field (click the cog in the right column on the "Code" tab) set. (this will be shown in the manager) -- There's no `config.json` in your addon. (Not super important, but good practice) -- Your manifest has a valid name, author, and unique name. - +- Your mod has a descriptive `README.md`. (This will be shown on the website) +- Your repo has the description field (click the cog in the right column on the "Code" tab) set. (this will be shown in the manager) +- There's no `config.json` in your addon. (Not super important, but good practice) +- Your manifest has a valid name, author, and unique name. ## Releasing -First things first we're going to create a release on GitHub. To do this, first make sure all your changes are committed and pushed in GitHub desktop. +First things first we're going to create a release on GitHub. To do this, first make sure all your changes are committed and pushed in GitHub desktop. -Then, edit your `manifest.json` and set the version number to `0.1.0` (or any version number that's higher than `0.0.0`). +Then, edit your `manifest.json` and set the version number to `0.1.0` (or any version number that's higher than `0.0.0`). -Finally, push your changes to GitHub, head to the "Actions" tab of your repository, and you should see an action running. +Finally, push your changes to GitHub, head to the "Actions" tab of your repository, and you should see an action running. -Once the action finishes head back to the "Code" tab, you should see a Version 0.1.0 (or whatever version you put) in the column on the right. +Once the action finishes head back to the "Code" tab, you should see a Version 0.1.0 (or whatever version you put) in the column on the right. Double-check the release, it should have a zip file in the assets with your mod's unique name. ## Submitting -The hard part is over now, all that's left is to submit your mod to the database. +The hard part is over now, all that's left is to submit your mod to the database. [Head to the mod database and make a new "Add/Update Existing Mod" issue](https://github.com/ow-mods/ow-mod-db/issues/new?assignees=&labels=add-mod&template=add-mod.yml&title=%5BYour+mod+name+here%5D) -Fill this out with your mod's info and make sure to put `xen.NewHorizons` in the parent mod field. +Fill this out with your mod's info and make sure to put `xen.NewHorizons` in the parent mod field. -Once you're done filling out the form, an admin will review your mod, make sure it works, and approve it into the database. +Once you're done filling out the form, an admin will review your mod, make sure it works, and approve it into the database. Congrats! You just published your addon! ## Updating -If you want to update your mod, you can simply bump the version number in `manifest.json` again. - -To edit the release notes displayed in discord, enter them in the "Description" field before you commit in GitHub desktop. The most recent commits description is used for the release notes. - -**You don't need to create a new issue on the database to update your mod, it will be updated automatically after a few minutes** - - +If you want to update your mod, you can simply bump the version number in `manifest.json` again. +To edit the release notes displayed in discord, enter them in the "Description" field before you commit in GitHub desktop. The most recent commits description is used for the release notes. +**You don't need to create a new issue on the database to update your mod, it will be updated automatically after a few minutes.** diff --git a/docs/content/pages/tutorials/ship_log.md b/docs/src/content/docs/guides/ship-log.md similarity index 64% rename from docs/content/pages/tutorials/ship_log.md rename to docs/src/content/docs/guides/ship-log.md index 62deeac7..15dafd5c 100644 --- a/docs/content/pages/tutorials/ship_log.md +++ b/docs/src/content/docs/guides/ship-log.md @@ -1,66 +1,59 @@ --- -Title: Ship Log -Description: A guide to editing the ship log in New Horizons -Sort_Priority: 40 +title: Ship Log +description: A guide to editing the ship log in New Horizons --- -# Intro - -Welcome! this page outlines how to create a custom ship log. - -If you haven't already, you may want to take a look at [Understanding XML]({{ "Understanding XML"|route }}) to get a better idea of how XML works. - -# Understanding Ship Logs +## Understanding Ship Logs First thing's first, I'll define some terminology regarding ship logs in the game, and how ship logs are structured. -## Entries +### Entries An entry is a card you see in rumor mode, it represents a specific area or concept in the game, such as Timber Hearth's village or the southern observatory on Brittle Hollow. An entry is split up into facts, a fact can either be a rumor fact or an explore fact. -![entryExample]({{ "images/ship_log/entry_example.webp"|static }}) -*In red you can see an entry, in green you can see the entry's facts* +![entryExample](@/assets/docs-images/ship_log/entry_example.webp) +_In red you can see an entry, in green you can see the entry's facts_ -### Curiosities +#### Curiosities Curiosities are entries that represent big ideas in the story, such as the ATP or the OPC. Non-curiosity entries have a Curiosity attribute that can be set to make the color of that entry match the color of the curiosity (Like how everything regarding the Vessel is red) -![curiosityExample]({{ "images/ship_log/curiosity_example.webp"|static }}) -*The Ash Twin Project is an example of a curiosity (internally it's called TIME_LOOP)* +![curiosityExample](@/assets/docs-images/ship_log/curiosity_example.webp) +_The Ash Twin Project is an example of a curiosity (internally it's called TIME_LOOP)_ -### Child Entries +#### Child Entries Entries can be children of other entries, meaning they'll be smaller. -![childEntryExample]({{ "images/ship_log/child_entry_example.webp"|static }}) -*The murals at the old settlement on Brittle Hollow are examples of child entries* +![childEntryExample](@/assets/docs-images/ship_log/child_entry_example.webp) +_The murals at the old settlement on Brittle Hollow are examples of child entries_ -## Rumor Facts +### Rumor Facts A rumor fact represents the information you might hear about a specific area or concept, usually, you get these through dialogue or maybe by observing a faraway planet. -![rumorFactExample]({{ "images/ship_log/rumor_example.webp"|static }}) +![rumorFactExample](@/assets/docs-images/ship_log/rumor_example.webp) -## Explore Facts +### Explore Facts Explore facts represent the information you learn about a specific area or concept. -![exploreFactExample]({{ "images/ship_log/explore_example.webp"|static }}) +![exploreFactExample](@/assets/docs-images/ship_log/explore_example.webp) -# The XML +## The XML Now that we know some terminology, let's get into how the XML works. Every planet in the ship log is represented by a single XML file, you can see this if you use the unity explorer mod and navigate to ShipLogManager. -## Example File +### Example File -```xml +```xml title="ExampleShipLog.xml" ``` -## Using The Schema +### Using The Schema In the example XML, you may notice something like `xsi:noNamespaceSchemaLocation` at the top, this tells whatever editor you're using that the file at that link is the schema. The game simply ignores this though, so it won't be able to catch errors at runtime. -Some editors may require you to [Trust](https://code.visualstudio.com/docs/editor/workspace-trust){ target="_blank" } the workspace to use +Some editors may require you to [Trust](https://code.visualstudio.com/docs/editor/workspace-trust) the workspace to use the schema file. Doing this varies per-editor, and you may also have to right-click the link and click download. -## Loading The File +### Loading The File You can load your XML file to your planet by doing adding the following to your planet's config -```json +```json {3} { - "ShipLog": { - "xmlFile": "planets/example.xml" - } + "ShipLog": { + "xmlFile": "planets/example.xml" + } } ``` -# Rumor Mode Options +## Rumor Mode Options -## Entry Layout +### Entry Layout By default, entries in rumor mode are laid out by rows, where each row is one planet. This will not make for a perfect -layout, so you can use the `entryPositions` property in your star system config to change them +layout, so you can use the `entryPositions` property **in your star system config** to change them. For example, if I want to change an entry with the ID of `EXAMPLE_ENTRY` and another with the ID of `EXAMPLE_ENTRY_2`: ```json { "entryPositions": [ - { - "id": "EXAMPLE_ENTRY", - "position": { - "x": 100, - "y": 200 + { + "id": "EXAMPLE_ENTRY", + "position": { + "x": 100, + "y": 200 + } + }, + { + "id": "EXAMPLE_ENTRY_2", + "position": { + "x": 200, + "y": 100 + } } - }, - { - "id": "EXAMPLE_ENTRY_2", - "position": { - "x": 200, - "y": 100 - } - } ] } ``` -To help with this, download the unity explorer mod and manually position entries, then simply use the dev tools to dump all the entries to a json string you can copy and paste into your config. +To help with this, download the unity explorer mod and manually position entries (they're located under `Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/MapMode/ScaleRoot/PanRoot`), then simply use the dev tools to dump all the entries to a json string you can copy and paste into your config. -![autoDetectiveMode]({{ "images/ship_log/auto_rumor_mode.webp"|static }}) -*A set of entries laid out with auto mode* +![autoDetectiveMode](@/assets/docs-images/ship_log/auto_rumor_mode.webp) +_A set of entries laid out with auto mode_ -## Images +### Images Custom entry images are a bit different from other custom images, instead of pointing to each file for each entry, you point to a folder: -```json +```json {4} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "spriteFolder": "planets/example_planet_entry_sprites/" - } + "ShipLog": { + "xmlFile": "planets/example.xml", + "spriteFolder": "planets/example_planet_entry_sprites/" + } } ``` @@ -209,250 +202,244 @@ for example, `EXAMPLE_ENTRY`'s file would be named `EXAMPLE_ENTRY.png`. you set alternate sprites by making a file with the entry's ID and `_ALT` at the end, so `EXAMPLE_ENTRY`'s alt image would be `EXAMPLE_ENTRY_ALT.png`. -## Curiosity Colors +### Curiosity Colors -Colors for each curiosity is given in a list, so if I wanted the curiosity `EXAMPLE_ENTRY` to have a color of blue: +Colors for each curiosity is given in a list **within the star system config**, so if I wanted the curiosity `EXAMPLE_ENTRY` to have a color of blue: ```json { - "ShipLog": { - "xmlFile": "planets/example.xml", "curiosities": [ - { - "id": "EXAMPLE_ENTRY", - "color": { - "r": 0, - "g": 0, - "b": 100, - "a": 255 - }, - "highlightColor": { - "r": 0, - "g": 1, - "b": 255, - "a": 255 + { + "id": "EXAMPLE_ENTRY", + "color": { + "r": 0, + "g": 0, + "b": 100, + "a": 255 + }, + "highlightColor": { + "r": 0, + "g": 1, + "b": 255, + "a": 255 + } } - } ] - } } ``` -![curiosityColorChange]({{ "images/ship_log/change_color.webp"|static }}) -*The curiosity's color is changed to blue* +![curiosityColorChange](@/assets/docs-images/ship_log/change_color.webp) +_The curiosity's color is changed to blue_ -# Map Mode Options +## Map Mode Options -## Layout +### Layout Layout in map mode can be handled in two different ways, either manual or automatic, if you try to mix them you'll get an error. Also, adding planets to the vanilla solar system requires you to use manual layout. -### Automatic Layout +#### Automatic Layout In automatic layout, each planet that orbits the center of the solar system is put in a row, then, each planet orbiting -those planets are put in a column, then, each planet orbiting *those* planets are put in a row for as many planets there +those planets are put in a column, then, each planet orbiting _those_ planets are put in a row for as many planets there are. The order of each planet is determined by their semi-major axis, if two planets have the same semi-major axis then they're sorted by order loaded in. -![autoMapMode]({{ "images/ship_log/auto_map_mode.webp"|static }}) -*An example system laid out with auto mode* +![autoMapMode](@/assets/docs-images/ship_log/auto_map_mode.webp) +_An example system laid out with auto mode_ -#### Offset +##### Offset The `offset` option lets you adjust a planet's offset from the last planet. -```json +```json {5} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "mapMode": { - "offset": -5.0 + "ShipLog": { + "xmlFile": "planets/example.xml", + "mapMode": { + "offset": -5.0 + } } - } } ``` For example, this offsets example planet in map mode by -5 units. -### Manual Layout +#### Manual Layout The manual layout is a lot more involved than automatic but offers much greater freedom. Manual layout **requires** you to fill out both `manualPosition` and `manualNavigationPosition` -#### Manual Position +##### Manual Position Setting the `manualPosition` option in the `mapMode` object sets its position (if manual position isn't set, it assumes the planet is using automatic mode) -```json +```json {5-8} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "mapMode": { - "manualPosition": { - "x": 0, - "y": 500 - }, - "manualNavigationPosition": { - } + "ShipLog": { + "xmlFile": "planets/example.xml", + "mapMode": { + "manualPosition": { + "x": 0, + "y": 500 + }, + "manualNavigationPosition": {} + } } - } } ``` -#### Manual Navigation Position +##### Manual Navigation Position This setting tells Outer Wilds how to handle navigation for this object, the x and y values correlate to the row and column of this planet. For example, the sun station is at navigationPosition (0, 1) as it is in the first column on the second row (you can't select the sun, so it doesn't have a row or column). So, by making a navigation position of: -```json +```json {9-12} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "mapMode": { - "manualPosition": { - "x": 0, - "y": 500 - }, - "manualNavigationPosition": { - "x": 1, - "y": 1 - } + "ShipLog": { + "xmlFile": "planets/example.xml", + "mapMode": { + "manualPosition": { + "x": 0, + "y": 500 + }, + "manualNavigationPosition": { + "x": 1, + "y": 1 + } + } } - } } ``` We say this planet is to the right of the sun station (putting in a position that is already occupied will override what is in that position). -![navigationIndices]({{ "images/ship_log/map_indices.webp"|static }}) +![navigationIndices](@/assets/docs-images/ship_log/map_indices.webp) -#### Overriding Vanilla Planets +##### Overriding Vanilla Planets You can also move vanilla planets by creating configs with their names and changing their manualPosition and manualNavigationPosition -### Settings for both layouts +#### Settings for both layouts These settings can be used for both type of layouts -#### Sprites +##### Sprites -##### Reveal Sprite +###### Reveal Sprite A path to the sprite to show for when the planet is revealed -##### Outline Sprite +###### Outline Sprite A path to an outline to show for when the planet is undiscovered -#### Invisible When Hidden +##### Invisible When Hidden Settings `invisibleWhenHidden` to true makes the planet entirely invisible when not discovered instead of showing an outline. -#### Scale +##### Scale How much to scale this planet in the map mode screen (you may have to change offset to compensate) -```json +```json {5} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "mapMode": { - "scale": 0.5 + "ShipLog": { + "xmlFile": "planets/example.xml", + "mapMode": { + "scale": 0.5 + } } - } } ``` Shrinks the planet by one half -#### Remove +##### Remove Don't include this planet in map mode at all, simply ignore it -#### Details +##### Details Details are images that go on top of a planet in map mode, and changes states with the planet (like the sand funnel between Ash Twin and Ember Twin) -```json +```json {5-20} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "mapMode": { - "details": [ - { - "revealedSprite": "planets/assets/image.png", - "outlineSprite": "planets/assets/outline.png", - "invisibleWhenHidden": true, - "rotation": 45, - "scale": { - "x": 0.2, - "y": 0.2 - }, - "position": { - "x": 20, - "y": 10 - } + "ShipLog": { + "xmlFile": "planets/example.xml", + "mapMode": { + "details": [ + { + "revealedSprite": "planets/assets/image.png", + "outlineSprite": "planets/assets/outline.png", + "invisibleWhenHidden": true, + "rotation": 45, + "scale": { + "x": 0.2, + "y": 0.2 + }, + "position": { + "x": 20, + "y": 10 + } + } + ] } - ] } - } } ``` As you can see, they have similar properties to planets, with the addition of rotation -# Revealing Facts +## Revealing Facts Of course, having a custom ship log is neat and all, but what use is it if the player can't unlock it? -## Initial Reveal +### Initial Reveal You can set facts to reveal as soon as the player enters the system by adding the `initialReveal` property -```json +```json {4} { - "ShipLog": { - "xmlFile": "planets/example.xml", - "initialReveal": [ - "EXAMPLE_RUMOR_FACT" - ] - } + "ShipLog": { + "xmlFile": "planets/example.xml", + "initialReveal": ["EXAMPLE_RUMOR_FACT"] + } } ``` -## Signal Discovery +### Signal Discovery You can set a fact to reveal as soon as a signal is identified by editing the signal's `Reveals` attribute ```json { - "Signal": { - "Signals": [ - { - "Frequency": "Quantum", - "Name": "Quantum Planet", - "AudioClip": "OW_QuantumSignal", - "SourceRadius": 1000, - "Reveals": "EXAMPLE_EXPLORE_FACT" - } - ] - } + "Signal": { + "Signals": [ + { + "Frequency": "Quantum", + "Name": "Quantum Planet", + "AudioClip": "OW_QuantumSignal", + "SourceRadius": 1000, + "Reveals": "EXAMPLE_EXPLORE_FACT" + } + ] + } } ``` -## Dialogue +### Dialogue You can set a fact to reveal in dialogue with the `` tag -```xml +```xml {7-9} 1 @@ -469,74 +456,71 @@ You can set a fact to reveal in dialogue with the `` tag ``` -## Reveal Volumes +### Reveal Volumes Reveal volumes are triggers/colliders in the world that can unlock facts from a variety of actions. Reveal volumes are specified in the `Props` module, its key is `reveal`. -### Position +#### Position The position of the reveal volume, relative to this planet's center -### Radius +#### Radius How big the collider is (use the collider visualizer mod for help) -### Reveals +#### Reveals A list of facts this volume reveals -### Reveal On +#### Reveal On Can be any of the following: -#### Enter +##### Enter When the player or probe enters the trigger, reveal the facts -#### Observe +##### Observe When the player observes the trigger, reveal the facts -#### Snapshot +##### Snapshot When the player takes a picture of the trigger, reveal the facts -### Max Distance +#### Max Distance Can only be used if `revealOn` is set to Observe or Snapshot, the max distance away the player can be and still be able to trigger the reveal -### Max Angle +#### Max Angle Can only be used if `revealOn` is set to Observe, the max angle the player can be looking away from the trigger to still trigger the reveal -### Example +#### Example ```json { - "Props": { - "reveal": [ - { - "position": { - "x": -55.65454, - "y": 83.1335, - "z": 2.7004 - }, - "revealOn": "snapshot", - "reveals": [ - "EXAMPLE_EXPLORE_FACT", - "EXAMPLE_EXPLORE_FACT_2" - ], - "radius": 5.0 - } - ] - } + "Props": { + "reveal": [ + { + "position": { + "x": -55.65454, + "y": 83.1335, + "z": 2.7004 + }, + "revealOn": "snapshot", + "reveals": ["EXAMPLE_EXPLORE_FACT", "EXAMPLE_EXPLORE_FACT_2"], + "radius": 5.0 + } + ] + } } ``` -# Setting Entry Locations +## Setting Entry Locations Entry locations are the "Mark On HUD" option you see when in map mode, this allows the player to go back to where they were in the event of the big funny. @@ -544,20 +528,20 @@ Adding an entry location is similar to adding a Reveal Volume: ```json { - "Props": { - "entryLocation": [ - { - "id": "EXAMPLE_ENTRY", - "position": { - "x": -55.65454, - "y": 83.1335, - "z": 2.7004 - }, - "cloaked": false - } - ] - } + "Props": { + "entryLocation": [ + { + "id": "EXAMPLE_ENTRY", + "position": { + "x": -55.65454, + "y": 83.1335, + "z": 2.7004 + }, + "cloaked": false + } + ] + } } ``` -![entryLocationExample]({{ "images/ship_log/entry_position.webp"|static }}) +![entryLocationExample](@/assets/docs-images/ship_log/entry_position.webp) diff --git a/docs/src/content/docs/guides/star-systems.md b/docs/src/content/docs/guides/star-systems.md new file mode 100644 index 00000000..69782ff9 --- /dev/null +++ b/docs/src/content/docs/guides/star-systems.md @@ -0,0 +1,48 @@ +--- +title: Star Systems +description: A guide to creating a custom star system in New Horizons +--- + +Welcome! This page outlines how to edit a custom star system. + +## Getting Started + +Star Systems are placed in a folder called systems within your mod folder. + +The name of your star system config must be the same as the unique id used in the `starSystem` field of your planet configs. So if you used `xen.RealSolarSystem` as the `starSystem` in your planet, the star system's JSON file would have to be named `xen.RealSolarSystem.json`. + +A star system config file will look something like this: + +```json title="my_star_system.json" +{ + "$schema": "https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/star_system_schema.json", + "travelAudio": "assets/Travel.mp3", + "Vessel": { + "coords": { + "x": [4, 0, 3, 1], + "y": [0, 5, 4], + "z": [5, 4, 0, 3, 1] + }, + "vesselPosition": { + "x": 0, + "y": 0, + "z": 8000 + } + } +} +``` + +To see all the different things you can put into a config file check out the [Star System Schema](/schemas/star-system-schema). + +## Vessel Coordinates + +You can warp to custom star systems via the Nomai vessel. Each coordinate has to be 2-6 points long. +These are the points for each coordinate node. When making your unique coordinate you should only use each point once. + +![nomaiCoordinateIndexes](@/assets/docs-images/star_systems/nomai_coordinate_indexes.webp) + +### Hearthian Solar System Vessel Coordinates + +You can use these coordinates to warp back to the hearthian solar system. + +![hearthianSolarSystemCoordinates](@/assets/docs-images/star_systems/hearthian_solar_system_coordinates.webp) diff --git a/docs/src/content/docs/guides/translation.md b/docs/src/content/docs/guides/translation.md new file mode 100644 index 00000000..56a3dacb --- /dev/null +++ b/docs/src/content/docs/guides/translation.md @@ -0,0 +1,100 @@ +--- +title: Translations +description: A guide to creating translations in New Horizons +--- + +There are 12 supported languages in Outer Wilds: english, spanish_la, german, french, italian, polish, portuguese_br, japanese, russian, chinese_simple, korean, and turkish. + +All translations must go in a folder in the root directory called "translations". + +In this folder you can put json files with the name of the language you want to translate for. Inside this file just follow the translation schema. + +Here's an example, for `russian.json`: + +```json title="russian.json" +{ + "$schema": "https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/translation_schema.json", + "DialogueDictionary": { + "Fred": "Фред", + "You looking at something?": "Ты что-то искал?", + "Aren't you guys all supposed to be dead?": "А разве номаи не вымерли?", + "OH MY GOD A LIVING NOMAI AHHH WHAT HOW?!": "ААААА, ЖИВАЯ НОМАИ?!" + }, + "ShipLogDictionary": { + "Unexpected guests": "Незванные гости", + "Visitors": "Гости", + "When I went to sleep by the campfire only Slate was here, who are these characters?": "Когда я ложился спать у костра здесь был только Сланец. Кто все остальные?", + "I met a talking jellyfish. His name is Geswaldo!": "Я встретил говорящую медузу. Его зовут Гесвальдо!" + } +} +``` + +## CLI Tool + +Are you tired of manually translating JSON? Do you want an automatic translator? Well then the [nh-translation-helper](https://www.npmjs.com/package/nh-translation-helper) may be for you! + +This tool has the following features: + +- Extract text from XML files and create english.json as the translation source. +- Translate english.json to create a json file for another language. + +This section outlines how to install and use the nh-translation-helper. + +### Installation + +To get started, head over to the [repo for the tool](https://github.com/96-38/nh-translation-helper) and prepare the requirements: + +- Install [Node.js](https://nodejs.org/) >= 12.0.0 + - Install the LTS version. +- Get [DeepL API](https://www.deepl.com/docs-api) Key (Free or Pro) + - Sign up [here](https://www.deepl.com/pro#developer) + +When you are ready, execute the following command in a terminal or command prompt: + +```bash +npm i -g nh-translation-helper +``` + +Now your installation is complete! + +You can use the tool by executing the following command in a terminal or command prompt: + +```bash +nh-translation-helper +``` + +### Generating a english.json from XML + +Select `Generate english.json from XML files` and enter the path of your project folder. + +You are done! a english.json has been generated in "_your_project_root_/translations/". + +### Translating english.json to another language + +Select `Translate JSON (DeepL API key required)` and enter the path of your project folder. ( Note: **Not** the path to the "translations" folder. ) + +Select the source and target languages. + +You are done! a translated json file has been generated in "_your_project_root_/translations/". + +Please enter the DeepL API key for the first time only. The API key will be saved on your PC. + +### Note + +- Not supported extracting UIDictionary and AchievementTranslations + + - It is difficult to parse these automatically, and the number of words is small that it would be better to add them by MOD developers manually for better results. + - Translating UIDictionary and AchievementTranslations is supported. + +- Not supported translation into Korean + + - Translation is provided by the DeepL API, so it is not possible to translate into languages that are not supported by DeepL. + +- The generated translations are "**not**" perfect + + - It is a machine translation though DeepL. The translations on DeepL are known to be too casual or to abbreviate some sentences. + - It will need to be manually corrected to make it a good translation. However, this tool allows you to prototype and is more efficient than starting from scratch. Also, the CDATA tag has been removed from the translated text and must be added manually. + +- Parsing errors may occur when trying to translate manually created JSON files + - In many cases, this is due to a specific comment in the JSON. Please remove the comments and try again. + - Most comments are processed normally, but errors may occur if the comment contains special symbols or if the comment is located at the end of a JSON object. diff --git a/docs/src/content/docs/guides/updating-planets.md b/docs/src/content/docs/guides/updating-planets.md new file mode 100644 index 00000000..ad9784d4 --- /dev/null +++ b/docs/src/content/docs/guides/updating-planets.md @@ -0,0 +1,56 @@ +--- +title: Update Existing Planets +description: A guide for updating base-game planets in New Horizons +--- + +Similar to above, make a config where "Name" is the name of the planet. The name should be able to just match their in-game english names, however if you encounter any issues with that here are the in-code names for planets that are guaranteed to work: + +- `SUN` +- `CAVE_TWIN` (Ember Twin) +- `TOWER_TWIN` (Ash Twin) +- `TIMBER_HEARTH` +- `BRITTLE_HOLLOW` +- `GIANTS_DEEP` +- `DARK_BRAMBLE` +- `COMET` (Interloper) +- `WHITE_HOLE` +- `WHITE_HOLE_TARGET` (The Whitehole Station) +- `QUANTUM_MOON` +- `ORBITAL_PROBE_CANNON` +- `TIMBER_MOON` (Attlerock) +- `VOLCANIC_MOON` (Hollow's Lantern) +- `DREAMWORLD` +- `MapSatellite` +- `RINGWORLD` (The Stranger) + +Some features will not work if you try to add them to a base planet config. These include: + +- FocalPoints (just makes no sense really, a focal point is meant to be a intangible point between two binary bodies). +- Gravity (including the strength, fall-off, and the size of the gravitational sphere of influence) +- Reference frames (the volume used for targetting a planet with your ships navigation systems) + +You can also delete parts of an existing planet. Here's part of an example config which would delete the rising sand from Ember Twin: + +```json title="EmberTwin.json" +{ + "name": "Ember Twin", + "removeChildren": ["SandSphere_Rising"] +} +``` + +In `removeChildren` you list the relative paths for the children of the planet's gameObject that you want to delete. Relative path meaning it does not include the root planet game object (in this case it would be `EmberTwin_Body`). + +## Destroy Existing Planets + +You do this (but with the appropriate name) as its own config. + +```json title="EmberTwin.json" +{ + "name": "Ember Twin", + "destroy": true +} +``` + +Note that destroying a planet will destroy anything orbiting it. For instance, destroying Giants Deep will automatically destroy the Orbital Probe Cannon. If you destroy the sun, it will destroy the entire solar system. This is not recommended, since if you want to start a new solar system from scratch you should use the `starSystem` field to create your own system. + +Remember that if you destroy Timber Hearth you must put a `Spawn` module on another planet, since you just destroyed the default spawn location. diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx new file mode 100644 index 00000000..d13884f3 --- /dev/null +++ b/docs/src/content/docs/index.mdx @@ -0,0 +1,52 @@ +--- +title: New Horizons +description: Create custom planets for Outer Wilds with New Horizons +template: splash +hero: + tagline: Create custom planets for Outer Wilds with New Horizons + image: + file: /src/assets/splash_hero_image.webp + alt: The New Horizons Logo + actions: + - text: Get Started + link: /start-here/getting-started + icon: right-arrow + variant: primary + - text: Schema Reference + link: /schemas/body-schema +--- + +import { Card, CardGrid } from "@astrojs/starlight/components"; + +This is the official site for [New Horizons](https://github.com/xen-42/outer-wilds-new-horizons), +a framework for creating custom planets in the game [Outer Wilds](https://www.mobiusdigitalgames.com/outer-wilds.html) +by Mobius Digital. + +## Features + + + + Use declarative JSON to create custom planets without having to write a line of code. + + + Create solar systems seperate from the base game's with its own planets, vessel coordinates, + and ship log. + + + Interface with various life cycle events and functions during star system creation with New + Horizon's API. + + + Use the `extras` key in JSON files to allow extendable functionality with other mods. + + + +## Disclaimer + +This work is unofficial fan content created under permission from the [Mobius Digital Fan Content Policy](https://www.mobiusdigitalgames.com/fan-content-policy.html). It includes materials which are the property of Mobius Digital, and it is neither approved nor endorsed by Mobius Digital. + +We are not responsible for any mods created using the New Horizons modding framework and assume no responsibility in the event an addon violates the terms. + +## License + +The license for this project is available [on the GitHub repository](https://github.com/xen-42/outer-wilds-new-horizons/blob/main/LICENSE). diff --git a/docs/content/pages/tutorials/api.md b/docs/src/content/docs/reference/api.md similarity index 82% rename from docs/content/pages/tutorials/api.md rename to docs/src/content/docs/reference/api.md index ee84cab3..9accd91c 100644 --- a/docs/content/pages/tutorials/api.md +++ b/docs/src/content/docs/reference/api.md @@ -1,11 +1,13 @@ --- -Title: API -Sort_Priority: 20 +title: API Reference +description: API reference for New Horizons --- -## How to use the API +## API Interface -First create the following interface in your mod: +Put this in a C# file somewhere in your mod: + + ```cs public interface INewHorizons @@ -23,7 +25,7 @@ public interface INewHorizons void LoadConfigs(IModBehaviour mod); /// - /// Retrieve the root GameObject of a custom planet made by creating configs. + /// Retrieve the root GameObject of a custom planet made by creating configs. /// Will only work if the planet has been created (see GetStarSystemLoadedEvent) /// GameObject GetPlanet(string name); @@ -91,7 +93,7 @@ public interface INewHorizons /// Allows you to spawn a copy of a prop by specifying its path. /// This is the same as using Props->details in a config, but also returns the spawned gameObject to you. /// - GameObject SpawnObject(GameObject planet, Sector sector, string propToCopyPath, Vector3 position, Vector3 eulerAngles, + GameObject SpawnObject(GameObject planet, Sector sector, string propToCopyPath, Vector3 position, Vector3 eulerAngles, float scale, bool alignWithNormal); /// @@ -114,22 +116,18 @@ public interface INewHorizons } ``` +## Usage + In your main `ModBehaviour` class you can get the NewHorizons API like so: ```cs -public class MyMod : ModBehaviour +public class MyMod : ModBehaviour { - void Start() + void Start() { INewHorizons NewHorizonsAPI = ModHelper.Interaction.TryGetModApi("xen.NewHorizons"); } } ``` -You can then use the APIs `LoadConfigs()` method to load from a "planets" folder, or use the `GetPlanet()` method to get planets and do whatever with them. Just make sure you create planets in the `Start()` method or at least before the SolarSystem scene loads, or they will not be created. - -The `GetChangeStarSystemEvent` and `GetStarSystemLoadedEvent` events let you listen in for when the player starts changing to a new system (called when entering a black hole or using the warp drive) and when the system is fully loaded in, respectively. - -You can also use the `GetInstalledAddons` method to get a list of addons that are installed and enabled. - -You can also use `SpawnObject` to directly copy a base-game GameObject to the specified position and rotation. +See the doc comments on each method to see what they do. diff --git a/docs/src/content/docs/reference/audio-enum.md b/docs/src/content/docs/reference/audio-enum.md new file mode 100644 index 00000000..6cbd7919 --- /dev/null +++ b/docs/src/content/docs/reference/audio-enum.md @@ -0,0 +1,1932 @@ +--- +title: AudioClip Values +description: Numbers for audio values for slide reels +--- + +These values can be used to set the sound for slide reels, signals, audio volumes, cloak volumes, and star system travel music. Normally this will be set with a parameter called "audio". + +## AudioType + +Ignore the numbers, just take the name. + +| **Name** | **Value** | +| :--------------------------------------------: | :-------: | +| None | 0 | +| Menu_RebindKey | 1 | +| Menu_ResetDefaults | 2 | +| Menu_UpDown | 3 | +| Menu_LeftRight | 4 | +| Menu_ChangeTab | 5 | +| Menu_Pause | 6 | +| Menu_Unpause | 7 | +| Menu_SliderIncrement | 8 | +| ToolScopeEquip | 100 | +| ToolScopeUnequip | 101 | +| ToolScopeSwitchFreq | 104 | +| ToolScopeStatic | 105 | +| ToolScopeHideAndSeekSignal | 106 | +| ToolScopeZoomAdjust | 107 | +| ToolScopeIdentifySignal | 108 | +| ToolItemScrollPickUp | 200 | +| ToolItemScrollDrop | 201 | +| ToolItemScrollInsert | 202 | +| ToolItemScrollRemove | 203 | +| ToolItemWarpCorePickUp | 204 | +| ToolItemWarpCoreDrop | 205 | +| ToolItemWarpCoreInsert | 206 | +| ToolItemWarpCoreRemove | 207 | +| ToolItemSharedStonePickUp | 208 | +| ToolItemSharedStoneDrop | 209 | +| ToolItemSharedStoneInsert | 210 | +| ToolItemSharedStoneRemove | 211 | +| ToolRepairing_LP | 300 | +| ToolRepairComplete | 301 | +| ToolTranslatorEquip | 400 | +| ToolTranslatorUnequip | 401 | +| ToolTranslateText_LP | 402 | +| ToolFlashlightOn | 500 | +| ToolFlashlightOff | 501 | +| ToolFlashlightFlicker | 502 | +| ToolProbeEquip | 600 | +| ToolProbeUnequip | 601 | +| ToolProbeLaunch | 602 | +| ToolProbeLaunchUnderwater | 603 | +| ToolProbeTakePhoto | 604 | +| ToolProbeTakeReversePhoto | 605 | +| ToolProbeRetrieve | 606 | +| ToolProbeFlight_LP | 607 | +| ToolProbeAttach | 608 | +| ToolProbeChangeMode | 609 | +| ToolMarshmallowEquip | 700 | +| ToolMarshmallowReplace | 701 | +| ToolMarshmallowIgnite | 702 | +| ToolMarshmallowBlowOut | 703 | +| ToolMarshmallowEat | 704 | +| ToolMarshmallowEatBurnt | 705 | +| ToolMarshmallowToss | 706 | +| PlayerSuitWearSuit | 800 | +| PlayerSuitRemoveSuit | 801 | +| PlayerSuitWearHelmet | 802 | +| PlayerSuitRemoveHelmet | 803 | +| PlayerSuitOxygenRefill | 804 | +| PlayerSuitOxygenLeak_In | 805 | +| PlayerSuitOxygenLeak_LP | 806 | +| PlayerSuitOxygenLeak_Out | 807 | +| PlayerSuitLockOn | 808 | +| PlayerSuitLockOff | 809 | +| PlayerSuitWarning | 810 | +| PlayerSuitCriticalWarning | 811 | +| PlayerSuitJetpackThrustTranslational_LP | 812 | +| PlayerSuitJetpackThrustRotational | 813 | +| PlayerSuitJetpackBoost | 814 | +| PlayerSuitJetpackThrustRotationalUnderwater_LP | 816 | +| PlayerSuitJetpackThrustUnderwater_LP | 817 | +| PlayerSuitRainOnHelmet | 818 | +| PlayerSuitNotificationTextScroll_In | 820 | +| PlayerSuitNotificationTextScroll_LP | 821 | +| PlayerSuitHelmetCrack | 822 | +| PlayerSuitOxygenRefill_Short | 823 | +| PlayerSuitPatchPuncture | 824 | +| PlayerSuitJetpackOxygenPropellant_LP | 825 | +| PlayerBreathing_LP | 850 | +| PlayerBreathing_LowOxygen_LP | 851 | +| PlayerGasp_Light | 852 | +| PlayerGasp_Medium | 853 | +| PlayerGasp_Heavy | 854 | +| Asphyxiate_Start_Suit | 855 | +| Asphyxiate_Start_NoSuit | 856 | +| Asphyxiate_End_Suit | 857 | +| Asphyxiate_End_NoSuit | 858 | +| Drowning_Start | 859 | +| Drowing_End | 860 | +| PlayerGasp_StopSuffocating | 861 | +| PlayerGasp_StopSuffocating_Suit | 862 | +| EnterVolumeDamageHeat_LP | 900 | +| EnterVolumeDamageGhostfire_LP | 901 | +| EnterVolumeDamageLava_LP | 902 | +| EnterVolumeDamageFire_LP | 903 | +| HazardFirstContactDamage | 904 | +| ElectricShock | 905 | +| Splash_GhostMatter | 950 | +| Splash_Lava | 951 | +| Submerge_Player | 952 | +| Submerge_Ship | 953 | +| Splash_Water_Probe | 954 | +| Splash_Water_Player | 955 | +| Splash_Water_Ship | 956 | +| NonDiaMapActivation | 1000 | +| DialogueEnter | 1001 | +| DialogueAdvance | 1002 | +| DialogueExit | 1003 | +| NonDiaUIAffirmativeSFX | 1004 | +| NonDiaUINegativeSFX | 1005 | +| TapeRecorder_Start | 1006 | +| TapeRecorder_LP | 1007 | +| TapeRecorder_Stop | 1008 | +| PlayerTurbulence_LP | 1050 | +| ShipTurbulence_LP | 1051 | +| ShipRattle_LP | 1052 | +| ShipReentryBurn_LP | 1053 | +| PLACEHOLDER | 1100 | +| LandingGrass | 1102 | +| LandingDirt | 1103 | +| LandingStone | 1104 | +| LandingMetal | 1105 | +| LandingNomaiMetal | 1106 | +| LandingSand | 1107 | +| LandingIce | 1108 | +| LandingWater | 1109 | +| ImpactUnderwater | 1110 | +| ImpactLowSpeed | 1111 | +| ImpactMediumSpeed | 1112 | +| ImpactHighSpeed | 1113 | +| MovementFootstep | 1114 | +| MovementRunningStep | 1115 | +| MovementGrassFootstep | 1116 | +| MovementDirtFootstep | 1117 | +| MovementStoneFootstep | 1118 | +| MovementMetalFootstep | 1119 | +| MovementNomaiMetalFootstep | 1120 | +| MovementSandFootstep | 1121 | +| MovementIceFootstep | 1122 | +| MovementShallowWaterFootstep | 1123 | +| MovementJump | 1124 | +| MovementWoodCreakFootstep | 1134 | +| MovementWoodCreakLanding | 1135 | +| MovementWoodFootstep | 1136 | +| MovementWoodLanding | 1137 | +| MovementSnowFootstep | 1138 | +| MovementSnowLanding | 1139 | +| MovementIceLSiding | 1140 | +| MovementGlassFootsteps | 1141 | +| MovementGlassLanding | 1142 | +| MovementPassingBushes | 1143 | +| MovementLeavesFootsteps | 1144 | +| MovementLeavesLanding | 1145 | +| MovementGravelFootsteps | 1146 | +| MovementGravelLanding | 1147 | +| KnockOverCairn | 1150 | +| DefaultPropImpact | 1151 | +| NomaiShuttleImpact | 1152 | +| ModelShipImpact | 1153 | +| ShipCockpitScopeActivate | 1200 | +| ShipCockpitScopeDeactivate | 1201 | +| ShipCockpitScopeZoomIn | 1202 | +| ShipCockpitScopeZoomOut | 1203 | +| ShipCockpitScopeSwitchFreq | 1204 | +| ShipCockpitScopeScreenSlide_LP | 1205 | +| ShipCockpitScopeScreenKachunk | 1206 | +| ShipCockpitMasterAlarm_LP | 1207 | +| ShipCockpitAutopilotActivate | 1208 | +| ShipCockpitAutopilotDeactivate | 1209 | +| ShipCockpitBuckleUp | 1210 | +| ShipCockpitUnbuckle | 1211 | +| ShipCockpitConsoleReadout_In | 1212 | +| ShipCockpitConsoleReadout_LP | 1213 | +| ShipCockpitHeadlightsOn | 1214 | +| ShipCockpitHeadlightsOff | 1215 | +| ShipCockpitLandingCamActivate | 1216 | +| ShipCockpitLandingCamDeactivate | 1217 | +| ShipCockpitLandingCamStatic_LP | 1218 | +| ShipCockpitProbeCameraScreenRotation | 1219 | +| ShipCockpitProbeActivate | 1220 | +| ShipCockpitProbeDeactivate | 1221 | +| ShipCockpitProbeLaunch | 1222 | +| ShipCockpitProbeLaunchUnderwater | 1223 | +| ShipCockpitProbeTakePhoto | 1224 | +| ShipCockpitProbeRetrieve | 1225 | +| ShipCockpitLandingCamAmbient_LP | 1226 | +| ShipCockpitEject | 1227 | +| ShipCabinUseMedkit | 1300 | +| ShipCabinUseRefueller | 1301 | +| ShipCabinComputerActivate | 1302 | +| ShipCabinComputerAmbient_LP | 1303 | +| ShipHatchOpen | 1304 | +| ShipHatchClose | 1305 | +| ShipHullGroan | 1309 | +| ShipCabinAmbience | 1310 | +| ShipEatenGroan | 1311 | +| ShipLogBootUp | 1350 | +| ShipLogAmbience_LP | 1351 | +| ShipLogEnterDetectiveMode | 1355 | +| ShipLogEnterMapMode | 1356 | +| ShipLogNavigate_LP | 1357 | +| ShipLogSelectPlanet | 1360 | +| ShipLogDeselectPlanet | 1361 | +| ShipLogMoveBetweenPlanets | 1362 | +| ShipLogMoveBetweenEntries | 1363 | +| ShipLogRevealEntry | 1365 | +| ShipLogHighlightEntry | 1366 | +| ShipLogSelectEntry | 1367 | +| ShipLogDeselectEntry | 1368 | +| ShipLogTextReveal_LP | 1370 | +| ShipLogMarkLocation | 1390 | +| ShipLogUnmarkLocation | 1391 | +| ShipDamageExternalTankLeak_LP | 1400 | +| ShipDamageElectricSparking_LP | 1401 | +| ShipDamageCockpitGlassCrack | 1402 | +| ShipDamageShipExplosion | 1403 | +| ShipDamageSingleElectricSpark | 1404 | +| ShipDamageFuelLeak_LP | 1405 | +| ShipDamageOxygenLeak_LP | 1406 | +| ShipDamageElectricalFailure | 1407 | +| ShipImpact_NoDamage | 1420 | +| ShipImpact_LightDamage | 1421 | +| ShipImpact_MediumDamage | 1422 | +| ShipImpact_HeavyDamage | 1423 | +| Ship_LandingPad_Soft | 1424 | +| Ship_LandingPad_Hard | 1425 | +| ShipThrustIgnition | 1500 | +| ShipThrustRotational | 1501 | +| ShipThrustRotationalUnderwater | 1502 | +| ShipThrustTranslational_LP | 1503 | +| ShipThrustTranslationalUnderwater_LP | 1504 | +| ShipThrustAfterburn_LP | 1505 | +| NomaiHologram_LP | 1550 | +| NomaiHologramActivate | 1551 | +| NomaiHologramDeactivate | 1552 | +| NomaiRemoteCameraAmbient_LP | 1553 | +| NomaiRemoteCameraEntry | 1554 | +| NomaiRemoteCameraExit | 1555 | +| NomaiComputerAmbient | 1600 | +| NomaiComputerRingActivate | 1601 | +| NomaiComputerRingDeactivate | 1602 | +| NomaiOrbStartDrag | 1603 | +| NomaiOrbDragging_LP | 1604 | +| NomaiOrbRolling_LP | 1605 | +| NomaiOrbSlotActivated | 1606 | +| NomaiGravCrystalAmbient_LP | 1609 | +| NomaiGravCrystalFlickerAmbient_LP | 1610 | +| NomaiGravityCannonAmbient_LP | 1611 | +| NomaiGravityCannonActivate | 1612 | +| NomaiGravityCannonDeactivate | 1613 | +| NomaiTractorBeamActivate | 1614 | +| NomaiTractorBeamDeactivate | 1615 | +| NomaiTractorBeamAmbient_LP | 1616 | +| NomaiRecorderAmbient_LP | 1617 | +| NomaiEscapePodDistressSignal_LP | 1618 | +| NomaiTextReveal_LP | 1619 | +| NomaiDataStream_LP | 1620 | +| NomaiPowerOn | 1621 | +| NomaiPowerOff | 1622 | +| NomaiLightsOn | 1623 | +| NomaiLightsOff | 1624 | +| NomaiAirLockAirPourIn | 1625 | +| NomaiAirLockAirPourOut | 1626 | +| NomaiDoorAirLockOpen | 1627 | +| NomaiDoorStart | 1628 | +| NomaiDoorStop | 1629 | +| NomaiDoorSlide_LP | 1630 | +| NomaiDoorStartBig | 1631 | +| NomaiDoorStopBig | 1632 | +| NomaiDoorSlideBig_LP | 1633 | +| NomaiHeadStatueRotate_LP | 1634 | +| NomaiPedestalSlide_LP | 1635 | +| NomaiPedestalContact | 1636 | +| NomaiEscapePodHatch | 1645 | +| NomaiTimeLoopOpen | 1646 | +| NomaiTimeLoopClose | 1647 | +| NomaiVesselPowerUp | 1648 | +| NomaiPillarRaiseLower_LP | 1649 | +| NomaiPillarRotate | 1650 | +| NomaiAirlockSlide_LP | 1651 | +| NomaiAirlockWaterPourOut | 1652 | +| NomaiAirlockWaterPourIn | 1653 | +| HT_SurfaceAmbience_LP | 1700 | +| HT_CaveAmbientBig_LP | 1702 | +| HT_CaveAmbientSmall_LP | 1703 | +| HT_SandColumnEnd_LP | 1705 | +| HT_SandColumnStart_LP | 1706 | +| HT_SandfallSmallBottom_LP | 1707 | +| HT_SandRiver_LP | 1708 | +| HT_InsideSandfall_Suit_LP | 1709 | +| HT_InsideSandfall_Ship_LP | 1710 | +| TH_ModelShipCrash | 1800 | +| TH_SatelliteSnapshot | 1801 | +| TH_RetrieveModelShip | 1803 | +| TH_ZeroGTrainingAllRepaired | 1804 | +| TH_CanyonAmbienceDay_LP | 1807 | +| TH_CanyonAmbienceNight_LP | 1808 | +| TH_HiAltitudeAmbienceDay_LP | 1809 | +| TH_HiAltitudeAmbienceNight_LP | 1810 | +| TH_ZeroGCaveAmbient_LP | 1811 | +| TH_UnderwaterCurrent_LP | 1812 | +| TH_UnderwaterAmbience_LP | 1813 | +| TH_MuseumAmbience_LP | 1814 | +| TH_BridgeCreaking_LP | 1819 | +| TH_Campfire_LP | 1820 | +| TH_FlagFlapping_LP | 1821 | +| TH_GeyserEnd | 1822 | +| TH_Geyser_LP | 1823 | +| TH_GeyserStart | 1824 | +| TH_Insects_LP | 1825 | +| TH_LiftActivate | 1826 | +| TH_LiftArrives | 1827 | +| TH_Lift_LP | 1828 | +| TH_ProjectorActivate | 1829 | +| TH_ProjectorRun_LP | 1830 | +| TH_ProjectorStop | 1831 | +| TH_RiverWaterFlow_LP | 1832 | +| TH_Waterfall_LP | 1833 | +| TH_WaterWheel_LP | 1834 | +| TH_ModelRocketThrustRotational | 1835 | +| TH_ModelRocketThrustTranslational_LP | 1836 | +| TH_Campfire_Ignite | 1837 | +| TH_RockingChair | 1838 | +| TH_BanjoTuning | 1839 | +| TH_PickaxeImpact | 1840 | +| TH_WoodCarving | 1841 | +| TH_RadioSignal_LP | 1842 | +| BH_BreakawayFragment | 1900 | +| BH_VolcanicMoonSurface_LP | 1901 | +| BH_BreakawayPlatform | 1902 | +| BH_MeteorImpact | 1903 | +| BH_BlackHoleEmission | 1904 | +| BH_SurfaceAmbience_LP | 1905 | +| BH_SubsurfaceAmbience_LP | 1906 | +| WHS_StationActivation | 1907 | +| BH_ForgeMoving_LP | 1908 | +| BH_MeteorLaunch | 1909 | +| GD_OceanSurface_LP | 2000 | +| GD_UnderwaterAmbient_LP | 2002 | +| GD_CoreAmbient_LP | 2004 | +| GD_ElectricBarrier_LP | 2005 | +| GD_Tornado_LP | 2006 | +| GD_Lightning | 2007 | +| GD_RainAmbient_LP | 2008 | +| GD_IslandSplash | 2009 | +| GD_IslandFalling | 2010 | +| GD_IslandLiftedByTornado | 2011 | +| GD_WavesBeach_LP | 2012 | +| GD_WavesRock_LP | 2013 | +| GD_CaveAmbience_LP | 2014 | +| GD_UnderwaterCurrent_LP | 2015 | +| DBAnglerfishLurking_LP | 2100 | +| DBAnglerfishChasing_LP | 2101 | +| DBAnglerfishDetectDisturbance | 2102 | +| DBAnglerfishDetectTarget | 2103 | +| DBAnglerfishBite | 2104 | +| DBAnglerfishChomp | 2105 | +| DBAnglerfishOpeningMouth | 2106 | +| DB_Ambience_LP | 2107 | +| DB_VineImpact | 2108 | +| CometAmbience_LP | 2200 | +| CometIceMelting_LP | 2201 | +| SolanumStaffContact | 2210 | +| SolanumStomp | 2211 | +| SolanumCairnAssembly | 2212 | +| SolanumCairnSettle | 2213 | +| SolanumSymbolReveal | 2214 | +| SolanumEnterWriting | 2215 | +| SolanumExitWriting | 2216 | +| SolanumEnterIcon | 2217 | +| SolanumExitIcon | 2218 | +| SolanumEnterRaiseCairn | 2219 | +| SolanumExitRaiseCairn | 2220 | +| EyeAmbience_LP | 2250 | +| EyeLightning | 2251 | +| EyeVortex_LP | 2252 | +| VesselAmbience_LP | 2253 | +| EyeVortexEntry | 2254 | +| EyeVortexExit | 2255 | +| EyeGalaxyZoom | 2260 | +| EyeGalaxyBlowAway | 2261 | +| EyeBigGalaxyBurn | 2262 | +| EyeShuttleFlight | 2270 | +| EyeShuttleIntoLight | 2271 | +| EyeSmokeSpherePulse | 2280 | +| EyeSmokeSphereCollapse | 2281 | +| EyeCosmicInflation | 2282 | +| EyeBigBang | 2283 | +| EyeBigBangWall_LP | 2284 | +| EyeSmokeSphereEntry | 2285 | +| EyeSphereInflation | 2286 | +| TravelerEsker | 2300 | +| TravelerChert | 2301 | +| TravelerRiebeck | 2302 | +| TravelerGabbro | 2303 | +| TravelerFeldspar | 2304 | +| TravelerNomai | 2305 | +| TravelerEnd_All | 2306 | +| TravelerEnd_NoPiano | 2307 | +| SingularityCreate | 2400 | +| SingularityCollapse | 2401 | +| SingularityOnPlayerEnterExit | 2402 | +| SingularityOnObjectEnter | 2403 | +| SingularityOnObjectExit | 2404 | +| Singularity_BlackHole_LP | 2405 | +| Singularity_WhiteHole_LP | 2406 | +| VesselSingularityCreate | 2407 | +| VesselSingularityCollapse | 2408 | +| Sun_Ambience_LP | 2412 | +| Sun_Explosion | 2413 | +| Sun_SupernovaWall_LP | 2414 | +| Sun_Collapse | 2415 | +| QuantumAmbience_LP | 2424 | +| WhiteHoleAmbience_LP | 2425 | +| BlackHoleAmbience_LP | 2426 | +| TimelineEndEffect_Shadow | 2427 | +| TimelineEndEffect_Cracks | 2428 | +| TimelineEndEffect_Shatter | 2429 | +| FigBackerVideo | 2440 | +| CometPurr | 2441 | +| Death_Instant | 2450 | +| Death_Crushed | 2451 | +| Death_Energy | 2452 | +| Death_Digestion | 2453 | +| Death_TimeLoop | 2454 | +| Death_Self | 2455 | +| Death_BigBang | 2456 | +| Death_Lava | 2457 | +| Death_CrushedByElevator | 2458 | +| MemoryUplink_Start | 2460 | +| MemoryUplink_End | 2461 | +| MemoryUplink_LP | 2462 | +| MemoryUplink_Overlay_LP | 2463 | +| Flashback_End | 2465 | +| Flashback_Base_LP | 2466 | +| Flashback_Overlay_1_LP | 2467 | +| Flashback_Overlay_2_LP | 2468 | +| NomaiRuinsBaseTrack | 2500 | +| NomaiRuinsBaseScaryTrack | 2501 | +| NomaiRuinsOverlayTracks | 2502 | +| HT_City | 2503 | +| TH_Observatory | 2504 | +| TH_Village | 2505 | +| BH_Observatory | 2506 | +| GD_UnderwaterExploration | 2507 | +| QM_Ambient | 2508 | +| DB_Ambient | 2509 | +| TimeLoopDevice_Ambient | 2510 | +| EndOfTime | 2511 | +| EndOfTime_DBFinal | 2512 | +| EndOfTime_Final | 2513 | +| Travel_Theme | 2514 | +| SunStation | 2515 | +| SadNomaiTheme | 2516 | +| DB_VesselDiscovery | 2517 | +| EYE_ForestOfGalaxies | 2518 | +| EndOfTime_Final_LP | 2519 | +| EYE_QuantumFoamApproach | 2520 | +| EYE_EndOfGame | 2521 | +| MainMenuTheme | 2522 | +| FinalCredits | 2523 | +| PostCredits | 2524 | +| KazooTheme | 2525 | +| Raft_Impact_Light | 2550 | +| Raft_Impact_Medium | 2551 | +| Raft_Impact_Heavy | 2552 | +| Raft_Push | 2553 | +| Raft_Reel_Start | 2554 | +| Raft_Reel_Loop | 2555 | +| Raft_Reel_End | 2556 | +| Raft_Socket | 2557 | +| Raft_Release | 2558 | +| Raft_RunAground | 2559 | +| Raft_Move_Start | 2560 | +| Raft_Move_Loop | 2561 | +| Raft_Move_End | 2562 | +| Raft_Impact_Player | 2563 | +| Raft_DW_Turbo | 2564 | +| Door_SensorSliding_Loop | 2570 | +| Door_Loop | 2571 | +| Door_Loop_Creaking | 2572 | +| Door_OpenStart | 2573 | +| Door_OpenStop | 2574 | +| Door_CloseStart | 2575 | +| Door_CloseStop | 2576 | +| Door_Metal_OpenStart | 2577 | +| Door_Metal_OpenStop | 2578 | +| Door_Metal_CloseStart | 2579 | +| Door_Metal_CloseStop | 2580 | +| Door_Small_OpenStart | 2581 | +| Door_Small_OpenStop | 2582 | +| Door_Small_CloseStart | 2583 | +| Door_Small_CloseStop | 2584 | +| SecretPassage_Start | 2590 | +| SecretPassage_Loop | 2591 | +| SecretPassage_Stop | 2592 | +| Airlock_Open | 2593 | +| Airlock_Loop | 2594 | +| Airlock_Close | 2595 | +| Airlock_Pressurize | 2596 | +| Airlock_Depressurize | 2597 | +| AirRushingOut | 2598 | +| SlideReel_Pickup | 2600 | +| SlideReel_Drop | 2601 | +| SlideReel_Insert | 2602 | +| SlideReel_Remove | 2603 | +| Lantern_Pickup | 2604 | +| Lantern_Drop | 2605 | +| Lantern_Insert | 2606 | +| Lantern_Remove | 2607 | +| Lantern_ShortOut | 2608 | +| Artifact_Pickup | 2609 | +| Artifact_Drop | 2610 | +| Artifact_Light | 2611 | +| Artifact_Extinguish | 2612 | +| Artifact_Conceal | 2613 | +| Artifact_Unconceal | 2614 | +| Artifact_Focus | 2615 | +| Artifact_Unfocus | 2616 | +| Artifact_Crackling_Loop | 2617 | +| Artifact_Insert | 2618 | +| Artifact_Remove | 2619 | +| VisionTorch_ProjectionOn | 2620 | +| VisionTorch_ProjectionOff | 2621 | +| VisionTorch_EnterVision | 2622 | +| VisionTorch_ExitVision | 2623 | +| VisionTorch_NextSlide | 2624 | +| VisionTorch_Scanning_Loop | 2625 | +| VisionTorch_Crackling_Loop | 2626 | +| VisionTorch_Give | 2627 | +| VisionTorch_Take | 2628 | +| DamBreak_RW_Base | 2650 | +| DamBreak_DW_Base | 2651 | +| DamBreak_RW_Water | 2652 | +| DamCrack | 2653 | +| DamCrack_Loop | 2654 | +| WaterSpray_Small | 2660 | +| WaterSpray_Large | 2661 | +| Splash_Medium | 2662 | +| Splash_Large | 2663 | +| WoodDebris | 2670 | +| WoodImpact_Small | 2671 | +| WoodImpact_Large | 2672 | +| HouseCollapse_Zone3 | 2673 | +| GeneralDestruction | 2674 | +| HouseDestruction | 2675 | +| StiltDestruction | 2676 | +| Tower_RW_Tilt | 2680 | +| Tower_RW_Fall_1 | 2681 | +| Tower_RW_Fall_2 | 2682 | +| Tower_DW_Tilt | 2683 | +| Tower_DW_Fall_1 | 2684 | +| Tower_DW_Fall_2 | 2685 | +| Tower_RW_Splash | 2686 | +| SolarSail_RW_Start | 2690 | +| SolarSail_RW_End | 2691 | +| SolarSail_RW_Loop | 2692 | +| SolarSail_DW_Start | 2693 | +| SolarSail_DW_End | 2694 | +| SolarSail_DW_Loop | 2695 | +| StationFlicker_RW | 2696 | +| StationFlicker_DW | 2697 | +| StationShudder_RW | 2698 | +| StationShudder_DW | 2699 | +| River_DW_Base | 2700 | +| FloodWave_DW_Loop | 2701 | +| River_DW_Lake | 2703 | +| Candle_Light_Big | 2719 | +| Candle_Light_Small | 2720 | +| Candle_Extinguish | 2721 | +| DreamFire_Crackling_Loop | 2722 | +| DreamFire_Extinguish | 2723 | +| DreamFire_Explosion | 2724 | +| LodgeFire_Crackling_Loop | 2725 | +| ProjectorTotem_Pulse | 2729 | +| ProjectorTotem_Light | 2730 | +| ProjectorTotem_Extinguish | 2731 | +| ProjectorTotem_Blow | 2732 | +| GrappleTotem_Zoom | 2733 | +| GrappleTotem_RetroZoom | 2734 | +| Simulation_Enter | 2739 | +| Simulation_Exit | 2740 | +| IllusoryWall_Enter | 2741 | +| IllusoryWall_Exit | 2742 | +| LoadingZone_Enter | 2743 | +| LoadingZone_Exit | 2744 | +| LoadingZone_GlitchOut | 2745 | +| LoadingZone_Loop | 2746 | +| Glitch_Loop | 2747 | +| Sarcophagus_OpenFail | 2760 | +| Sarcophagus_Open | 2761 | +| Sarcophagus_SomethingIsComing | 2762 | +| Sarcophagus_TunnelAmbience | 2763 | +| Sarcophagus_LightsOnAmbience | 2764 | +| Ambience_DW_Base | 2775 | +| Ambience_DW_LightsOut | 2776 | +| Ambience_DW_Hotel | 2777 | +| Ambience_DW_Nature | 2778 | +| Ambience_DW_Forest | 2781 | +| Ambience_DW_Simulation | 2782 | +| Ambience_DW_Underground | 2784 | +| Ambience_DW_FireRoom | 2787 | +| PointSounds_DW_TreeCreak | 2790 | +| PointSounds_DW_Creature_1 | 2791 | +| PointSounds_DW_Creature_2 | 2792 | +| PointSounds_DW_Hotel_2 | 2795 | +| AlarmChime_RW | 2798 | +| AlarmChime_DW | 2799 | +| LightSensor_On | 2800 | +| LightSensor_Off | 2801 | +| LightSensor_Loop | 2802 | +| Projector_Prev | 2803 | +| Projector_Next | 2804 | +| Cloak_Entry | 2805 | +| Cloak_Exit | 2806 | +| GearRotate_Light | 2807 | +| GearRotate_Heavy | 2808 | +| GearRotate_Fail | 2809 | +| CodeTotem_Horizontal | 2810 | +| CodeTotem_Vertical | 2811 | +| CageElevator_Start | 2817 | +| CageElevator_Loop_Winch | 2818 | +| CageElevator_End | 2819 | +| CageElevator_Loop_Rattle | 2820 | +| Ambience_RW_Lab | 2873 | +| Ambience_RW_Tunnel | 2874 | +| Ambience_RW_FireRoom | 2875 | +| Ambience_RW_Base | 2876 | +| Ambience_RW_Cave | 2877 | +| Ambience_RW_Indoor | 2878 | +| River_RW_Base | 2879 | +| River_Underwater | 2880 | +| River_Reservoir | 2881 | +| River_Rapids | 2882 | +| River_Underwater_Rapids | 2883 | +| FloodWave_RW_Loop | 2884 | +| River_RW_Small | 2885 | +| River_RW_Stream | 2886 | +| PostCredit_RuinReveal | 2887 | +| PostCredit_LanternLight | 2889 | +| RaftTravel_River | 2890 | +| RaftTravel_Reservoir | 2891 | +| GhostSequence_ReducedFrights | 2895 | +| GhostSequence_Suspense | 2896 | +| GhostSequence_Dread | 2897 | +| GhostSequence_Fear | 2898 | +| GhostSequence_Fear_Slam | 2899 | +| EndOfTime_Dream | 2900 | +| StationDiscovery | 2901 | +| DreamFireRoom | 2902 | +| EyeTemple_Stinger | 2903 | +| EyeTemple_Basement | 2904 | +| SlideBurningRoom | 2905 | +| SubmergedStructure | 2906 | +| SecretLibrary | 2907 | +| DreamRuinsOverlayTracks | 2908 | +| DreamRuinsBaseTrack | 2909 | +| TravelerPrisoner | 2910 | +| TravelerEnd_All_Prisoner | 2911 | +| TravelerEnd_NoPiano_Prisoner | 2912 | +| Prisoner_Elevator | 2913 | +| Prisoner_Reveal | 2914 | +| Prisoner_Catharsis | 2915 | +| SecretPortrait | 2916 | +| SecretKorok | 2917 | +| PartyHouse_Traveler | 2920 | +| PartyHouse_Vocals | 2921 | +| PartyHouse_Drone | 2922 | +| PartyHouse_Bass | 2923 | +| Reel_Secret_Backdrop_A | 2924 | +| Reel_Secret_Backdrop_B | 2925 | +| Reel_Secret_Beat_Peephole_A | 2926 | +| Reel_Secret_Beat_Peephole_B | 2927 | +| Reel_Secret_Beat_Tower_A | 2928 | +| Reel_Secret_Beat_Tower_B | 2929 | +| Reel_Secret_Beat_Lantern | 2930 | +| Reel_Lab_Backdrop_Fail | 2933 | +| Reel_Lab_Backdrop_Success | 2934 | +| Reel_Lab_Backdrop_Testing | 2935 | +| Reel_Backdrop_Burnt | 2938 | +| Reel_1_Backdrop_A | 2940 | +| Reel_1_Beat_A | 2945 | +| Reel_1_Beat_B | 2946 | +| Reel_1_Beat_C | 2947 | +| Reel_2_Backdrop_A | 2950 | +| Reel_2_Backdrop_B | 2951 | +| Reel_2_Beat_A | 2955 | +| Reel_2_Beat_B | 2956 | +| Reel_2_Beat_C | 2957 | +| Reel_2_Beat_D | 2958 | +| Reel_3_Backdrop_A | 2960 | +| Reel_3_Backdrop_B | 2961 | +| Reel_3_Backdrop_C | 2962 | +| Reel_3_Beat_A | 2965 | +| Reel_3_Beat_B | 2966 | +| Reel_3_Beat_C | 2967 | +| Reel_3_Beat_D | 2968 | +| Reel_4_Backdrop_A | 2970 | +| Reel_4_Beat_A | 2975 | +| Reel_4_Beat_B | 2976 | +| Reel_4_Beat_C | 2977 | +| Reel_4_Beat_D | 2978 | +| Reel_5_Long | 2980 | +| Reel_5_Short | 2981 | +| Reel_Farewell | 2985 | +| Reel_Rule_Beat_DarkDiscovery | 2986 | +| Reel_Rule_Backdrop_Discovery | 2987 | +| Reel_Rule_Beat_Discovery | 2988 | +| Reel_Rule_Backdrop_Dream | 2989 | +| Reel_Rule_Backdrop_Normal | 2990 | +| Reel_Rule_Backdrop_Glitch | 2991 | +| Reel_LibraryPath_Backdrop | 2992 | +| Reel_Rule2a_Beat_A | 2993 | +| Reel_Seal_Backdrop | 2994 | +| Reel_Burning_Backdrop_A | 2995 | +| Reel_Burning_Backdrop_B | 2996 | +| Reel_Burning_Beat_A | 2997 | +| Reel_Burning_Beat_B | 2998 | +| Reel_Burning_Beat_C | 2999 | +| Ghost_DeathGroup | 3000 | +| Ghost_DeathSingle | 3001 | +| Ghost_Grab_Swish | 3002 | +| Ghost_Grab_Contact | 3003 | +| Ghost_BlowOut_Charge | 3004 | +| Ghost_BlowOut_Extinguish | 3005 | +| Ghost_NeckSnap | 3006 | +| Ghost_Identify_Curious | 3010 | +| Ghost_Identify_Irritated | 3011 | +| Ghost_Identify_Fail | 3012 | +| Ghost_Chase | 3013 | +| Ghost_Stalk | 3014 | +| Ghost_Hunt | 3015 | +| Ghost_HuntFail | 3016 | +| Ghost_Grab_Scream | 3017 | +| Ghost_Stalk_Fast | 3018 | +| Ghost_Grab_Shout | 3019 | +| Ghost_SomeoneIsInHereHowl | 3020 | +| Ghost_IntruderConfirmed | 3021 | +| Ghost_IntruderConfirmedResponse | 3022 | +| Ghost_CallForHelp | 3023 | +| Ghost_CallForHelpResponse | 3024 | +| Ghost_Laugh | 3025 | +| Ghost_Footstep_Wood | 3030 | +| Ghost_Footstep_Wood_Running | 3031 | +| Ghost_Footstep_Forest | 3032 | +| Ghost_Footstep_Forest_Running | 3033 | +| Ghost_Footstep_Gravel | 3034 | +| Ghost_Footstep_Wood_Stompy | 3035 | +| Prisoner_ReactToVision_Vocals | 3050 | +| Prisoner_RevealToStand_Vocals_1 | 3051 | +| Prisoner_RevealToStand_Vocals_2 | 3052 | +| Prisoner_PickUpArtifact | 3053 | +| Prisoner_PickUpTorch | 3054 | +| Prisoner_ClothFoley | 3055 | + +## AudioClip values + +This is a list of AudioClips that will also work, there's a lot of overlap with the AudioType list. Many old addons with signals use values from this list. + +- Hotel Oneshot - Heavy Thud 4 +- Tool_Put_Away_01 +- OW Quantum Lightning 091118 AP 07 +- OW_GD_ElectricBarrier_Idle_Loop +- Nomai_Stone_Door_End_V2_11 +- General Destruction 1 +- Dream Rule 02 backdrop loop 072321_2 AP +- amb_observatory +- Dream World Water Ambience - Creek 3 +- Pickup_Rock_01 +- gasp_traumatic4_lessmale +- Ship_Impact_Light_Damage_V3_06 +- BlackHole_02 +- OW_GD_WavesAgainstRock +- OW_TH_AmbienceInCanyons +- OW_PR_FootstepsBushRustle_03 +- OW_PR_ActivateProbeMode +- Ghost Walk Footstep Wood_v2 6 +- rockingchair4 +- Water Spray Impact 4 +- OW Secret Library 040821_2 AP +- Real World Dam Break Alex Composite 2 +- Ghost Run Footstep Wood_v2 4 +- UI_Enter_Dialog_V6-002_highpass_2 +- Spark_10 +- Mournful Prisoner 3 +- OW_PR_FootstepsLeaves_06 +- FootstepsWoodCreak_02 +- OW Dreamworld Ruins 072021 AP 02c +- OW_PR_HitWallUnderwater1 +- OW_TH_RiverWaterFlow_loop +- OW ReelBeat 01c 021021 AP +- FootstepsWoodCreak_07 +- Ignite_Marshmallow_03 +- Marshmallow_Replace_02 +- Ship_FuelLeak +- Raft Heavy Impact 5 +- elevatorloop +- Real World Alarm Bell Oneshot 3 +- BigBang_EndFlash +- OW_FinalEndTimes_DB_loop +- fogsphere_pulse4 +- Ringworld Ambience 3 +- Destruction Impact 4 +- Artifact Unconceal +- OW_NM_DoorStart_06 +- OW_PR_SignalscopeZoomOut +- Nomai_Stone_Door_End_Big_V2_03 +- Player Gravel Footstep 3 +- General Destruction 5 +- OW Dream Fire Room 121820_4 AP LP +- OW_PR_DeactivateProbeMode +- OW_PR_LandInWater4 +- OW_PR_FootstepsJumpNomai_04 +- OW_PR_FootstepsJumpMetal_03 +- WarpCore_Remove_V3_01 +- Probe_SnapShot_03 +- Ghost Idle Search 4 +- Solanum_Foley_IconExit +- Dream Fire Room Ambience Test 1 +- Lantern Extinguish 4 +- OW_PR_OxygenLeakingFromSuit_loop_louder +- Wood Door Open Stop +- OW_PR_FootstepsJumpGrass_01 +- OW_SP_ThrustAfterburn +- OW_PR_FootstepsGrass_01 +- Real World Alarm Bell Oneshot 4 +- OW_PR_FootstepsNomai_04 +- Hotel Oneshot - Heavy Thud 2 +- Light Sensor Fade In 4 +- AnglerFish_OpenMouth_v2_01 +- Footstep_Run4 +- Ghost Walk Footstep Forest 6 +- OW_PR_FootstepsGrass_06 +- OW_GD_AmbienceRain +- RotationalThruster04 +- OW New Raft Music 082321_4 AP theme +- Spark_01 +- OW Muted End Times 040821 AP +- Nomai_WhiteHoleStationActivation +- Tool_Take_Out_02 +- OW_PR_FootstepsJumpDirt_05 +- mallowpuff2 +- Dreamworld Tower Fall Part 2 +- Jump_Into_Fogsphere_04 +- FootstepsWoodCreak_05 +- OW_SP_MetalCreak_14 +- OW_NM_DoorStart_03 +- drowning_firsthalf2 +- Forest Oneshot - Tree Creak 4 +- shiplog_misc1 +- FootstepsWoodCreak_04 +- Real World Dam Crack +- OW_NM_DoorStart_09 +- OW_SP_LandingPadHard4 +- OW_PR_FootstepsSand_06 +- BH_Ambience_Surface +- Ghost Grunt 3 +- glass_crack_02 +- House Destruction 3 +- OW_QuantumMoon +- Orb_Roll_Energy_Loop_v2_01 +- OW Eye Of The Universe 082018_2 AP +- Footstep3 +- OW_NM_DoorStart_Big_01 +- OW Dreamworld Ruins Story Beats 071621 AP 1d +- Dream World Tidal Wave Loop +- Nomai_Stone_Door_End_Big_V2_15 +- OW_SP_ActivateComputer 1 +- OW_PR_FootstepsIce_07 +- Raft Light Impact V2 3 +- UI_Pause_v2_08 +- signalscope_static +- OW_SP_LandingCamActivated 1 +- Footstep4 +- OW_PR_FootstepsSand_03 +- Prisoner Pick Up Vision Torch +- OW_SP_MetalCreak_16 +- OW_SP_Touchdown_04 +- Platform_Break_V2_03 +- OW Nomai Time Loop Device 081818 AP +- RockPile_Fall_02 +- Ship_Impact_No_Damage_V3_02 +- Destruction Impact 7 +- Ghost Grab Player 2 +- Forest Oneshot - Tree Creak 5 +- OW_PR_FootstepsMetal_01 +- OW NM Flashback 082818_3 AP base +- Projector Totem Light 2 +- Slot_Linking_Stone_Loop_02 +- breathing_suit3 +- OW_PR_FootstepsWood_07 +- OW_SP_HeadlightsOff_v2 +- Nomai_Stone_Door_End_V2_06 +- Fix_Puncture_03 +- OW Dream Rule LP 032421 AP glitch +- Real World Tidal Wave Loop Louder +- OW Dreamworld Ruins 072021 AP 02loop +- gasp_normal11_lessmale +- OW ReelBeat 01a 021021 AP +- OW_TH_ModelRocketThrustRotational_01 +- OW_PR_FootstepsBushRustle_05 +- OW NomaiRuinsRegular 081918 AP motif3c v2 +- OW Final End Times 022519_2 AP LOOP1 +- OW_PR_FootstepsSand_01 +- Anglerfish_Awake4 +- OW_PR_FootstepsJumpIce_04 +- Fix_Puncture_01 +- Raft Light Impact V2 1 +- Warp_Loop_01_v2 +- Ghost Start Hunt Grunt 1 +- Destruction Debris 4 +- Solanum_IconAppear_V3 +- OW_SP_ActivateComputer_OneShot +- Destruction Impact 8 +- OW_SP_ShipGroan1_v2 +- OW ReelBackdrop 02a 021021 AP +- OW_NM_ComputerRing1 +- OW_PR_FootstepsJumpGlass_04 +- Forest Oneshot - Tree Creak 6 +- OW_GD_HeatLightning_01 +- Raft Heavy Impacts V2 3 +- Solanum_Foley_RockFormStart +- Raft Light Impact V2 5 +- Ghost Grunt 4 +- OW_PR_FootstepsJumpDirt_06 +- OW_PR_FootstepsJumpGrass_03 +- OW_TravelerTheme_whistling +- Raft Heavy Impact 2 +- Nature Oneshot - Distant Deep Creature 1 +- OW_SP_CloseHatch_v2 +- linkingstone_in +- OW_PR_FootstepsSnow_03 +- OW_NM_OrbDeSelect_Energy_02 +- Impact_Light_02 +- Nomai_Stone_Door_End_V2_10 +- Fix_Puncture_07 +- OW_NM_HoleEnterExit +- OW NM Nomai Ruins 081718 AP +- OW_PR_OxygenRefill +- GhostMatter_Splash_v4_05 +- glass_crack_01 +- Ignite_Marshmallow_02 +- Ship_Impact_Medium_Damage_V3_03 +- Forest Oneshot - Animal 4 +- OW_PR_FootstepsIce_02 +- OW_GD_RainOnHelmet +- Spaceship_RattleLoop +- BigBang_WhooshLeadToExplo +- OW_TH_Campfire_loop_01 +- bigbang_cosmicinflation_v2 +- Hotel Oneshot - Heavy Creak 4 +- OW_PR_FootstepsJumpGrass_02 +- Tronworld Ambience 1 +- AnglerFish_Target_v2_07 +- Eye_of_Universe_Ambience_v2_01 +- OW_PR_FootstepsJumpLeaves_04 +- OW_PR_FootstepsJumpSnow_03 +- OW_PR_FootstepsJumpGlass_01 +- OW Traveler Theme 091118 AP FINAL TIME NO PIANO EDIT +- OW ReelBeat 02f 082521 AP +- Metal Door Close Stop +- medkit +- OW_NM_BlackHole_Lp +- Ghost Blow Out Lantern +- OW_PR_MarshmallowEatBurnt_shorter +- Solanum_Foley_IconEnter +- OW_PR_SignalscopeSwitchFrequencies +- Prisoner Pick Up Artifact +- OW_PR_BanjoStrum_3b +- Water Spray Impact 5 +- UI_Advance_Dialog_V6-002_highpass +- Destruction Debris 8 +- OW_PR_FootstepsDirt_06 +- Vision Torch - Step In +- OW_NM_DoorStart_Big_04 +- OW_PR_FootstepsBushRustle_06 +- Hotel Oneshot - Creak 5 +- OW_PR_FootstepsJumpLeaves_01 +- OW_SP_ShipGroan4_v2 +- Jump_Into_Fogsphere_03 +- Dreamworld Forest Ambience 2 +- OW_PR_FootstepsJumpRock_02 +- CrushedByElevator +- Player Gravel Footstep 1 +- House Destruction 4 +- Ghost Begin Stalk Grunt 1 +- flashlightOff +- OW ReelBeat 04b_2 040921 AP +- OW_PR_FootstepsRock_02 +- AshTwinCore_Open_01 +- OW_SP_HeadlightsOn_v2 +- Tower Fall Part 2 +- OW_NM_DoorStart_Big_02 +- Meteor_Impact_01_b +- OW_SP_LandingCamStatic +- OW_PR_FootstepsWood_01 +- gasp_light5 +- OW_PR_FootstepsGrass_03 +- Spark_03 +- Loading Tunnel - Loop +- FootstepsJumpWoodCreak_02 +- OW_Main_Menu +- Lantern Put Down +- OW Secret Library Whispers LP 040821 AP REF MIX +- OW_DB_Ambience +- Vision Torch Light Rays - On +- Hotel Oneshot - Creak 1 +- Dreamworld Nature Ambience 4 +- OW_PR_ThrustRotationalUnderwater_04 +- OW_PR_FootstepsJumpGrass_06 +- Nomai_Stone_Door_End_Big_V2_09 +- Ship_Impact_No_Damage_V3_01 +- Raft Movement Stop 3 +- Destruction Impact 9 +- Recorder_Start_Button +- AnglerFish_Target_v2_14 +- Ghost Begin Chase Grunt 2 +- Hotel Oneshot - Creak 6 +- Fragment_Break +- Tronworld Exit 2 +- Ghost Walk Footstep Forest 2 +- Incinerate_v3_01 +- Light Sensor Fade Out 3 +- OW_TravelerTheme_flute +- OW_PR_FootstepsLeaves_02 +- OW_PR_FootstepsLeaves_01 +- Fix_Puncture_05 +- Ghost Walk Footstep Wood_v2 3 +- OW_PR_FootstepsJumpSand_01 +- Sarcophagus Strain 2 +- OW_PR_HitWallUnderwater4 +- OW_PR_FootstepsRock_03 +- Loading Tunnel - Unload +- OW_PR_FootstepsJumpNomai_03 +- OW_PR_FootstepsDirt_07 +- OW_PR_FootstepsSnow_04 +- Wood Door Close Stop +- OW_PR_FootstepsJumpIce_02 +- OW ReelBeat 04a 031521 AP +- Raft Light Impact V2 2 +- Meteor_Impact_02_b +- JellyFish_Shock_02 +- Metal Door Open Start +- OW_GD_UnderwaterCurrent +- OW_GD_HeatLightning_06 +- nomai_textbranchout_noenergy2 +- asphyxiation_nosuit_secondhalf_version3 +- Artifact Focus +- Ice_Cave_Amb_loop_v3_01 +- Forest Oneshot - Tree Creak 3 +- OW NomaiRuinsRegular 081918 AP motif4c +- Dreamworld Lights Out Ambience 4 +- Projector Next Slide 2 +- BeaconIdea4 +- Destruction Impact 1 +- OW_PR_FootstepsNomai_06 +- OW_NM_FlickeryGravityCrystalAmbience +- OW Demonic Vocal Sting 082321 AP +- OW Quantum Lightning 091118 AP 08 +- OW_NM_SadTheme_older +- Nature Oneshot - Distant Creature 2 - less reverb +- FootstepsJumpWoodCreak_03 +- OW_PR_FootstepsJumpSand_02 +- Player Gravel Footstep 8 +- OW_PR_FootstepsSnow_06 +- gasp_traumatic3_lessmale +- Real World Dam Break Water Oneshot +- Repair_Loop +- OW_TH_FlagFlapping_loop.\_01 +- Ship_Impact_Light_Damage_V3_02 +- Raft Socket +- Jump_Into_TinyGalaxy_v2_01 +- OW NomaiRuinsRegular 081918 AP motif7c +- gasp_normal13_lessmale +- Sandfall_Inside_Loop_01 +- Solanum_RocksForm +- Fix_Puncture_06 +- OW Dreamworld Ruins Story Beats 071621 AP 1h +- Sarcophagus Open 2 +- fogsphere_pulse2 +- Elevator Rattle Loop 3 +- IllusoryWall_Alex +- OW_GD_HeatLightning_04 +- Nomai_Stone_Door_End_Big_V2_14 +- OW_PR_FootstepsJumpMetal_01 +- Vine_Crash_V3_03_LowPassDelay +- OW_PR_BanjoStrum_2b +- OW_PR_FootstepsGlass_05 +- OW_PR_FootstepsLeaves_07 +- OW_NM_DoorStart_01 +- OW_PR_FootstepsGrass_05 +- OW_PR_FootstepsJumpIce_01 +- OW_PR_ThrustRotationalUnderwater_01 +- Anglerfish_Chase_Breathing +- OW_PR_FootstepsRock_04 +- Metal Door Close Start +- Gear Rotate 1 +- Airlock Loop +- Solanum_Foley_RockFormEnd +- mallowpuff3 +- OW_PR_FootstepsSand_05 +- OW_PR_FootstepsJumpRock_01 +- Artifact Unfocus +- OW Eye Of The Universe 082818_2 AP +- OW_PR_FootstepsJumpRock_03 +- galaxy_zoomout2 +- OW_GD_IslandFalling_v2_loop +- Projector Previous Slide 2 +- Ignite_CampFire_04 +- SpaceshipAlarm2_3Iterations +- Ghost Individual Death 3 +- OW_PR_FootstepsJumpNomai_01 +- OW_PR_FootstepsJumpSnow_01 +- Forest Oneshot - Animal 2 +- OW_PR_FootstepsJumpDirt_01 +- Dreamworld Tower Fall Part 1 +- Ship_Impact_Medium_Damage_V3_05 +- OW_NM_ComputerRing3 +- OW_PR_SuitOn +- Airlock Pressurize +- OW_PR_FootstepsBushRustle_01 +- OW_PR_FootstepsNomai_02 +- Ship_Impact_Medium_Damage_V3_04 +- OW_NM_VesselDiscovery +- PlayerSubmerge +- Player Gravel Footstep 5 +- OW_EndTimes +- HGT_SandColumn_Ship +- OW ReelBeat 02c 021021 AP +- Spark_09 +- OW_PR_FootstepsSand_02 +- Damage_Light_05 +- OW_NM_ComputerRingFall2 +- gasp_traumatic7_lessmale +- Ghost Investigation Grunt +- Dream World Alarm Bell Oneshot 2 +- rockingchair2 +- OW_PR_FootstepsJumpDirt_04 +- Projector Next Slide +- OW_PR_FootstepsSand_08 +- OW_NM_WHAmbience2_v2 +- drowning_secondhalf2 +- Ghost Walk Footstep Forest 1 +- Prisoner Cloth Foley 3 +- OW_PR_FootstepsGlass_03 +- Vision Torch Scanning - Loop +- Raft Medium Impact V2 2 +- Hotel Oneshot - Heavy Thud 3 +- Destruction Impact - Large 4 +- OW_PR_FootstepsJumpLeaves_03 +- OW_PR_FootstepsJumpSand_03 +- OW Dreamworld Ruins SILENCE 02 +- OW_PR_FootstepsWood_06 +- ModelRocket_LightImpact +- shiplog_scanningloop +- OW Ghost Ambiences v2 011221 AP low LP +- OW NomaiRuinsRegular 081918 AP motif2c +- glass_crack_03 +- Fix_Puncture_08 +- OW_PR_FootstepsSnow_01 +- OW_PR_FootstepsDirt_01 +- asphyxiation_nosuit_firsthalf1 +- OW_NM_DoorSlide_Big_LP_01 +- OW_SUN_SupernovaWall +- OW_NM_DoorAirLockAirPourOut_03 +- OW_PR_ThrustUnderwater +- Solar Sail Stop +- OW_TH_Waterwheel_loop +- Forest Oneshot - Tree Creak 1 +- OW ReelBackdrop 03a 050321 LOOP +- Platform_Break_V2_04 +- FireBall_01 +- OW ReelBackdrop 01a 022521 AP +- Dreamworld Lights Out Ambience 1 +- Nomai_Stone_Door_End_Big_V2_11 +- Spark_07 +- OW_SP_ThrustTranslationalUnderwater +- Dream World Water Ambience - Creek 1 +- Ghost Begin Stalk Grunt 2 +- Comet_Purr +- JellyFish_Shock_04 +- OW_PR_FootstepsWood_08 +- Raft Reeling Loop +- shiplog_switchmode_forward +- Station Light Flicker - Dreamworld +- Lantern Wake Up Light 3 +- flashlightOn +- Dreamworld Base Ambience 1 +- Ship_Impact_Heavy_Damage_V3_09 +- Crushed_To_Death_V2_01 +- ow_kazoo_theme +- JetPack_NotificationBeep +- Ghost Run Footstep Wood_v2 1 +- OW_PR_FootstepsJumpNomai_05 +- OW_NM_DataStream_v2 +- UI_Tab_v2_02 +- OW_PR_ProbeTakePicture +- OW_NM_GravityCannonAmbience +- OW NM Flashback 082818 AP loop +- OW_SP_LandingPadSoft4 +- OW_PR_FootstepsGlass_07 +- WarpCore_Insert_V3_01 +- OW_NM_TractorBeamLP +- ShipRepair_Finish +- Ghost Begin Chase Grunt 1 +- Destruction Impact 2 +- OW_PR_FootstepsLeaves_08 +- Recorder_Stop_Button +- OW_PR_FootstepsLeaves_04 +- OW_PR_Jump1 +- Jump_Into_TinyGalaxy_v2_04 +- OW_GD_Tornado_v2_04 +- OW_PR_FootstepsJumpDirt_02 +- OW_SP_ConsoleReadoutStart +- OW_NM_EscapePodHatch +- OW_PR_FootstepsJumpNomai_02 +- Light Sensor Fade In 1 +- Light Sensor Fade In 2 +- Hotel Oneshot - Creak 9 +- CampfireTune_All_Reverb +- Recording_Loop_03 +- PartyHouseWhistle_Confident +- mallowpuff4 +- OW_NM_WhiteHoleAmbienceL +- Station Shudder +- drowning_firsthalf1 +- UI_Exit_Dialog_V6-002_highpass +- Dream World Dam Break +- Dreamfire Extinguish 1 +- MediumSplash +- Vision Torch - First Slide Appears +- Footstep1 +- OW_TravelerTheme_drums +- Artifact Conceal +- HGT_Ambience_Cave_Small +- HGT_Ambience_Cave_Big +- OW_TH_Waterfall_loop_01 +- OW Discovery 083021_2 AP darker shorter +- Secret Passageway Open Loop 2 +- Hotel Oneshot - Creak 4 +- supernova_explosion_deepnuclear2 +- Ghost Shout 7 +- OW NM Flashback 081718 AP slam +- Airlock Close +- OW_TH_FlagFlapping_loop.\_02 +- OW_SP_RefuelJetpack_v2_short +- Ship_Impact_No_Damage_V3_03 +- Raft Medium Impact V2 4 +- Anglerfish_Awake3 +- Wood Door Open Start +- OW_TH_FlagFlapping_loop +- Slide Reel Pickup 2 +- Tronworld Ambience 2 Alex Hack +- Ghost Run Footstep Wood_v2 5 +- Ignite_CampFire_03 +- Single Ghost Scream 14 +- Raft Start Reeling +- OW_PR_FootstepsGrass_08 +- Tronworld Enter 2 +- OW_PR_ProbeUnderwaterLaunch +- OW_GD_IslandCrashingInWater_v2 +- Grapple Totem Zoom In +- OW ReelBeat 02a 021021 AP +- Nomai_Stone_Door_End_V2_08 +- OW_PR_FootstepsJumpGlass_02 +- OW_NM_DoorStart_02 +- Destruction Impact - Large 3 +- OW_SP_SignalscopeSlideV2 +- OW NomaiRuinsRegular 081918 AP motif6c +- Wood Door Close Start 3 Alex +- Destruction Impact - Large 2 +- Nomai_Stone_Door_End_Big_V2_01 +- OW_NM_ComputerAmbienceLP +- Anglerfish_Awake2 +- OW_TH_Insects_loop_03 +- OW_PR_SignalscopeActivate +- OW_NM_ComputerRingFall1 +- OW_PR_FootstepsDirt_02 +- OW_NM_ShuttleLight +- Single Ghost Scream 1 +- Ghost Identify Fail +- OW_SP_ShipGroan5_v2 +- Cloaking Field Exit +- OW_PR_FootstepsNomai_01 +- OW Dreamworld Ruins 072021 AP 02e +- Forest Oneshot - Tree Creak 2 +- fogsphere_pulse1 +- OW_PR_PullOutStick +- OW_PR_LockOn +- Nomai_Stone_Door_End_Big_V2_07 +- OW_PR_FootstepsJumpSand_06 +- InstantDeath2_Long_Ringing +- Light Sensor Door Stop 2 +- Light Sensor Door Loop 2 +- OW_TH_GeyserEnd_02 +- pickaxe_01 +- OW_PR_FootstepsWaterWade_03 +- RockPile_Fall_03 +- OW_PR_ThrustAfterburn_v2_01 +- Light Sensor Fade Out 2 +- Light Sensor Fade In 3 +- OW Finally Set Free 072021_2 AP +- Ghost Blow Out Lantern Charge +- Wood Door Loop +- BigBang_Explo +- TH_Geyser_Loop_v3 +- Water Spray Impact 8 +- OW_TH_FlagFlapping_loop.\_03 +- OW_PR_FootstepsJumpLeaves_02 +- OW_PR_FootstepsIceSlide_Lp_01 +- Dreamworld Lights Out Ambience 3 +- knife_scrape_01 +- OW OBSERVATORY 011317 AP +- Footstep_Run5 +- Light Sensor Door Open 2 +- Jetpack_O2_loop_01 +- OW_PR_FootstepsJumpWood_04 +- OW_SP_BuckleUp +- Probe_SnapShot_02 +- Pickup_Ceramic_01 +- OW_PR_FootstepsWood_03 +- Destruction Debris 3 +- OW_PR_SignalscopeDeactivate +- OW_PR_OxygenLeakingFromSuit_loop +- Probe_SnapShot_01 +- Dreamworld Ghost Hotel Ambience 2 +- Slide Reel Put Down 2 +- Nomai_Stone_Door_End_V2_07 +- OW_SP_ProbeLauncherRotation_v2 +- OW_PR_MarshmallowEatUnburnt_noMmm_v3 +- SystemBackOnline +- Ghost Idle Search 1 +- Ship_Impact_Light_Damage_V3_03 +- OW Dreamworld Ruins Story Beats 071621 AP 1i +- OW_PR_FootstepsGrass_02 +- OW_NM_DoorSlide_LP_02 +- Ringworld Cave Ambience +- Fix_Puncture_02 +- OW_PR_FootstepsWaterWade_08 +- OW_TH_GeyserStart_01 +- OW_TH_Insects_loop_01 +- OW ReelBeat 04d_2 040921 AP +- OW_TH_ProjectorStop +- Prisoner Cloth Foley 6 +- Dream World Alarm Bell Oneshot 3 +- shiplog_selectplanet2 +- Nature Oneshot - Distant Creature 1 - less reverb +- OW_PR_FootstepsDirt_08 +- Spark_04 +- OW_GD_HeatLightning_02 +- OW Secret Loop 090121 AP muted +- Creature Voice Test 1 Short +- General Destruction 4 +- House Destruction 1 +- OW_PR_FootstepsSnow_02 +- Huge Splash 2 +- Player Gravel Footstep 4 +- Ghost Grab Player 1 +- shiplog_switchmode_back +- OW_PR_FootstepsJumpWood_03 +- OW_PR_FootstepsJumpMetal_05 +- OW_SP_AutopilotEngaged 1 +- OW_NM_DoorAirlockOpen_03 +- OW Dreamworld Ruins 072021 AP 02b +- Ghost Investiagation Grunt 2 +- Wood Door Close Start 2 +- Real World Alarm Bell Oneshot 2 +- OW Fabric SFX 102119 AP screen shatter SHORT +- OW_NM_Ruins_ambience_scary_loop +- Raft Heavy Impact 1 +- OW Whispers 041321_2 AP LP +- Ghost Run Footstep Forest 4 +- Vine_Crash_V3_01_LowPassDelay +- Solanum_Foley_HandLower +- OW_PR_FootstepsSand_07 +- Grapple Totem Zoom Out Louder +- Ship_Impact_Heavy_Damage_V3_07 +- OW_PR_FootstepsIce_01 +- OW Ghost Ambiences v2 011221 AP pad LP +- Raft Movement Stop +- OW_TH_Museum +- gasp_normal12_lessmale +- OW_PR_FootstepsJumpRock_05 +- OW_SP_ThrustRotationalUnderwater_02 +- Pool_Exit_v3 +- Flashlight_Malfunction_02 +- OW NomaiRuinsRegular 081918 AP motif1c +- Nomai_Stone_Door_End_V2_05 +- OW_PR_FootstepsLeaves_05 +- Nomai_Stone_Door_End_V2_09 +- asphyxiation_suit_secondhalf1 +- Spark_08 +- OW Aquatic Exploration 050318 AP LOOP +- OW_TH_GeyserEnd_01 +- UI_Navigate_03 +- OW ReelBeat 02b 021021 AP +- Player_Impact_Damage_Light_02 +- OW_PR_FootstepsWood_02 +- Jump_Into_TinyGalaxy_v2_02 +- OW_PR_ThrustRotationalUnderwater_05 +- Atmosphere_High_Suit +- OW_SP_MetalCreak_04 +- OW Prisoner Reveal 063021 AP +- Ghost Grunt 1 +- OW_PR_FootstepsJumpDirt_03 +- OW Reelbeat 03c 061721 AP +- Nomai_Stone_Door_End_Big_V2_10 +- Damage_Light_01 +- PutDown_Rock_01 +- OW_TH_ModelRocketCrashing +- OW ReelBeat 03b 032521 AP +- OW END OF GAME 021818 AP +- Raft Movement Start 3 +- Impact_Light_03 +- OW_NM_Tech_Advanced +- Ghost Walk Footstep Wood_v2 4 +- OW_PR_FootstepsJumpWood_05 +- OW_PR_FootstepsMetal_02 +- FootstepsJumpWoodCreak_01 +- OW Timber Hearth 032719 AP v2 +- Hotel Oneshot - Heavy Creak 3 +- shiplog_highlight +- OW_GD_Tornado_v2_03 +- RotationalThruster02 +- OW Quantum Lightning 091118 AP 06 +- JetPack_NotificationBeep_Fast +- SmallSplash +- Ghost Run Footstep Forest 3 +- Nomai_Stone_Door_End_Big_V2_04 +- OW Prisoner Elevator 061121_5 AP loop +- Tower Fall Part 1 +- OW_PR_FootstepsMetal_03 +- OW_PR_FootstepsRock_01 +- Ignite_Marshmallow_01 +- Ignite_CampFire_02 +- Ghost Walk Footstep Wood_v2 5 +- OW_GD_AmbienceCave +- Ship_Impact_Heavy_Damage_V3_11 +- Raft Release +- elevatorstop +- Hotel Oneshot - Creak 2 +- Station Light Flicker +- Forest Oneshot - Tree Creak 7 +- OW_GD_HeatLightning_03 +- Nomai_Stone_Door_End_Big_V2_08 +- OW_TH_AmbienceHighAltitude +- Water Spray Impact 3 +- Ghost Grunt 2_SmoothFade +- linkingstone_out +- Ghost Shout 6 +- Ghost Individual Death 4 +- shiplog_highlight2 +- OW_PR_FootstepsMetal_04 +- OW Morning Cello 101718_2 +- Spark_11 +- fogsphere_jump2_delayed +- Nomai_Stone_Door_End_V2_04 +- OW_SP_ElectricalDamageLP +- OW_PR_FootstepsGlass_02 +- Ghost Run Footstep Forest 6 +- OW_NM_CenterClampsRemoving +- OW_SP_ThrustRotationalUnderwater_03 +- OW_NM_InsertScroll +- GhostMatter_Splash_v4_02 +- Airlock Open +- OW_PR_TranslatorTranslateNew +- Ship_Impact_Heavy_Damage_V3_10 +- House Destruction 2 +- shiplog_newentry3_softer +- OW_TravelerTheme_piano +- Stilts Destruction 3 +- OW_PR_LockOff +- OW_TH_ModelRocketThrustTranslational_01 +- Hotel Oneshot - Creak 8 +- Dreamworld Candle Lighting Test Variation 6 +- Stilts Destruction 4 +- OW_SUN_BurnPlanet +- Real World Dam Crack Water Loop +- OW Final End Times 022519_2 AP LOOP2 +- OxygenRefill_Short +- OW ReelBeat 03a 031521 AP +- OW NomaiRuinsRegular 081918 AP motif5c v2 +- StoryReel5Short 063021_3 AP +- OW_GD_AmbienceOcean +- OW_TH_BridgeCreaking_loop +- OW Traveler Theme 021821 AP FINAL TIME NO PIANO ADD PRISONER +- OW_SP_ShipAmbiance_01 +- Prisoner Grunt 2 +- OW_NM_ComputerRingFall3 +- OW_NM_DoorStart_04 +- Ghost Neck Snap +- Nomai_Warp_01 +- General Destruction 2 +- pickaxe_02 +- OW_PR_FootstepsSnow_07 +- Lava_Splash_02 +- OW_PR_FootstepsGlass_06 +- Anglerfish_Awake +- OW_PR_ProbeRetrieval +- OW_PR_FootstepsJumpSnow_04 +- Lantern Wake Up Light 2 +- Secret Passageway Open Stop 2 +- Lantern Shorting Out 2 +- OW_PR_BanjoStrum_1b +- OW_PR_FootstepsSnow_08 +- Air Rushing Out Into Space +- OW_PR_FootstepsJumpGlass_03 +- OW_PR_ProbeInAirSound +- shiplog_movebetweenplanets +- OW_PR_BanjoStrum_4b +- Raft Stop Reeling +- OW Traveler Theme 091118 AP FINAL TIME WITH PIANO EDIT +- OW_PR_FootstepsMetal_08 +- OW ReelBeat 04a_2 040921 AP +- OW_SP_ShipExploding +- OW_PR_FootstepsJumpMetal_02 +- OW_TH_ModelRocketThrustRotational_04 +- JellyFish_Shock_03 +- OW No-Eye Ruins 121120_2 AP LP +- OW_GD_HeatLightning_05 +- OW_NM_GravityCrystalAmbience_Louder +- OW_GD_HeatLightning_07 +- Solar Sail Loop 2 +- OW_PR_FootstepsBushRustle_02 +- CityLights_Off_01 +- RotationalThruster01 +- OW_NM_BHEnterItem_v2 +- OW_PR_FootstepsBushRustle_09 +- Vision Torch - Vision Dissolves +- OW_PR_FootstepsJumpMetal_04 +- Lantern Remove 2 +- Player_Impact_Damage_Light_01 +- StoryReel5Full 062821_4 AP +- OW_PR_FootstepsWaterWade_07 +- OW_NM_SkypeLP +- OW_SP_ShipGroan2_v2 +- Volcano_Ambience_Loop_V2 +- AnglerFish_Chomp_Loop_v2 +- Destruction Debris 2 +- OW_PR_LandInWater2 +- OW_PR_FootstepsIce_05 +- Footstep_Run1 +- Anglerfish_ChompBite_01 +- Destruction Debris 1 +- Ghost Run Footstep Forest 1 +- AnglerFish_Target_v2_02 +- Signalscope_Zoom_Loop +- BH_Ambience_Below_Crust +- fogsphere_pulse3 +- OW_GD_HeatLightning_08 +- AshTwinCore_Close_01 +- Airlock Depressurize +- OW_TH_ModelRocketThrustRotational_03 +- OW_NM_ComputerRing2 +- RockPile_Fall_05 +- Vision Torch Fire - Loop +- OW Farewell 061721 AP +- Hologram_Enter_v2_01 +- OW_PR_ThrustRotationalUnderwater_03 +- Forest Oneshot - Tree Creak 8 +- OW_PR_LandInWater3 +- Hotel Oneshot - Creak 3 +- Hotel Oneshot - Heavy Thud 1 +- Distant Ghost Cacophony 1 +- Footstep_Run2 +- OW_TH_ProjectorRun_loop +- OW_PR_FootstepsJumpGrass_04 +- Destruction Impact - Large 5 +- FootstepsWoodCreak_03 +- OW_PR_FootstepsIce_03 +- Solanum_Foley_HandRaise +- OW_NM_DoorStart_Big_03 +- Candle Extinguishing Test Variation 6 +- Ignite_CampFire_01 +- Nature Oneshot - Distant Creature 3 - less reverb +- Real World Water Ambience - Slow River +- Ghost Grunt 5 +- IceMelt_v2_LowPass +- OW_NM_GravityCannonDeactivated +- OW Ghost Sequence 011121 AP LOW SUSPENSE LP +- Anglerfish_Sleeping +- Real World Water Ambience - Slow River 2 +- OW_PR_FootstepsWaterWade_02 +- Ghost Walk Footstep Forest 3 +- Spark_05 +- OW No-Eye Ruins 082121 AP stinger +- Nature Oneshot - Distant Deep Creature 3 +- OW_NM_SunStation +- Projector Totem Extinguish 1 +- Dreamfire Crackling Loop 3 +- OW Ghost Ambiences 012921_2 AP slam +- Dreamfire Explosion +- Dream World Water Ambience - Creek 8 +- OW_PR_FootstepsSnow_05 +- OW_PR_FootstepsIce_04 +- Dream World Water Ambience - Creek 5 +- Ghost Run Footstep Forest 2 +- OW_NM_DoorStart_08 +- Outer Wilds Party House v8 050321_2 AP traveler drone +- Hotel Oneshot - Heavy Creak 1 +- Secret Passageway Open Start 2 +- FootstepsWoodCreak_01 +- Ghost Grunt 8 +- OW_PR_FootstepsMetal_06 +- Probe_Attach_v3_02 +- OW_PR_LandInWater1 +- FootstepsWoodCreak_06 +- OW_PR_FootstepsBushRustle_04 +- Projector Totem Blow +- OW_PR_FootstepsWaterWade_01 +- Raft Movement Loop +- OW_SP_ThrustRotationalUnderwater_01 +- OW_PR_FallingIntoLavaBeep_loop +- Ship_Impact_Light_Damage_V3_01 +- Ship_Impact_Medium_Damage_V3_02 +- Ghost Walk Footstep Wood_v2 1 +- Nomai_Stone_Door_End_Big_V2_02 +- OW ReelBeat 04c_2 040921 AP +- Raft Push +- OW_PR_FootstepsJumpIce_03 +- Nomai_Stone_Door_End_Big_V2_05 +- Destruction Impact 5 +- HGT_SandFallSmall_Inside +- OW Quantum Lightning 091118 AP 01 +- OW_PR_OxygenLeakingFromSuit_in +- OW_PR_HelmetOn +- OW_SP_AutopilotDisengaged 1 +- PutDown_Ceramic_01 +- OW_PR_FootstepsMetal_07 +- Water Spray Impact 7 +- Dream World Alarm Bell Oneshot 4 +- CityLights_On_01 +- rockingchair3 +- fogsphere_pulse5 +- Nomai_ShipPowerOn_V2_01 +- OW_GD_IslandSuckedInTornado +- OW_NM_DoorStart_05 +- Probe_Attach_v3_01 +- OW_PR_ThrustRotationalUnderwater_02 +- Outer Wilds Party House v8 050321_3 AP traveler +- Artifact Put Down +- OW ReelBeat 01b 021021 AP +- stoppedasphyxiating_suit2 +- FootstepsJumpWoodCreak_04 +- Destruction Debris 6 +- Nomai_Warp_03_Shorter +- mallowpuff1 +- OW ReelBeat 02d 021021 AP +- OW_TravelerTheme_harmonica +- shiplog_misc4 +- Projector Totem Extinguish 3 +- OW ReelBackdrop 02b 021021 AP +- OW_PR_FootstepsDirt_03 +- Lava_Splash_01 +- Engine_Start_V2 +- Solar Sail Start +- OW_PR_ThrustTranslational_v2_01 +- Light Sensor Fade Out 1 +- Prisoner Cloth Foley 4 +- OW Quantum Lightning 091118 AP 02 +- OW_NM_RemoveScroll +- asphyxiation_suit_firsthalf2 +- OW_TH_AmbienceNightInCanyons +- Footstep2 +- OW ReelBackdrop 03b LOOP 031521 AP +- OW_SP_ThrustRotationalUnderwater_04 +- OW_PR_FootstepsNomai_08 +- OW_PR_FootstepsNomai_03 +- OW ReelBeat 03d 061121 AP +- OW_PR_FootstepsJumpSand_04 +- RotationalThruster03 +- Stilts Destruction 5 +- Raft Run Aground +- OW Space Station 081420_2 AP +- OW_PR_FootstepsWaterWade_06 +- Spark_02 +- Cloaking Field Entry +- OW_NM_DataWormhole +- OW_QuantumSignal +- General Destruction 3 +- OW New Raft Music 082321_4 AP quiet +- OW_SP_Unbuckle +- Real World Water Ambience - Calm 2 +- Prisoner Grunt 3 +- OW_NM_OrbMoveGlass_lp_01 +- Prisoner Cloth Foley 7 +- OW_PR_FootstepsRock_05 +- OW Traveler Theme 021821 AP FINAL TIME WITH PIANO ADD PRISONER +- OW Quantum Lightning 091118 AP 03 +- OW_TH_ModelRocketThrustRotational_02 +- OW_PR_HitWallUnderwater3 +- Flashlight_Malfunction_03 +- OW NM Flashback 082818 loop overlay AP +- supernova_corecollapse_10sec_fadeOut +- OW_PR_FootstepsWood_05 +- rockingchair1 +- Power_Failure_v2_02 +- OW_PR_FootstepsMetal_05 +- Stilts Destruction 2 +- Dreamworld Tower Tilt +- OW New Texture 082921 AP loop +- Lantern Insert 3 +- OW_PR_FootstepsNomai_07 +- OW_PR_FootstepsJumpWood_06 +- Pool_Enter_v3_Fade +- Raft Movement Start +- OW_PR_FootstepsNomai_05 +- OW_PR_HardSplash +- Destruction Debris 5 +- Dreamworld Candle Lighting Test Variation 2 +- OW NM Flashback 082818_2 AP stinger delayed +- Ghost Shout 4 +- Nomai_Stone_Door_End_Big_V2_06 +- Tower Tilt +- OW_NM_DoorStart_Big_06 +- OW_PR_FootstepsLeaves_03 +- Ghost Run Footstep Wood_v2 3 +- OW_NM_BHExitItem_v2 +- Ghost Idle Search 5 +- Forest Oneshot - Animal 1 +- OW Dreamworld Ruins 072021 AP 02d +- OW_PR_FootstepsJumpSnow_02 +- Platform_Break_V2_01 +- OW Party House 092820 AP short loop +- OW_PR_FootstepsRock_06 +- OW_SP_ThrustTranslational +- Footstep6 +- OW_PR_FootstepsWaterWade_05 +- Ghost Start Hunt Grunt 2 +- OW Dreamworld Ruins 072021 AP 02f +- Nomai_Stone_Door_End_Big_V2_12 +- Jump_Into_TinyGalaxy_v2_03 +- Footstep_Run3 +- Negative1 +- OW_TravelerTheme_banjo +- SandColumnEnd_v2 +- OW_PR_FootstepsJumpSand_05 +- Dreamworld Lights Out Ambience 2 +- OW Blair Witch Project 082921_3 AP darker mix loop +- Fig_Backer_Sat_Audio_V3 +- OW_PR_FootstepsGlass_01 +- Light Sensor Fade Out 4 +- Projector Totem Light 1 +- Player Gravel Footstep 6 +- OW_TH_GeyserStart_03 +- Slide Reel Remove 3 +- Ship_Impact_Medium_Damage_V3_06 +- OW Quantum Lightning 091118 AP 05 +- OW_GD_Tornado_v2_01 +- OW_SP_ActivateComputerLP +- Footstep_Run6 +- Spark_13 +- Vine_Crash_V3_02_LowPassDelay +- OW Slideshow BURNT LOOP small 031521_2 AP +- Raft Heavy Impact 4 +- Light Sensor Door Loop - Door Sensor Sliding +- Sarcophagus Strain 3 +- Loading Tunnel - Load +- elevatorstart +- Nomai_Stone_Door_End_V2_02 +- OW_GD_Tornado_v2_02 +- OW_NM_DoorAirLockAirPourOut_01 +- OW_TravelerTheme_newtraveler 061021 AP +- OW ReelBackdrop 04a_3 041321 AP LP +- OW_PR_FootstepsJumpRock_04 +- Damage_Heavy_04 +- Raft Movement Stop 2 +- OW_SP_AnalogClick2_v2 +- Nomai_Stone_Door_End_V2_01 +- OW_PR_FootstepsRock_07 +- Raft Light Impact V2 4 +- Marshmallow_Replace_01 +- Footstep5 +- Destruction Impact 3 +- Helmet_Glass_Crack_08 +- Ghost Run Footstep Wood_v2 6 +- OW End Credits 022019_3 AP +- Raft Heavy Impacts V2 2 +- Nomai_Stone_Door_End_Big_V2_13 +- OW_NM_GravityCannonActivated +- Outer Wilds Party House v8 050321_2 AP Bass +- Ringworld Muffled Indoor Ambience +- Ghost Run Footstep Wood_v2 2 +- OW_GD_AmbienceUndewater +- Forge_Loop_V3_03 +- OW_PR_CampfireAmbience +- OW_PR_FootstepsRock_08 +- Platform_Break_V2_02 +- OW_PR_FootstepsJumpWood_02 +- OW Eye Temple 121820_2 AP LP +- OW_GD_WavesAgainstBeach +- OW_PR_ThrowProbe +- OW_NM_DoorStart_07 +- OW_PR_FootstepsSand_04 +- Lantern Pickup +- Real World Water Ambience - Rapids 2 +- OW_PR_FootstepsWood_04 +- OW_NM_TractorBeamPowerUp +- OW New Stinger 082921 AP +- OW_PR_FootstepsGrass_07 +- Hotel Oneshot - Creak 7 +- Player_On_Fire_Loop +- OW_TH_UnderwaterRushing +- GhostMatter_Splash_v4_01 +- OW_SP_ThrustRotationalUnderwater_06 +- OW Fabric SFX 102119 AP rip FADE OUT +- OW Dreamworld Ruins 072021 AP 02a +- Spark_06 +- OW_SP_SignalscopeChunkV2 +- Player Gravel Footstep 2 +- OW_PR_FootstepsBushRustle_07 +- Hologram_Exit_v2_01 +- Metal Door Open Stop +- OW_PR_FootstepsJumpWood_01 +- OW_PR_FootstepsWaterWade_04 +- Nature Oneshot - Distant Deep Creature 2 +- Stilts Destruction 1 +- OW NM Flashback 082818 AP overlay1 +- drowning_secondhalf1 +- Gear Rotate Locked_Short +- Prisoner Cloth Foley 5 +- shiplog_deselectplanet +- Orb_End_v3_01 +- Atmosphere_High_Ship +- Solar Sail Start 2 +- knife_scrape_02 +- OW_TH_GeyserEnd_03 +- Meteor_Impact_03_b +- Destruction Impact 6 +- JellyFish_Shock_01 +- Light Sensor Loop +- Candle Extinguishing Test Variation 4 +- Vision Torch Light Rays - Off +- OW_NM_DoorSlide_Big_LP_05 +- OW_PR_FootstepsDirt_05 +- Sand_Column_Start_v2_03 +- Water Spray Impact 6 +- OW_NM_DoorStart_Big_07 +- OW_SP_ShipGroan3_v2 +- Heat_Damage_Loop_01 +- OW_SP_LandingCamDeactivated 1 +- breathing_lowO2_6 +- OW_PR_OxygenLeakingFromSuit_out +- LogUpdated_001 +- Vine_Crash_V3_04_LowPassDelay +- Destruction Debris 7 +- Hotel Oneshot - Heavy Creak 2 +- OW_PR_HelmetOff +- OW_PR_FootstepsGrass_04 +- Forest Oneshot - Animal 3 +- OW Discovery 083021_2 AP shorter +- Slide Reel Insert 3 +- OW_NM_BHEnterExitPlayer_v2 +- Ship_Impact_Light_Damage_V3_05 +- OW_SP_OpenHatch_NoBeep +- OW_SP_ThrustRotationalUnderwater_05 +- ShipSubmerge +- Artifact Fire Loop +- OW_DarkBramble_loop +- OW_PR_FootstepsBushRustle_08 +- OW NM Nomai City 081718 AP LOOP +- Solar Sail Stop 2 +- Destruction Impact - Large 1 +- OW Dream Rule LP 032421 AP normal +- Solar Sail Loop +- OW_TH_GeyserStart_02 +- Ship_Impact_No_Damage_V3_05 +- OW_PR_FootstepsIce_06 +- Outer Wilds Party House v8 050321_2 AP vocals +- asphyxiation_suit_secondhalf2 +- Affirmative1 +- Spark_12 +- OW_SP_ConsoleReadoutLP +- OW ReelBackdrop 03c 042621 AP LP +- gasp_light9 +- Nomai_Stone_Door_End_V2_03 +- OW_PR_FootstepsJumpNomai_06 +- OW_PR_FootstepsGlass_04 +- OW_PR_FootstepsDirt_04 +- Destruction Debris 9 +- OW_PR_FootstepsIce_08 +- OW_PR_SuitOff +- Artifact Pickup +- OW_SUN_Ambience_v4 +- JellyFish_Shock_05 +- OW_TH_Underwater +- Station Shudder - Dreamworld +- Ghost Walk Footstep Forest 5 +- OW_TH_ProjectorActivate +- asphyxiation_suit_firsthalf1 +- OW_PR_SignalscopeZoomIn +- HGT_Ambience_Surface +- FootstepsWoodCreak_08 +- GhostMatter_Splash_v4_03 +- UI_Tab_v2_05 +- Raft Medium Impact V2 3 +- OW_NM_TractorBeamPowerDown +- OW_Travel_Theme_Remaster +- Big_Galaxy_Burn_v2_01 +- OW_TH_Insects_loop_02 +- Raft Heavy Impact 3 +- Raft Movement Start 2 +- OW Quantum Lightning 091118 AP 04 +- OW_TH_FlagFlapping_loop.\_04 +- OW_TH_ModelRocketThrustTranslational_02 +- knife_scrape_03 +- Incinerate_v3_02 +- Light Sensor Rotate +- OW_NM_EscapePodDistressSignal +- MapZoomOut_Tone +- OW_NM_DoorStart_Big_05 +- Player Gravel Footstep 7 +- Ghost Walk Footstep Wood_v2 2 +- Ghost Run Footstep Forest 5 +- Ghost Walk Footstep Forest 4 +- OW_PR_HitWallUnderwater2 +- OW NM Flashback 082818_2 AP stinger +- OW_PR_FootstepsJumpGrass_05 +- Fix_Puncture_04 +- Ghost Idle Search 3 diff --git a/docs/content/pages/reference/bramble_colors.md b/docs/src/content/docs/reference/bramble-colors.md similarity index 78% rename from docs/content/pages/reference/bramble_colors.md rename to docs/src/content/docs/reference/bramble-colors.md index 7e9d37d8..8e90063a 100644 --- a/docs/content/pages/reference/bramble_colors.md +++ b/docs/src/content/docs/reference/bramble-colors.md @@ -1,10 +1,10 @@ --- -Title: Bramble Colors -Render_TOC: False +title: Bramble Colors +description: A set of colors used for bramble fog in base game Outer Wilds --- | Dimension | Fog color | Node fog color | -|-------------|------------------------------------------|------------------------------------------| +| ----------- | ---------------------------------------- | ---------------------------------------- | | Cluster | {"r": 126, "g": 119, "b": 101, "a": 255} | {"r": 255, "g": 245, "b": 217, "a": 255} | | Vessel | {"r": 206, "g": 187, "b": 137, "a": 255} | {"r": 191, "g": 171, "b": 133, "a": 255} | | Small Nest | {"r": 131, "g": 128, "b": 121, "a": 255} | {"r": 255, "g": 245, "b": 217, "a": 255} | @@ -12,4 +12,4 @@ Render_TOC: False | Hub | {"r": 84, "g": 83, "b": 73, "a": 255} | {"r": 84, "g": 83, "b": 73, "a": 255} | | Exit Only | {"r": 113, "g": 107, "b": 81, "a": 255} | {"r": 255, "g": 245, "b": 217, "a": 255} | | Escape Pod | {"r": 83, "g": 99, "b": 87, "a": 255} | {"r": 255, "g": 245, "b": 217, "a": 255} | -| Angler Nest | {"r": 113, "g": 107, "b": 81, "a": 255} | {"r": 255, "g": 129, "b": 83, "a": 255} | \ No newline at end of file +| Angler Nest | {"r": 113, "g": 107, "b": 81, "a": 255} | {"r": 255, "g": 129, "b": 83, "a": 255} | diff --git a/docs/src/content/docs/schemas/body-schema/index.mdx b/docs/src/content/docs/schemas/body-schema/index.mdx new file mode 100644 index 00000000..f64c364c --- /dev/null +++ b/docs/src/content/docs/schemas/body-schema/index.mdx @@ -0,0 +1,10 @@ +--- +title: Celestial Body Schema +description: Describes a celestial body to generate +editUrl: false +schemaFile: body_schema.json +--- + +import Schema from "/src/components/Schemas/Schema.astro"; + + diff --git a/docs/src/content/docs/start-here/getting-started.md b/docs/src/content/docs/start-here/getting-started.md new file mode 100644 index 00000000..8f4b709d --- /dev/null +++ b/docs/src/content/docs/start-here/getting-started.md @@ -0,0 +1,142 @@ +--- +title: Getting Started +description: A guide for getting started with New Horizons +--- + +## What Is New Horizons? + +New Horizons is a mod creation framework for creating custom planets in the game [Outer Wilds](https://www.mobiusdigitalgames.com/outer-wilds.html) by Mobius Digital. It primarily uses JSON files, along with a few XML files to define content. + +## Recommended Tools + +It's strongly recommended you get [VSCode](https://code.visualstudio.com/) to edit your files, as it can provide syntax and error highlighting. + +## Try Out New Horizons + +Making an entirely separate addon can get a little complicated, so New Horizons provides a way to play around without the need to set up a full addon. If you want to make a full project, see [Creating An Addon](#creating-an-addon). + +To get started, navigate to your mod manager and click the ⋮ symbol, then select "Show In Explorer". + +![Select "Show in explorer"](@/assets/docs-images/getting_started/mod_manager_show_in_explorer.webp) + +Now, create a new folder named "planets". As the name suggests, New Horizons will search the files in this folder for planets to generate. + +### Making Your First Planet + +To get started, create a new file in this folder called `wetrock.json`, we'll explain what that .json at the end means soon. +Open this file in VSCode (you can do so by right-clicking the file and clicking "Open with Code") +Once in VSCode, paste this code into the file: + +```json title="wetrock.json" +{ + "name": "Wetrock", + "$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/body_schema.json", + "starSystem": "SolarSystem", + "Base": { + "groundSize": 100, + "surfaceSize": 101, + "surfaceGravity": 12, + "hasMapMarker": true + }, + "Orbit": { + "semiMajorAxis": 1300, + "primaryBody": "TIMBER_HEARTH", + "isMoon": true, + "isTidallyLocked": true + }, + "Atmosphere": { + "size": 150, + "fogTint": { + "r": 200, + "g": 255, + "b": 255, + "a": 255 + }, + "fogSize": 150, + "fogDensity": 0.2, + "hasRain": true + } +} +``` + +Here we can see we have a planet object, which name is "Wetrock", and is in the "SolarSystem" (Base-game) star system. +It has an object called Base, which has a groundSize of 100, and a surfaceSize of 101, and the list continues on. + +Alright so now that we understand how the file is structures, let's look into what each value actually does: + +- `name` simply sets the name of the planet +- `$schema` we'll get to in a second +- `starSystem` specifies what star system this planet is located in, in this case we're using the base game star system, so we put "SolarSystem" +- Then it has an object called `Base` + - Base has a `groundSize` of 100, this generates a perfect sphere that is 100 units in radius as the ground of our planet + - It also has a `surfaceSize` of 101, surface size is used in many calculations, it's generally good to set it to a bit bigger than ground size. + - `surfaceGravity` describes the strength of gravity on this planet, in this case it's 12 which is the same as Timber Hearth + - `hasMapMarker` tells new horizons that we want this planet to have a marker on the map screen +- Next it has another object called `Orbit` + - `semiMajorAxis` specifies the radius of the orbit (how far away the body is from its parent) + - `primaryBody` is set to `TIMBER_HEARTH``, this makes our planet orbit timber hearth + - `isMoon` simply tells the game how close you have to be to the planet in map mode before its name appears + - `isTidallyLocked` makes sure that one side of our planet is always facing timber hearth (the primary body) +- Finally, we have `Atmosphere` + - Its `size` is 150, this simply sets how far away from the planet our atmosphere stretches + - Its `fogTint` is set to a color which is an object with r, g, b, and a properties (properties is another word for keys) + - `fogSize` determines how far away the fog stretches from the planet + - `fogDensity` is simply how dense the fog is + - `hasRain` makes rainfall on the planet + +#### What's a Schema? + +That `$schema` property is a bit special, it instructs VSCode to use a pre-made schema to provide a better editing experience. +With the schema you get: + +- Automatic descriptions for properties when hovering over keys +- Automatic error detection for incorrect data types or values +- Autocomplete, also called IntelliSense + +The schema we're using here is the [Celestial Body Schema](/schemas/body-schema), but there are many others available in the Schemas section of the left sidebar. + +### Testing The Planet + +With the new planet created (_and saved!_), launch the game through the mod manager and click resume expedition. If all went well you should be able to open your map and see wetrock orbiting Timber Hearth. + +If you run into issues please make sure: + +- You placed the JSON file in a folder called `planets` in the New Horizons mod folder +- There are no red or yellow squiggly lines in your file + +## Creating An Addon + +### Making a GitHub Repository + +To get started, you'll need to fork the [the New Horizons addon template](https://github.com/xen-42/ow-new-horizons-config-template) + +- Set the Name to your username followed by a dot (`.`), followed by your mod's name in PascalCase (no spaces, new words have capital letters). So for example if my username was "Test" and my mod's name was "Really Cool Addon", I would name the repo `Test.ReallyCoolAddon`. +- The description is what will appear in the mod manager under the mod's name, you can always edit this later +- You can set the visibility to what you want; But when you go to publish your mod, it will need to be public + +### Open The Project + +Now clone the repository to your local computer and open it in your favorite editor (we recommend [VSCode](https://code.visualstudio.com/)). + +### Project Layout + +- .github: This folder contains special files for use on GitHub, they aren't useful right now but will be when we go to publish the mod +- planets: This folder contains a single example config file that destroys the Quantum Moon, we'll keep it for now so we can test our addon later. +- .gitattributes: This is another file that will be useful when publishing +- default-config.json: This file is used in C#-based mods to allow a custom options menu, New Horizons doesn't support a custom options menu, but we still need the file here in order for the addon to work. +- manifest.json: This is the first file we're going to edit, we need to fill it out with information about our mod + - First you're going to set `author` to your author name, this should be the same name that you used when creating the GitHub repo. + - Next, set `name` to the name you want to appear in the mod manager and website. + - Now set `uniqueName` to the name of your GitHub Repo. + - You can leave `version`, `owmlVersion`, and `dependencies` alone +- NewHorizonsConfig.dll: This is the heart of your addon, make sure to never move or rename it. + +### Testing The Addon + +In order for the addon to show up in the manager and subsequently be loaded into the game, you'll need to ensure that it's located in `%APPDATA%\OuterWildsModManager\OWML\Mods` (or `~/.local/share/OuterWildsModManager` on Linux). How you choose to do this is up to you, you could manually copy the mod folder over every time, you could setup an automated [VSCode Launch Configuration](https://code.visualstudio.com/Docs/editor/debugging#_launch-configurations) to do it every time you press F5, or you could simply keep your mod in that folder. The last option while although the easiest is not recommended as downloading another version of your mod can overwrite your current working copy. + +Once put in the Mods folder, the manager will display your mod without a description or download count, you can then launch the game to see if your planets load in. + +#### Checking In-Game + +Now when you click "Start Game" and load into the solar system, you should be able to notice that the quantum moon is gone entirely, this means that your addon and its configs were successfully loaded. diff --git a/docs/src/content/docs/start-here/helpful-resources.md b/docs/src/content/docs/start-here/helpful-resources.md new file mode 100644 index 00000000..a2642049 --- /dev/null +++ b/docs/src/content/docs/start-here/helpful-resources.md @@ -0,0 +1,68 @@ +--- +title: Helpful Resources +description: Helpful resources for developing New Horizons addons +--- + +## Schemas Are Your Friend + +The [schemas](/schemas/body-schema) are the best place to go for up-to-date info on what you can do with New Horizons. + +They're automatically generated directly from the code, so they're always up-to-date. + +You can also use them to get autocomplete and tooltips in your code editor. + +### JSON Schemas + +JSON schemas are automatically supported by VSCode, so you can get autocomplete and tooltips for the schemas, just specify it using `$schema` in your JSON file. + +You can get the URL to the schema by clicking the "View Raw" button on the schema page. Copy the link and paste it into your `$schema` field. + +### XML Schemas + +If you're using VSCode, you can use the [XML addon](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml) to get autocomplete and tooltips for the schemas. + +You can get the URL to the schema by clicking the "View Raw" button on the schema page. Copy the link and paste it into your `xsi:noNamespaceSchemaLocation` field. + +## Reloading Configs In-Game + +It can get annoying when you have to keep closing and opening the game over and over again to test changes, that's why New Horizons has a "Reload Configs" feature. +To enable it, head to your Mods menu and select New Horizons and check the box that says Debug, this will cause a "Reload Configs" option to appear in your pause menu which will reload changes from your filesystem. +You may also notice blue and yellow logs start appearing in your console, this is New Horizons providing additional info on what it's currently doing, it can be helpful when you're trying to track down an issue. + +## Templates + +There are two templates for New Horizons addons. +The [New Horizons Addon Template](https://github.com/xen-42/ow-new-horizons-config-template) is used for addons that **don't use custom code**, +this is ideal for simple projects and people just starting out. + +The [Outer Wilds Mod Template](https://github.com/ow-mods/ow-mod-template) is used for mods that use custom code, +**you must enable "Use New Horizons" in order for it to work with New Horizons**. +This is ideal for people that want to expand on New Horizons and add custom behaviour. + +## Texturing + +The texturemap/heightmap feature was inspired by the Kerbal Space Program mod Kopernicus. A lot of the same techniques that apply to +planet creation there apply to New Horizons. If you need help with planetary texturing, check out [The KSP texturing guide](https://forum.kerbalspaceprogram.com/index.php?/topic/165285-planetary-texturing-guide-repository/). + +[Photopea](https://www.photopea.com/) is a free browser-based photo editor which has useful features like +rectangular-to-polar coordinate transformation, useful for fixing abnormalities at the poles of your planets. + +## Helpful Mods + +These mods are useful when developing your addon + +- [Unity Explorer](https://outerwildsmods.com/mods/unityexplorer) - Used to find the paths of game objects for copying and can be used to manually position props, ship log entries, and more. +- [Collider Visualizer](https://outerwildsmods.com/mods/collidervisualizer) - Useful when creating dialogue triggers or reveal volumes. +- [Save Editor](https://outerwildsmods.com/mods/saveeditor) - Useful when creating a custom [ship log](/ship-log), can be used to reveal all custom facts so you can see them in the ship's computer. +- [Time Saver](https://outerwildsmods.com/mods/timesaver/) - Lets you skip some repeated cutscenes and get into the game faster. +- [The Examples Mod](https://github.com/Outer-Wilds-New-Horizons/nh-examples) - A mod that contains examples of how to use New Horizons features. + +## Helpful Tools + +These tools/references are highly recommended + +- [VSCode](https://code.visualstudio.com/) +- [VSCode XML Addon](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml) +- [XML Basics Tutorial](https://www.w3schools.com/xml/xml_whatis.asp) +- [JSON Basics Tutorial](https://www.tutorialspoint.com/json/index.htm) +- [OWML Docs](https://owml.outerwildsmods.com/) diff --git a/docs/src/env.d.ts b/docs/src/env.d.ts new file mode 100644 index 00000000..acef35f1 --- /dev/null +++ b/docs/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/docs/src/plugins/schema-plugin.ts b/docs/src/plugins/schema-plugin.ts new file mode 100644 index 00000000..5a05991a --- /dev/null +++ b/docs/src/plugins/schema-plugin.ts @@ -0,0 +1,28 @@ +import { generateSchema } from "../util/schema_generator"; +import type { StarlightPlugin } from "@astrojs/starlight/types"; + +export interface SchemaPluginOptions { + schemas: string[]; +} + +type Context = Parameters[0]; + +const makePlugin = (options: SchemaPluginOptions): StarlightPlugin => { + const setup = ({ logger }: Context) => { + logger.debug("Generating schema docs"); + for (const schema of options.schemas) { + logger.info(`Generating schema docs for ${schema}`); + generateSchema(schema); + } + logger.debug("Finished generating schema docs"); + }; + + return { + name: "astro-plugin-schema", + hooks: { + setup + } + }; +}; + +export default makePlugin; diff --git a/docs/src/styles/custom.css b/docs/src/styles/custom.css new file mode 100644 index 00000000..b25ed43b --- /dev/null +++ b/docs/src/styles/custom.css @@ -0,0 +1,30 @@ +/* Dark mode colors. */ +:root { + --sl-color-accent-low: #002d0f; + --sl-color-accent: #007f39; + --sl-color-accent-high: #9fd9aa; + --sl-color-white: #ffffff; + --sl-color-gray-1: #eeeeee; + --sl-color-gray-2: #c2c2c2; + --sl-color-gray-3: #8b8b8b; + --sl-color-gray-4: #585858; + --sl-color-gray-5: #383838; + --sl-color-gray-6: #272727; + --sl-color-black: #181818; +} + +/* Light mode colors. */ +:root[data-theme="light"] { + --sl-color-accent-low: #b8e4c0; + --sl-color-accent: #00823a; + --sl-color-accent-high: #003e18; + --sl-color-white: #181818; + --sl-color-gray-1: #272727; + --sl-color-gray-2: #383838; + --sl-color-gray-3: #585858; + --sl-color-gray-4: #8b8b8b; + --sl-color-gray-5: #c2c2c2; + --sl-color-gray-6: #eeeeee; + --sl-color-gray-7: #f6f6f6; + --sl-color-black: #ffffff; +} diff --git a/docs/src/util/schema_generator.ts b/docs/src/util/schema_generator.ts new file mode 100644 index 00000000..18a2290f --- /dev/null +++ b/docs/src/util/schema_generator.ts @@ -0,0 +1,88 @@ +import { SchemaTools, type Schema } from "./schema_utils"; +import * as fs from "node:fs"; + +const addFrontmatter = ( + content: string, + frontmatter: Record +) => { + const entries = Object.entries(frontmatter).map(([key, value]) => `${key}: ${value}`); + + if (entries.length === 0) { + return content; + } + + return `---\n${entries.join("\n")}\n---\n\n${content}`; +}; + +const generateDef = (def: Schema) => { + const title = SchemaTools.getTitle(def) as string; + const dir = `src/content/docs/schemas/${def.rootSlug!}/defs/${title}`; + + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + + let description = SchemaTools.getDescription(def) as string | undefined; + + if (description === undefined || (description as string).trim() === "") { + description = `Definition of ${title}`; + } + + const frontMatter = { + title, + description, + editUrl: false, + schemaFile: def.fileName, + defName: title + }; + + const content = `import SchemaDef from "/src/components/Schemas/SchemaDef.astro";\n\n\n`; + + fs.writeFileSync(`${dir}/index.mdx`, addFrontmatter(content, frontMatter)); +}; + +const generateDefList = (schema: Schema) => { + const dir = `src/content/docs/schemas/${schema.slug}/defs`; + + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + + const frontMatter = { + title: `${SchemaTools.getTitle(schema)} definitions`, + description: "List of all definitions in the ${SchemaTools.getTitle(schema)} schema", + editUrl: false, + schemaFile: schema.fileName + }; + + const content = `import DefinitionList from "/src/components/Schemas/DefinitionList.astro";\n\n\n`; + + fs.writeFileSync(`${dir}/index.mdx`, addFrontmatter(content, frontMatter)); +}; + +export const generateSchema = (fileName: string) => { + const schema = SchemaTools.readSchema(fileName); + + const dir = `src/content/docs/schemas/${schema.slug}`; + + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + + const frontMatter = { + title: SchemaTools.getTitle(schema) as string, + description: SchemaTools.getDescription(schema) as string, + editUrl: false, + schemaFile: schema.fileName + }; + + const content = `import Schema from "/src/components/Schemas/Schema.astro";\n\n\n`; + + fs.writeFileSync(`${dir}/index.mdx`, addFrontmatter(content, frontMatter)); + + generateDefList(schema); + + for (const def of SchemaTools.getDefs(schema)) { + generateDef(def); + } +}; diff --git a/docs/src/util/schema_utils.ts b/docs/src/util/schema_utils.ts new file mode 100644 index 00000000..906a7c85 --- /dev/null +++ b/docs/src/util/schema_utils.ts @@ -0,0 +1,316 @@ +/* eslint-disable no-case-declarations */ +import type { JSONSchema } from "@apidevtools/json-schema-ref-parser/dist/lib/types"; +import type { MarkdownHeading } from "astro"; +import { readFileSync } from "fs"; +import { Element, xml2js } from "xml-js"; + +export type InternalSchema = { type: "JSON"; val: JSONSchema } | { type: "XML"; val: Element }; + +export interface Schema { + internalSchema: InternalSchema; + fileName: string; + slug: string; + rootSlug?: string; + rootTitle?: string; +} + +const getSchemaSlug = (rawName: string) => rawName.split(".")[0].replaceAll("_", "-"); + +const getElementsAsObject = (elements: Element[]) => + Object.fromEntries(elements.map((e) => [e.name ?? e.type ?? "??", e])); + +export const SchemaTools = { + readSchema: (file: string): Schema => { + const contents = readFileSync(`../NewHorizons/Schemas/${file}`).toString(); + + let internalSchema: InternalSchema | null = null; + + if (file.endsWith(".json")) { + internalSchema = { + type: "JSON", + val: JSON.parse(contents) as JSONSchema + }; + } else if (file.endsWith(".xsd")) { + internalSchema = { + type: "XML", + val: xml2js(contents) as Element + }; + } + + if (internalSchema) { + return { + fileName: file, + slug: getSchemaSlug(file), + rootSlug: getSchemaSlug(file), + internalSchema + }; + } else { + throw Error(`Invalid Schema File: ${file}`); + } + }, + + getTitle: (schema: Schema) => { + switch (schema.internalSchema.type) { + case "JSON": + return schema.internalSchema.val.title; + case "XML": + const elem = schema.internalSchema.val; + const title = + getElementsAsObject(elem.elements ?? [])["comment"]?.comment ?? + elem.attributes?.["name"] ?? + elem.name ?? + elem.type ?? + "??"; + return title; + } + }, + + getDescription: (schema: Schema) => { + switch (schema.internalSchema.type) { + case "JSON": + return schema.internalSchema.val.description; + case "XML": + const annotation = getElementsAsObject(schema.internalSchema.val.elements ?? [])[ + "xs:annotation" + ]; + if (annotation === undefined) { + return undefined; + } else { + const documentation = getElementsAsObject(annotation.elements ?? [])[ + "xs:documentation" + ]; + if (documentation === undefined) { + return undefined; + } else { + return documentation.elements?.[0]?.text; + } + } + } + }, + + getRequired: (schema: Schema) => { + switch (schema.internalSchema.type) { + case "JSON": + return schema.internalSchema.val.required ?? false; + case "XML": + const node = schema.internalSchema.val; + return (node.attributes?.["minOccurs"] ?? 1).toString() !== "0"; + } + }, + + getType: (schema: Schema, stripXs?: boolean) => { + switch (schema.internalSchema.type) { + case "JSON": + const internalSchema = schema.internalSchema.val; + if (internalSchema.$ref) { + return internalSchema.$ref?.split("/").at(-1); + } else if (Array.isArray(internalSchema.type)) { + return internalSchema.type.join(" or "); + } else { + return internalSchema.type; + } + case "XML": + const node = schema.internalSchema.val; + const type = node.attributes?.["type"] as string | undefined; + if ((stripXs ?? true) && type?.startsWith("xs:")) { + return type.substring(3); + } else { + return type === "empty" ? "Self-Closing" : type; + } + } + }, + + getAdditionalBadges: (schema: Schema) => { + switch (schema.internalSchema.type) { + case "JSON": + const internalSchema = schema.internalSchema.val; + const badges = []; + if (internalSchema.minimum !== undefined) { + badges.push(`Minimum: ${internalSchema.minimum}`); + } + if (internalSchema.maximum !== undefined) { + badges.push(`Maximum: ${internalSchema.maximum}`); + } + if (internalSchema.default !== undefined) { + badges.push(`Default: ${internalSchema.default}`); + } + return badges; + case "XML": + const node = schema.internalSchema.val; + if (node.name === "xs:complexType") return []; + const maxOccurs = node.attributes?.["maxOccurs"] as string | number | undefined; + if (maxOccurs) { + if (maxOccurs === "unbounded") { + return ["Can Occur Unlimited Times"]; + } else { + return [ + `Can Occur ${maxOccurs.toString()} Time${maxOccurs === 1 ? "" : "s"}` + ]; + } + } else { + return ["Can Only Occur Once"]; + } + } + }, + + getDefs: (schema: Schema): Schema[] => { + switch (schema.internalSchema.type) { + case "JSON": + return Object.entries(schema.internalSchema.val.definitions ?? {}).map( + ([key, val]) => + ({ + fileName: schema.fileName, + slug: getSchemaSlug(key), + rootSlug: schema.slug, + rootTitle: SchemaTools.getTitle(schema), + internalSchema: { + type: "JSON", + val: { title: key, ...val } + } + }) as Schema + ); + case "XML": + let node = schema.internalSchema.val; + const elements = getElementsAsObject(node.elements ?? []); + if ("xs:schema" in elements) { + node = elements["xs:schema"]; + } + const defNodes = node.elements?.filter((def) => def.name === "xs:complexType"); + if (defNodes) { + return defNodes + .filter((d) => d.attributes?.["name"] !== "empty") + .map( + (d) => + ({ + fileName: schema.fileName, + slug: getSchemaSlug(d.attributes!["name"]!.toString()), + rootSlug: schema.slug, + rootTitle: SchemaTools.getTitle(schema), + internalSchema: { + type: "XML", + val: d + } + }) as Schema + ); + } else { + return []; + } + } + }, + + getEnumValues: (schema: Schema) => { + switch (schema.internalSchema.type) { + case "JSON": + const internalSchema = schema.internalSchema.val; + return internalSchema.enum ?? []; + case "XML": + return []; + } + }, + + getRefSlug: (schema: Schema) => { + const type = SchemaTools.getType(schema, false); + if (type) { + switch (schema.internalSchema.type) { + case "JSON": + return schema.internalSchema.val.$ref?.split("/").at(-1); + case "XML": + if (!type.toString().startsWith("xs:") && type !== "Self-Closing") { + return getSchemaSlug(type as string); + } + } + } + }, + + getProps: (schema: Schema, level: number): [string, Schema][] => { + switch (schema.internalSchema.type) { + case "JSON": + const internalSchema = schema.internalSchema.val; + let requiredList: string[] = []; + if (internalSchema.required && Array.isArray(internalSchema.required)) { + requiredList = internalSchema.required; + } + if (internalSchema.type === "object") { + return Object.entries(internalSchema.properties ?? {}).map((e) => [ + e[0], + { + fileName: schema.fileName, + slug: `${level === 0 ? "" : `${schema.slug}-`}${getSchemaSlug(e[0])}`, + rootSlug: schema.rootSlug, + internalSchema: { + type: "JSON", + val: { title: e[0], required: requiredList.includes(e[0]), ...e[1] } + } + } as Schema + ]); + } else if (internalSchema.type === "array" && internalSchema.items) { + return [ + [ + "Items", + { + fileName: schema.fileName, + slug: `${level === 0 ? "" : `${schema.slug}-`}items`, + rootSlug: schema.rootSlug, + internalSchema: { + type: "JSON", + val: { title: "Items", ...(internalSchema.items as object) } + } + } as Schema + ] + ]; + } else { + return []; + } + case "XML": + let node = schema.internalSchema.val; + let elements = getElementsAsObject(node.elements ?? []); + if ("xs:schema" in elements) { + node = elements["xs:schema"]; + elements = getElementsAsObject(node.elements ?? []); + } + if (node.name === "xs:complexType") { + node = elements["xs:sequence"]; + elements = getElementsAsObject(node?.elements ?? []); + } + if (node.name === "xs:element") { + node = elements["xs:complexType"]; + if (node === undefined) { + return []; + } else { + node = getElementsAsObject(node.elements ?? [])["xs:sequence"]; + if (node === undefined) { + return []; + } else { + elements = getElementsAsObject(node.elements ?? []); + } + } + } + return (node.elements ?? []) + .filter((e) => e.name === "xs:element") + .map((e) => [ + (e.attributes?.["name"] as string) ?? e.name ?? "??", + { + fileName: schema.fileName, + slug: `${schema.slug}-${getSchemaSlug( + e.attributes?.["name"] as string + )}`, + rootSlug: schema.rootSlug, + internalSchema: { + type: "XML", + val: e + } + } as Schema + ]); + } + }, + + getHeaders: (schema: Schema, level?: number) => { + let headers: MarkdownHeading[] = []; + const props = SchemaTools.getProps(schema, level ?? 0); + for (const prop of props) { + headers.push({ depth: level ?? 2, slug: prop[1].slug, text: prop[0] }); + headers = headers.concat(SchemaTools.getHeaders(prop[1], (level ?? 2) + 1)); + } + return headers; + } +}; diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 00000000..0cf7790e --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "astro/tsconfigs/strict", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + } +}