From 3e22abf5ae51e4d4338508aa3fbbc16f0351d0c6 Mon Sep 17 00:00:00 2001 From: Nicolas Merget Date: Sun, 1 Jun 2025 21:21:24 +0200 Subject: [PATCH 1/3] feat: add pnpm and changesets to manage repository --- .changeset/README.md | 8 + .changeset/config.json | 15 + .../android.yml} | 6 + .../{ios_builds.yml => builds/ios.yml} | 6 + .../{linux_builds.yml => builds/linux.yml} | 6 + .../{macos_builds.yml => builds/macos.yml} | 6 + .../{web_builds.yml => builds/web.yml} | 6 + .../windows.yml} | 6 + .github/workflows/misc/environment.yml | 93 + .../{release_builds.yml => misc/release.yml} | 41 +- .github/workflows/runner.yml | 50 +- .github/workflows/scheduled-merge-version.yml | 26 + .gitignore | 13 +- CHANGELOG.md | 55 + CONTRIBUTING.md | 55 + SCsub | 5 + package.json | 17 + pnpm-lock.yaml | 853 ++++++ pnpm-workspace.yaml | 3 + scripts/jsb.editor/package-lock.json | 41 - scripts/jsb.editor/package.json | 2 + scripts/jsb.runtime/package-lock.json | 41 - scripts/jsb.runtime/package.json | 2 + scripts/jsb.static/package-lock.json | 41 - scripts/jsb.static/package.json | 5 + scripts/out/jsb.editor.bundle.d.ts | 235 -- scripts/out/jsb.editor.bundle.js | 2285 ----------------- scripts/out/jsb.editor.bundle.js.map | 1 - scripts/out/jsb.runtime.bundle.d.ts | 130 - scripts/out/jsb.runtime.bundle.js | 1355 ---------- scripts/out/jsb.runtime.bundle.js.map | 1 - scripts/release/publish.js | 60 + scripts/release/should-publish.js | 12 + scripts/release/version.js | 20 + 34 files changed, 1316 insertions(+), 4185 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json rename .github/workflows/{android_builds.yml => builds/android.yml} (95%) rename .github/workflows/{ios_builds.yml => builds/ios.yml} (93%) rename .github/workflows/{linux_builds.yml => builds/linux.yml} (95%) rename .github/workflows/{macos_builds.yml => builds/macos.yml} (97%) rename .github/workflows/{web_builds.yml => builds/web.yml} (94%) rename .github/workflows/{windows_builds.yml => builds/windows.yml} (96%) create mode 100644 .github/workflows/misc/environment.yml rename .github/workflows/{release_builds.yml => misc/release.yml} (72%) create mode 100644 .github/workflows/scheduled-merge-version.yml create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 scripts/jsb.editor/package-lock.json delete mode 100644 scripts/jsb.runtime/package-lock.json delete mode 100644 scripts/jsb.static/package-lock.json delete mode 100644 scripts/out/jsb.editor.bundle.d.ts delete mode 100644 scripts/out/jsb.editor.bundle.js delete mode 100644 scripts/out/jsb.editor.bundle.js.map delete mode 100644 scripts/out/jsb.runtime.bundle.d.ts delete mode 100644 scripts/out/jsb.runtime.bundle.js delete mode 100644 scripts/out/jsb.runtime.bundle.js.map create mode 100644 scripts/release/publish.js create mode 100644 scripts/release/should-publish.js create mode 100644 scripts/release/version.js diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..4cfc7469 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [ + "@godot-js/jsb-static", + "@godot-js/jsb-runtime", + "@godot-js/jsb-editor" + ] +} diff --git a/.github/workflows/android_builds.yml b/.github/workflows/builds/android.yml similarity index 95% rename from .github/workflows/android_builds.yml rename to .github/workflows/builds/android.yml index 4aca02c0..b67f0489 100644 --- a/.github/workflows/android_builds.yml +++ b/.github/workflows/builds/android.yml @@ -67,6 +67,12 @@ jobs: name: V8 path: ${{github.workspace}}/modules/GodotJS/v8 + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Setup Python and SCons uses: ./.github/actions/godot-deps diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/builds/ios.yml similarity index 93% rename from .github/workflows/ios_builds.yml rename to .github/workflows/builds/ios.yml index 3bd805ee..200030c7 100644 --- a/.github/workflows/ios_builds.yml +++ b/.github/workflows/builds/ios.yml @@ -61,6 +61,12 @@ jobs: name: V8 path: ${{github.workspace}}/modules/GodotJS/v8 + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Setup Python and SCons uses: ./.github/actions/godot-deps diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/builds/linux.yml similarity index 95% rename from .github/workflows/linux_builds.yml rename to .github/workflows/builds/linux.yml index 2f2a6b1b..61ca5d32 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/builds/linux.yml @@ -96,6 +96,12 @@ jobs: name: V8 path: ${{github.workspace}}/modules/GodotJS/v8 + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Setup Python and SCons if: "!matrix.legacy-scons" uses: ./.github/actions/godot-deps diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/builds/macos.yml similarity index 97% rename from .github/workflows/macos_builds.yml rename to .github/workflows/builds/macos.yml index f7a8c746..8f167671 100644 --- a/.github/workflows/macos_builds.yml +++ b/.github/workflows/builds/macos.yml @@ -89,6 +89,12 @@ jobs: name: V8 path: ${{github.workspace}}/modules/GodotJS/v8 + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Compilation (x86_64) uses: ./.github/actions/godot-build with: diff --git a/.github/workflows/web_builds.yml b/.github/workflows/builds/web.yml similarity index 94% rename from .github/workflows/web_builds.yml rename to .github/workflows/builds/web.yml index dfa07de0..97693a36 100644 --- a/.github/workflows/web_builds.yml +++ b/.github/workflows/builds/web.yml @@ -55,6 +55,12 @@ jobs: lfs: true submodules: recursive + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Set up Emscripten latest uses: mymindstorm/setup-emsdk@v14 with: diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/builds/windows.yml similarity index 96% rename from .github/workflows/windows_builds.yml rename to .github/workflows/builds/windows.yml index b1e8f6e3..18573b8b 100644 --- a/.github/workflows/windows_builds.yml +++ b/.github/workflows/builds/windows.yml @@ -91,6 +91,12 @@ jobs: name: V8 path: ${{github.workspace}}/modules/GodotJS/v8 + - name: Download out + uses: actions/download-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + - name: Setup Python and SCons uses: ./.github/actions/godot-deps diff --git a/.github/workflows/misc/environment.yml b/.github/workflows/misc/environment.yml new file mode 100644 index 00000000..327bf5a5 --- /dev/null +++ b/.github/workflows/misc/environment.yml @@ -0,0 +1,93 @@ +name: 🌳 Set Environment +on: + workflow_call: + outputs: + version: + description: "Godot version" + value: ${{ jobs.environment.outputs.version }} + v8: + description: "V8 version" + value: ${{ jobs.environment.outputs.v8 }} + publish: + description: "Should publish" + value: ${{ jobs.environment.outputs.publish }} + +jobs: + environment: + name: 🌳 Set Environment + runs-on: ubuntu-latest + outputs: + version: ${{ steps.versions.outputs.version }} + v8: ${{ steps.versions.outputs.v8 }} + publish: ${{ steps.should_publish.outputs.publish }} + steps: + - name: ⏬ Checkout repository + uses: actions/checkout@v4 + + - name: 🛫 Setup pnpm + uses: pnpm/action-setup@v4 + + - name: 🦕❌ Setup node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "pnpm" + + - name: 🛠️ Build scripts/out + run: | + pnpm install + pnpm build + + - name: ⬆️ Upload scripts/out + uses: actions/upload-artifact@v4 + with: + name: out + path: ${{github.workspace}}/modules/GodotJS/scripts/out + retention-days: 10 + + - name: 🏷 Set Versions + id: versions + run: | + echo "version=4.4" >> $GITHUB_OUTPUT + echo "v8=v8_12.4.254.21_r13" >> $GITHUB_OUTPUT + + - name: 🎱 Deps v8 + shell: bash + env: + V8: ${{ steps.versions.outputs.v8 }} + run: | + curl -L -o "$V8.zip" "https://github.com/ialex32x/GodotJS-Dependencies/releases/download/$V8/$V8.zip" + unzip "$V8.zip" -d "/tmp/$V8" + mkdir -p "${{github.workspace}}/modules/GodotJS/" + mv "/tmp/$V8/v8" "${{github.workspace}}/modules/GodotJS/v8" + ls "${{github.workspace}}/modules/GodotJS/v8" + + - name: ⬆️ Upload v8 + uses: actions/upload-artifact@v4 + with: + name: V8 + path: ${{github.workspace}}/modules/GodotJS/v8 + retention-days: 10 + + - name: 🆚 Create and publish versions + id: changesets + uses: changesets/action@v1 + with: + commit: "chore: update versions" + title: "chore: update versions" + version: pnpm ci:version + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: ❓ Should publish + id: should_publish + env: + HAS_CHANGESETS: ${{ steps.changesets.outputs.hasChangesets }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + SHOULD_PUBLISH=$(pnpm run ci:should-publish) + if [[ $SHOULD_PUBLISH == "true" && $HAS_CHANGESETS == "false" ]]; then + echo "publish=true" >> $GITHUB_OUTPUT + else + echo "publish=false" >> $GITHUB_OUTPUT + fi diff --git a/.github/workflows/release_builds.yml b/.github/workflows/misc/release.yml similarity index 72% rename from .github/workflows/release_builds.yml rename to .github/workflows/misc/release.yml index 3493e244..68af7552 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/misc/release.yml @@ -13,32 +13,43 @@ permissions: contents: write jobs: - rename: + release: runs-on: ubuntu-latest + outputs: + id: ${{ steps.publish_release.outputs.id }} steps: - name: ⏬ Checkout repo uses: actions/checkout@v4 - - name: 📛 Add version to release name - uses: actions/github-script@v6 + - name: 🛫 Setup pnpm + uses: pnpm/action-setup@v4 + + - name: 🦕❌ Setup node.js + uses: actions/setup-node@v4 with: - result-encoding: json - script: | - const { repo, owner } = context.repo; - await github.rest.repos.updateRelease({ - owner, - repo, - release_id: context.payload.release.id, - name: '${{ inputs.version }}-${{ inputs.v8 }}-' + context.payload.release.name, - }); + node-version: 20 + cache: "pnpm" - release: + - name: 🔄️ Install dependencies + run: pnpm install + + - name: 🚢 Publish release + id: publish_release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pnpm ci:publish ${{ inputs.version }} ${{ inputs.v8 }} + RELEASE_ID=$(gh release view ${{ inputs.version }} --json id --jq ".id") + echo "id=$RELEASE_ID" >> $GITHUB_OUTPUT + + upload-assets: runs-on: ubuntu-latest name: ${{ matrix.os }}-${{ matrix.target }}-${{ matrix.engine }} + needs: [ release ] strategy: fail-fast: false matrix: - engine: [ v8,qjs-ng ] + engine: [ v8, qjs-ng ] os: [ android, ios, linux, macos, web, web-nothreads, windows ] target: [ template-release ] include: @@ -87,7 +98,7 @@ jobs: return await github.rest.repos.uploadReleaseAsset({ owner, repo, - release_id: context.payload.release.id, + release_id: ${{ needs.release.outputs.id }}, name: '${{ steps.name.outputs.name }}.zip', data: FS.readFileSync('${{ github.workspace }}/${{ steps.name.outputs.name }}.zip') }); diff --git a/.github/workflows/runner.yml b/.github/workflows/runner.yml index 3e9462e7..3ccab44a 100644 --- a/.github/workflows/runner.yml +++ b/.github/workflows/runner.yml @@ -7,8 +7,8 @@ on: push: branches: - "main" - release: - types: [ published ] + schedule: + - cron: "2 0 * * 0" # Sunday after midnight to trigger a release concurrency: group: ${{ github.workflow }}|${{ github.ref_name }} @@ -20,74 +20,46 @@ permissions: jobs: environment: name: 🌳 Set Environment - runs-on: ubuntu-latest - outputs: - version: ${{ steps.versions.outputs.version }} - v8: ${{ steps.versions.outputs.v8 }} - steps: - - name: 🏷 Set Versions - id: versions - run: | - echo "version=4.4" >> $GITHUB_OUTPUT - echo "v8=v8_12.4.254.21_r13" >> $GITHUB_OUTPUT - - - name: 🎱 Deps v8 - shell: bash - env: - V8: ${{ steps.versions.outputs.v8 }} - run: | - curl -L -o "$V8.zip" "https://github.com/ialex32x/GodotJS-Dependencies/releases/download/$V8/$V8.zip" - unzip "$V8.zip" -d "/tmp/$V8" - mkdir -p "${{github.workspace}}/modules/GodotJS/" - mv "/tmp/$V8/v8" "${{github.workspace}}/modules/GodotJS/v8" - ls "${{github.workspace}}/modules/GodotJS/v8" - - - - name: ⬆️ Upload artifact - uses: actions/upload-artifact@v4 - with: - name: V8 - path: ${{github.workspace}}/modules/GodotJS/v8 - retention-days: 10 + uses: ./.github/workflows/misc/environment.yml android-build: name: 🤖 Android - uses: ./.github/workflows/android_builds.yml + uses: ./.github/workflows/builds/android.yml needs: environment with: version: ${{ needs.environment.outputs.version }} ios-build: name: 🍏 iOS - uses: ./.github/workflows/ios_builds.yml + uses: ./.github/workflows/builds/ios.yml needs: environment with: version: ${{ needs.environment.outputs.version }} linux-build: name: 🐧 Linux - uses: ./.github/workflows/linux_builds.yml + uses: ./.github/workflows/builds/linux.yml needs: environment with: version: ${{ needs.environment.outputs.version }} macos-build: name: 🍎 macOS - uses: ./.github/workflows/macos_builds.yml + uses: ./.github/workflows/builds/macos.yml needs: environment with: version: ${{ needs.environment.outputs.version }} windows-build: name: 🏁 Windows - uses: ./.github/workflows/windows_builds.yml + uses: ./.github/workflows/builds/windows.yml needs: environment with: version: ${{ needs.environment.outputs.version }} web-build: name: 🌐 Web - uses: ./.github/workflows/web_builds.yml + uses: ./.github/workflows/builds/web.yml needs: environment with: version: ${{ needs.environment.outputs.version }} @@ -132,9 +104,9 @@ jobs: release: name: 🦅 Release - if: github.event_name == 'release' && github.event.action == 'published' + if: needs.environment.outputs.publish == 'true' needs: [ checks-done, environment ] - uses: ./.github/workflows/release_builds.yml + uses: ./.github/workflows/misc/release.yml secrets: inherit with: version: ${{ needs.environment.outputs.version }} diff --git a/.github/workflows/scheduled-merge-version.yml b/.github/workflows/scheduled-merge-version.yml new file mode 100644 index 00000000..c24727c8 --- /dev/null +++ b/.github/workflows/scheduled-merge-version.yml @@ -0,0 +1,26 @@ +name: ⏲️ Scheduled Merge Version + +on: + schedule: + - cron: '0 0 * * 0' # Sunday midnight + +jobs: + scheduled-merge-version: + runs-on: ubuntu-latest + steps: + - name: ⏬ Checkout repository + uses: actions/checkout@v4 + + - name: 🔍 Find Changeset PR + id: find-pr + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --state open --search "chore: update versions" --author "app/github-actions" --json number --jq '.[0].number') + echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV + + - name: 🔀 Merge PR + if: env.PR_NUMBER + run: gh pr merge $PR_NUMBER --admin + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index eb1aa828..9457f6bc 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,17 @@ __MACOSX /jsb.gen.h /jsb_project_preset.gen.cpp /weaver-editor/templates/templates.gen.h +/release-notes.md +/*/out +# VS Code .vscode -.idea \ No newline at end of file + +# IntelliJ IDEA project files +/.idea/ + +# Node modules +/node_modules/ + +# pnpm store +.pnpm-store diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..f251f468 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,55 @@ +# @godot-js/editor + +## 1.0.0 + +### Major Changes +* Implement a [*Monitor*](https://github.com/godotjs/GodotJS/wiki/Statistics) of the runtime statistics of a running project +* Implement *console.time/console.timeEnd* +* Refactor [*Worker*](https://github.com/godotjs/GodotJS/wiki/Worker) to support *Godot Object* transfer + +### Minor Changes +* Add *worker.onready* callback +* Add threading support for *InstanceBindingCallback* +* Improve multi-threading support for *IConsoleOutput* +* Refactor *GodotJSScript* to support loading in *Worker* +* Add a setting entry for *Exporter* to manually include source files +* More strict type check for native object bindings +* *TypeConvert* returns *true* and *nullptr* for dead object pointers +* Ignore *Thread* class in d.ts codegen + +### Patch Changes +* Fix a godot profiler crash on *GodotJSScriptLanguage::profiling_get_* +* Fix a possible crash in *Worker::finish()* +* Fix an access violation issue in *Worker* + +## 0.9.9 + +### Minor Changes + +* Add prebuilt libs of lws/v8 for Windows/Linux on ARM64 +* Add support for hooking godot typeloader +* Add support for JavaScriptCore + +### Patch Changes +* Minor bugfix + +## 0.9.8 + +### Patch Changes + +* Fix a crash issue in `jsb::Buffer` destructor when using *quickjs-ng* as runtime +* Support for pure JavaScript projects (still with typings) +* Refactor annotations and helper functions in `jsb.core` + +### Breaking Changes +* All annotations are moved into `godot.annotations` module (from `jsb.core`). +* `GLOBAL_GET` and `EDITOR_GET` are moved into `godot` module (from `jsb.core`). +* `callable()` is removed from `jsb.core`, use `Callable.create` in `godot` module instead. +* `to_array_buffer()` is removed from `jsb.core`, use `PackedByteArray.to_array_buffer()` instead. +* `$wait` is removed from `jsb.core`, use `SignalN<...>.as_promise()` instead. + +> [!NOTE] +> Regenerating `.d.ts` files in your project will help you a lot to fix most errors caused by the breaking changes below. +> *VSCode* (or `tsc`) will report all relevant changes as errors. +> Old annotations still work temporarily in this version but will be removed in a future version. Please update your codes. + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..42d3d494 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,55 @@ +# Contributing + +## Installation + +- Clone the source code of [godot](https://github.com/godotengine/godot): + - `git clone git@github.com:godotengine/godot.git` or + - `git clone https://github.com/godotengine/godot.git` +- This branch uses version `4.4` so checkout the version with: `git checkout 4.4` +- Clone this module and put it into `godot/modules/GodotJS`: + - `git clone git@github.com:godotjs/GodotJS.git godot/modules/GodotJS` or + - `git clone https://github.com/godotjs/GodotJS.git godot/modules/GodotJS` +- Download the prebuilt v8 from [GodotJS-Dependencies](https://github.com/ialex32x/GodotJS-Dependencies/releases): + - `curl https://github.com/ialex32x/GodotJS-Dependencies/releases/download/v8_12.4.254.21_r13/v8_12.4.254.21_r13.zip --output your/download/path/v8.zip` + - `7z x -o "YourGodotEngineSource/modules/GodotJS" your/download/path/v8.zip` +- [Recompile the godot engine](https://docs.godotengine.org/en/4.4/development/compiling/index.html) + - Windows: `scons platform=windows` + - MacOS: `scons platform=macos arch=arm64` + - **Hint**: To enable unit tests you need to add `tests=true` to `scons` arguments + +## Project Structure + +``` +┗━ godot + ┗━ modules + ┣━ ... + ┣━ gltf + ┣━ GodotJS + ┃ ┣━ bridge + ┃ ┣━ compat + ┃ ┣━ docs + ┃ ┣━ impl + ┃ ┣━ internal + ┃ ┣━ lws + ┃ ┣━ quickjs + ┃ ┣━ quickjs-ng + ┃ ┣━ scripts + ┃ ┣━ tests + ┃ ┣━ v8 + ┃ ┃ ┣━ include + ┃ ┃ ┣━ linux.x86_64.release + ┃ ┃ ┣━ macos.arm64.release + ┃ ┃ ┣━ windows_x86_64_release + ┃ ┃ ┗━ ... + ┃ ┣━ weaver + ┃ ┗━ weaver-editor + ┣━ gridmap + ┣━ ... +``` + +## Preparing your PR + +Before submitting your PR add a [Changeset](https://github.com/changesets/changesets) entry: + +- From the root, run `pnpm run changeset` and follow the CLI instructions +- You can add a full description of your change in Markdown format diff --git a/SCsub b/SCsub index e69250da..3efd26e3 100644 --- a/SCsub +++ b/SCsub @@ -4,6 +4,7 @@ import io import time import re import zlib +import subprocess from misc.utility.color import print_error, print_info, print_warning # from typing import TypedDict, Callable @@ -530,6 +531,10 @@ if is_defined("JSB_WITH_JAVASCRIPTCORE"): if env.msvc and env["vsproj"]: env.Append(CPPPATH=[f"#modules/{module_name}/impl/jsc/_NOT_FOR_INCLUDE_"]) +# Build JS files before generating +if not os.path.exists("scripts/out"): + print(subprocess.check_output(["pnpm", "build"])) + generate_code([\ # presets for runtime PresetDefine("scripts/out/jsb.runtime.bundle.js", "", zero_terminated, AMDSourceTransformer()), diff --git a/package.json b/package.json new file mode 100644 index 00000000..1fb8fb32 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "@godot-js/editor", + "version": "1.0.0", + "private": true, + "type": "module", + "packageManager": "pnpm@10.11.0+sha1.4048eeefd564ff1ab248fac3e2854d38245fe2f1", + "scripts": { + "build": "pnpm -r build", + "changeset": "changeset", + "ci:should-publish": "node scripts/release/should-publish.js", + "ci:publish": "node scripts/release/publish.js", + "ci:version": "changeset version && node scripts/release/version.js" + }, + "devDependencies": { + "@changesets/cli": "^2.29.4" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..7435a3a2 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,853 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@changesets/cli': + specifier: ^2.29.4 + version: 2.29.4 + + scripts/jsb.editor: + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.17.57 + typescript: + specifier: ^5.5.2 + version: 5.8.3 + + scripts/jsb.runtime: + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.17.57 + typescript: + specifier: ^5.5.2 + version: 5.8.3 + + scripts/jsb.static: + devDependencies: + '@types/node': + specifier: ^20.11.30 + version: 20.17.57 + typescript: + specifier: ^5.5.2 + version: 5.8.3 + +packages: + + '@babel/runtime@7.27.4': + resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} + engines: {node: '>=6.9.0'} + + '@changesets/apply-release-plan@7.0.12': + resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + + '@changesets/assemble-release-plan@6.0.8': + resolution: {integrity: sha512-y8+8LvZCkKJdbUlpXFuqcavpzJR80PN0OIfn8HZdwK7Sh6MgLXm4hKY5vu6/NDoKp8lAlM4ERZCqRMLxP4m+MQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.29.4': + resolution: {integrity: sha512-VW30x9oiFp/un/80+5jLeWgEU6Btj8IqOgI+X/zAYu4usVOWXjPIK5jSSlt5jsCU7/6Z7AxEkarxBxGUqkAmNg==} + hasBin: true + + '@changesets/config@3.1.1': + resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-release-plan@4.0.12': + resolution: {integrity: sha512-KukdEgaafnyGryUwpHG2kZ7xJquOmWWWk5mmoeQaSvZTWH1DC5D/Sw6ClgGFYtQnOMSQhgoEbDxAbpIIayKH1g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.1': + resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.5': + resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@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'} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.17.57': + resolution: {integrity: sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + human-id@4.1.1: + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + 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'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + +snapshots: + + '@babel/runtime@7.27.4': {} + + '@changesets/apply-release-plan@7.0.12': + dependencies: + '@changesets/config': 3.1.1 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.2 + + '@changesets/assemble-release-plan@6.0.8': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.2 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.29.4': + dependencies: + '@changesets/apply-release-plan': 7.0.12 + '@changesets/assemble-release-plan': 6.0.8 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.12 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + mri: 1.2.0 + p-limit: 2.3.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.2 + spawndamnit: 3.0.1 + term-size: 2.2.1 + + '@changesets/config@3.1.1': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.3': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.2 + + '@changesets/get-release-plan@4.0.12': + dependencies: + '@changesets/assemble-release-plan': 6.0.8 + '@changesets/config': 3.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.1': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.5': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.1 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.1 + prettier: 2.8.8 + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.27.4 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.27.4 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@types/node@12.20.55': {} + + '@types/node@20.17.57': + dependencies: + undici-types: 6.19.8 + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-union@2.1.0: {} + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + chardet@0.7.0: {} + + ci-info@3.9.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + detect-indent@6.1.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + esprima@4.0.1: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-glob@3.3.3: + 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.8 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + graceful-fs@4.2.11: {} + + human-id@4.1.1: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-windows@1.0.2: {} + + isexe@2.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.startcase@4.4.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mri@1.2.0: {} + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.10 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + prettier@2.8.8: {} + + quansync@0.2.10: {} + + queue-microtask@1.2.3: {} + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + resolve-from@5.0.0: {} + + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safer-buffer@2.1.2: {} + + semver@7.7.2: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + sprintf-js@1.0.3: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + + term-size@2.2.1: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + typescript@5.8.3: {} + + undici-types@6.19.8: {} + + universalify@0.1.2: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..f54d3b2a --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - . + - scripts/* \ No newline at end of file diff --git a/scripts/jsb.editor/package-lock.json b/scripts/jsb.editor/package-lock.json deleted file mode 100644 index fee1d264..00000000 --- a/scripts/jsb.editor/package-lock.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "jsb.editor", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@types/node": "^20.11.30", - "typescript": "^5.5.2" - } - }, - "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - } - } -} diff --git a/scripts/jsb.editor/package.json b/scripts/jsb.editor/package.json index 61dfbc66..bc8cb850 100644 --- a/scripts/jsb.editor/package.json +++ b/scripts/jsb.editor/package.json @@ -1,4 +1,6 @@ { + "name": "@godot-js/jsb-editor", + "private": true, "scripts": { "build": "tsc" }, diff --git a/scripts/jsb.runtime/package-lock.json b/scripts/jsb.runtime/package-lock.json deleted file mode 100644 index e2779c7e..00000000 --- a/scripts/jsb.runtime/package-lock.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "jsb.runtime", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@types/node": "^20.11.30", - "typescript": "^5.5.2" - } - }, - "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - } - } -} diff --git a/scripts/jsb.runtime/package.json b/scripts/jsb.runtime/package.json index 61dfbc66..558bac08 100644 --- a/scripts/jsb.runtime/package.json +++ b/scripts/jsb.runtime/package.json @@ -1,4 +1,6 @@ { + "name": "@godot-js/jsb-runtime", + "private": true, "scripts": { "build": "tsc" }, diff --git a/scripts/jsb.static/package-lock.json b/scripts/jsb.static/package-lock.json deleted file mode 100644 index df7a4abc..00000000 --- a/scripts/jsb.static/package-lock.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "jsb.static", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@types/node": "^20.11.30", - "typescript": "^5.5.2" - } - }, - "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - } - } -} diff --git a/scripts/jsb.static/package.json b/scripts/jsb.static/package.json index 95ec22b1..08ab7fb4 100644 --- a/scripts/jsb.static/package.json +++ b/scripts/jsb.static/package.json @@ -1,4 +1,9 @@ { + "name": "@godot-js/jsb-static", + "private": true, + "scripts": { + "build": "tsc" + }, "devDependencies": { "@types/node": "^20.11.30", "typescript": "^5.5.2" diff --git a/scripts/out/jsb.editor.bundle.d.ts b/scripts/out/jsb.editor.bundle.d.ts deleted file mode 100644 index 9882241b..00000000 --- a/scripts/out/jsb.editor.bundle.d.ts +++ /dev/null @@ -1,235 +0,0 @@ -declare module "jsb.editor.codegen" { - import type { GArray, GDictionary, Node, PropertyInfo, Resource } from "godot"; - import type * as GodotJsb from "godot-jsb"; - export enum DescriptorType { - Godot = 0, - User = 1, - FunctionLiteral = 2, - ObjectLiteral = 3, - StringLiteral = 4, - NumericLiteral = 5, - BooleanLiteral = 6, - Union = 7, - Intersection = 8, - Conditional = 9, - Tuple = 10, - Infer = 11, - Mapped = 12, - Indexed = 13 - } - /** - * Reference to a built-in type, either declared in the 'godot' namespace, or available as part of the standard library. - */ - export type GodotTypeDescriptor = GDictionary<{ - type: DescriptorType.Godot; - name: string; - /** - * Generic arguments. - */ - arguments?: GArray; - }>; - /** - * Reference to a user defined type. A path must be specified so that the generated code is able to import the file - * where the type is declared/exported. - */ - export type UserTypeDescriptor = GDictionary<{ - type: DescriptorType.User; - /** - * res:// style path to the TypeScript module where this type is exported. - */ - resource: string; - /** - * Preferred type name to use when importing. - */ - name: string; - /** - * Named module export that is being imported. When omitted, the default export is imported. - */ - export?: string; - /** - * Generic arguments. - */ - arguments?: GArray; - }>; - export type GenericParameterDescriptor = GDictionary<{ - name: string; - extends?: TypeDescriptor; - default?: TypeDescriptor; - }>; - export type ParameterDescriptor = GDictionary<{ - name: string; - type: TypeDescriptor; - default?: TypeDescriptor; - }>; - export type FunctionLiteralTypeDescriptor = GDictionary<{ - type: DescriptorType.FunctionLiteral; - generics?: GArray; - parameters?: GArray; - returns?: TypeDescriptor; - }>; - export type ObjectLiteralTypeDescriptor = GDictionary<{ - type: DescriptorType.ObjectLiteral; - properties: GDictionary>>; - index?: GDictionary<{ - key: TypeDescriptor; - value: TypeDescriptor; - }>; - }>; - export type StringLiteralTypeDescriptor = GDictionary<{ - type: DescriptorType.StringLiteral; - value: string; - template?: boolean; - }>; - export type NumberLiteralTypeDescriptor = GDictionary<{ - type: DescriptorType.NumericLiteral; - value: number; - }>; - export type BooleanLiteralTypeDescriptor = GDictionary<{ - type: DescriptorType.BooleanLiteral; - value: boolean; - }>; - export type TupleElementDescriptor = GDictionary<{ - name?: string; - type: TypeDescriptor; - }>; - export type TupleTypeDescriptor = GDictionary<{ - type: DescriptorType.Tuple; - elements: GArray; - }>; - export type UnionTypeDescriptor = GDictionary<{ - type: DescriptorType.Union; - types: GArray; - }>; - export type IntersectionTypeDescriptor = GDictionary<{ - type: DescriptorType.Intersection; - types: GArray; - }>; - export type InferTypeDescriptor = GDictionary<{ - type: DescriptorType.Infer; - name: string; - }>; - export type ConditionalTypeDescriptor = GDictionary<{ - type: DescriptorType.Conditional; - check: TypeDescriptor; - extends: TypeDescriptor; - true: TypeDescriptor; - false: TypeDescriptor; - }>; - export type MappedTypeDescriptor = GDictionary<{ - type: DescriptorType.Mapped; - key: string; - in: TypeDescriptor; - as?: TypeDescriptor; - value: TypeDescriptor; - }>; - export type IndexedTypeDescriptor = GDictionary<{ - type: DescriptorType.Indexed; - base: TypeDescriptor; - index: TypeDescriptor; - }>; - export type TypeDescriptor = GodotTypeDescriptor | UserTypeDescriptor | FunctionLiteralTypeDescriptor | ObjectLiteralTypeDescriptor | StringLiteralTypeDescriptor | NumberLiteralTypeDescriptor | BooleanLiteralTypeDescriptor | TupleTypeDescriptor | UnionTypeDescriptor | IntersectionTypeDescriptor | InferTypeDescriptor | ConditionalTypeDescriptor | MappedTypeDescriptor | IndexedTypeDescriptor; - /** - * Codegen analogue of NodePathMap. - */ - export type NodeTypeDescriptorPathMap = GDictionary>>; - export enum CodeGenType { - ScriptNodeTypeDescriptor = 0, - ScriptResourceTypeDescriptor = 1 - } - /** - * Handle a NodeTypeDescriptorCodeGenRequest to overwrite the generated type for nodes using this script. - */ - export type ScriptNodeTypeDescriptorCodeGenRequest = GDictionary<{ - type: CodeGenType.ScriptNodeTypeDescriptor; - node: Node; - children: NodeTypeDescriptorPathMap; - }>; - /** - * Handle a ScriptResourceTypeDescriptorCodeGenRequest to overwrite the generated type for resources using this script. - */ - export type ScriptResourceTypeDescriptorCodeGenRequest = GDictionary<{ - type: CodeGenType.ScriptResourceTypeDescriptor; - resource: Resource; - }>; - export type CodeGenRequest = ScriptNodeTypeDescriptorCodeGenRequest | ScriptResourceTypeDescriptorCodeGenRequest; - /** - * You can manipulate GodotJS' codegen by exporting a function from your script/module called `codegen`. - */ - export type CodeGenHandler = (request: CodeGenRequest) => undefined | TypeDescriptor; - export class TypeDB { - singletons: { - [name: string]: GodotJsb.editor.SingletonInfo; - }; - classes: { - [name: string]: GodotJsb.editor.ClassInfo; - }; - primitive_types: { - [name: string]: GodotJsb.editor.PrimitiveClassInfo; - }; - globals: { - [name: string]: GodotJsb.editor.GlobalConstantInfo; - }; - utilities: { - [name: string]: GodotJsb.editor.MethodBind; - }; - class_docs: { - [name: string]: GodotJsb.editor.ClassDoc | false; - }; - constructor(); - find_doc(class_name: string): GodotJsb.editor.ClassDoc | undefined; - is_primitive_type(name: string): boolean; - is_valid_method_name(name: string): boolean; - make_classname(internal_class_name: string): string; - make_typename(info: PropertyInfo, used_as_input: boolean, non_nullable: boolean): string; - make_arg(info: PropertyInfo, optional?: boolean): string; - make_literal_value(value: GodotJsb.editor.DefaultArgumentInfo): string; - make_arg_default_value(method_info: GodotJsb.editor.MethodBind, index: number): string; - make_args(method_info: GodotJsb.editor.MethodBind): string; - make_return(method_info: GodotJsb.editor.MethodBind): string; - make_signal_type(method_info: GodotJsb.editor.MethodBind): string; - } - export class TSDCodeGen { - private _split_index; - private _outDir; - private _splitter; - private _types; - private _use_project_settings; - constructor(outDir: string, use_project_settings: boolean); - private make_path; - private new_splitter; - private split; - private cleanup; - has_class(name?: string): boolean; - emit(): Promise; - private emit_utility; - private emit_global; - private emit_aliases; - private emit_singleton; - private emit_godot_primitive; - private emit_godot_class; - } - export class SceneTSDCodeGen { - private _out_dir; - private _scene_paths; - private _types; - constructor(out_dir: string, scene_paths: string[]); - private make_scene_path; - emit(): Promise; - private emit_children_node_types; - private emit_scene_node_types; - } - export class ResourceTSDCodeGen { - private _out_dir; - private _resource_paths; - private _types; - constructor(out_dir: string, resource_paths: string[]); - private make_resource_path; - emit(): Promise; - private emit_resource_type; - } -} -declare module "jsb.editor.main" { - import { PackedStringArray } from "godot"; - export function auto_complete(pattern: string): PackedStringArray; - export function run_npm_install(): void; -} diff --git a/scripts/out/jsb.editor.bundle.js b/scripts/out/jsb.editor.bundle.js deleted file mode 100644 index 1d919edc..00000000 --- a/scripts/out/jsb.editor.bundle.js +++ /dev/null @@ -1,2285 +0,0 @@ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -define("jsb.editor.codegen", ["require", "exports"], function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.ResourceTSDCodeGen = exports.SceneTSDCodeGen = exports.TSDCodeGen = exports.TypeDB = exports.CodeGenType = exports.DescriptorType = void 0; - const godot = require("godot.lib.api"); - const jsb = godot.jsb; - const gd_to_string = godot.str; - const names = jsb.internal.names; - function camel_property_overrides(overrides) { - const get_member = jsb.internal.names.get_member; - return overrides && Object.fromEntries(Object.entries(overrides).map(([name, value]) => { - const camel_case_name = get_member(name); - return [ - camel_case_name, - Array.isArray(value) - ? value.map(line => line.replace(new RegExp(`${name}( *[<(:])`), `${camel_case_name}$1`)) - : value - ]; - })); - } - if (!jsb.TOOLS_ENABLED) { - throw new Error("codegen is only allowed in editor mode"); - } - const tab = " "; - const GodotAnyType = "GAny"; - function chain_mutators(...mutators) { - return function (line) { - return mutators.reduce((line, mutator) => mutator(line), line); - }; - } - function mutate_parameter_type(name, type) { - name = names.get_parameter(name); - return function (line) { - const replaced = line.replace(new RegExp(`([,(] *)${name.replace(/\./g, "\\.")}\\??: .+?( ?[,)/])`, "g"), `$1${name}: ${type}$2`); - if (replaced === line) { - throw new Error(`Failed to mutate "${name}" parameter's type: ${line}`); - } - return replaced; - }; - } - function mutate_return_type(type) { - return function (line) { - const replaced = line.replace(/: [^:]+$/g, `: ${type}`); - if (replaced === line) { - throw new Error(`Failed to mutate return type: ${line}`); - } - return replaced; - }; - } - function mutate_template(template) { - return function (line) { - const replaced = line.replace(/([^(]+)(<[^>]+> *)?\(/, `$1$2<${template}>(`); - if (replaced === line) { - throw new Error(`Failed to mutate template: ${line}`); - } - return replaced; - }; - } - const TypeMutations = { - AnimationLibrary: { - prelude: [ - `namespace __PathMappableDummyKeys { const AnimationLibrary: unique symbol }`, - ], - generic_parameters: { - AnimationName: { - extends: "string", - default: "string", - }, - }, - implements: [ - { - type: 'PathMappable', - generic_arguments: ['typeof __PathMappableDummyKeys.AnimationLibrary', 'Record'], - } - ], - intro: [ - "[__PathMappableDummyKeys.AnimationLibrary]: Record", - ], - property_overrides: { - add_animation: mutate_parameter_type("name", "AnimationName"), - remove_animation: mutate_parameter_type("name", "AnimationName"), - rename_animation: chain_mutators(mutate_parameter_type("name", "AnimationName"), mutate_parameter_type("newname", "AnimationName")), - has_animation: chain_mutators(mutate_parameter_type("name", "AnimationName")), - get_animation: mutate_parameter_type("name", "AnimationName"), - get_animation_list: mutate_return_type("GArray"), - animation_added: [`readonly ${names.get_member('animation_added')}: Signal<(name: StringName) => void>`], - animation_removed: [`readonly ${names.get_member('animation_removed')}: Signal<(name: StringName) => void>`], - animation_renamed: [`readonly ${names.get_member('animation_renamed')}: Signal<(name: StringName, ${names.get_parameter('to_name')}) => void>`], - animation_changed: [`readonly ${names.get_member('animation_changed')}: Signal<(name: StringName) => void>`], - }, - }, - AnimationMixer: { - prelude: [ - `namespace __PathMappableDummyKeys { const AnimationMixer: unique symbol }`, - ], - generic_parameters: { - NodeMap: { - extends: "NodePathMap", - default: "any", - }, - LibraryMap: { - extends: "AnimationMixerPathMap", - default: "any", - }, - }, - super_generic_arguments: ["NodeMap"], - implements: [ - { - type: 'PathMappable', - generic_arguments: ['typeof __PathMappableDummyKeys.AnimationMixer', 'LibraryMap'], - } - ], - intro: [ - "[__PathMappableDummyKeys.AnimationMixer]: LibraryMap", - ], - property_overrides: { - add_animation_library: chain_mutators(mutate_template("Name extends keyof LibraryMap"), mutate_parameter_type("name", "Name"), mutate_parameter_type("library", "LibraryMap[Name]")), - remove_animation_library: chain_mutators(mutate_template("Name extends keyof LibraryMap"), mutate_parameter_type("name", "Name")), - rename_animation_library: chain_mutators(mutate_template("FromName extends keyof LibraryMap, ToName extends ExtractValueKeys"), mutate_parameter_type("name", "FromName"), mutate_parameter_type("newname", "ToName")), - has_animation_library: chain_mutators(mutate_template("Name extends keyof LibraryMap"), mutate_parameter_type("name", "Name")), - get_animation_library: chain_mutators(mutate_template("Name extends keyof LibraryMap"), mutate_parameter_type("name", "Name"), mutate_return_type("LibraryMap[Name]")), - get_animation_library_list: mutate_return_type("GArray"), - has_animation: chain_mutators(mutate_template("Name extends StaticAnimationMixerPath"), mutate_parameter_type("name", "Name")), - get_animation: chain_mutators(mutate_template("Name extends StaticAnimationMixerPath"), mutate_parameter_type("name", "Name"), mutate_return_type("ResolveAnimationMixerPath")), - }, - }, - AnimationPlayer: { - property_overrides: { - animation_set_next: chain_mutators(mutate_parameter_type("animation_from", "StaticAnimationMixerPath"), mutate_parameter_type("animation_to", "StaticAnimationMixerPath")), - animation_get_next: chain_mutators(mutate_parameter_type("animation_from", "StaticAnimationMixerPath"), mutate_return_type("StaticAnimationMixerPath")), - set_blend_time: chain_mutators(mutate_parameter_type("animation_from", "StaticAnimationMixerPath"), mutate_parameter_type("animation_to", "StaticAnimationMixerPath")), - get_blend_time: chain_mutators(mutate_parameter_type("animation_from", "StaticAnimationMixerPath"), mutate_parameter_type("animation_to", "StaticAnimationMixerPath")), - play: mutate_parameter_type("name", "StaticAnimationMixerPath"), - play_section: mutate_parameter_type("name", "StaticAnimationMixerPath"), - play_backwards: mutate_parameter_type("name", "StaticAnimationMixerPath"), - play_section_with_markers_backwards: mutate_parameter_type("name", "StaticAnimationMixerPath"), - play_section_backwards: mutate_parameter_type("name", "StaticAnimationMixerPath"), - play_with_capture: mutate_parameter_type("name", "StaticAnimationMixerPath"), - queue: mutate_parameter_type("name", "StaticAnimationMixerPath"), - current_animation: [ - `get ${names.get_member('current_animation')}(): StaticAnimationMixerPath`, - `set ${names.get_member('current_animation')}(value: StaticAnimationMixerPath)`, - ], - assigned_animation: [ - `get ${names.get_member('assigned_animation')}(): StaticAnimationMixerPath`, - `set ${names.get_member('assigned_animation')}(value: StaticAnimationMixerPath)`, - ], - autoplay: [ - `get autoplay(): StaticAnimationMixerPath`, - `set autoplay(value: StaticAnimationMixerPath)`, - ], - current_animation_changed: [`readonly ${names.get_member('current_animation_changed')}: Signal<(name: StaticAnimationMixerPath) => void>`], - animation_changed: [`readonly ${names.get_member('current_animation_changed')}: Signal<(${names.get_parameter('old_name')}: StaticAnimationMixerPath, ${names.get_parameter('new_name')}: StaticAnimationMixerPath) => void>`], - }, - }, - Callable: { - intro: [ - "/**", - " * Create godot Callable without a bound object.", - " */", - "static create(fn: F): Callable", - "/**", - " * Create godot Callable with a bound object `self`.", - " */", - "static create any>(self: S, fn: F): Callable", - ], - generic_parameters: { - T: { - extends: "Function", - default: "Function", - }, - }, - property_overrides: { - bind: chain_mutators(mutate_template("A extends any[]"), mutate_parameter_type("...varargs", "A"), mutate_return_type("Callable>")), - call: ["call: T"], - }, - }, - GArray: { - generic_parameters: { - T: { - default: GodotAnyType, - }, - }, - intro: [ - "/** Builder function that returns a GArray populated with elements from a JS array. */", - "static create(elements: [T] extends [GArray] ? Array> : Array>):", - " [T] extends [GArray]", - " ? [GValueWrap] extends [never]", - " ? never", - " : GArray>", - " : [GValueWrap] extends [never]", - " ? never", - " : GArray>", - "[Symbol.iterator](): IteratorObject", - "/** Returns a Proxy that targets this GArray but behaves similar to a JavaScript array. */", - "proxy(): Write extends true ? GArrayProxy : GArrayReadProxy", - "", - `${names.get_member("set_indexed")}(index: number, value: T): void`, - `${names.get_member("get_indexed")}(index: number): T`, - ], - property_overrides: { - set: mutate_parameter_type("value", "T"), - push_back: mutate_parameter_type("value", "T"), - push_front: mutate_parameter_type("value", "T"), - append: mutate_parameter_type("value", "T"), - insert: mutate_parameter_type("value", "T"), - fill: mutate_parameter_type("value", "T"), - erase: mutate_parameter_type("value", "T"), - count: mutate_parameter_type("value", "T"), - has: mutate_parameter_type("value", "T"), - bsearch: mutate_parameter_type("value", "T"), - bsearch_custom: chain_mutators(mutate_parameter_type("value", "T"), mutate_parameter_type("func", "Callable2")), - find: mutate_parameter_type("what", "T"), - rfind: mutate_parameter_type("what", "T"), - get: mutate_return_type("T"), - front: mutate_return_type("T"), - back: mutate_return_type("T"), - pick_random: mutate_return_type("T"), - pop_back: mutate_return_type("T"), - pop_front: mutate_return_type("T"), - pop_at: mutate_return_type("T"), - min: mutate_return_type("T"), - max: mutate_return_type("T"), - sort_custom: mutate_parameter_type("func", "Callable2"), - all: mutate_parameter_type("method", "Callable1"), - any: mutate_parameter_type("method", "Callable1"), - filter: chain_mutators(mutate_parameter_type("method", "Callable1"), mutate_return_type("GArray")), - map: chain_mutators(mutate_parameter_type("method", "Callable1"), mutate_return_type("GArray"), mutate_template("U")), - append_array: mutate_parameter_type("array", "GArray"), - duplicate: mutate_return_type("GArray"), - slice: mutate_return_type("GArray"), - }, - }, - GDictionary: { - generic_parameters: { - T: { - default: "Record", - }, - }, - intro: [ - "/** Builder function that returns a GDictionary with properties populated from a source JS object. */", - "static create(properties: T extends GDictionary ? GDictionaryProxy : GDictionaryProxy): T extends GDictionary ? GValueWrap : GValueWrap", - "[Symbol.iterator](): IteratorObject<{ key: any, value: any }>", - "/** Returns a Proxy that targets this GDictionary but behaves similar to a regular JavaScript object. Values are exposed as enumerable properties, so Object.keys(), Object.entries() etc. will work. */", - "proxy(): Write extends true ? GDictionaryProxy : GDictionaryReadProxy", - "", - `${names.get_member("set_keyed")}(key: K, value: T[K]): void`, - `${names.get_member("get_keyed")}(key: K): T[K]`, - ], - property_overrides: { - assign: mutate_parameter_type("dictionary", "T"), - merge: mutate_parameter_type("dictionary", "T"), - merged: chain_mutators(mutate_parameter_type("dictionary", "GDictionary"), mutate_return_type("GDictionary"), mutate_template("U")), - has: mutate_parameter_type("key", "keyof T"), - has_all: mutate_parameter_type("keys", "GArray"), - find_key: chain_mutators(mutate_parameter_type("value", "T[keyof T]"), mutate_return_type("keyof T")), // This can be typed more accurately with a mapped type, but it seems excessive. - erase: mutate_parameter_type("key", "keyof T"), - keys: mutate_return_type("Array"), - values: mutate_return_type("GArray"), - duplicate: mutate_return_type("GDictionary"), - get: chain_mutators(mutate_parameter_type("key", "K"), mutate_return_type("T[K]"), mutate_template("K extends keyof T")), - get_or_add: chain_mutators(mutate_parameter_type("key", "K"), mutate_parameter_type("default_", "T[K]"), mutate_template("K extends keyof T")), - set: chain_mutators(mutate_parameter_type("key", "K"), mutate_parameter_type("value", "T[K]"), mutate_template("K extends keyof T")), - } - }, - Input: { - property_overrides: { - is_action_pressed: mutate_parameter_type('action', 'InputActionName'), - is_action_just_pressed: mutate_parameter_type('action', 'InputActionName'), - is_action_just_released: mutate_parameter_type('action', 'InputActionName'), - get_action_strength: mutate_parameter_type('action', 'InputActionName'), - get_action_raw_strength: mutate_parameter_type('action', 'InputActionName'), - get_axis: chain_mutators(mutate_parameter_type('negative_action', 'InputActionName'), mutate_parameter_type('positive_action', 'InputActionName')), - get_vector: chain_mutators(mutate_parameter_type('negative_x', 'InputActionName'), mutate_parameter_type('positive_x', 'InputActionName'), mutate_parameter_type('negative_y', 'InputActionName'), mutate_parameter_type('positive_y', 'InputActionName')), - action_press: mutate_parameter_type('action', 'InputActionName'), - action_release: mutate_parameter_type('action', 'InputActionName'), - }, - }, - InputEvent: { - property_overrides: { - is_action: mutate_parameter_type('action', 'InputActionName'), - is_action_pressed: mutate_parameter_type('action', 'InputActionName'), - is_action_released: mutate_parameter_type('action', 'InputActionName'), - get_action_strength: mutate_parameter_type('action', 'InputActionName'), - }, - }, - Node: { - prelude: [ - `namespace __PathMappableDummyKeys { const Node: unique symbol }`, - ], - intro: [ - "[__PathMappableDummyKeys.Node]: Map", - ], - generic_parameters: { - Map: { - extends: "NodePathMap", - default: "any", - }, - }, - implements: [ - { - type: 'PathMappable', - generic_arguments: ['typeof __PathMappableDummyKeys.Node', 'Map'], - } - ], - property_overrides: { - get_node: ["get_node, Default = never>(path: Path): ResolveNodePath"], - get_node_or_null: [ - "get_node_or_null, Default = never>(path: Path): null | ResolveNodePath", - "get_node_or_null(path: NodePath | string): null | Node", - ], - validate_property: mutate_parameter_type("property", "GDictionary"), - }, - }, - PackedByteArray: { - intro: [ - "/** [jsb utility method] Converts a PackedByteArray to a JavaScript ArrayBuffer. */", - `${names.get_member("to_array_buffer")}(): ArrayBuffer`, - ], - }, - PackedScene: { - generic_parameters: { - T: { - extends: "Node", - default: "Node", - }, - }, - property_overrides: { - pack: mutate_parameter_type("path", "T"), - instantiate: mutate_return_type("T"), - }, - }, - ResourceLoader: { - property_overrides: { - load: [ - `static load(path: Path, ${names.get_parameter("type_hint")}?: string /* = "" */, ${names.get_parameter("cache_mode")}?: ResourceLoader.CacheMode /* = 1 */): ResourceTypes[Path]`, - `static load(path: string, ${names.get_parameter("type_hint")}?: string /* = "" */, ${names.get_parameter("cache_mode")}?: ResourceLoader.CacheMode /* = 1 */): Resource`, - ], - load_threaded_get: [ - `static load_threaded_get(path: Path): ResourceTypes[Path]`, - "static load_threaded_get(path: string): Resource", - ], - }, - }, - SceneTree: { - property_overrides: { - get_processed_tweens: mutate_return_type("GArray"), - get_nodes_in_group: mutate_return_type("GArray"), // TODO: Codegen for group names, - }, - }, - Signal: { - intro: [ - `${names.get_member("as_promise")}(): Parameters extends [] ? Promise : Parameters extends [infer R] ? Promise : Promise>`, - ], - generic_parameters: { - T: { - extends: "(...args: any[]) => void", - default: "(...args: any[]) => void", - }, - }, - property_overrides: { - connect: mutate_parameter_type("callable", "Callable"), - disconnect: mutate_parameter_type("callable", "Callable"), - is_connected: mutate_parameter_type("callable", "Callable"), - emit: ["emit: T"], - } - }, - }; - const InheritedTypeMutations = { - AnimationMixer: { - generic_parameters: { - NodeMap: { - extends: "NodePathMap", - default: "any", - }, - LibraryMap: { - extends: "AnimationMixerPathMap", - default: "any", - }, - }, - super_generic_arguments: ["NodeMap", "LibraryMap"], - }, - Node: { - generic_parameters: { - Map: { - extends: "NodePathMap", - default: "any", - }, - }, - super_generic_arguments: ["Map"], - }, - }; - function is_primitive_class_info(cls) { - return "type" in cls; - } - function class_type_mutation(cls) { - const intro = []; - if (is_primitive_class_info(cls) && typeof cls.element_type !== "undefined") { - const element_type_name = get_primitive_type_name(cls.element_type); - intro.push(`set_indexed(index: number, value: ${element_type_name}): void`); - intro.push(`get_indexed(index: number): ${element_type_name}`); - } - if (is_primitive_class_info(cls) && cls.is_keyed) { - intro.push("set_keyed(index: any, value: any): void"); - intro.push("get_keyed(index: any): any"); - } - return { - intro, - }; - } - function merge_type_mutations(base, overrides) { - return Object.assign(Object.assign(Object.assign({}, base), overrides), { property_overrides: Object.assign(Object.assign({}, base.property_overrides), overrides.property_overrides) }); - } - function get_type_mutation(name, classes = {}) { - var _a; - const class_info = classes[name]; - const ancestor_names = []; - for (let ancestor_name = class_info === null || class_info === void 0 ? void 0 : class_info.super; ancestor_name; ancestor_name = (_a = classes[ancestor_name]) === null || _a === void 0 ? void 0 : _a.super) { - ancestor_names.push(ancestor_name); - } - let type_mutation = class_info ? class_type_mutation(class_info) : {}; - for (let i = ancestor_names.length - 1; i >= 0; i--) { - const ancestor_name = ancestor_names[i]; - if (InheritedTypeMutations[ancestor_name]) { - type_mutation = merge_type_mutations(type_mutation, InheritedTypeMutations[ancestor_name]); - } - } - if (TypeMutations[name]) { - type_mutation = merge_type_mutations(type_mutation, TypeMutations[name]); - } - return type_mutation; - } - function frame_step() { - return new Promise((resolve, reject) => { - setTimeout(() => { - resolve(); - }, 0); - }); - } - function toast(msg) { - let helper = godot.GodotJSEditorHelper; - helper.show_toast(msg, 0); // 0: info, 1: warning, 2: error - } - class CodegenTasks { - constructor(name) { - this.tasks = []; - this._name = name; - } - add_task(name, func) { - this.tasks.push({ name: name, execute: func }); - } - submit() { - return __awaiter(this, arguments, void 0, function* (withToast = true) { - const EditorProgress = godot.GodotJSEditorProgress; - const progress = new EditorProgress(); - let force_wait = 24; - progress.init(`codegen-${this._name}`, `Generating ${this._name}`, this.tasks.length); - try { - for (let i = 0; i < this.tasks.length; ++i) { - const task = this.tasks[i]; - const result = task.execute(); - if (typeof result === "object" && result instanceof Promise) { - progress.set_state_name(task.name); - progress.set_current(i); - yield result; - } - else { - if (!(i % force_wait)) { - progress.set_state_name(task.name); - progress.set_current(i); - yield frame_step(); - } - } - } - progress.finish(); - if (withToast) { - toast(`${this._name} generated successfully`); - } - } - catch (e) { - console.error(`CodegenTask ${this._name} error:`, e); - toast(`${this._name} failed!`); - progress.finish(); - } - }); - } - } - const PredefinedLines = [ - "type byte = number", - "type int32 = number", - "type int64 = number /* || bigint */", - "type float32 = number", - "type float64 = number", - "type StringName = string", - "type unresolved = any", - ]; - const KeywordReplacement = { - ["default"]: "default_", - ["let"]: "let_", - ["var"]: "var_", - ["const"]: "const_", - ["of"]: "of_", - ["for"]: "for_", - ["in"]: "in_", - ["out"]: "out_", - ["with"]: "with_", - ["break"]: "break_", - ["else"]: "else_", - ["enum"]: "enum_", - ["class"]: "class_", - ["string"]: "string_", - ["Symbol"]: "Symbol_", - ["typeof"]: "typeof_", - ["arguments"]: "arguments_", - ["function"]: "function_", - // a special item which used as the name of variadic arguments placement - ["varargs"]: "varargs_", - }; - const PrimitiveTypeNames = { - [godot.Variant.Type.TYPE_NIL]: "any", - [godot.Variant.Type.TYPE_BOOL]: "boolean", - [godot.Variant.Type.TYPE_INT]: "int64", - [godot.Variant.Type.TYPE_FLOAT]: "float64", - [godot.Variant.Type.TYPE_STRING]: "string", - }; - const RemapTypes = { - ["bool"]: "boolean", - }; - const IgnoredTypes = new Set([ - "IPUnix", - "ScriptEditorDebugger", - "Thread", - "Semaphore", - // - // "GodotNavigationServer2D", - // "GodotPhysicsServer2D", - // "GodotPhysicsServer3D", - // "PhysicsServer2DExtension", - // "PhysicsServer3DExtension", - // GodotJS related clases - "GodotJSEditorPlugin", - "GodotJSExportPlugin", - "GodotJSREPL", - "GodotJSScript", - "GodotJSEditorHelper", - "GodotJSEditorProgress", - // GDScript related classes - "GDScript", - "GDScriptEditorTranslationParserPlugin", - "GDScriptNativeClass", - "GDScriptSyntaxHighlighter", - ]); - const GlobalUtilityFuncs = [ - { - description: "shorthand for getting project settings", - method: "function GLOBAL_GET(entry_path: StringName): any" - }, - { - description: [ - "shorthand for getting editor settings", - "NOTE: calling before EditorSettings created will cause null reference exception." - ], - method: "function EDITOR_GET(entry_path: StringName): any" - } - ]; - const PrimitiveTypesSet = (function () { - let set = new Set(); - for (let name in godot.Variant.Type) { - // avoid babbling error messages in `type_string` call - if (godot.Variant.Type[name] === godot.Variant.Type.TYPE_MAX) - continue; - // use the original type name of Variant.Type, - // because this set is used with type name from the original godot class info (PropertyInfo) - let str = godot.type_string(godot.Variant.Type[name]); - if (str.length != 0) { - set.add(str); - } - } - return set; - })(); - function get_primitive_type_name(type) { - const primitive_name = PrimitiveTypeNames[type]; - if (typeof primitive_name !== "undefined") { - return primitive_name; - } - return jsb.internal.names.get_variant_type(type); - } - function get_js_array_type_name(element_type_name) { - if (typeof element_type_name === "undefined" || element_type_name.length == 0) - return ""; - // avoid using Array due to the naming conflicts between Godot and JavaScript builtin types - // return `Array<${element_type_name}>`; - return `${element_type_name}[]`; - } - function join_type_name(...args) { - return args.filter(value => typeof value === "string" && value.length != 0).join(" | "); - } - function get_primitive_type_name_as_input(type) { - const primitive_name = get_primitive_type_name(type); - switch (type) { - case godot.Variant.Type.TYPE_PACKED_COLOR_ARRAY: return join_type_name(primitive_name, get_js_array_type_name(get_primitive_type_name(godot.Variant.Type.TYPE_COLOR))); - case godot.Variant.Type.TYPE_PACKED_VECTOR2_ARRAY: return join_type_name(primitive_name, get_js_array_type_name(get_primitive_type_name(godot.Variant.Type.TYPE_VECTOR2))); - case godot.Variant.Type.TYPE_PACKED_VECTOR3_ARRAY: return join_type_name(primitive_name, get_js_array_type_name(get_primitive_type_name(godot.Variant.Type.TYPE_VECTOR3))); - case godot.Variant.Type.TYPE_PACKED_STRING_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("string")); - case godot.Variant.Type.TYPE_PACKED_FLOAT32_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("float32")); - case godot.Variant.Type.TYPE_PACKED_FLOAT64_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("float64")); - case godot.Variant.Type.TYPE_PACKED_INT32_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("int32")); - case godot.Variant.Type.TYPE_PACKED_INT64_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("int64")); - case godot.Variant.Type.TYPE_PACKED_BYTE_ARRAY: return join_type_name(primitive_name, get_js_array_type_name("byte"), "ArrayBuffer"); - case godot.Variant.Type.TYPE_NODE_PATH: return join_type_name(primitive_name, "string"); - default: return primitive_name; - } - } - function replace_var_name(name) { - const rep = KeywordReplacement[name]; - return typeof rep !== "undefined" ? rep : name; - } - const needs_quotes_regex = /^(?![$_])[^\w$]|[^\w$]/; - const quoted_escape_map = { - '"': '\\"', - '\\': '\\\\', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t' - }; - function name_string(name) { - if (!KeywordReplacement[name] && !name.match(needs_quotes_regex) && name.length > 0) { - return name; - } - return `"${name.replace(/["\\\n\r\t]/g, match => quoted_escape_map[match])}"`; - } - class AbstractWriter { - get class_doc() { return undefined; } - constructor() { } - enum_(name) { - if (name.indexOf('.') >= 0) { - let layers = name.split('.'); - name = layers.splice(layers.length - 1)[0]; - return new EnumWriter(this.namespace_(layers.join("."), this.class_doc), name).auto(); - } - return new EnumWriter(this, name); - } - namespace_(name, class_doc) { - return new NamespaceWriter(this, name, class_doc); - } - interface_(name, generic_parameters, super_, super_generic_arguments, intro, property_overrides) { - return new InterfaceWriter(this, name, generic_parameters, super_, super_generic_arguments, intro, property_overrides); - } - class_(name, generic_parameters, super_, super_generic_arguments, interfaces, property_overrides, intro, prelude, singleton_mode, class_doc) { - return new ClassWriter(this, name, generic_parameters, super_, super_generic_arguments, interfaces, intro, prelude, property_overrides, singleton_mode, class_doc); - } - generic_(name) { - return new GenericWriter(this, name); - } - property_(name) { - return new PropertyWriter(this, name); - } - object_(intro, property_overrides) { - return new ObjectWriter(this, intro, property_overrides); - } - // singleton_(info: GodotJsb.editor.SingletonInfo): SingletonWriter { - // return new SingletonWriter(this, info); - // } - line_comment_(text) { - this.line(`// ${text}`); - } - append(newLine, text) { - if (newLine) { - this.line(text); - } - else { - this.concatenate(text); - } - } - } - class Description { - get text() { return this.result; } - get length() { return this.result.length; } - constructor(result) { - this.result = result; - } - static forAny(description) { - return new Description(description || ""); - } - /** a link to godot official docs website is added in comment for class description */ - static forClass(types, class_name) { - let class_doc = types.find_doc(class_name); - let description = class_doc === null || class_doc === void 0 ? void 0 : class_doc.brief_description; - let link = jsb.editor.VERSION_DOCS_URL.length != 0 && !!class_doc && class_name.length != 0 ? `\n@link ${jsb.editor.VERSION_DOCS_URL}/classes/class_${class_name.toLowerCase()}.html` : ""; - return new Description((description || "") + link); - } - } - class DocCommentHelper { - static get_leading_tab(text) { - let tab = ""; - for (let i = 0; i < text.length; ++i) { - if (text.charAt(i) != "\t") { - break; - } - tab += "\t"; - } - return tab; - } - static trim_leading_tab(text, leading_tab) { - if (leading_tab.length != 0 && text.startsWith(leading_tab)) - return text.substring(leading_tab.length); - return text; - } - static is_empty_or_whitespace(text) { - for (let i = 0; i < text.length; ++i) { - let c = text.charCodeAt(i); - if (c != 32 && c != 9) { - return false; - } - } - return true; - } - // get rid of all `codeblocks` since the `codeblocks` elements are too long to read - static get_simplified_description(text) { - text = this.remove_markup_content(text, 0, "[codeblocks]", "[/codeblocks]"); - text = this.remove_markup_content(text, 0, "[codeblock]", "[/codeblock]"); - text = this.replace_markup_content(text, 0, "[code]", "`"); - text = this.replace_markup_content(text, 0, "[/code]", "`"); - text = this.replace_markup_content(text, 0, "[b]Note:[/b]", " \n**Note:**"); - text = this.replace_markup_content(text, 0, "[b]", "**"); - text = this.replace_markup_content(text, 0, "[/b]", "**"); - text = this.replace_markup_content(text, 0, "[i]", " *"); - text = this.replace_markup_content(text, 0, "[/i]", "* "); - if (jsb.editor.VERSION_DOCS_URL.length != 0) { - text = this.replace_markup_content(text, 0, "$DOCS_URL", jsb.editor.VERSION_DOCS_URL); - } - return text; - } - static replace_markup_content(text, from_pos, markup, rep) { - let index = text.indexOf(markup, from_pos); - if (index >= 0) { - return this.replace_markup_content(text.substring(0, index) + rep + text.substring(index + markup.length), index + rep.length, markup, rep); - } - return text; - } - static remove_markup_content(text, from_pos, markup_begin, markup_end) { - let start = text.indexOf(markup_begin, from_pos); - if (start >= 0) { - let end = text.indexOf(markup_end, from_pos); - if (end >= 0) { - return this.remove_markup_content(text.substring(0, start) + text.substring(end + markup_end.length), start, markup_begin, markup_end); - } - } - return text; - } - static write(writer, description, newline) { - if (typeof description === "undefined" || description.length == 0) - return false; - let lines = Array.isArray(description) - ? description - : this.get_simplified_description(typeof description === "string" ? Description.forAny(description).text : description.text).replace("\r\n", "\n").split("\n"); - if (lines.length > 0 && this.is_empty_or_whitespace(lines[0])) - lines.splice(0, 1); - if (lines.length > 0 && this.is_empty_or_whitespace(lines[lines.length - 1])) - lines.splice(lines.length - 1, 1); - if (lines.length == 0) - return false; - let leading_tab = this.get_leading_tab(lines[0]); - lines = lines.map(value => this.trim_leading_tab(value, leading_tab)); - if (newline) - writer.line(""); - if (lines.length == 1) { - writer.line(`/** ${lines[0]} */`); - return true; - } - for (let i = 0; i < lines.length; ++i) { - // additional tailing whitespaces for better text format rendered - if (i == 0) { - writer.line(`/** ${lines[i]} `); - } - else { - writer.line(` * ${lines[i]} `); - } - } - writer.line(` */`); - return true; - } - } - class BufferingWriter extends AbstractWriter { - constructor(base, concatenate_first_line = false) { - super(); - this._size = 0; - this._concatenate_first_line = false; - this._base = base; - this._lines = []; - this._concatenate_first_line = concatenate_first_line; - } - get size() { return this._size; } - get lineno() { return this._lines.length; } - get types() { return this._base.types; } - add_import(preferred_name, script_resource, export_name = "default") { - this._base.add_import(preferred_name, script_resource, export_name); - } - get_imports() { - return this._base.get_imports(); - } - resolve_import(script_resource) { - return this._base.resolve_import(script_resource); - } - line(text) { - this._lines.push(text); - this._size += this.bufferedSize(text, this._lines.length > 1 || !this._concatenate_first_line); - } - concatenate(text) { - if (this._lines.length > 0) { - this._lines[this._lines.length - 1] += text; - this._size += this.bufferedSize(text, false); - } - else { - this.line(text); - } - } - } - class IndentWriter extends BufferingWriter { - finish() { - const lines = this._lines; - for (let i = 0, l = lines.length; i < l; i++) { - if (i === 0 && this._concatenate_first_line) { - this._base.concatenate(lines[i]); - } - else { - this._base.line(tab + lines[i]); - } - } - } - bufferedSize(text, newLine) { - return text.length + (newLine ? tab.length + 1 : 0); - } - } - var DescriptorType; - (function (DescriptorType) { - DescriptorType[DescriptorType["Godot"] = 0] = "Godot"; - DescriptorType[DescriptorType["User"] = 1] = "User"; - DescriptorType[DescriptorType["FunctionLiteral"] = 2] = "FunctionLiteral"; - DescriptorType[DescriptorType["ObjectLiteral"] = 3] = "ObjectLiteral"; - DescriptorType[DescriptorType["StringLiteral"] = 4] = "StringLiteral"; - DescriptorType[DescriptorType["NumericLiteral"] = 5] = "NumericLiteral"; - DescriptorType[DescriptorType["BooleanLiteral"] = 6] = "BooleanLiteral"; - DescriptorType[DescriptorType["Union"] = 7] = "Union"; - DescriptorType[DescriptorType["Intersection"] = 8] = "Intersection"; - DescriptorType[DescriptorType["Conditional"] = 9] = "Conditional"; - DescriptorType[DescriptorType["Tuple"] = 10] = "Tuple"; - DescriptorType[DescriptorType["Infer"] = 11] = "Infer"; - DescriptorType[DescriptorType["Mapped"] = 12] = "Mapped"; - DescriptorType[DescriptorType["Indexed"] = 13] = "Indexed"; - })(DescriptorType || (exports.DescriptorType = DescriptorType = {})); - var CodeGenType; - (function (CodeGenType) { - CodeGenType[CodeGenType["ScriptNodeTypeDescriptor"] = 0] = "ScriptNodeTypeDescriptor"; - CodeGenType[CodeGenType["ScriptResourceTypeDescriptor"] = 1] = "ScriptResourceTypeDescriptor"; - })(CodeGenType || (exports.CodeGenType = CodeGenType = {})); - class TypeDescriptorWriter extends BufferingWriter { - bufferedSize(text, newLine) { - return text.length + (newLine ? 1 : 0); - } - finish() { - const lines = this._lines; - for (let i = 0, l = lines.length; i < l; i++) { - if (i === 0 && this._concatenate_first_line) { - this._base.concatenate(lines[i]); - } - else { - this._base.line(lines[i]); - } - } - } - serialize_type_descriptor(descriptor) { - var _a, _b, _c, _d, _e, _f; - switch (descriptor.type) { - case DescriptorType.Godot: { - if (descriptor.arguments) { - this.line(`${descriptor.name}<`); - const multiline = descriptor.arguments.length > 1 - || ((_a = descriptor.arguments[0]) === null || _a === void 0 ? void 0 : _a.type) === DescriptorType.Union - || ((_b = descriptor.arguments[0]) === null || _b === void 0 ? void 0 : _b.type) === DescriptorType.Intersection; - const indent = multiline ? new IndentWriter(this) : null; - const args = new TypeDescriptorWriter(indent !== null && indent !== void 0 ? indent : this, !multiline); - descriptor.arguments.forEach((arg, index) => { - if (index > 0) { - args.concatenate(", "); - } - args.serialize_type_descriptor(arg); - }); - args.finish(); - indent === null || indent === void 0 ? void 0 : indent.finish(); - this.append(multiline, `>`); - } - else { - this.line(descriptor.name); - } - break; - } - case DescriptorType.User: { - if (descriptor.arguments) { - this.line(`${descriptor.name}<`); - const multiline = descriptor.arguments.length > 1 - || ((_c = descriptor.arguments[0]) === null || _c === void 0 ? void 0 : _c.type) === DescriptorType.Union - || ((_d = descriptor.arguments[0]) === null || _d === void 0 ? void 0 : _d.type) === DescriptorType.Intersection; - const indent = multiline ? new IndentWriter(this) : null; - const args = new TypeDescriptorWriter(indent !== null && indent !== void 0 ? indent : this, !multiline); - descriptor.arguments.forEach((arg, index) => { - if (index > 0) { - args.concatenate(", "); - } - args.serialize_type_descriptor(arg); - }); - args.finish(); - indent === null || indent === void 0 ? void 0 : indent.finish(); - this.append(multiline, `>`); - } - else { - this.line(descriptor.name); - } - this.add_import(descriptor.name, descriptor.resource, descriptor.export); - break; - } - case DescriptorType.FunctionLiteral: { - const generic_count = descriptor.generics ? Object.entries(descriptor.generics).length : 0; - if (generic_count > 0) { - descriptor.generics.forEach((generic, index) => { - if (index > 0) { - this.concatenate(", "); - this.line(generic.name); - } - else { - this.append(generic_count === 1, generic.name); - } - if (generic.extends) { - this.concatenate(" extends "); - const extends_writer = new TypeDescriptorWriter(this, true); - extends_writer.serialize_type_descriptor(generic.extends); - extends_writer.finish(); - } - if (generic.default) { - this.concatenate(" = "); - const default_writer = new TypeDescriptorWriter(this, true); - default_writer.serialize_type_descriptor(generic.default); - default_writer.finish(); - } - }); - } - this.append(generic_count == 0, `(`); - const multiline = ((_f = (_e = descriptor.parameters) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 1; - if (descriptor.parameters) { - descriptor.parameters.forEach((param, index) => { - if (index > 0) { - this.concatenate(", "); - } - this.line(`${param.name}: `); - const param_writer = new TypeDescriptorWriter(this, !multiline); - param_writer.serialize_type_descriptor(param.type); - param_writer.finish(); - if (param.default) { - this.concatenate(` = `); - const default_writer = new TypeDescriptorWriter(this, true); - default_writer.serialize_type_descriptor(param.default); - default_writer.finish(); - } - }); - } - this.append(multiline, ") => "); - if (descriptor.returns) { - const return_writer = new TypeDescriptorWriter(this, true); - return_writer.serialize_type_descriptor(descriptor.returns); - return_writer.finish(); - } - else { - this.concatenate("void"); - } - break; - } - case DescriptorType.ObjectLiteral: { - const properties = Object.entries(descriptor.properties); - if (properties.length === 0 && !descriptor.index) { - this.line("{}"); - break; - } - this.line("{"); - const indent = new IndentWriter(this); - properties.forEach(([key, value]) => { - if (!value) { - return; - } - indent.line(`${name_string(key)}: `); - const prop_writer = new TypeDescriptorWriter(indent, true); - prop_writer.serialize_type_descriptor(value); - prop_writer.finish(); - indent.concatenate(";"); - }); - if (descriptor.index) { - indent.line("[key: "); - const key_writer = new TypeDescriptorWriter(indent, true); - key_writer.serialize_type_descriptor(descriptor.index.key); - key_writer.finish(); - indent.concatenate("]: "); - const value_writer = new TypeDescriptorWriter(indent, true); - value_writer.serialize_type_descriptor(descriptor.index.value); - value_writer.finish(); - indent.concatenate(";"); - } - indent.finish(); - this.line("}"); - break; - } - case DescriptorType.StringLiteral: { - this.line(descriptor.template - ? `\`${descriptor.value.replace(/`/g, "\\`")}\`` - : `"${descriptor.value.replace(/"/g, '\\"')}"`); - break; - } - case DescriptorType.NumericLiteral: { - this.line(`${descriptor.value}`); - break; - } - case DescriptorType.BooleanLiteral: { - this.line(`${descriptor.value}`); - break; - } - case DescriptorType.Tuple: { - this.line(`[`); - const multiline = descriptor.elements.length > 1; - descriptor.elements.forEach((element, index) => { - if (index > 0) { - this.line(", "); - } - if (element.name) { - this.append(multiline, `${element.name}: `); - } - const tuple_writer = new TypeDescriptorWriter(this, !multiline || !!element.name); - tuple_writer.serialize_type_descriptor(element.type); - tuple_writer.finish(); - }); - this.append(multiline, "]"); - break; - } - case DescriptorType.Union: { - descriptor.types.forEach((type, index) => { - if (index > 0) { - this.line(" | "); - } - const union_writer = new TypeDescriptorWriter(this, index > 0); - union_writer.serialize_type_descriptor(type); - union_writer.finish(); - }); - break; - } - case DescriptorType.Intersection: { - descriptor.types.forEach((type, index) => { - if (index > 0) { - this.line(" & "); - } - const intersection_writer = new TypeDescriptorWriter(this, index > 0); - intersection_writer.serialize_type_descriptor(type); - intersection_writer.finish(); - }); - break; - } - case DescriptorType.Infer: { - this.line(`infer ${descriptor.name}`); - break; - } - case DescriptorType.Conditional: { - const check_writer = new TypeDescriptorWriter(this); - check_writer.serialize_type_descriptor(descriptor.check); - check_writer.finish(); - this.line("extends "); - const extends_writer = new TypeDescriptorWriter(this, true); - extends_writer.serialize_type_descriptor(descriptor.extends); - extends_writer.finish(); - this.line("? "); - const true_writer = new TypeDescriptorWriter(this, true); - true_writer.serialize_type_descriptor(descriptor.true); - true_writer.finish(); - this.line(": "); - const false_writer = new TypeDescriptorWriter(this, true); - false_writer.serialize_type_descriptor(descriptor.false); - false_writer.finish(); - break; - } - case DescriptorType.Mapped: { - this.line(`{ [${descriptor.key} in `); - const in_writer = new TypeDescriptorWriter(this, true); - in_writer.serialize_type_descriptor(descriptor.in); - in_writer.finish(); - if (descriptor.as) { - const as_writer = new TypeDescriptorWriter(this, true); - as_writer.serialize_type_descriptor(descriptor.as); - as_writer.finish(); - } - this.concatenate(`]: `); - const value_start_line = this.lineno; - const value_writer = new TypeDescriptorWriter(this, true); - value_writer.serialize_type_descriptor(descriptor.value); - value_writer.finish(); - this.append(this.lineno === value_start_line, "}"); - break; - } - case DescriptorType.Indexed: { - const base_writer = new TypeDescriptorWriter(this); - base_writer.serialize_type_descriptor(descriptor.base); - base_writer.finish(); - this.concatenate(`[`); - const index_writer = new TypeDescriptorWriter(this, true); - index_writer.serialize_type_descriptor(descriptor.index); - index_writer.finish(); - this.concatenate("]"); - break; - } - } - } - } - class ModuleWriter extends IndentWriter { - constructor(base, name) { - super(base); - this._name = name; - } - finish() { - for (const [script_resource, script_import_map] of Object.entries(this.get_imports())) { - const script_imports = Object.entries(script_import_map); - const default_import = script_import_map["default"]; - const resolved_path = this.resolve_import(script_resource).replace(/"/g, '"'); - const explicit_imports = script_imports.length > (default_import ? 1 : 0); - if (default_import) { - if (explicit_imports) { - this._base.line(`import ${default_import}, {`); - } - else { - this._base.line(`import ${default_import} from "${resolved_path}";`); - } - } - else { - this._base.line(`import ${default_import}, {`); - } - if (explicit_imports) { - for (const [name, as] of script_imports) { - if (name === as) { - this._base.line(`${tab}${name},`); - } - else { - this._base.line(`${tab}${name} as ${as},`); - } - } - this._base.line(`} from "${resolved_path}";`); - } - } - this._base.line(`declare module "${this._name}" {`); - super.finish(); - this._base.line('}'); - } - // godot utility functions must be in global scope - utility_(method_info) { - const args = this.types.make_args(method_info); - const rval = this.types.make_return(method_info); - // some godot methods declared with special characters which can not be declared literally - if (!this.types.is_valid_method_name(method_info.name)) { - this.line(`// [INVALID_NAME]: function ${method_info.name}(${args}): ${rval}`); - return; - } - this.line(`function ${method_info.name}(${args}): ${rval}`); - } - } - class NamespaceWriter extends IndentWriter { - get class_doc() { return this._doc; } - constructor(base, name, class_doc) { - super(base); - this._name = name; - this._doc = class_doc; - } - finish() { - if (this._lines.length == 0) { - return; - } - this._base.line(`namespace ${this._name} {`); - super.finish(); - this._base.line('}'); - } - } - class ClassWriter extends IndentWriter { - get class_doc() { return this._doc; } - constructor(base, name, generic_parameters, super_, super_generic_arguments, interfaces, intro, prelude, property_overrides, singleton_mode, class_doc) { - super(base); - this._separator_line = false; - this._name = name; - this._generic_parameters = generic_parameters; - this._super = super_; - this._super_generic_arguments = super_generic_arguments; - this._implements = interfaces; - this._intro = intro; - this._prelude = prelude; - this._property_overrides = jsb.CAMEL_CASE_BINDINGS_ENABLED ? camel_property_overrides(property_overrides) : property_overrides; - this._singleton_mode = singleton_mode; - this._doc = class_doc; - } - head() { - const params = this._generic_parameters - ? `<${Object.entries(this._generic_parameters).map(([name, p]) => `${name}${p.extends ? ` extends ${p.extends}` : ""}${p.default ? ` = ${p.default}` : ""}`).join(", ")}>` - : ""; - let class_extends = ""; - if (typeof this._super === "string" && this._super.length > 0) { - const args = this._super_generic_arguments && this._super_generic_arguments.length > 0 - ? `<${this._super_generic_arguments.join(", ")}>` - : ""; - class_extends = ` extends ${this._super}${args}`; - } - const class_implements = this._implements && this._implements.length > 0 - ? ` implements ${this._implements.map(({ type, generic_arguments }) => { - const args = generic_arguments && generic_arguments.length > 0 - ? `<${generic_arguments.join(", ")}>` - : ""; - return `${type}${args}`; - }).join(", ")}` - : ''; - return `class ${this._name}${params}${class_extends}${class_implements}`; - } - make_method_prefix(method_info) { - return this._singleton_mode || method_info.is_static ? "static " : ""; - } - intro() { - if (!this._intro) { - return; - } - const lines = Array.isArray(this._intro) - ? this._intro - : this._intro(this.types); - for (const line of lines) { - this._base.line(tab + line); - } - } - finish() { - var _a; - (_a = this._prelude) === null || _a === void 0 ? void 0 : _a.forEach(line => this._base.line(line)); - DocCommentHelper.write(this._base, Description.forClass(this.types, this._name), false); - this._base.line(`${this.head()} {`); - this.intro(); - super.finish(); - this._base.line('}'); - } - primitive_constant_(constant) { - var _a, _b; - DocCommentHelper.write(this, (_b = (_a = this._doc) === null || _a === void 0 ? void 0 : _a.constants[constant.name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - if (typeof constant.value !== "undefined") { - this.line(`static readonly ${name_string(constant.name)} = ${constant.value}`); - } - else { - const type_name = get_primitive_type_name(constant.type); - this.line(`static readonly ${name_string(constant.name)}: ${type_name}`); - } - } - constant_(constant) { - var _a, _b; - DocCommentHelper.write(this, (_b = (_a = this._doc) === null || _a === void 0 ? void 0 : _a.constants[constant.name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - this.line(`static readonly ${name_string(constant.name)} = ${constant.value}`); - } - property_(name_or_getset_info) { - var _a, _b, _c; - if (typeof name_or_getset_info === "string") { - return super.property_(name_or_getset_info); - } - const getset_info = name_or_getset_info; - console.assert(getset_info.getter.length != 0); - DocCommentHelper.write(this, (_b = (_a = this._doc) === null || _a === void 0 ? void 0 : _a.properties[getset_info.name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - const property_override = (_c = this._property_overrides) === null || _c === void 0 ? void 0 : _c[getset_info.name]; - if (Array.isArray(property_override)) { - for (const line of property_override) { - this.line(line); - } - return; - } - const line = (line) => { var _a; return this.line((_a = property_override === null || property_override === void 0 ? void 0 : property_override(line)) !== null && _a !== void 0 ? _a : line); }; - const name = name_string(getset_info.name); - // declare as get/set to avoid the pitfalls of modifying a value type return value - // `node.position.x = 0;` (Although, it works in GDScript) - // - // It's not an error in javascript which is more dangerous :( the actually modifed value is just a copy of `node.position`. - line(`get ${name}(): ${this.types.make_typename(getset_info.info, false, false)}`); - if (getset_info.setter.length != 0) { - line(`set ${name}(value: ${this.types.make_typename(getset_info.info, true, false)})`); - } - } - primitive_property_(property_info) { - this._separator_line = true; - const name = name_string(property_info.name); - this.line(`get ${name}(): ${get_primitive_type_name(property_info.type)}`); - this.line(`set ${name}(value: ${get_primitive_type_name_as_input(property_info.type)})`); - } - constructor_(constructor_info) { - this._separator_line = true; - const args = constructor_info.arguments.map(it => `${replace_var_name(it.name)}: ${get_primitive_type_name_as_input(it.type)}`).join(", "); - this.line(`constructor(${args})`); - } - constructor_ex_() { - this.line(`constructor(identifier?: any)`); - } - operator_(operator_info) { - this._separator_line = true; - const return_type_name = get_primitive_type_name(operator_info.return_type); - const left_type_name = get_primitive_type_name_as_input(operator_info.left_type); - if (operator_info.right_type == godot.Variant.Type.TYPE_NIL) { - this.line(`static ${operator_info.name}(left: ${left_type_name}): ${return_type_name}`); - } - else { - const right_type_name = get_primitive_type_name_as_input(operator_info.right_type); - this.line(`static ${operator_info.name}(left: ${left_type_name}, right: ${right_type_name}): ${return_type_name}`); - } - } - virtual_method_(method_info) { - this.method_(method_info, "/* gdvirtual */ "); - } - ordinary_method_(method_info) { - this.method_(method_info, ""); - } - method_(method_info, category) { - var _a, _b, _c; - DocCommentHelper.write(this, (_b = (_a = this._doc) === null || _a === void 0 ? void 0 : _a.methods[method_info.name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - const property_override = (_c = this._property_overrides) === null || _c === void 0 ? void 0 : _c[method_info.name]; - if (Array.isArray(property_override)) { - for (const line of property_override) { - this.line(line); - } - return; - } - const line = (line) => { var _a; return this.line((_a = property_override === null || property_override === void 0 ? void 0 : property_override(line)) !== null && _a !== void 0 ? _a : line); }; - let args = this.types.make_args(method_info); - let rval = this.types.make_return(method_info); - const prefix = this.make_method_prefix(method_info); - let template = ""; - // some godot methods declared with special characters which can not be declared literally - if (!this.types.is_valid_method_name(method_info.name)) { - this.line(`${category}${prefix}["${method_info.name}"]: (${args}) => ${rval}`); - return; - } - line(`${category}${prefix}${name_string(method_info.name)}${template}(${args}): ${rval}`); - } - signal_(signal_info) { - var _a, _b; - DocCommentHelper.write(this, (_b = (_a = this._doc) === null || _a === void 0 ? void 0 : _a.signals[signal_info.name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - const sig = this.types.make_signal_type(signal_info.method_); - if (this._singleton_mode) { - this.line(`static readonly ${name_string(signal_info.name)}: ${sig}`); - } - else { - this.line(`readonly ${name_string(signal_info.name)}: ${sig}`); - } - } - } - class EnumWriter extends IndentWriter { - constructor(base, name) { - super(base); - this._auto = false; - this._separator_line = false; - this._name = name; - } - /** - * the base writer will also be marked as `finished` automatically by the current writer when it's `finished`. - * NOTE usually used when `base` writer is fully managed by the current writer. - */ - auto() { - this._auto = true; - return this; - } - finish() { - if (this._lines.length != 0) { - this._base.line(`enum ${this._name} {`); - super.finish(); - this._base.line('}'); - } - if (this._auto) { - this._base.finish(); - } - } - element_(name, value) { - var _a, _b; - DocCommentHelper.write(this, (_b = (_a = this._base.class_doc) === null || _a === void 0 ? void 0 : _a.constants[name]) === null || _b === void 0 ? void 0 : _b.description, this._separator_line); - this._separator_line = true; - this.line(`${name} = ${value},`); - } - } - class InterfaceWriter extends IndentWriter { - constructor(base, name, generic_parameters, super_, super_generic_arguments, intro, property_overrides) { - super(base); - this._name = name; - this._generic_parameters = generic_parameters; - this._super = super_; - this._super_generic_arguments = super_generic_arguments; - this._intro = intro; - this._property_overrides = jsb.CAMEL_CASE_BINDINGS_ENABLED ? camel_property_overrides(property_overrides) : property_overrides; - } - head() { - const params = this._generic_parameters - ? `<${Object.entries(this._generic_parameters).map(([name, p]) => { - return `${name}${p.extends ? ` extends ${p.extends}` : ""}${p.default ? ` = ${p.default}` : ""}`; - }).join(", ")}>` - : ""; - if (typeof this._super !== "string" || this._super.length == 0) { - return `interface ${this._name}${params}`; - } - const args = this._super_generic_arguments && this._super_generic_arguments.length > 0 - ? `<${this._super_generic_arguments.join(", ")}>` - : ""; - return `interface ${this._name}${params} extends ${this._super}${args}`; - } - intro() { - if (!this._intro) { - return; - } - for (const line of this._intro) { - this._base.line(tab + line); - } - } - finish() { - this._base.line(`${this.head()} {`); - this.intro(); - super.finish(); - this._base.line("}"); - } - property_(key, type) { - var _a; - if (type === undefined) { - return super.property_(key); - } - const property_override = (_a = this._property_overrides) === null || _a === void 0 ? void 0 : _a[key]; - if (Array.isArray(property_override)) { - for (const line of property_override) { - this.line(line); - } - return; - } - const line = (line) => { var _a; return this.line((_a = property_override === null || property_override === void 0 ? void 0 : property_override(line)) !== null && _a !== void 0 ? _a : line); }; - line(`${key}: ${type};`); - } - } - class GenericWriter extends IndentWriter { - constructor(base, name) { - super(base); - this._name = name; - this._size += name.length + 2; - } - finish() { - var _a; - if (this._lines.length < 2) { - this._base.line(`${this._name}<${(_a = this._lines[0]) !== null && _a !== void 0 ? _a : ""}>`); - return; - } - this._base.line(`${this._name}<`); - super.finish(); - this._base.line(">"); - } - } - class ObjectWriter extends IndentWriter { - constructor(base, intro, property_overrides) { - super(base); - this._intro = intro; - this._property_overrides = jsb.CAMEL_CASE_BINDINGS_ENABLED ? camel_property_overrides(property_overrides) : property_overrides; - } - intro() { - if (!this._intro) { - return; - } - for (const line of this._intro) { - this._base.line(tab + line); - } - } - finish() { - if (this._lines.length === 0 && !this._intro) { - this._base.line("{}"); - return; - } - this._base.line(`{`); - this.intro(); - super.finish(); - this._base.line("}"); - } - property_(key, type) { - var _a; - if (type === undefined) { - return super.property_(key); - } - const property_override = (_a = this._property_overrides) === null || _a === void 0 ? void 0 : _a[key]; - if (Array.isArray(property_override)) { - for (const line of property_override) { - this.line(line); - } - return; - } - const line = (line) => { var _a; return this.line((_a = property_override === null || property_override === void 0 ? void 0 : property_override(line)) !== null && _a !== void 0 ? _a : line); }; - line(`${key}: ${type};`); - } - } - class PropertyWriter extends BufferingWriter { - constructor(base, name, concatenate_first_line = false) { - super(base, concatenate_first_line); - this._key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name) - ? name - : `"${name.replace("\"", "\\\"")}"`; - this._size += this._key.length + 3; - } - finish() { - if (this._lines.length === 0) { - return; - } - this._base.append(!this._concatenate_first_line, `${this._key}: `); - const lines = this._lines; - for (let i = 0, l = lines.length; i < l; i++) { - this._base.append(i > 0, lines[i]); - } - this._base.concatenate(";"); - } - bufferedSize(text, newLine) { - return text.length + (newLine ? 1 : 0); - } - } - class FileWriter extends AbstractWriter { - get_import_name(preferred_name) { - if (!preferred_name) { - return this.get_import_name("MyType"); - } - if (this._import_names.has(preferred_name)) { - return this.get_import_name(preferred_name + "_"); - } - this._import_names.add(preferred_name); - return preferred_name; - } - constructor(path, types, file) { - super(); - this._size = 0; - this._lineno = 0; - this._import_map = {}; - this._import_names = new Set(); - this._path = path; - this._types = types; - this._file = file; - } - add_import(preferred_name, script_resource, export_name = "default") { - var _a, _b; - var _c; - const resource_imports = (_a = (_c = this._import_map)[script_resource]) !== null && _a !== void 0 ? _a : (_c[script_resource] = {}); - (_b = resource_imports[export_name]) !== null && _b !== void 0 ? _b : (resource_imports[export_name] = this.get_import_name(preferred_name)); - } - get_imports() { - return this._import_map; - } - resolve_import(destination) { - const source = this._path.replace(/^\.?\/?/, "res://"); - const source_length = source.length; - const destination_length = destination.length; - let last_slash_index = -1; - for (let i = 0; i < source_length && i < destination_length && source[i] === destination[i]; i++) { - if (source[i] === "/") { - last_slash_index = i; - } - } - let up = ""; - for (let i = last_slash_index + 1; i < source_length; i++) { - if (source[i] === "/") { - up += "../"; - } - } - return (up || "./") + destination.slice(last_slash_index + 1).replace(/\.[jt]sx?$/, ""); - } - get size() { return this._size; } - get lineno() { return this._lineno; } - get types() { return this._types; } - line(text) { - this._file.store_line(text); - this._size += text.length + 1; - this._lineno += 1; - } - concatenate(text) { - this._file.store_string(text); - this._size += text.length; - } - finish() { - this._file.flush(); - } - } - class FileSplitter { - constructor(types, path) { - this._types = types; - this._file = godot.FileAccess.open(path, godot.FileAccess.ModeFlags.WRITE); - this._toplevel = new ModuleWriter(new FileWriter(path, this._types, this._file), "godot"); - this._file.store_line("// AUTO-GENERATED"); - } - close() { - this._toplevel.finish(); - this._file.flush(); - this._file.close(); - } - get_writer() { - return this._toplevel; - } - get_size() { return this._toplevel.size; } - get_lineno() { return this._toplevel.lineno; } - } - class TypeDB { - constructor() { - this.singletons = {}; - this.classes = {}; - this.primitive_types = {}; - this.globals = {}; - this.utilities = {}; - // `class_doc` is loaded lazily once used, and be cached in `class_docs` - this.class_docs = {}; - const classes = jsb.editor.get_classes(); - const primitive_types = jsb.editor.get_primitive_types(); - const singletons = jsb.editor.get_singletons(); - const globals = jsb.editor.get_global_constants(); - const utilities = jsb.editor.get_utility_functions(); - for (let cls of classes) { - this.classes[cls.name] = cls; - } - for (let cls of primitive_types) { - this.primitive_types[cls.name] = cls; - } - for (let singleton of singletons) { - this.singletons[singleton.name] = singleton; - } - for (let global_ of globals) { - this.globals[global_.name] = global_; - } - for (let utility of utilities) { - this.utilities[utility.name] = utility; - } - } - find_doc(class_name) { - let class_doc = this.class_docs[class_name]; - if (typeof class_doc === "object") { - return class_doc; - } - if (typeof class_doc === "boolean") { - return undefined; - } - let loaded_doc = jsb.editor.get_class_doc(class_name); - this.class_docs[class_name] = loaded_doc || false; - return loaded_doc; - } - is_primitive_type(name) { - return typeof this.primitive_types[name] !== "undefined"; - } - is_valid_method_name(name) { - if (typeof KeywordReplacement[name] !== "undefined") { - return false; - } - if (name.indexOf("/") >= 0 || name.indexOf(".") >= 0) { - return false; - } - return true; - } - make_classname(internal_class_name) { - const types = this; - const remap_name = RemapTypes[internal_class_name]; - if (typeof remap_name !== "undefined") { - return remap_name; - } - const class_name = names.get_class(internal_class_name); - if (class_name in types.classes) { - return class_name; - } - else if (class_name in types.singletons) { - return class_name; - } - else if (internal_class_name in types.globals) { - return internal_class_name; - } - else if (internal_class_name.indexOf(".") >= 0) { - const layers = internal_class_name.split(".").map(n => names.get_class(n)); - if (layers.length == 2) { - // nested enums in primitive types do not exist in class_info, they are manually binded. - if (PrimitiveTypesSet.has(layers[0])) { - return layers.join("."); - } - const cls = types.classes[layers[0]]; - if (typeof cls !== "undefined" && cls.enums.findIndex(v => v.name == layers[1]) >= 0) { - return layers.join("."); - } - } - } - console.warn("undefined class", class_name); - return `any /*${class_name}*/`; - } - make_typename(info, used_as_input, non_nullable) { - const null_prefix = !non_nullable && (info.type === godot.Variant.Type.TYPE_OBJECT || (info.usage & godot.PropertyUsageFlags.PROPERTY_USAGE_STORE_IF_NULL) !== 0) - ? "null | " - : ""; - if (info.hint == godot.PropertyHint.PROPERTY_HINT_RESOURCE_TYPE) { - console.assert(info.hint_string.length != 0, "at least one valid class_name expected"); - return null_prefix + info.hint_string.split(",").map(internal_class_name => this.make_classname(internal_class_name)).join(" | "); - } - //NOTE there are infos with `.class_name == bool` instead of `.type` only, they will be remapped in `make_classname` - if (info.class_name.length == 0) { - const primitive_name = used_as_input ? get_primitive_type_name_as_input(info.type) : get_primitive_type_name(info.type); - if (typeof primitive_name !== "undefined") { - return null_prefix + primitive_name; - } - return `any /*unhandled: ${info.type}*/`; - } - return null_prefix + this.make_classname(info.class_name); - } - make_arg(info, optional) { - return `${replace_var_name(info.name)}${optional ? "?" : ""}: ${this.make_typename(info, true, true)}`; - } - make_literal_value(value) { - // plain types - const type_name = get_primitive_type_name(value.type); - switch (value.type) { - case godot.Variant.Type.TYPE_BOOL: return value.value == null ? "false" : `${value.value}`; - case godot.Variant.Type.TYPE_FLOAT: - case godot.Variant.Type.TYPE_INT: return value.value == null ? "0" : `${value.value}`; - case godot.Variant.Type.TYPE_STRING: - case godot.Variant.Type.TYPE_STRING_NAME: return value.value == null ? "''" : `'${value.value}'`; - case godot.Variant.Type.TYPE_NODE_PATH: return value.value == null ? "''" : `'${gd_to_string(value.value)}'`; - case godot.Variant.Type.TYPE_ARRAY: return value.value == null || value.value.is_empty() ? "[]" : `${gd_to_string(value.value)}`; - case godot.Variant.Type.TYPE_OBJECT: return value.value == null ? "undefined" : " {}"; - case godot.Variant.Type.TYPE_NIL: return " {}"; - case godot.Variant.Type.TYPE_CALLABLE: - case godot.Variant.Type.TYPE_RID: return `new ${type_name}()`; - default: break; - } - // make them more readable? - if (value.type == godot.Variant.Type.TYPE_VECTOR2 || value.type == godot.Variant.Type.TYPE_VECTOR2I) { - if (value == null) - return `new ${type_name}()`; - if (value.value.x == value.value.y) { - if (value.value.x == 0) - return `${type_name}.ZERO`; - if (value.value.x == 1) - return `${type_name}.ONE`; - } - return `new ${type_name}(${value.value.x}, ${value.value.y})`; - } - if (value.type == godot.Variant.Type.TYPE_VECTOR3 || value.type == godot.Variant.Type.TYPE_VECTOR3I) { - if (value == null) - return `new ${type_name}()`; - if (value.value.x == value.value.y == value.value.z) { - if (value.value.x == 0) - return `${type_name}.ZERO`; - if (value.value.x == 1) - return `${type_name}.ONE`; - } - return `new ${type_name}(${value.value.x}, ${value.value.y}, ${value.value.z})`; - } - if (value.type == godot.Variant.Type.TYPE_COLOR) { - if (value == null) - return `new ${type_name}()`; - return `new ${type_name}(${value.value.r}, ${value.value.g}, ${value.value.b}, ${value.value.a})`; - } - if (value.type == godot.Variant.Type.TYPE_RECT2 || value.type == godot.Variant.Type.TYPE_RECT2I) { - if (value.value == null) - return `new ${type_name}()`; - return `new ${type_name}(${value.value.position.x}, ${value.value.position.y}, ${value.value.size.x}, ${value.value.size.y})`; - } - // it's tedious to repeat all types :( - if ((value.type >= godot.Variant.Type.TYPE_PACKED_BYTE_ARRAY && value.type <= godot.Variant.Type.TYPE_PACKED_COLOR_ARRAY)) { - if (value.value == null || value.value.is_empty()) { - return "[]"; - } - } - if (value.type == godot.Variant.Type.TYPE_DICTIONARY) { - if (value.value == null || value.value.is_empty()) - return `new ${type_name}()`; - } - //NOTE hope all default value for Transform2D/Transform3D is IDENTITY - if (value.type == godot.Variant.Type.TYPE_TRANSFORM2D || value.type == godot.Variant.Type.TYPE_TRANSFORM3D) { - return `new ${type_name}()`; - } - //TODO value sig for compound types - return ` {} /*compound.type from ${godot.Variant.Type[value.type]} (${value.value})*/`; - } - make_arg_default_value(method_info, index) { - const default_arguments = method_info.default_arguments || []; - const def_index = index - (method_info.args_.length - default_arguments.length); - if (def_index < 0 || def_index >= default_arguments.length) - return this.make_arg(method_info.args_[index]); - return `${this.make_arg(method_info.args_[index], true)} /* = ${this.make_literal_value(default_arguments[def_index])} */`; - } - make_args(method_info) { - //TODO consider default arguments - const varargs = "...varargs: any[]"; - const is_vararg = !!(method_info.hint_flags & godot.MethodFlags.METHOD_FLAG_VARARG); - if (method_info.args_.length == 0) { - return is_vararg ? varargs : ""; - } - const args = method_info.args_.map((_it, index) => this.make_arg_default_value(method_info, index)).join(", "); - if (is_vararg) { - return `${args}, ${varargs}`; - } - return args; - } - make_return(method_info) { - //TODO - if (typeof method_info.return_ != "undefined") { - return this.make_typename(method_info.return_, false, method_info.name.startsWith("create")); - } - return "void"; - } - make_signal_type(method_info) { - const args = method_info.args_.map((arg => `${arg.name}: ${this.make_typename(arg, false, true)}`)); - if (method_info.hint_flags & godot.MethodFlags.METHOD_FLAG_VARARG) { - args.push("...varargs: any[]"); - } - return `Signal<(${args.join(", ")}) => void>`; - } - } - exports.TypeDB = TypeDB; - // d.ts generator - class TSDCodeGen { - constructor(outDir, use_project_settings) { - this._split_index = 0; - this._outDir = outDir; - this._use_project_settings = use_project_settings; - this._types = new TypeDB(); - } - make_path(index) { - const filename = `godot${index}.gen.d.ts`; - if (typeof this._outDir !== "string" || this._outDir.length == 0) { - return filename; - } - if (this._outDir.endsWith("/")) { - return this._outDir + filename; - } - return this._outDir + "/" + filename; - } - new_splitter() { - if (this._splitter !== undefined) { - this._splitter.close(); - } - const filename = this.make_path(this._split_index++); - console.log("new writer", filename); - this._splitter = new FileSplitter(this._types, filename); - return this._splitter; - } - // the returned writer will be `finished` automatically - split() { - if (this._splitter == undefined) { - return this.new_splitter().get_writer(); - } - const len = this._splitter.get_size(); - const lineno = this._splitter.get_lineno(); - // limit size and length of the generated file for better readability and being more friendly to the VSCode TS server and diff tools - if (len > 1024 * 900 || lineno > 9200) { - return this.new_splitter().get_writer(); - } - return this._splitter.get_writer(); - } - cleanup() { - while (true) { - const path = this.make_path(this._split_index++); - if (!godot.FileAccess.file_exists(path)) { - break; - } - console.log("delete file", path); - jsb.editor.delete_file(path); - } - } - has_class(name) { - return typeof name === "string" && typeof this._types.classes[name] !== "undefined"; - } - emit() { - return __awaiter(this, void 0, void 0, function* () { - yield frame_step(); - const tasks = new CodegenTasks("godot.d.ts"); - // aliases - tasks.add_task("Aliases", () => this.emit_aliases()); - // all singletons - for (let singleton_name in this._types.singletons) { - tasks.add_task("Singletons", () => this.emit_singleton(this._types.singletons[singleton_name])); - } - // godot classes - for (let class_name in this._types.classes) { - const cls = this._types.classes[class_name]; - if (IgnoredTypes.has(class_name)) { - continue; - } - if (typeof this._types.singletons[class_name] !== "undefined") { - // ignore the class if it's already defined as Singleton - continue; - } - tasks.add_task("Classes", () => this.emit_godot_class(this.split(), cls, false)); - } - // godot primitive types - for (let class_name in this._types.primitive_types) { - const cls = this._types.primitive_types[class_name]; - tasks.add_task("Primitives", () => this.emit_godot_primitive(this.split(), cls)); - } - // godot global scope - for (let global_name in this._types.globals) { - tasks.add_task("Globals", () => this.emit_global(this._types.globals[global_name])); - } - // global utility functions - for (let utility_name in this._types.utilities) { - tasks.add_task("Utility Functions", () => this.emit_utility(this._types.utilities[utility_name])); - } - // jsb utility functions - for (let mi of GlobalUtilityFuncs) { - tasks.add_task("jsb.utility_functions", () => { - const cg = this.split(); - DocCommentHelper.write(cg, mi.description, true); - cg.line(mi.method); - }); - } - tasks.add_task("Cleanup", () => { - var _a; - (_a = this._splitter) === null || _a === void 0 ? void 0 : _a.close(); - this.cleanup(); - }); - return tasks.submit(); - }); - } - emit_utility(utility_func) { - var _a; - const global_doc = this._types.find_doc("@GlobalScope"); - const cg = this.split(); - DocCommentHelper.write(cg, (_a = global_doc === null || global_doc === void 0 ? void 0 : global_doc.methods[utility_func.name]) === null || _a === void 0 ? void 0 : _a.description, true); - cg.utility_(utility_func); - } - emit_global(global_obj) { - var _a; - const cg = this.split(); - const doc = this._types.find_doc("@GlobalScope"); - const ns = cg.enum_(global_obj.name); - let separator_line = false; - for (let name in global_obj.values) { - DocCommentHelper.write(ns, (_a = doc === null || doc === void 0 ? void 0 : doc.constants[name]) === null || _a === void 0 ? void 0 : _a.description, separator_line); - separator_line = true; - ns.element_(name, global_obj.values[name]); - } - ns.finish(); - } - emit_aliases() { - const cg = this.split(); - for (let line of PredefinedLines) { - cg.line(line); - } - if (GodotAnyType != "any") { - let gd_variant_alias = `type ${GodotAnyType} = `; - for (let i = godot.Variant.Type.TYPE_NIL + 1; i < godot.Variant.Type.TYPE_MAX; ++i) { - const type_name = get_primitive_type_name(i); - if (type_name == GodotAnyType || type_name == "any") - continue; - gd_variant_alias += type_name + " | "; - } - gd_variant_alias += "undefined"; - cg.line(gd_variant_alias); - } - if (this._use_project_settings) { - cg.line("type InputActionName = "); - const indent = new IndentWriter(cg); - for (const action of jsb.editor.get_input_actions()) { - indent.line(`| "${action}"`); - } - indent.finish(); - } - else { - cg.line("type InputActionName = string"); - } - } - emit_singleton(singleton) { - const cg = this.split(); - const cls = this._types.classes[singleton.class_name]; - if (typeof cls !== "undefined") { - cg.line_comment_(`_singleton_class_: ${singleton.class_name}`); - this.emit_godot_class(cg, cls, true); - } - else { - cg.line_comment_(`ERROR: singleton ${singleton.name} without class info ${singleton.class_name}`); - } - } - emit_godot_primitive(cg, cls) { - var _a; - const class_doc = this._types.find_doc(cls.name); - const ignored_consts = new Set(); - const class_ns_cg = cg.namespace_(cls.name, class_doc); - if (cls.enums) { - for (let enum_info of cls.enums) { - const enum_cg = class_ns_cg.enum_(enum_info.name); - for (let [name, value] of Object.entries(enum_info.literals)) { - const constant = cls.constants.find(v => v.name == name); - enum_cg.element_(name, value); - if (constant) { - ignored_consts.add(name); - } - } - enum_cg.finish(); - } - } - class_ns_cg.finish(); - const type_name = jsb.internal.names.get_variant_type(cls.type); - const type_mutation = get_type_mutation(type_name); - const super_ = (_a = type_mutation.super) !== null && _a !== void 0 ? _a : undefined; - const class_cg = cg.class_(type_name, type_mutation.generic_parameters, super_, type_mutation.super_generic_arguments, type_mutation.implements, type_mutation.property_overrides, type_mutation.intro, type_mutation.prelude, false, class_doc); - if (cls.constants) { - for (let constant of cls.constants) { - if (!ignored_consts.has(constant.name) && !ignored_consts.has(names.get_enum_value(constant.name))) { - class_cg.primitive_constant_(constant); - } - } - } - for (let constructor_info of cls.constructors) { - class_cg.constructor_(constructor_info); - } - for (let method_info of cls.methods) { - class_cg.ordinary_method_(method_info); - } - for (let operator_info of cls.operators) { - class_cg.operator_(operator_info); - } - for (let property_info of cls.properties) { - class_cg.primitive_property_(property_info); - } - class_cg.finish(); - } - emit_godot_class(cg, cls, singleton_mode) { - var _a; - try { - const class_doc = this._types.find_doc(cls.name); - const ignored_consts = new Set(); - const class_ns_cg = cg.namespace_(cls.name, class_doc); - if (cls.enums) { - for (let enum_info of cls.enums) { - const enum_cg = class_ns_cg.enum_(enum_info.name); - for (let [name, value] of Object.entries(enum_info.literals)) { - enum_cg.element_(name, value); - ignored_consts.add(name); - } - enum_cg.finish(); - } - } - class_ns_cg.finish(); - const type_mutation = get_type_mutation(cls.name, this._types.classes); - const super_ = (_a = type_mutation.super) !== null && _a !== void 0 ? _a : (this.has_class(cls.super) ? cls.super : undefined); - const class_cg = cg.class_(cls.name, type_mutation.generic_parameters, super_, type_mutation.super_generic_arguments, type_mutation.implements, type_mutation.property_overrides, type_mutation.intro, type_mutation.prelude, singleton_mode, class_doc); - if (cls.constants) { - for (let constant of cls.constants) { - if (!ignored_consts.has(constant.name)) { - class_cg.constant_(constant); - } - } - } - if (!singleton_mode) { - class_cg.constructor_ex_(); - } - for (let method_info of cls.virtual_methods) { - class_cg.virtual_method_(method_info); - } - for (let method_info of cls.methods) { - class_cg.ordinary_method_(method_info); - } - for (let property_info of cls.properties) { - class_cg.property_(property_info); - } - if (cls.signals) { - for (let signal_info of cls.signals) { - class_cg.signal_(signal_info); - } - } - class_cg.finish(); - } - catch (error) { - console.error(`failed to generate '${cls.name}'`, error.stack); - throw error; - } - } - } - exports.TSDCodeGen = TSDCodeGen; - class SceneTSDCodeGen { - constructor(out_dir, scene_paths) { - this._out_dir = out_dir; - this._scene_paths = scene_paths; - this._types = new TypeDB(); - } - make_scene_path(scene_path, include_filename = true) { - const relative_path = (include_filename - ? scene_path.replace(/\.t?scn$/i, ".nodes.gen.d.ts") - : scene_path.replace(/\/[^\/]+$/, "")).replace(/^res:\/\/?/, ""); - if (typeof this._out_dir !== "string" || this._out_dir.length == 0) { - return relative_path; - } - return this._out_dir.endsWith("/") - ? this._out_dir + relative_path - : this._out_dir + "/" + relative_path; - } - emit() { - return __awaiter(this, void 0, void 0, function* () { - yield frame_step(); - let taskName = "Generating scene node types"; - if (this._scene_paths.length === 1) { - /* Before running the project every scene is saved seperately. - * We ensure that the task don't have the same name */ - taskName += ` ${this._scene_paths.at(0)}`; - } - const tasks = new CodegenTasks(taskName); - for (const scene_path of this._scene_paths) { - tasks.add_task(`Generating scene node types: ${scene_path}`, () => this.emit_scene_node_types(scene_path)); - } - return tasks.submit(false); - }); - } - emit_children_node_types(writer, children) { - const child_writer = writer.object_(); - for (const [key, value] of Object.entries(children)) { - if (!value) { - continue; - } - const property = child_writer.property_(key); - const descriptor = new TypeDescriptorWriter(property, true); - descriptor.serialize_type_descriptor(value); - descriptor.finish(); - property.finish(); - } - child_writer.finish(); - } - emit_scene_node_types(scene_path) { - var _a; - try { - const helper = godot.GodotJSEditorHelper; - const children = (_a = helper.get_scene_nodes(scene_path)) === null || _a === void 0 ? void 0 : _a.proxy(); - if (typeof children !== "object") { - throw new Error(`root node children unavailable: ${scene_path}`); - } - const dir_path = this.make_scene_path(scene_path, false); - const dir_error = godot.DirAccess.make_dir_recursive_absolute(dir_path); - if (dir_error !== 0) { - console.error(`failed to create directory (error: ${dir_error}): ${dir_path}`); - } - const file_path = this.make_scene_path(scene_path); - const file = godot.FileAccess.open(file_path, godot.FileAccess.ModeFlags.WRITE); - if (!file) { - throw new Error(`failed to open file for writing: ${dir_path}`); - } - try { - const file_writer = new FileWriter(file_path, this._types, file); - const module = new ModuleWriter(file_writer, "godot"); - const scene_nodes_interface = new InterfaceWriter(module, "SceneNodes"); - const scene_property = scene_nodes_interface.property_(scene_path.replace(/^res:\/\//, "")); - this.emit_children_node_types(scene_property, children); - scene_property.finish(); - scene_nodes_interface.finish(); - module.finish(); - file_writer.finish(); - } - finally { - file.close(); - } - } - catch (error) { - console.error(`failed to generate scene node types: ${scene_path}`); - throw error; - } - } - } - exports.SceneTSDCodeGen = SceneTSDCodeGen; - class ResourceTSDCodeGen { - constructor(out_dir, resource_paths) { - this._out_dir = out_dir; - this._resource_paths = resource_paths; - this._types = new TypeDB(); - } - make_resource_path(resource_path, include_filename = true) { - const relative_path = (include_filename - ? resource_path + ".gen.d.ts" - : resource_path.replace(/\/[^\/]+$/, "")).replace(/^res:\/\/?/, ""); - if (typeof this._out_dir !== "string" || this._out_dir.length == 0) { - return relative_path; - } - return this._out_dir.endsWith("/") - ? this._out_dir + relative_path - : this._out_dir + "/" + relative_path; - } - emit() { - return __awaiter(this, void 0, void 0, function* () { - yield frame_step(); - const tasks = new CodegenTasks("Generating resource types"); - for (const resource_path of this._resource_paths) { - tasks.add_task(`Generating resource type: ${resource_path}`, () => this.emit_resource_type(resource_path)); - } - return tasks.submit(false); - }); - } - emit_resource_type(resource_path) { - var _a; - try { - const helper = godot.GodotJSEditorHelper; - const descriptor = (_a = helper.get_resource_type_descriptor(resource_path)) === null || _a === void 0 ? void 0 : _a.proxy(); - if (typeof descriptor !== "object") { - throw new Error(`resource type unavailable: ${resource_path}`); - } - const dir_path = this.make_resource_path(resource_path, false); - const dir_error = godot.DirAccess.make_dir_recursive_absolute(dir_path); - if (dir_error !== 0) { - console.error(`failed to create directory (error: ${dir_error}): ${dir_path}`); - } - const file_path = this.make_resource_path(resource_path); - const file = godot.FileAccess.open(file_path, godot.FileAccess.ModeFlags.WRITE); - if (!file) { - throw new Error(`failed to open file for writing: ${dir_path}`); - } - try { - const file_writer = new FileWriter(file_path, this._types, file); - const module = new ModuleWriter(file_writer, "godot"); - const resource_types_interface = new InterfaceWriter(module, "ResourceTypes"); - const resource_property = resource_types_interface.property_(resource_path); - const type_descriptor = new TypeDescriptorWriter(resource_property, true); - type_descriptor.serialize_type_descriptor(descriptor); - type_descriptor.finish(); - resource_property.finish(); - resource_types_interface.finish(); - module.finish(); - file_writer.finish(); - } - finally { - file.close(); - } - } - catch (error) { - console.error(`failed to generate resource type: ${resource_path}`); - throw error; - } - } - } - exports.ResourceTSDCodeGen = ResourceTSDCodeGen; -}); -define("jsb.editor.main", ["require", "exports", "godot"], function (require, exports, godot_1) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.auto_complete = auto_complete; - exports.run_npm_install = run_npm_install; - function auto_complete(pattern) { - let results = new godot_1.PackedStringArray(); - if (typeof pattern !== "string") { - return results; - } - let scope = null; - let head = ''; - let index = pattern.lastIndexOf('.'); - let left = ''; - if (index >= 0) { - left = pattern.substring(0, index + 1); - try { - scope = eval(pattern.substring(0, index)); - } - catch (e) { - return results; - } - pattern = pattern.substring(index + 1); - } - else { - scope = globalThis; - } - for (let k in scope) { - if (k.indexOf(pattern) == 0) { - results.append(head + left + k); - } - } - return results; - } - function run_npm_install() { - let exe_path = godot_1.OS.get_name() != "Windows" ? "npm" : "npm.cmd"; - let pid = godot_1.OS.create_process(exe_path, ["install"], true); - if (pid == -1) { - console.error("Failed to execute `npm install`, please ensure that node.js has been installed properly, and run it manually in the project root path."); - } - else { - console.log("Started process: npm install"); - } - } -}); -//# sourceMappingURL=jsb.editor.bundle.js.map \ No newline at end of file diff --git a/scripts/out/jsb.editor.bundle.js.map b/scripts/out/jsb.editor.bundle.js.map deleted file mode 100644 index ff7111b0..00000000 --- a/scripts/out/jsb.editor.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsb.editor.bundle.js","sourceRoot":"../src/","sources":["jsb.editor.codegen.ts","jsb.editor.main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/scripts/out/jsb.runtime.bundle.d.ts b/scripts/out/jsb.runtime.bundle.d.ts deleted file mode 100644 index 3553718c..00000000 --- a/scripts/out/jsb.runtime.bundle.d.ts +++ /dev/null @@ -1,130 +0,0 @@ -declare module "godot.annotations" { - import type * as Godot from "godot"; - import type * as GodotJsb from "godot-jsb"; - export interface EnumPlaceholder { - } - export interface TypePairPlaceholder { - } - export function EnumType(type: any): EnumPlaceholder; - export function TypePair(key: ClassDescriptor, value: ClassDescriptor): TypePairPlaceholder; - export type ClassDescriptor = Function | Symbol | EnumPlaceholder | TypePairPlaceholder; - /** - * - */ - export function signal(): (target: any, key: string) => void; - export const ExportSignal: typeof signal; - export function export_multiline(): (target: any, key: string) => void; - export const ExportMultiline: typeof export_multiline; - export function export_range(min: number, max: number, step?: number, ...extra_hints: string[]): (target: any, key: string) => void; - export const ExportRange: typeof export_range; - export function export_range_i(min: number, max: number, step?: number, ...extra_hints: string[]): (target: any, key: string) => void; - export const ExportIntRange: typeof export_range_i; - /** String as a path to a file, custom filter provided as hint. */ - export function export_file(filter: string): (target: any, key: string) => void; - export const ExportFile: typeof export_file; - export function export_dir(filter: string): (target: any, key: string) => void; - export function export_global_file(filter: string): (target: any, key: string) => void; - export const ExportGlobalFile: typeof export_global_file; - export function export_global_dir(filter: string): (target: any, key: string) => void; - export const ExportGlobalDir: typeof export_global_dir; - export function export_exp_easing(hint?: "" | "attenuation" | "positive_only" | "attenuation,positive_only"): (target: any, key: string) => void; - export const ExportExpEasing: typeof export_exp_easing; - /** - * A Shortcut for `export_(Variant.Type.TYPE_ARRAY, { class_: clazz })` - */ - export function export_array(clazz: ClassDescriptor): (target: any, key: string) => void; - export const ExportArray: typeof export_array; - /** - * A Shortcut for exporting a dictionary { class_: [key_class, value_class] })` - */ - export function export_dictionary(key_class: ClassDescriptor, value_class: ClassDescriptor): (target: any, key: string) => void; - export const ExportDictionary: typeof export_dictionary; - export function export_object(class_: ClassDescriptor): (target: any, key: string) => void; - export const ExportObject: typeof export_object; - /** - * [low level export] - */ - export function export_(type: Godot.Variant.Type, details?: { - class_?: ClassDescriptor; - hint?: Godot.PropertyHint; - hint_string?: string; - usage?: Godot.PropertyUsageFlags; - }): (target: any, key: string) => void; - export function Export(type: Godot.Variant.Type, details?: { - class?: ClassDescriptor; - hint?: Godot.PropertyHint; - hintString?: string; - usage?: Godot.PropertyUsageFlags; - }): (target: any, key: string) => void; - /** - * In Godot, class members can be exported. - * This means their value gets saved along with the resource (such as the scene) they're attached to. - * They will also be available for editing in the property editor. - * Exporting is done by using the `@export_var` (or `@export_`) annotation. - */ - export function export_var(type: Godot.Variant.Type, details?: { - class_?: ClassDescriptor; - hint?: Godot.PropertyHint; - hint_string?: string; - usage?: Godot.PropertyUsageFlags; - }): (target: any, key: string) => void; - export const ExportVar: typeof export_var; - /** - * NOTE only int value enums are allowed - */ - export function export_enum(enum_type: any): (target: any, key: string) => void; - export const ExportEnum: typeof export_enum; - /** - * NOTE only int value enums are allowed - */ - export function export_flags(enum_type: any): (target: any, key: string) => void; - export const ExportFlags: typeof export_flags; - export interface RPCConfig { - mode?: Godot.MultiplayerAPI.RPCMode; - sync?: "call_remote" | "call_local"; - transfer_mode?: Godot.MultiplayerPeer.TransferMode; - transfer_channel?: number; - } - export function rpc(config?: RPCConfig): (target: any, propertyKey?: PropertyKey, descriptor?: PropertyDescriptor) => void; - export const Rpc: typeof rpc; - /** - * auto initialized on ready (before _ready called) - * @param evaluator for now, only string is accepted - */ - export function onready(evaluator: string | GodotJsb.internal.OnReadyEvaluatorFunc): (target: any, key: string) => void; - export const OnReady: typeof onready; - export function tool(): (target: any) => void; - export const Tool: typeof tool; - export function icon(path: string): (target: any) => void; - export const Icon: typeof icon; - export function deprecated(message?: string): (target: any, propertyKey?: PropertyKey, descriptor?: PropertyDescriptor) => void; - export const Deprecated: typeof deprecated; - export function experimental(message?: string): (target: any, propertyKey?: PropertyKey, descriptor?: PropertyDescriptor) => void; - export const Experimental: typeof experimental; - export function help(message?: string): (target: any, propertyKey?: PropertyKey, descriptor?: PropertyDescriptor) => void; - export const Help: typeof help; -} -declare module "godot.lib.api" { - import type * as Godot from "godot"; - import type * as GodotJsb from "godot-jsb"; - const api: typeof Godot & { - jsb: typeof GodotJsb; - }; - /** - * This is a starting point for writing GodotJS code that is camel-case binding agnostic at runtime. - * - * Library code must consume this API rather than "godot", and be built with camel case bindings disabled. This is to - * ensure that the library will function at runtime for all projects irrespective of whether they have camel-case - * bindings enabled. - */ - export = api; -} -declare module "godot.typeloader" { - /** - * @param type the loaded type or function in godot module - */ - export type TypeLoadedCallback = (type: any) => void; - export function on_type_loaded(type_name: string | string[], callback: TypeLoadedCallback): void; -} -declare module "jsb.core" { } -declare module "jsb.inject" { } diff --git a/scripts/out/jsb.runtime.bundle.js b/scripts/out/jsb.runtime.bundle.js deleted file mode 100644 index aa21f21d..00000000 --- a/scripts/out/jsb.runtime.bundle.js +++ /dev/null @@ -1,1355 +0,0 @@ -"use strict"; -var __rest = (this && this.__rest) || function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -}; -define("godot.annotations", ["require", "exports"], function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Help = exports.Experimental = exports.Deprecated = exports.Icon = exports.Tool = exports.OnReady = exports.Rpc = exports.ExportFlags = exports.ExportEnum = exports.ExportVar = exports.ExportObject = exports.ExportDictionary = exports.ExportArray = exports.ExportExpEasing = exports.ExportGlobalDir = exports.ExportGlobalFile = exports.ExportFile = exports.ExportIntRange = exports.ExportRange = exports.ExportMultiline = exports.ExportSignal = void 0; - exports.EnumType = EnumType; - exports.TypePair = TypePair; - exports.signal = signal; - exports.export_multiline = export_multiline; - exports.export_range = export_range; - exports.export_range_i = export_range_i; - exports.export_file = export_file; - exports.export_dir = export_dir; - exports.export_global_file = export_global_file; - exports.export_global_dir = export_global_dir; - exports.export_exp_easing = export_exp_easing; - exports.export_array = export_array; - exports.export_dictionary = export_dictionary; - exports.export_object = export_object; - exports.export_ = export_; - exports.Export = Export; - exports.export_var = export_var; - exports.export_enum = export_enum; - exports.export_flags = export_flags; - exports.rpc = rpc; - exports.onready = onready; - exports.tool = tool; - exports.icon = icon; - exports.deprecated = deprecated; - exports.experimental = experimental; - exports.help = help; - const { jsb, FloatType, IntegerType, Node, PropertyHint, PropertyUsageFlags, Resource, Variant } = require("godot.lib.api"); - function guess_type_name(type) { - if (typeof type === "function") { - return type.name; - } - if (typeof type === "object") { - if (typeof type.constructor === "function") { - return type.constructor.name; - } - let proto = Object.getPrototypeOf(type); - if (typeof proto === "object") { - return guess_type_name(proto); - } - } - return type; - } - class EnumPlaceholderImpl { - constructor(target) { this.target = target; } - } - class TypePairPlaceholderImpl { - constructor(key, value) { this.key = key; this.value = value; } - } - function EnumType(type) { - return new EnumPlaceholderImpl(type); - } - function TypePair(key, value) { - return new EnumPlaceholderImpl([key, value]); - } - /** - * - */ - function signal() { - return function (target, key) { - jsb.internal.add_script_signal(target, key); - }; - } - exports.ExportSignal = signal; - function export_multiline() { - return export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_MULTILINE_TEXT }); - } - exports.ExportMultiline = export_multiline; - function __export_range(type, min, max, step = 1, ...extra_hints) { - let hint_string = `${min},${max},${step}`; - if (typeof extra_hints !== "undefined") { - hint_string += "," + extra_hints.join(","); - } - return export_(type, { hint: PropertyHint.PROPERTY_HINT_RANGE, hint_string: hint_string }); - } - function export_range(min, max, step = 1, ...extra_hints) { - return __export_range(Variant.Type.TYPE_FLOAT, min, max, step, ...extra_hints); - } - exports.ExportRange = export_range; - function export_range_i(min, max, step = 1, ...extra_hints) { - return __export_range(Variant.Type.TYPE_INT, min, max, step, ...extra_hints); - } - exports.ExportIntRange = export_range_i; - /** String as a path to a file, custom filter provided as hint. */ - function export_file(filter) { - return export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_FILE, hint_string: filter }); - } - exports.ExportFile = export_file; - function export_dir(filter) { - return export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_DIR, hint_string: filter }); - } - function export_global_file(filter) { - return export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_GLOBAL_FILE, hint_string: filter }); - } - exports.ExportGlobalFile = export_global_file; - function export_global_dir(filter) { - return export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_GLOBAL_DIR, hint_string: filter }); - } - exports.ExportGlobalDir = export_global_dir; - function export_exp_easing(hint) { - return export_(Variant.Type.TYPE_FLOAT, { hint: PropertyHint.PROPERTY_HINT_EXP_EASING, hint_string: hint }); - } - // TODO: Godot's property hints make for a poor API. We should provide convenience methods to build them. - exports.ExportExpEasing = export_exp_easing; - /** - * A Shortcut for `export_(Variant.Type.TYPE_ARRAY, { class_: clazz })` - */ - function export_array(clazz) { - return export_(Variant.Type.TYPE_ARRAY, { class_: clazz }); - } - exports.ExportArray = export_array; - /** - * A Shortcut for exporting a dictionary { class_: [key_class, value_class] })` - */ - function export_dictionary(key_class, value_class) { - return export_(Variant.Type.TYPE_DICTIONARY, { class_: TypePair(key_class, value_class) }); - } - exports.ExportDictionary = export_dictionary; - function get_hint_string_for_enum(enum_type) { - const enum_vs = []; - for (const key in enum_type) { - enum_vs.push(`${key}:${enum_type[key]}`); - } - return enum_vs.join(","); - } - function get_hint_string(clazz) { - if (typeof clazz === "symbol") { - if (clazz === IntegerType) { - return Variant.Type.TYPE_INT + ":"; - } - if (clazz === FloatType) { - return Variant.Type.TYPE_FLOAT + ":"; - } - } - if (typeof clazz === "function" && typeof clazz.prototype !== "undefined") { - if (clazz.prototype instanceof Resource) { - return `${Variant.Type.TYPE_OBJECT}/${PropertyHint.PROPERTY_HINT_RESOURCE_TYPE}:${clazz.name}`; - } - else if (clazz.prototype instanceof Node) { - return `${Variant.Type.TYPE_OBJECT}/${PropertyHint.PROPERTY_HINT_NODE_TYPE}:${clazz.name}`; - } - else { - // other than Resource and Node, only primitive types and enum types are supported in gdscript - //TODO but we barely know anything about the enum types and int/float/StringName/... in JS - if (clazz === Boolean) { - return Variant.Type.TYPE_BOOL + ":"; - } - else if (clazz === Number) { - // we can only guess the type is float - return Variant.Type.TYPE_FLOAT + ":"; - } - else if (clazz === String) { - return Variant.Type.TYPE_STRING + ":"; - } - else { - if (typeof clazz.__builtin_type__ === "number") { - return clazz.__builtin_type__ + ":"; - } - else { - throw new Error("the given parameters are not supported or not implemented"); - } - } - } - } - if (typeof clazz === "object") { - if (clazz instanceof EnumPlaceholderImpl) { - return `${Variant.Type.TYPE_INT}/${Variant.Type.TYPE_INT}:${get_hint_string_for_enum(clazz.target)}`; - } - // probably an Array (as key-value type descriptor for a Dictionary) - if (clazz instanceof TypePairPlaceholderImpl) { - // special case for dictionary, int is preferred for key type of a dictionary - const key_type = clazz.key === Number ? Variant.Type.TYPE_INT + ":" : get_hint_string(clazz.key); - const value_type = get_hint_string(clazz.value); - if (key_type.length === 0 || value_type.length === 0) { - throw new Error("the given parameters are not supported or not implemented"); - } - return key_type + ';' + value_type; - } - } - return ""; - } - function export_object(class_) { - return export_(Variant.Type.TYPE_OBJECT, { class_: class_ }); - } - exports.ExportObject = export_object; - /** - * [low level export] - */ - function export_(type, details) { - return function (target, key) { - let ebd = { name: key, type: type, hint: PropertyHint.PROPERTY_HINT_NONE, hint_string: "", usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - if (typeof details === "object") { - if (typeof details.hint === "number") - ebd.hint = details.hint; - if (typeof details.usage === "number") - ebd.usage = details.usage; - if (typeof details.hint_string === "string") - ebd.hint_string = details.hint_string; - // overwrite hint if class_ is provided - try { - //TODO more general and unified way to handle all types - if (type === Variant.Type.TYPE_OBJECT) { - const clazz = details.class_; - if (typeof clazz === "function" && typeof clazz.prototype !== "undefined") { - if (clazz.prototype instanceof Resource) { - ebd.hint = PropertyHint.PROPERTY_HINT_RESOURCE_TYPE; - ebd.hint_string = clazz.name; - ebd.usage |= PropertyUsageFlags.PROPERTY_USAGE_SCRIPT_VARIABLE; - } - else if (clazz.prototype instanceof Node) { - ebd.hint = PropertyHint.PROPERTY_HINT_NODE_TYPE; - ebd.hint_string = clazz.name; - ebd.usage |= PropertyUsageFlags.PROPERTY_USAGE_SCRIPT_VARIABLE; - } - } - jsb.internal.add_script_property(target, ebd); - return; - } - let hint_string = get_hint_string(details.class_); - if (hint_string.length > 0) { - ebd.hint = PropertyHint.PROPERTY_HINT_TYPE_STRING; - ebd.hint_string = hint_string; - ebd.usage |= PropertyUsageFlags.PROPERTY_USAGE_SCRIPT_VARIABLE; - } - } - catch (e) { - if (ebd.hint === PropertyHint.PROPERTY_HINT_NONE) { - console.warn("the given parameters are not supported or not implemented (you need to give hint/hint_string/usage manually)", `class:${guess_type_name(Object.getPrototypeOf(target))} prop:${key} type:${type} class_:${guess_type_name(details.class_)}`); - } - } - } - jsb.internal.add_script_property(target, ebd); - }; - } - function Export(type, details) { - const _a = details !== null && details !== void 0 ? details : {}, { hintString, class: cls } = _a, consistent = __rest(_a, ["hintString", "class"]); - return export_(type, Object.assign(Object.assign({}, consistent), { hint_string: hintString, class_: cls })); - } - /** - * In Godot, class members can be exported. - * This means their value gets saved along with the resource (such as the scene) they're attached to. - * They will also be available for editing in the property editor. - * Exporting is done by using the `@export_var` (or `@export_`) annotation. - */ - function export_var(type, details) { - return export_(type, details); - } - exports.ExportVar = export_var; - /** - * NOTE only int value enums are allowed - */ - function export_enum(enum_type) { - return function (target, key) { - let hint_string = get_hint_string_for_enum(enum_type); - let ebd = { name: key, type: Variant.Type.TYPE_INT, hint: PropertyHint.PROPERTY_HINT_ENUM, hint_string: hint_string, usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - jsb.internal.add_script_property(target, ebd); - }; - } - exports.ExportEnum = export_enum; - /** - * NOTE only int value enums are allowed - */ - function export_flags(enum_type) { - return function (target, key) { - let enum_vs = []; - for (let c in enum_type) { - const v = enum_type[c]; - if (typeof v === "string" && enum_type[v] != 0) { - enum_vs.push(v + ":" + c); - } - } - let ebd = { name: key, type: Variant.Type.TYPE_INT, hint: PropertyHint.PROPERTY_HINT_FLAGS, hint_string: enum_vs.join(","), usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - jsb.internal.add_script_property(target, ebd); - }; - } - exports.ExportFlags = export_flags; - function rpc(config) { - return function (target, propertyKey, descriptor) { - if (typeof propertyKey !== "string") { - throw new Error("only string is allowed as propertyKey for rpc config"); - return; - } - if (typeof config !== "undefined") { - jsb.internal.add_script_rpc(target, propertyKey, { - mode: config.mode, - sync: typeof config.sync !== "undefined" ? (config.sync == "call_local") : undefined, - transfer_mode: config.transfer_mode, - transfer_channel: config.transfer_channel, - }); - } - else { - jsb.internal.add_script_rpc(target, propertyKey, {}); - } - }; - } - exports.Rpc = rpc; - /** - * auto initialized on ready (before _ready called) - * @param evaluator for now, only string is accepted - */ - function onready(evaluator) { - return function (target, key) { - let ebd = { name: key, evaluator: evaluator }; - jsb.internal.add_script_ready(target, ebd); - }; - } - exports.OnReady = onready; - function tool() { - return function (target) { - jsb.internal.add_script_tool(target); - }; - } - exports.Tool = tool; - function icon(path) { - return function (target) { - jsb.internal.add_script_icon(target, path); - }; - } - exports.Icon = icon; - function deprecated(message) { - return function (target, propertyKey, descriptor) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 0, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 0, message !== null && message !== void 0 ? message : ""); - }; - } - exports.Deprecated = deprecated; - function experimental(message) { - return function (target, propertyKey, descriptor) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 1, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 1, message !== null && message !== void 0 ? message : ""); - }; - } - exports.Experimental = experimental; - function help(message) { - return function (target, propertyKey, descriptor) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 2, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 2, message !== null && message !== void 0 ? message : ""); - }; - } - exports.Help = help; -}); -define("godot.lib.api", ["require", "exports"], function (require, exports) { - "use strict"; - const godot_api = require("godot"); - const jsb_api = require("godot-jsb"); - const ProxyTarget = godot_api.ProxyTarget; - const { get_class, get_enum, get_enum_value, get_internal_mapping, get_member } = jsb_api.internal.names; - function pascal_to_upper_snake_case(str) { - return str.replace(/[a-z][A-Z]|[0-9][A-Z][a-z]/g, (m) => `${m[0]}_${m.slice(1)}`).toUpperCase(); - } - function bind(target, value) { - return typeof value === "function" ? value.bind(target) : value; - } - function is_basic_object(value) { - const proto = Object.getPrototypeOf(value); - return proto === Object.prototype || !proto; - } - function proxy_value(value) { - if (value == null) { - return value; - } - if (value[ProxyTarget]) { - return value; - } - if (typeof value === "function") { - const proxied_function = function (...args) { - return proxy_value(value.apply(this, args.map(proxy_value))); - }; - proxied_function[ProxyTarget] = value; - return proxied_function; - } - if (typeof value !== "object") { - return value; - } - if (Array.isArray(value)) { - return array_proxy(value); - } - return is_basic_object(value) ? object_proxy(value) : instance_proxy(value); - } - const object_handler = { - get(target, p, _receiver) { - var _a; - if (p === ProxyTarget) { - return target; - } - const value = Reflect.get(target, p); - if (typeof p !== "string") { - return value; - } - if (((_a = p[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === p[0] - && value - && typeof value === "object" - && !Array.isArray(target) - && is_basic_object(value) - && !Object.entries(value).find(([k, v]) => k[0].toUpperCase() !== k[0] || typeof v !== "number")) { - return enum_proxy(value); - } - return proxy_value(bind(target, value)); - }, - }; - function array_proxy(arr) { - return new Proxy(arr, object_handler); - } - function object_proxy(obj) { - return new Proxy(obj, object_handler); - } - const instance_handler = { - defineProperty() { - return false; - }, - deleteProperty() { - return false; - }, - get(target, p, _receiver) { - if (p === ProxyTarget) { - return target; - } - if (typeof p !== "string" || p === "constructor") { - return Reflect.get(target, p); - } - return proxy_value(bind(target, Reflect.get(target, p !== "toString" ? get_member(p) : p))); - }, - getOwnPropertyDescriptor(target, p) { - return Reflect.getOwnPropertyDescriptor(target, typeof p === "string" ? get_member(p) : p); - }, - has(target, p) { - return Reflect.has(target, typeof p === "string" ? get_member(p) : p); - }, - isExtensible() { - return false; - }, - ownKeys(target) { - return Reflect.ownKeys(target).map(key => typeof key === "string" && get_internal_mapping(key) || key); - }, - preventExtensions() { - return true; - }, - set(target, p, new_value, _receiver) { - return Reflect.set(target, typeof p === "string" ? get_member(p) : p, new_value); - }, - setPrototypeOf(_target) { - return false; - }, - }; - function instance_proxy(target_instance) { - return new Proxy(target_instance, instance_handler); - } - const class_handler = Object.assign(Object.assign({}, instance_handler), { construct(target, args, _new_target) { - return instance_proxy(new target(...args)); - }, - get(target, p, _receiver) { - var _a; - if (p === ProxyTarget) { - return target; - } - if (p === Symbol.hasInstance) { - return Function[Symbol.hasInstance].bind(target); - } - if (typeof p !== "string") { - return Reflect.get(target, p); - } - if (p === "prototype") { - const proto = Reflect.get(target, "prototype"); - return proto && class_proxy(proto); - } - if (((_a = p[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== p[0]) { - return proxy_value(bind(target, Reflect.get(target, get_member(p)))); - } - if (p.toUpperCase() === p) { - return proxy_value(bind(target, Reflect.get(target, p))); - } - return enum_proxy(Reflect.get(target, get_enum(p))); - } }); - function class_proxy(target_class) { - return new Proxy(target_class, class_handler); - } - const enum_handler = { - defineProperty() { - return false; - }, - deleteProperty() { - return false; - }, - get(target, p, _receiver) { - if (p === ProxyTarget) { - return target; - } - if (typeof p !== "string") { - return Reflect.get(target, p); - } - return bind(target, Reflect.get(target, get_enum_value(p))); - }, - getOwnPropertyDescriptor(target, p) { - return Reflect.getOwnPropertyDescriptor(target, typeof p === "string" ? get_enum_value(p) : p); - }, - has(target, p) { - return Reflect.has(target, typeof p === "string" ? get_enum_value(p) : p); - }, - isExtensible() { - return false; - }, - ownKeys(target) { - return Reflect.ownKeys(target).map(key => typeof key === "string" ? pascal_to_upper_snake_case(key) : key); - }, - preventExtensions() { - return true; - }, - set() { - return false; - }, - setPrototypeOf() { - return false; - }, - }; - function enum_proxy(target_enum) { - if (typeof target_enum !== "object") { - return target_enum; - } - return new Proxy(target_enum, enum_handler); - } - const api_handler = (target) => ({ - defineProperty() { - return false; - }, - deleteProperty() { - return false; - }, - get(_pseudo_target, p, _receiver) { - var _a; - if (p === ProxyTarget) { - return target; - } - if (p in _pseudo_target) { - return _pseudo_target[p]; - } - if (typeof p !== "string") { - return Reflect.get(target, p); - } - if (p === "toString") { - return proxy_value(bind(target, Reflect.get(target, p))); - } - // Special case, see jsb_godot_module_loader.cpp - if (p === "Variant") { - return object_proxy(Reflect.get(target, p)); - } - if (((_a = p[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== p[0]) { - return proxy_value(bind(target, Reflect.get(target, get_member(p)))); - } - const value = Reflect.get(target, get_class(p)); - if (typeof value === "function") { - return class_proxy(value); - } - if (value == null || typeof value !== "object") { - return value; - } - return is_basic_object(value) ? enum_proxy(value) : instance_proxy(value); - }, - getOwnPropertyDescriptor(_pseudo_target, p) { - if (p in _pseudo_target) { - return Reflect.getOwnPropertyDescriptor(_pseudo_target, p); - } - return Reflect.getOwnPropertyDescriptor(target, typeof p === "string" ? get_member(p) : p); - }, - has(_pseudo_target, p) { - return Reflect.has(target, typeof p === "string" ? get_class(p) : p) || Reflect.has(_pseudo_target, p); - }, - isExtensible() { - return false; - }, - ownKeys(_pseudo_target) { - return Reflect.ownKeys(target) - .map(key => typeof key === "string" && get_internal_mapping(key) || key) - .concat(Reflect.ownKeys(_pseudo_target)); - }, - preventExtensions() { - return true; - }, - set(_pseudo_target, p, new_value, _receiver) { - return Reflect.set(target, typeof p === "string" ? get_member(p) : p, new_value); - }, - setPrototypeOf(_pseudo_target) { - return false; - }, - }); - const godot_jsb = object_proxy(jsb_api); - const api = new Proxy({ jsb: godot_jsb }, api_handler(godot_api)); - return api; -}); -define("godot.typeloader", ["require", "exports"], function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.on_type_loaded = on_type_loaded; - const type_db = {}; - class TypeProcessor { - constructor() { - // avoid cyclic call on the same type - this.locked = false; - this.callbacks = []; - } - push(callback) { - if (this.locked) { - throw new Error('TypeProcessor is locked'); - } - this.callbacks.push(callback); - return this; - } - exec(type) { - if (this.locked) { - throw new Error('TypeProcessor is locked'); - } - this.locked = true; - for (let cb of this.callbacks) { - try { - cb(type); - } - catch (e) { - console.error(e); - } - } - this.locked = false; - } - } - const type_processors = new Map(); - function _on_type_loaded(type_name, callback) { - if (typeof type_name !== 'string') { - throw new Error('type_name must be a string'); - } - if (typeof type_db[type_name] !== 'undefined') { - callback(type_db[type_name]); - return; - } - if (type_processors.has(type_name)) { - type_processors.get(type_name).push(callback); - } - else { - type_processors.set(type_name, new TypeProcessor().push(callback)); - } - } - // callback on a godot type loaded by jsb_godot_module_loader. - // each callback will be called only once. - function on_type_loaded(type_name, callback) { - if (typeof type_name === 'string') { - _on_type_loaded(type_name, callback); - } - else if (Array.isArray(type_name)) { - for (let name of type_name) { - _on_type_loaded(name, callback); - } - } - else { - throw new Error('type_name must be a string or an array of strings'); - } - } - // callback on a godot type loaded by jsb_godot_module_loader - exports._mod_proxy_ = function (builtin_symbols, type_loader_func) { - return new Proxy(type_db, { - set: function (target, prop_name, value) { - if (typeof prop_name !== 'string') { - throw new Error(`only string key is allowed`); - } - if (typeof target[prop_name] !== 'undefined') { - console.warn('overwriting existing value', prop_name); - } - target[prop_name] = value; - return true; - }, - get: function (target, prop_name) { - let o = target[prop_name]; - if (typeof o === 'undefined' && typeof prop_name === 'string') { - o = target[prop_name] = - typeof builtin_symbols[prop_name] !== "undefined" - ? builtin_symbols[prop_name] - : type_loader_func(prop_name); - } - return o; - } - }); - }; - exports._post_bind_ = function (type_name, type) { - const processors = type_processors.get(type_name); - if (processors !== undefined) { - processors.exec(type); - type_processors.delete(type_name); - } - }; -}); -define("jsb.core", ["require", "exports"], function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - const { jsb } = require("godot.lib.api"); - // [WARNING] ALL IMPLEMENTATIONS BELOW ARE FOR BACKWARD COMPATIBILITY ONLY. - // [WARNING] THEY EXIST TO TEMPORARILY SUPPORT OLD CODES THAT USE THESE FUNCTIONS. - // [WARNING] FOLLOW THE CHANGES IN `https://github.com/godotjs/GodotJS/tree/main/docs/breaking_changes.md` TO UPDATE YOUR CODES. - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use `SignalN<..., R>.as_promise()` instead. - */ - exports.$wait = function (signal) { - return new Promise(resolve => { - let fn = null; - fn = require("godot.lib.api").create(function () { - signal.disconnect(fn); - if (arguments.length == 0) { - resolve(undefined); - return; - } - if (arguments.length == 1) { - resolve(arguments[0]); - return; - } - // return as javascript array if more than one - resolve(Array.from(arguments)); - jsb.internal.notify_microtasks_run(); - }); - signal.connect(fn, 0); - }); - }; - /** - * Wait for seconds as a promise. - * ```typescript - * function seconds(secs: number) { - * return new Promise(function (resolve) { - * setTimeout(function () { - * resolve(undefined); - * }, secs * 1000); - * }); - *} - * ``` - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Implement your own version of this function. - * @param secs time to wait in seconds - * @returns Promise to await - */ - exports.seconds = function (secs) { - return new Promise(function (resolve) { - setTimeout(function () { - resolve(undefined); - }, secs * 1000); - }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.signal = function () { - return function (target, key) { - jsb.internal.add_script_signal(target, key); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_multiline = function () { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_MULTILINE_TEXT }); - }; - function __export_range(type, min, max, step = 1, ...extra_hints) { - const { PropertyHint } = require("godot.lib.api"); - let hint_string = `${min},${max},${step}`; - if (typeof extra_hints !== "undefined") { - hint_string += "," + extra_hints.join(","); - } - return exports.export_(type, { hint: PropertyHint.PROPERTY_HINT_RANGE, hint_string: hint_string }); - } - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_range = function (min, max, step = 1, ...extra_hints) { - const { Variant } = require("godot.lib.api"); - return __export_range(Variant.Type.TYPE_FLOAT, min, max, step, ...extra_hints); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_range_i = function (min, max, step = 1, ...extra_hints) { - const { Variant } = require("godot.lib.api"); - return __export_range(Variant.Type.TYPE_INT, min, max, step, ...extra_hints); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_file = function (filter) { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_FILE, hint_string: filter }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_dir = function (filter) { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_DIR, hint_string: filter }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_global_file = function (filter) { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_GLOBAL_FILE, hint_string: filter }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_global_dir = function (filter) { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_STRING, { hint: PropertyHint.PROPERTY_HINT_GLOBAL_DIR, hint_string: filter }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_exp_easing = function (hint) { - const { PropertyHint, Variant } = require("godot.lib.api"); - return exports.export_(Variant.Type.TYPE_FLOAT, { hint: PropertyHint.PROPERTY_HINT_EXP_EASING, hint_string: hint }); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_ = function (type, details) { - const { PropertyHint, PropertyUsageFlags } = require("godot.lib.api"); - return function (target, key) { - let ebd = { name: key, type: type, hint: PropertyHint.PROPERTY_HINT_NONE, hint_string: "", usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - if (typeof details === "object") { - if (typeof details.hint === "number") - ebd.hint = details.hint; - if (typeof details.hint_string === "string") - ebd.hint_string = details.hint_string; - if (typeof details.usage === "number") - ebd.usage = details.usage; - } - jsb.internal.add_script_property(target, ebd); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_enum = function (enum_type) { - const { PropertyHint, PropertyUsageFlags, Variant } = require("godot.lib.api"); - return function (target, key) { - let enum_vs = []; - for (let c in enum_type) { - const v = enum_type[c]; - if (typeof v === "string") { - enum_vs.push(v + ":" + c); - } - } - let ebd = { name: key, type: Variant.Type.TYPE_INT, hint: PropertyHint.PROPERTY_HINT_ENUM, hint_string: enum_vs.join(","), usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - jsb.internal.add_script_property(target, ebd); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.export_flags = function (enum_type) { - const { PropertyHint, PropertyUsageFlags, Variant } = require("godot.lib.api"); - return function (target, key) { - let enum_vs = []; - for (let c in enum_type) { - const v = enum_type[c]; - if (typeof v === "string" && enum_type[v] != 0) { - enum_vs.push(v + ":" + c); - } - } - let ebd = { name: key, type: Variant.Type.TYPE_INT, hint: PropertyHint.PROPERTY_HINT_FLAGS, hint_string: enum_vs.join(","), usage: PropertyUsageFlags.PROPERTY_USAGE_DEFAULT }; - jsb.internal.add_script_property(target, ebd); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.rpc = function (config) { - return function (target, propertyKey) { - if (typeof propertyKey !== "string") { - throw new Error("only string is allowed as propertyKey for rpc config"); - return; - } - if (typeof config !== "undefined") { - jsb.internal.add_script_rpc(target, propertyKey, { - mode: config.mode, - sync: typeof config.sync !== "undefined" ? (config.sync == "call_local") : undefined, - transfer_mode: config.transfer_mode, - transfer_channel: config.transfer_channel, - }); - } - else { - jsb.internal.add_script_rpc(target, propertyKey, {}); - } - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.onready = function (evaluator) { - return function (target, key) { - let ebd = { name: key, evaluator: evaluator }; - jsb.internal.add_script_ready(target, ebd); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.tool = function () { - return function (target) { - jsb.internal.add_script_tool(target); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.icon = function (path) { - return function (target) { - jsb.internal.add_script_icon(target, path); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.deprecated = function (message) { - return function (target, propertyKey) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 0, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 0, message !== null && message !== void 0 ? message : ""); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.experimental = function (message) { - return function (target, propertyKey) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 1, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 1, message !== null && message !== void 0 ? message : ""); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot.annotations` instead. - */ - exports.help = function (message) { - return function (target, propertyKey) { - if (typeof propertyKey === "undefined") { - jsb.internal.set_script_doc(target, undefined, 2, message !== null && message !== void 0 ? message : ""); - return; - } - if (typeof propertyKey !== "string" || propertyKey.length == 0) - throw new Error("only string key is allowed for doc"); - jsb.internal.set_script_doc(target, propertyKey, 2, message !== null && message !== void 0 ? message : ""); - }; - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot` instead. - */ - exports.GLOBAL_GET = function (entry_path) { - const { ProjectSettings } = require("godot.lib.api"); - return ProjectSettings.get_setting_with_override(entry_path); - }; - /** - * FOR BACKWARD COMPATIBILITY ONLY - * @deprecated [WARNING] This function is deprecated. Use the same function from `godot` instead. - */ - exports.EDITOR_GET = function (entry_path) { - const { EditorInterface } = require("godot.lib.api"); - return EditorInterface.get_editor_settings().get(entry_path); - }; -}); -define("jsb.inject", ["require", "exports"], function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - const proxyable_prototypes = []; - let helpers = null; - function get_helpers() { - if (!helpers) { - const { GArray, GDictionary, ProxyTarget } = require("godot"); - const get_member = require("godot-jsb").internal.names.get_member; - helpers = { - get_member, - proxy_wrap: function (value) { - if (typeof value !== "object" || value === null) { - return value; - } - const proto = Object.getPrototypeOf(value); - return proto && proxyable_prototypes.includes(proto) - ? value.proxy() - : value; - }, - proxy_unwrap: function (value) { - var _a; - if (typeof value !== "object" || value === null) { - return value; - } - return (_a = value[ProxyTarget]) !== null && _a !== void 0 ? _a : value; - }, - godot_wrap: function (value) { - if (Array.isArray(value)) { - return GArray.create(value); - } - const proto = Object.getPrototypeOf(value); - if (proto === Object.prototype || proto === null) { - return GDictionary.create(value); - } - return value; - }, - ProxyTarget: ProxyTarget, - }; - } - return helpers; - } - require("godot.typeloader").on_type_loaded("GArray", function (type) { - const helpers = get_helpers(); - const { get_member, godot_wrap, proxy_unwrap, proxy_wrap } = helpers; - const ProxyTarget = helpers.ProxyTarget; - proxyable_prototypes.push(type.prototype); - type.prototype[Symbol.iterator] = function* () { - const get_indexed = Reflect.get(this, get_member('get_indexed')); - for (let i = 0; i < this.size(); ++i) { - yield get_indexed.call(this, i); - } - }; - // We're not going to try expose the whole Array API, we'll just be super minimalistic. If the user is after - // something more complex, it'll likely be more performant to spread the GArray into a JS array anyway. - const pop_back_name = get_member('pop_back'); - const push_back_name = get_member('push_back'); - const array_api = { - forEach: function (callback, thisArg) { - const target = this[ProxyTarget]; - let i = 0; - for (const value of target) { - callback.call(thisArg !== null && thisArg !== void 0 ? thisArg : this, proxy_wrap(value), i++); - } - }, - includes: function (value) { - const target = this[ProxyTarget]; - return target.has(proxy_unwrap(value)); - }, - indexOf: function (value, fromIndex) { - const target = this[ProxyTarget]; - return target.find(proxy_unwrap(value), fromIndex); - }, - pop: function () { - const target = this[ProxyTarget]; - const result = Reflect.get(target, pop_back_name)(); - return result == null ? result : proxy_wrap(result); - }, - push: function (...values) { - const target = this[ProxyTarget]; - const push = Reflect.get(target, push_back_name); - for (const value of values) { - push.call(target, proxy_unwrap(value)); - } - return target.size(); - }, - toJSON: function (key = "") { - return [...this]; - }, - toString: function (index) { - return [...this].map(v => { var _a, _b; return (_b = (_a = v === null || v === void 0 ? void 0 : v.toString) === null || _a === void 0 ? void 0 : _a.call(v)) !== null && _b !== void 0 ? _b : v; }).join(","); - }, - }; - const array_iterator = function* () { - for (let i = 0; i < this.length; ++i) { - yield this[i]; - } - }; - const handler = { - get(target, p, receiver) { - if (typeof p !== "string") { - return p === ProxyTarget - ? target - : p === Symbol.iterator - ? array_iterator - : undefined; - } - const num = Number.parseInt(p); - if (!Number.isFinite(num)) { - if (p === 'length') { - return target.size(); - } - return array_api[p]; - } - if (num < 0 || num >= target.size()) { - return undefined; - } - return proxy_wrap(target.get(num)); - }, - getOwnPropertyDescriptor(target, p) { - if (typeof p !== "string") { - return undefined; - } - const num = Number.parseInt(p); - if (!(num >= 0) || num >= target.size()) { - return undefined; - } - return { - configurable: true, - enumerable: true, - value: proxy_wrap(target.get(num)), - writable: true, - }; - }, - has(target, p) { - if (typeof p !== "string") { - return p === Symbol.iterator; - } - const num = Number.parseInt(p); - if (!(num >= 0)) { - return p === 'length' || !!array_api[p]; - } - return num >= 0 && num < target.size(); - }, - isExtensible(target) { - return true; - }, - ownKeys(target) { - const keys = []; - for (let i = 0; i < target.size(); i++) { - keys.push(i.toString()); - } - return keys; - }, - preventExtensions(target) { - return true; - }, - set(target, p, newValue, receiver) { - if (typeof p !== "string") { - return false; - } - const num = Number.parseInt(p); - if (!(num >= 0) || num >= target.size()) { - return false; - } - target.set(num, proxy_unwrap(newValue)); - return true; - }, - setPrototypeOf(target, v) { - return false; - }, - }; - type.prototype.proxy = function () { - return new Proxy(this, handler); - }; - type.create = function (values) { - const arr = new type(); - const proxy = arr.proxy(); - proxy.push.apply(proxy, values.map(godot_wrap)); - return arr; - }; - }); - require("godot.typeloader").on_type_loaded("GDictionary", function (type) { - const helpers = get_helpers(); - const { get_member, godot_wrap, proxy_unwrap, proxy_wrap } = helpers; - const ProxyTarget = helpers.ProxyTarget; - proxyable_prototypes.push(type.prototype); - type.prototype[Symbol.iterator] = function* () { - const keys = this.keys(); - const arr_get_indexed = keys[get_member('get_indexed')]; - const dict_get_keyed = this[get_member('get_keyed')]; - for (let i = 0; i < keys.size(); ++i) { - const key = arr_get_indexed.call(keys, i); - yield { key: key, value: dict_get_keyed.call(this, key) }; - } - }; - const handler = { - defineProperty(target, property, attributes) { - return false; - }, - deleteProperty(target, p) { - target.erase(p); - return true; - }, - get(target, p, receiver) { - if (typeof p !== "string") { - return p === ProxyTarget - ? target - : undefined; - } - const value = target.get(p); - return value !== null - ? proxy_wrap(value) - : target.has(p) - ? value - : p === "toString" - ? Object.prototype.toString - : undefined; - }, - getOwnPropertyDescriptor(target, p) { - if (typeof p !== "string") { - return undefined; - } - return { - configurable: true, - enumerable: true, - value: proxy_wrap(target.get(p)), - writable: true, - }; - }, - has(target, p) { - if (typeof p !== "string") { - return false; - } - return target.has(p) || p === "toString"; - }, - isExtensible(target) { - return true; - }, - ownKeys(target) { - const keys = []; - for (const key of target.keys()) { - if (typeof key === "string") { - keys.push(key); - } - } - return keys; - }, - preventExtensions(target) { - return false; - }, - set(target, p, newValue, receiver) { - if (typeof p !== "string") { - return false; - } - target.set(p, proxy_unwrap(newValue)); - return true; - }, - setPrototypeOf(target, v) { - return false; - }, - }; - type.prototype.proxy = function () { - return new Proxy(this, handler); - }; - type.create = function (entries) { - const dict = new type(); - const proxy = dict.proxy(); - for (const [key, value] of Object.entries(entries)) { - proxy[key] = godot_wrap(value); - } - return dict; - }; - }); - require("godot.typeloader").on_type_loaded("Callable", function (type) { - const original_cc = type.create; - const custom_cc = require("godot-jsb").callable; - type.create = function () { - const argc = arguments.length; - if (argc == 1) { - if (typeof arguments[0] !== "function") { - throw new Error("not a function"); - } - return custom_cc(arguments[0]); - } - if (argc == 2) { - if (typeof arguments[1] !== "function") { - return original_cc(arguments[0], arguments[1]); - } - return custom_cc(arguments[0], arguments[1]); - } - throw new Error("invalid arguments"); - }; - }); - require("godot.typeloader").on_type_loaded("Signal", function (type) { - let { jsb, Callable, Object } = require("godot.lib.api"); - const get_member = jsb.internal.names.get_member; - const notify_microtasks_run = jsb.internal.notify_microtasks_run; - type.prototype[get_member('as_promise')] = function () { - let self = this; - return new Promise(function (resolve, reject) { - let fn = Callable.create(function () { - //self.disconnect(fn); - if (arguments.length == 0) { - resolve(undefined); - return; - } - if (arguments.length == 1) { - resolve(arguments[0]); - return; - } - // return as javascript array if more than one - resolve(Array.from(arguments)); - notify_microtasks_run(); - }); - self.connect(fn, Object.ConnectFlags.CONNECT_ONE_SHOT); - self = undefined; - }); - }; - }); - (function () { - Object.defineProperty(require("godot"), "GLOBAL_GET", { - value: function (entry_path) { - return require("godot.lib.api").ProjectSettings.get_setting_with_override(entry_path); - } - }); - Object.defineProperty(require("godot"), "EDITOR_GET", { - value: function (entry_path) { - return require("godot.lib.api").EditorInterface.get_editor_settings().get(entry_path); - } - }); - }()); - console.debug("jsb.inject loaded successfully"); -}); -require("jsb.inject"); -//# sourceMappingURL=jsb.runtime.bundle.js.map \ No newline at end of file diff --git a/scripts/out/jsb.runtime.bundle.js.map b/scripts/out/jsb.runtime.bundle.js.map deleted file mode 100644 index 411fb7fe..00000000 --- a/scripts/out/jsb.runtime.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsb.runtime.bundle.js","sourceRoot":"../src/","sources":["main.ts","godot.annotations.ts","godot.lib.api.ts","godot.typeloader.ts","jsb.core.ts","jsb.inject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;ICmCA,4BAEC;IAED,4BAEC;IAOD,wBAIC;IAID,4CAEC;IAYD,oCAEC;IAID,wCAEC;IAKD,kCAEC;IAID,gCAEC;IAED,gDAEC;IAID,8CAEC;IAID,8CAEC;IAQD,oCAEC;IAOD,8CAEC;IAoED,sCAEC;IAOD,0BA6CC;IAED,wBAQC;IAQD,gCAEC;IAOD,kCAMC;IAOD,oCAYC;IAWD,kBAkBC;IAQD,0BAKC;IAID,oBAIC;IAID,oBAIC;IAID,gCASC;IAID,oCASC;IAID,oBASC;IA1YD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5H,SAAS,eAAe,CAAC,IAAS;QAC9B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACjC,CAAC;YACD,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAKD,MAAM,mBAAmB;QAErB,YAAY,MAAW,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;KACrD;IAED,MAAM,uBAAuB;QAGzB,YAAY,GAAQ,EAAE,KAAU,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;KAC5E;IAED,SAAgB,QAAQ,CAAC,IAAS;QAC9B,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,SAAgB,QAAQ,CAAC,GAAoB,EAAE,KAAsB;QACjE,OAAO,IAAI,mBAAmB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAID;;OAEG;IACH,SAAgB,MAAM;QAClB,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,YAAY,GAAG,MAAM,CAAC;IAEnC,SAAgB,gBAAgB;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAClG,CAAC;IAEY,QAAA,eAAe,GAAG,gBAAgB,CAAC;IAEhD,SAAS,cAAc,CAAC,IAAwB,EAAE,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QAClH,IAAI,WAAW,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1C,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;YACrC,WAAW,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QAC7F,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IACnF,CAAC;IAEY,QAAA,WAAW,GAAG,YAAY,CAAC;IAExC,SAAgB,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QAC/F,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IACjF,CAAC;IAEY,QAAA,cAAc,GAAG,cAAc,CAAC;IAE7C,kEAAkE;IAClE,SAAgB,WAAW,CAAC,MAAc;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7G,CAAC;IAEY,QAAA,UAAU,GAAG,WAAW,CAAC;IAEtC,SAAgB,UAAU,CAAC,MAAc;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,SAAgB,kBAAkB,CAAC,MAAc;QAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,yBAAyB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACpH,CAAC;IAEY,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;IAEnD,SAAgB,iBAAiB,CAAC,MAAc;QAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACnH,CAAC;IAEY,QAAA,eAAe,GAAG,iBAAiB,CAAC;IAEjD,SAAgB,iBAAiB,CAAC,IAAyE;QACvG,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,yGAAyG;IAC5F,QAAA,eAAe,GAAG,iBAAiB,CAAC;IAEjD;;OAEG;IACH,SAAgB,YAAY,CAAC,KAAsB;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEY,QAAA,WAAW,GAAG,YAAY,CAAC;IAExC;;OAEG;IACH,SAAgB,iBAAiB,CAAC,SAA0B,EAAE,WAA4B;QACtF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEY,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;IAElD,SAAS,wBAAwB,CAAC,SAAc;QAC5C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,eAAe,CAAC,KAAU;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACvC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACzC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;YACxE,IAAI,KAAK,CAAC,SAAS,YAAY,QAAQ,EAAE,CAAC;gBACtC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,2BAA2B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACnG,CAAC;iBAAM,IAAI,KAAK,CAAC,SAAS,YAAY,IAAI,EAAE,CAAC;gBACzC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,uBAAuB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACJ,8FAA8F;gBAC9F,0FAA0F;gBAE1F,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACpB,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACxC,CAAC;qBAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC1B,sCAAsC;oBACtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACzC,CAAC;qBAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACJ,IAAI,OAAa,KAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;wBACpD,OAAa,KAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACJ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;oBACjF,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACvC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzG,CAAC;YAED,oEAAoE;YACpE,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,6EAA6E;gBAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjG,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBACjF,CAAC;gBACD,OAAO,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC;YACvC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,SAAgB,aAAa,CAAC,MAAuB;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAEY,QAAA,YAAY,GAAG,aAAa,CAAC;IAE1C;;OAEG;IACH,SAAgB,OAAO,CAAC,IAAwB,EAAE,OAAyH;QACvK,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YAE9I,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC9D,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oBAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBACjE,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;oBAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAEnF,uCAAuC;gBACvC,IAAI,CAAC;oBACD,uDAAuD;oBAEvD,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC7B,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;4BACxE,IAAI,KAAK,CAAC,SAAS,YAAY,QAAQ,EAAE,CAAC;gCACtC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,2BAA2B,CAAC;gCACpD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;gCAC7B,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC,8BAA8B,CAAC;4BACnE,CAAC;iCAAM,IAAI,KAAK,CAAC,SAAS,YAAY,IAAI,EAAE,CAAC;gCACzC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,uBAAuB,CAAC;gCAChD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;gCAC7B,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC,8BAA8B,CAAC;4BACnE,CAAC;wBACL,CAAC;wBAED,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;wBAC9C,OAAO;oBACX,CAAC;oBACD,IAAI,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,yBAAyB,CAAC;wBAClD,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;wBAC9B,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC,8BAA8B,CAAC;oBACnE,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,kBAAkB,EAAE,CAAC;wBAC/C,OAAO,CAAC,IAAI,CAAC,8GAA8G,EACvH,SAAS,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG,SAAS,IAAI,WAAW,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACtI,CAAC;gBACL,CAAC;YACL,CAAC;YACD,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC;IAED,SAAgB,MAAM,CAAC,IAAwB,EAAE,OAAuH;QACvK,MAAM,KAA4C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EAAzD,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAiC,EAA5B,UAAU,cAAvC,uBAAyC,CAAgB,CAAC;QAEhE,OAAO,OAAO,CAAC,IAAI,kCACf,UAAU,KACb,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,GAAG,IACV,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAgB,UAAU,CAAC,IAAwB,EAAE,OAAyH;QAC1K,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAEY,QAAA,SAAS,GAAG,UAAU,CAAC;IAEpC;;OAEG;IACH,SAAgB,WAAW,CAAC,SAAc;QACtC,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,WAAW,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YACxK,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,UAAU,GAAG,WAAW,CAAC;IAEtC;;OAEG;IACH,SAAgB,YAAY,CAAC,SAAc;QACvC,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,OAAO,GAAkB,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YACD,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YAC/K,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,WAAW,GAAG,YAAY,CAAC;IASxC,SAAgB,GAAG,CAAC,MAAkB;QAClC,OAAO,UAAU,MAAW,EAAE,WAAyB,EAAE,UAA+B;YACpF,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;oBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;oBACpF,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;iBAC5C,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;QACL,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,GAAG,GAAG,GAAG,CAAC;IAEvB;;;OAGG;IACH,SAAgB,OAAO,CAAC,SAA0D;QAC9E,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAC9C,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,OAAO,GAAG,OAAO,CAAC;IAE/B,SAAgB,IAAI;QAChB,OAAO,UAAU,MAAW;YACxB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,IAAI,GAAG,IAAI,CAAC;IAEzB,SAAgB,IAAI,CAAC,IAAY;QAC7B,OAAO,UAAU,MAAW;YACxB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,IAAI,GAAG,IAAI,CAAC;IAEzB,SAAgB,UAAU,CAAC,OAAgB;QACvC,OAAO,UAAU,MAAW,EAAE,WAAyB,EAAE,UAA+B;YACpF,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,UAAU,GAAG,UAAU,CAAC;IAErC,SAAgB,YAAY,CAAC,OAAgB;QACzC,OAAO,UAAU,MAAW,EAAE,WAAyB,EAAE,UAA+B;YACpF,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,YAAY,GAAG,YAAY,CAAC;IAEzC,SAAgB,IAAI,CAAC,OAAgB;QACjC,OAAO,UAAU,MAAW,EAAE,WAAyB,EAAE,UAA+B;YACpF,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC;IAEY,QAAA,IAAI,GAAG,IAAI,CAAC;;;;IC5YzB,MAAM,SAAS,GAAiB,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAoB,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAiC,SAAS,CAAC,WAAW,CAAC;IACxE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEzG,SAAS,0BAA0B,CAAC,GAAW;QAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACpG,CAAC;IAED,SAAS,IAAI,CAAC,MAAW,EAAE,KAAU;QACjC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,CAAC;IAED,SAAS,eAAe,CAAC,KAAa;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC;IAChD,CAAC;IAED,SAAS,WAAW,CAAC,KAAU;QAC3B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,UAAoB,GAAG,IAAW;gBACvD,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACjE,CAAoD,CAAC;YACrD,gBAAgB,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;YACtC,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,cAAc,GAAG;QACnB,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS;;YACpB,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAErC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,CAAC,CAAC,CAAC,CAAC;mBAC3B,KAAK;mBACL,OAAO,KAAK,KAAK,QAAQ;mBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;mBACtB,eAAe,CAAC,KAAK,CAAC;mBACtB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACjG,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;KACwB,CAAC;IAG9B,SAAS,WAAW,CAAI,GAAM;QAC1B,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,YAAY,CAAI,GAAM;QAC3B,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,gBAAgB,GAAG;QACrB,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS;YACpB,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;gBAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,wBAAwB,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,YAAY;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,MAAM;YACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,iBAAiB;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;QACD,cAAc,CAAC,OAAO;YAClB,OAAO,KAAK,CAAC;QACjB,CAAC;KACwB,CAAC;IAE9B,SAAS,cAAc,CAAI,eAAkB;QACzC,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,gCACf,gBAAgB,KACnB,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW;YAC/B,OAAO,cAAc,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS;;YACpB,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC/C,OAAO,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,CAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,GACwB,CAAC;IAE9B,SAAS,WAAW,CAAI,YAAe;QACnC,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,YAAY,GAAG;QACjB,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS;YACpB,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,wBAAwB,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,YAAY;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,MAAM;YACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/G,CAAC;QACD,iBAAiB;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,GAAG;YACC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;KACwB,CAAC;IAE9B,SAAS,UAAU,CAAI,WAAc;QACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC;QAClC,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,cAAc;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS;;YAC5B,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;gBACtB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACnB,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClB,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;YAC/C,CAAC;YAED,IAAI,CAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9E,CAAC;QACD,wBAAwB,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,GAAG,CAAC,cAAc,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,YAAY;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,cAAc;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;iBACzB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;iBACvE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,iBAAiB;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS;YACvC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;QACD,cAAc,CAAC,cAAc;YACzB,OAAO,KAAK,CAAC;QACjB,CAAC;KACyB,CAAA,CAAC;IAE/B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAoB,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAA4C,CAAC;IAS7G,OAAS,GAAG,CAAC;;;;;ICpPb,wCAUC;IA7DD,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,MAAM,aAAa;QAAnB;YACI,qCAAqC;YAC7B,WAAM,GAAG,KAAK,CAAC;YACf,cAAS,GAA8B,EAAE,CAAC;QAwBtD,CAAC;QAtBG,IAAI,CAAC,QAA4B;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,IAAS;YACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACD,EAAE,CAAC,IAAI,CAAC,CAAC;gBACb,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;YACL,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;KACJ;IACD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEzD,SAAS,eAAe,CAAC,SAAiB,EAAE,QAA4B;QACpE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;YAC5C,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,aAAa,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,0CAA0C;IAC1C,SAAgB,cAAc,CAAC,SAA4B,EAAE,QAA4B;QACrF,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,OAAO,CAAC,WAAW,GAAG,UAAU,eAA6C,EAAE,gBAA4C;QACvH,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACtB,GAAG,EAAE,UAAU,MAAM,EAAE,SAAS,EAAE,KAAK;gBACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAClD,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBAC1B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,GAAG,EAAE,UAAU,MAAW,EAAG,SAAS;gBAClC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1B,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC5D,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;wBACjB,OAAO,eAAe,CAAC,SAAS,CAAC,KAAK,WAAW;4BAC7C,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC;4BAC5B,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,CAAC,CAAC;YACb,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAA;IAED,OAAO,CAAC,WAAW,GAAG,UAAU,SAAiB,EAAE,IAAS;QACxD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;IACL,CAAC,CAAA;;;;;IClGD,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,kFAAkF;IAClF,gIAAgI;IAEhI;;;OAGG;IACH,OAAO,CAAC,KAAK,GAAG,UAAU,MAAW;QACjC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,EAAE,GAAQ,IAAI,CAAC;YACnB,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;gBACjC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnB,OAAO;gBACX,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtB,OAAO;gBACX,CAAC;gBACD,8CAA8C;gBAC9C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,OAAO,GAAG,UAAS,IAAY;QACnC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO;YAChC,UAAU,CAAC;gBACP,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,MAAM,GAAG;QACb,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB,GAAG;QACvB,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAC1G,CAAC,CAAA;IAED,SAAS,cAAc,CAAC,IAAwB,EAAE,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QAClH,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,WAAW,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1C,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;YACrC,WAAW,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IACvG,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY,GAAG,UAAU,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QACjG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IACnF,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,cAAc,GAAG,UAAU,GAAW,EAAE,GAAW,EAAE,OAAe,CAAC,EAAE,GAAG,WAAqB;QACnG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IACjF,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW,GAAG,UAAU,MAAc;QAC1C,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACrH,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,UAAU,GAAG,UAAU,MAAc;QACzC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACpH,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,kBAAkB,GAAG,UAAU,MAAc;QACjD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,yBAAyB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5H,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,GAAG,UAAU,MAAc;QAChD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3H,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,GAAG,UAAU,IAAyE;QAC3G,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACxH,CAAC,CAAA;IAGD;;;OAGG;IACH,OAAO,CAAC,OAAO,GAAG,UAAU,IAAwB,EAAE,OAAkH;QACpK,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YAC9I,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC9D,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;oBAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBACnF,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oBAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACrE,CAAC;YACD,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW,GAAG,UAAU,SAAc;QAC1C,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/E,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,OAAO,GAAkB,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YACD,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YAC9K,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY,GAAG,UAAU,SAAc;QAC3C,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/E,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,OAAO,GAAkB,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;YACD,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YAC/K,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAA;IACL,CAAC,CAAA;IASD;;;OAGG;IACH,OAAO,CAAC,GAAG,GAAG,UAAU,MAAkB;QACtC,OAAO,UAAU,MAAW,EAAE,WAAyB;YACnD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;oBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;oBACpF,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;iBAC5C,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;QACL,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,OAAO,GAAG,UAAU,SAA0D;QAClF,OAAO,UAAU,MAAW,EAAE,GAAW;YACrC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAC9C,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,GAAG;QACX,OAAO,UAAU,MAAW;YACxB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,GAAG,UAAU,IAAY;QACjC,OAAO,UAAU,MAAW;YACxB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU,GAAG,UAAU,OAAgB;QAC3C,OAAO,UAAU,MAAW,EAAE,WAAyB;YACnD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY,GAAG,UAAU,OAAgB;QAC7C,OAAO,UAAU,MAAW,EAAE,WAAyB;YACnD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,GAAG,UAAU,OAAgB;QACrC,OAAO,UAAU,MAAW,EAAE,WAAyB;YACnD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtH,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAA;IACL,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU,GAAG,UAAU,UAAe;QAC1C,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,eAAe,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU,GAAG,UAAU,UAAe;QAC1C,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,eAAe,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC,CAAA;;;;;IC1TD,MAAM,oBAAoB,GAAU,EAAE,CAAC;IAEvC,IAAI,OAAO,GAAwB,IAAI,CAAC;IAExC,SAAS,WAAW;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAiB,CAAC;YAC9E,MAAM,UAAU,GAAI,OAAO,CAAC,WAAW,CAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;YAEvF,OAAO,GAAG;gBACN,UAAU;gBACV,UAAU,EAAE,UAAS,KAAU;oBAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC9C,OAAO,KAAK,CAAC;oBACjB,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC3C,OAAO,KAAK,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAClD,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;wBACf,CAAC,CAAC,KAAK,CAAC;gBACd,CAAC;gBACD,YAAY,EAAE,UAAS,KAAU;;oBAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC9C,OAAO,KAAK,CAAC;oBACjB,CAAC;oBAED,OAAO,MAAA,KAAK,CAAC,WAAW,CAAC,mCAAI,KAAK,CAAC;gBACvC,CAAC;gBACD,UAAU,EAAE,UAAU,KAAU;oBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChC,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAE3C,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC/C,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrC,CAAC;oBAED,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,WAAW,EAAE,WAA0C;aAC1D,CAAA;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,IAAS;QACpE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACrE,MAAM,WAAW,GAAgC,OAAO,CAAC,WAAW,CAAC;QAErE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACvC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC;QAEF,4GAA4G;QAC5G,uGAAuG;QACvG,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG;YACd,OAAO,EAAE,UAAkC,QAA6C,EAAE,OAAa;gBACnG,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;YACD,QAAQ,EAAE,UAAkC,KAAU;gBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,EAAE,UAAkC,KAAU,EAAE,SAAkB;gBACrE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YACD,GAAG,EAAE;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;gBACpD,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,EAAE,UAAkC,GAAG,MAAa;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;YACD,MAAM,EAAE,UAAkC,GAAG,GAAG,EAAE;gBAC9C,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,QAAQ,EAAE,UAAkC,KAAc;gBACtD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,eAAC,OAAA,MAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,iDAAI,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9D,CAAC;SACK,CAAC;QAEX,MAAM,cAAc,GAAG,QAAQ,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,OAAO,GAA+B;YACxC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ;gBACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,WAAW;wBACtB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ;4BACrB,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,SAAS,CAAC;gBACpB,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACjB,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;oBACzB,CAAC;oBAED,OAAO,SAAS,CAAC,CAA2B,CAAC,CAAC;gBAClD,CAAC;gBAED,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClC,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACtC,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,OAAO;oBACH,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAClC,QAAQ,EAAE,IAAI;iBACjB,CAAC;YACN,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC;gBACjC,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,CAA2B,CAAC,CAAC;gBACtE,CAAC;gBAED,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3C,CAAC;YACD,YAAY,CAAC,MAAM;gBACf,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,MAAM;gBACV,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,iBAAiB,CAAC,MAAM;gBACpB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ;gBAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACtC,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACjB,CAAC;SACJ,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG;YACnB,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,UAAS,MAAa;YAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,IAAS;QACzE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACrE,MAAM,WAAW,GAAgC,OAAO,CAAC,WAAW,CAAC;QAErE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9D,CAAC;QACL,CAAC,CAAA;QAED,MAAM,OAAO,GAAoC;YAC7C,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU;gBACvC,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ;gBACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,KAAK,WAAW;wBACpB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,SAAS,CAAC;gBACpB,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5B,OAAO,KAAK,KAAK,IAAI;oBACjB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;oBACnB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBACX,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,CAAC,KAAK,UAAU;4BACd,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ;4BAC3B,CAAC,CAAC,SAAS,CAAC;YAC5B,CAAC;YACD,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,SAAS,CAAC;gBACrB,CAAC;gBAED,OAAO;oBACH,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChC,QAAQ,EAAE,IAAI;iBACjB,CAAC;YACN,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;YAC7C,CAAC;YACD,YAAY,CAAC,MAAM;gBACf,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,MAAM;gBACV,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,iBAAiB,CAAC,MAAM;gBACpB,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ;gBAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,cAAc,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACjB,CAAC;SACJ,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG;YACnB,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,UAAS,OAA4B;YAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,IAAS;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;QAEhD,IAAI,CAAC,MAAM,GAAG;YACV,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;YAC9B,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;oBACrC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC,CAAA;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,IAAS;QACpE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAEjE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;gBACxC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACrB,sBAAsB;oBACtB,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,SAAS,CAAC,CAAC;wBACnB,OAAO;oBACX,CAAC;oBACD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtB,OAAO;oBACX,CAAC;oBACD,8CAA8C;oBAC9C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC/B,qBAAqB,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBACvD,IAAI,GAAG,SAAS,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC,CAAA;IACL,CAAC,CAAC,CAAC;IAEH,CAAC;QACG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE;YAClD,KAAK,EAAE,UAAU,UAAkB;gBAC/B,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAC1F,CAAC;SACJ,CAAC,CAAA;QAEF,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE;YAClD,KAAK,EAAE,UAAU,UAAkB;gBAC/B,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1F,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,CAAC;IAEL,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;;AL1YhD,OAAO,CAAC,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/scripts/release/publish.js b/scripts/release/publish.js new file mode 100644 index 00000000..421f3ab9 --- /dev/null +++ b/scripts/release/publish.js @@ -0,0 +1,60 @@ +import { writeFileSync, readFileSync } from "node:fs"; +import { execSync } from "child_process"; + +const releaseNotesPath = "release-notes.md"; + +function extractChangelogContent(filePath) { + const changelog = readFileSync(filePath, "utf-8"); + const lines = changelog.split(/\r?\n/); // Split by line endings for different OS + let content = ""; + let capture = false; + + for (const line of lines) { + let firstCapture = false; + if (line.startsWith("## ")) { + if (capture) break; // Stop capturing if another "## " is found + capture = true; // Start capturing + firstCapture = true; + } + + if (!firstCapture && capture) { + content += line + "\n"; // Add the line to the content + } + } + + return content.trim().replaceAll("###", "##"); // Remove trailing whitespace +} + +function publishRelease(godotVersion, v8) { + const content = extractChangelogContent("CHANGELOG.md"); + + writeFileSync( + releaseNotesPath, + `Godot version: ${godotVersion}\n\nV8 version: ${v8}\n\n` + content, + ); + + const version = `v${JSON.parse(execSync("pnpm pkg get version").toString().trim())}`; + console.log(`Found version:`, version); + + const releaseCommand = `gh release create "${version}" --target main --title "${version}" --notes-file "${releaseNotesPath}"`; + if (process.env.CI) { + console.log(execSync(releaseCommand).toString()); + } else { + console.log( + "process.env.CI not set would run command:\n", + releaseCommand, + "\n\nContent for changelog:\n", + content, + ); + } +} +const [, , godotVersion, v8] = process.argv; +if (!v8) { + console.error("Cannot find version for v8"); + process.exit(1); +} +if (!godotVersion) { + console.error("Cannot find Godot version"); + process.exit(1); +} +publishRelease(godotVersion, v8); diff --git a/scripts/release/should-publish.js b/scripts/release/should-publish.js new file mode 100644 index 00000000..cdabed3b --- /dev/null +++ b/scripts/release/should-publish.js @@ -0,0 +1,12 @@ +import { execSync } from "child_process"; + +function shouldPublish() { + const version = `v${JSON.parse(execSync("pnpm pkg get version").toString().trim())}`; + const releases = JSON.parse( + execSync("gh release list --json name --limit 5").toString().trim(), + ); + + console.log(releases.some((release) => release.name === version).toString()); +} + +shouldPublish(); diff --git a/scripts/release/version.js b/scripts/release/version.js new file mode 100644 index 00000000..69e26e38 --- /dev/null +++ b/scripts/release/version.js @@ -0,0 +1,20 @@ +import { writeFileSync } from "fs"; +import { execSync } from "child_process"; + +function updateVersion() { + const version = `${JSON.parse(execSync("pnpm pkg get version").toString().trim())}`; + const [major, minor, patch] = version.split("."); + const newContent = `#ifndef GODOTJS_VERSION_H +#define GODOTJS_VERSION_H + +#include "jsb.gen.h" + +#define JSB_MAJOR_VERSION ${major} +#define JSB_MINOR_VERSION ${minor} +#define JSB_PATCH_VERSION ${patch} + +#endif`; + writeFileSync("jsb_version.h", newContent, "utf8"); +} + +updateVersion(); From b52c092b35d3e78f1ac70a8ca732e6212292bfc1 Mon Sep 17 00:00:00 2001 From: Nicolas Merget Date: Sun, 1 Jun 2025 21:31:44 +0200 Subject: [PATCH 2/3] chore: renamed workflow names --- .../{builds/android.yml => build_android.yml} | 0 .../workflows/{builds/ios.yml => build_ios.yml} | 0 .../{builds/linux.yml => build_linux.yml} | 0 .../{builds/macos.yml => build_macos.yml} | 0 .../workflows/{builds/web.yml => build_web.yml} | 0 .../{builds/windows.yml => build_windows.yml} | 0 .../environment.yml => misc_environment.yml} | 0 .../{misc/release.yml => misc_release.yml} | 0 .github/workflows/runner.yml | 16 ++++++++-------- 9 files changed, 8 insertions(+), 8 deletions(-) rename .github/workflows/{builds/android.yml => build_android.yml} (100%) rename .github/workflows/{builds/ios.yml => build_ios.yml} (100%) rename .github/workflows/{builds/linux.yml => build_linux.yml} (100%) rename .github/workflows/{builds/macos.yml => build_macos.yml} (100%) rename .github/workflows/{builds/web.yml => build_web.yml} (100%) rename .github/workflows/{builds/windows.yml => build_windows.yml} (100%) rename .github/workflows/{misc/environment.yml => misc_environment.yml} (100%) rename .github/workflows/{misc/release.yml => misc_release.yml} (100%) diff --git a/.github/workflows/builds/android.yml b/.github/workflows/build_android.yml similarity index 100% rename from .github/workflows/builds/android.yml rename to .github/workflows/build_android.yml diff --git a/.github/workflows/builds/ios.yml b/.github/workflows/build_ios.yml similarity index 100% rename from .github/workflows/builds/ios.yml rename to .github/workflows/build_ios.yml diff --git a/.github/workflows/builds/linux.yml b/.github/workflows/build_linux.yml similarity index 100% rename from .github/workflows/builds/linux.yml rename to .github/workflows/build_linux.yml diff --git a/.github/workflows/builds/macos.yml b/.github/workflows/build_macos.yml similarity index 100% rename from .github/workflows/builds/macos.yml rename to .github/workflows/build_macos.yml diff --git a/.github/workflows/builds/web.yml b/.github/workflows/build_web.yml similarity index 100% rename from .github/workflows/builds/web.yml rename to .github/workflows/build_web.yml diff --git a/.github/workflows/builds/windows.yml b/.github/workflows/build_windows.yml similarity index 100% rename from .github/workflows/builds/windows.yml rename to .github/workflows/build_windows.yml diff --git a/.github/workflows/misc/environment.yml b/.github/workflows/misc_environment.yml similarity index 100% rename from .github/workflows/misc/environment.yml rename to .github/workflows/misc_environment.yml diff --git a/.github/workflows/misc/release.yml b/.github/workflows/misc_release.yml similarity index 100% rename from .github/workflows/misc/release.yml rename to .github/workflows/misc_release.yml diff --git a/.github/workflows/runner.yml b/.github/workflows/runner.yml index 3ccab44a..fba22405 100644 --- a/.github/workflows/runner.yml +++ b/.github/workflows/runner.yml @@ -20,46 +20,46 @@ permissions: jobs: environment: name: 🌳 Set Environment - uses: ./.github/workflows/misc/environment.yml + uses: ./.github/workflows/misc_environment.yml android-build: name: 🤖 Android - uses: ./.github/workflows/builds/android.yml + uses: ./.github/workflows/build_android.yml needs: environment with: version: ${{ needs.environment.outputs.version }} ios-build: name: 🍏 iOS - uses: ./.github/workflows/builds/ios.yml + uses: ./.github/workflows/build_ios.yml needs: environment with: version: ${{ needs.environment.outputs.version }} linux-build: name: 🐧 Linux - uses: ./.github/workflows/builds/linux.yml + uses: ./.github/workflows/build_linux.yml needs: environment with: version: ${{ needs.environment.outputs.version }} macos-build: name: 🍎 macOS - uses: ./.github/workflows/builds/macos.yml + uses: ./.github/workflows/build_macos.yml needs: environment with: version: ${{ needs.environment.outputs.version }} windows-build: name: 🏁 Windows - uses: ./.github/workflows/builds/windows.yml + uses: ./.github/workflows/build_windows.yml needs: environment with: version: ${{ needs.environment.outputs.version }} web-build: name: 🌐 Web - uses: ./.github/workflows/builds/web.yml + uses: ./.github/workflows/build_web.yml needs: environment with: version: ${{ needs.environment.outputs.version }} @@ -106,7 +106,7 @@ jobs: name: 🦅 Release if: needs.environment.outputs.publish == 'true' needs: [ checks-done, environment ] - uses: ./.github/workflows/misc/release.yml + uses: ./.github/workflows/misc_release.yml secrets: inherit with: version: ${{ needs.environment.outputs.version }} From 843d3991fd45131315d7f4ffd8ef800581200102 Mon Sep 17 00:00:00 2001 From: Nicolas Merget Date: Sun, 1 Jun 2025 21:43:18 +0200 Subject: [PATCH 3/3] fix: issue with upload for script/out --- .github/workflows/misc_environment.yml | 2 +- .github/workflows/runner.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/misc_environment.yml b/.github/workflows/misc_environment.yml index 327bf5a5..37e6fd01 100644 --- a/.github/workflows/misc_environment.yml +++ b/.github/workflows/misc_environment.yml @@ -42,7 +42,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: out - path: ${{github.workspace}}/modules/GodotJS/scripts/out + path: ${{github.workspace}}/scripts/out retention-days: 10 - name: 🏷 Set Versions diff --git a/.github/workflows/runner.yml b/.github/workflows/runner.yml index fba22405..5f7cbb2b 100644 --- a/.github/workflows/runner.yml +++ b/.github/workflows/runner.yml @@ -99,13 +99,13 @@ jobs: macos-build, linux-build, ios-build, - android-build + android-build, ] release: name: 🦅 Release - if: needs.environment.outputs.publish == 'true' - needs: [ checks-done, environment ] + if: needs.environment.outputs.publish == 'true' && github.event_name != 'pull_request' + needs: [checks-done, environment] uses: ./.github/workflows/misc_release.yml secrets: inherit with: