From d1b5dd8b8a9acbb59a2ff8b821b9e8628dabad16 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Sun, 19 Jan 2025 12:11:19 +0200 Subject: [PATCH] initial work on pulumi platform provider --- .github/workflows/canary.yaml | 33 + .github/workflows/pull-request-lint.yaml | 1 + .github/workflows/pulumi-pull.yaml | 36 + .github/workflows/pulumi-release.yaml | 61 + .mergify.yml | 6 + README.md | 1 + pulumi/.gitignore | 2 + pulumi/LICENSE | 21 + pulumi/README.md | 27 + pulumi/deploy.sh | 20 + pulumi/examples/bucket.main.w | 10 + pulumi/examples/function.main.w | 6 + pulumi/examples/queue.main.w | 11 + pulumi/lib.test.w | 8 + pulumi/lib.w | 5 + pulumi/package-lock.json | 6445 ++++++++++++++++++++++ pulumi/package.json | 26 + pulumi/src/app.ts | 67 + pulumi/src/aws/bucket.ts | 46 + pulumi/src/aws/function.ts | 50 + pulumi/src/aws/queue.ts | 121 + pulumi/src/aws/website.ts | 21 + pulumi/src/bucket.ts | 123 + pulumi/src/function.ts | 127 + pulumi/src/index.ts | 29 + pulumi/src/queue.ts | 64 + pulumi/src/resource.ts | 59 + pulumi/src/schema.ts | 41 + pulumi/src/website.ts | 22 + pulumi/tsconfig.json | 26 + 30 files changed, 7515 insertions(+) create mode 100644 .github/workflows/pulumi-pull.yaml create mode 100644 .github/workflows/pulumi-release.yaml create mode 100644 pulumi/.gitignore create mode 100644 pulumi/LICENSE create mode 100644 pulumi/README.md create mode 100755 pulumi/deploy.sh create mode 100644 pulumi/examples/bucket.main.w create mode 100644 pulumi/examples/function.main.w create mode 100644 pulumi/examples/queue.main.w create mode 100644 pulumi/lib.test.w create mode 100644 pulumi/lib.w create mode 100644 pulumi/package-lock.json create mode 100644 pulumi/package.json create mode 100644 pulumi/src/app.ts create mode 100644 pulumi/src/aws/bucket.ts create mode 100644 pulumi/src/aws/function.ts create mode 100644 pulumi/src/aws/queue.ts create mode 100644 pulumi/src/aws/website.ts create mode 100644 pulumi/src/bucket.ts create mode 100644 pulumi/src/function.ts create mode 100644 pulumi/src/index.ts create mode 100644 pulumi/src/queue.ts create mode 100644 pulumi/src/resource.ts create mode 100644 pulumi/src/schema.ts create mode 100644 pulumi/src/website.ts create mode 100644 pulumi/tsconfig.json diff --git a/.github/workflows/canary.yaml b/.github/workflows/canary.yaml index c88a2303..d471988c 100644 --- a/.github/workflows/canary.yaml +++ b/.github/workflows/canary.yaml @@ -565,6 +565,39 @@ jobs: cd postgres wing test timeout_minutes: 5 + canary-pulumi: + name: Test pulumi + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + sparse-checkout: pulumi + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org + - name: Install winglang and dependencies + uses: nick-fields/retry@v3 + with: + max_attempts: 3 + command: npm i -g winglang --loglevel verbose + timeout_minutes: 3 + - name: Install dependencies + uses: nick-fields/retry@v3 + with: + max_attempts: 3 + command: cd pulumi && npm i --include=dev --loglevel verbose + timeout_minutes: 3 + - name: Run tests + uses: nick-fields/retry@v3 + with: + max_attempts: 3 + command: |- + cd pulumi + wing test + timeout_minutes: 5 canary-react: name: Test react runs-on: ubuntu-latest diff --git a/.github/workflows/pull-request-lint.yaml b/.github/workflows/pull-request-lint.yaml index 18872d4f..1b0dbaca 100644 --- a/.github/workflows/pull-request-lint.yaml +++ b/.github/workflows/pull-request-lint.yaml @@ -43,6 +43,7 @@ jobs: ngrok openai postgres + pulumi python react redis diff --git a/.github/workflows/pulumi-pull.yaml b/.github/workflows/pulumi-pull.yaml new file mode 100644 index 00000000..53c05296 --- /dev/null +++ b/.github/workflows/pulumi-pull.yaml @@ -0,0 +1,36 @@ +name: pulumi-pull +on: + pull_request: + paths: + - pulumi/** +jobs: + build-pulumi: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + sparse-checkout: pulumi + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org + - name: Install winglang + run: npm i -g winglang + - name: Install dependencies + run: npm install --include=dev + working-directory: pulumi + - name: Test + run: wing test + working-directory: pulumi + - name: Generate docs + run: wing docs + working-directory: pulumi + - name: Pack + run: wing pack + working-directory: pulumi + - name: Check for missing changes + run: git diff --exit-code || (echo 'Please run "npm install && wing test && wing + docs" from ./pulumi, and commit any changes to your branch.' && exit + 1) diff --git a/.github/workflows/pulumi-release.yaml b/.github/workflows/pulumi-release.yaml new file mode 100644 index 00000000..b0ca4fc9 --- /dev/null +++ b/.github/workflows/pulumi-release.yaml @@ -0,0 +1,61 @@ +name: pulumi-release +on: + push: + branches: + - main + paths: + - pulumi/** + - "!pulumi/package-lock.json" +jobs: + build-pulumi: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + sparse-checkout: pulumi + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org + - name: Install winglang + run: npm i -g winglang + - name: Install dependencies + run: npm install --include=dev + working-directory: pulumi + - name: Test + run: wing test + working-directory: pulumi + - name: Generate docs + run: wing docs + working-directory: pulumi + - name: Pack + run: wing pack + working-directory: pulumi + - name: Check for missing changes + run: git diff --exit-code || (echo 'Please run "npm install && wing test && wing + docs" from ./pulumi, and commit any changes to your branch.' && exit + 1) + - name: Get package version + run: echo WINGLIB_VERSION=$(node -p "require('./package.json').version") >> + "$GITHUB_ENV" + working-directory: pulumi + - name: Publish + run: npm publish --access=public --registry https://registry.npmjs.org --tag + latest *.tgz + working-directory: pulumi + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Tag commit + uses: tvdias/github-tagger@v0.0.1 + with: + repo-token: ${{ secrets.PROJEN_GITHUB_TOKEN }} + tag: pulumi-v${{ env.WINGLIB_VERSION }} + - name: GitHub release + uses: softprops/action-gh-release@v1 + with: + name: pulumi v${{ env.WINGLIB_VERSION }} + tag_name: pulumi-v${{ env.WINGLIB_VERSION }} + files: "*.tgz" + token: ${{ secrets.PROJEN_GITHUB_TOKEN }} diff --git a/.mergify.yml b/.mergify.yml index 6c51215a..ed96f27c 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -89,6 +89,9 @@ pull_request_rules: - -check-failure=build-postgres - -check-pending=build-postgres - -check-stale=build-postgres + - -check-failure=build-pulumi + - -check-pending=build-pulumi + - -check-stale=build-pulumi - -check-failure=build-python - -check-pending=build-python - -check-stale=build-python @@ -198,6 +201,9 @@ pull_request_rules: - -check-failure=build-postgres - -check-pending=build-postgres - -check-stale=build-postgres + - -check-failure=build-pulumi + - -check-pending=build-pulumi + - -check-stale=build-pulumi - -check-failure=build-python - -check-pending=build-python - -check-stale=build-python diff --git a/README.md b/README.md index 8f9ec6df..fcfe23f6 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ publishing them for you. | [ngrok](./ngrok) | [@winglibs/ngrok](https://www.npmjs.com/package/@winglibs/ngrok) | * | | [openai](./openai) | [@winglibs/openai](https://www.npmjs.com/package/@winglibs/openai) | * | | [postgres](./postgres) | [@winglibs/postgres](https://www.npmjs.com/package/@winglibs/postgres) | sim, tf-aws | +| [pulumi](./pulumi) | [@winglibs/pulumi](https://www.npmjs.com/package/@winglibs/pulumi) | sim | | [python](./python) | [@winglibs/python](https://www.npmjs.com/package/@winglibs/python) | sim, tf-aws | | [react](./react) | [@winglibs/react](https://www.npmjs.com/package/@winglibs/react) | sim, tf-aws | | [redis](./redis) | [@winglibs/redis](https://www.npmjs.com/package/@winglibs/redis) | sim | diff --git a/pulumi/.gitignore b/pulumi/.gitignore new file mode 100644 index 00000000..297fdef9 --- /dev/null +++ b/pulumi/.gitignore @@ -0,0 +1,2 @@ +target/ +node_modules/ diff --git a/pulumi/LICENSE b/pulumi/LICENSE new file mode 100644 index 00000000..a875f479 --- /dev/null +++ b/pulumi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Wing + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pulumi/README.md b/pulumi/README.md new file mode 100644 index 00000000..83797c05 --- /dev/null +++ b/pulumi/README.md @@ -0,0 +1,27 @@ +# pulumi + +## Prerequisites + +* [winglang](https://winglang.io). + +## Installation + +```sh +npm i @winglibs/pulumi +``` + +## Usage + +```js +bring pulumi; + +let adder = new pulumi.Adder(); +``` + +## Coverage + + + +## License + +This library is licensed under the [MIT License](./LICENSE). diff --git a/pulumi/deploy.sh b/pulumi/deploy.sh new file mode 100755 index 00000000..a5d62844 --- /dev/null +++ b/pulumi/deploy.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -euo pipefail + +scriptdir=$(cd $(dirname $0) && pwd) + +entrypoint=${1:-} + +if [ -z "$entrypoint" ]; then + echo "Usage: $0 " + exit 1 +fi + +basename=$(basename $entrypoint .w) +dirname=$(dirname $entrypoint) +echo $dirname + +wing compile -t $scriptdir/lib/index.js $entrypoint + +cd $dirname/target/${basename}.pulumi +pulumi up diff --git a/pulumi/examples/bucket.main.w b/pulumi/examples/bucket.main.w new file mode 100644 index 00000000..6aa64366 --- /dev/null +++ b/pulumi/examples/bucket.main.w @@ -0,0 +1,10 @@ +bring cloud; + +let b = new cloud.Bucket(public: true, cors: true); + +b.addObject("first.txt", "Uploaded during deployment"); + +new cloud.Function(inflight () => { + b.put("hello.txt", "Hello, World!"); +}); + diff --git a/pulumi/examples/function.main.w b/pulumi/examples/function.main.w new file mode 100644 index 00000000..870bb70d --- /dev/null +++ b/pulumi/examples/function.main.w @@ -0,0 +1,6 @@ +bring cloud; + +new cloud.Function(inflight () => { + log("hey!"); + return "Hello, World!"; +}); \ No newline at end of file diff --git a/pulumi/examples/queue.main.w b/pulumi/examples/queue.main.w new file mode 100644 index 00000000..113d5bd9 --- /dev/null +++ b/pulumi/examples/queue.main.w @@ -0,0 +1,11 @@ +bring cloud; + +let queue = new cloud.Queue(); + +let b = new cloud.Bucket(); + +queue.setConsumer(inflight (message) => { + log("new message: {message}"); + b.put("hello.txt", message); +}); + diff --git a/pulumi/lib.test.w b/pulumi/lib.test.w new file mode 100644 index 00000000..b3089cd9 --- /dev/null +++ b/pulumi/lib.test.w @@ -0,0 +1,8 @@ +bring expect; +bring "./lib.w" as l; + +let adder = new l.Adder(); + +test "add() adds two numbers" { + expect.equal(adder.add(1, 2), 3); +} diff --git a/pulumi/lib.w b/pulumi/lib.w new file mode 100644 index 00000000..b2b88999 --- /dev/null +++ b/pulumi/lib.w @@ -0,0 +1,5 @@ +pub class Adder { + pub inflight add(x: num, y: num): num { + return x + y; + } +} diff --git a/pulumi/package-lock.json b/pulumi/package-lock.json new file mode 100644 index 00000000..2f93e75a --- /dev/null +++ b/pulumi/package-lock.json @@ -0,0 +1,6445 @@ +{ + "name": "@winglibs/pulumi", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@winglibs/pulumi", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "typescript": "^5.7.3", + "yaml": "^2.7.0" + }, + "devDependencies": { + "@types/node": "^22.10.7" + }, + "peerDependencies": { + "@winglang/sdk": "*" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/node": { + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@winglang/sdk": { + "version": "0.85.45", + "resolved": "https://registry.npmjs.org/@winglang/sdk/-/sdk-0.85.45.tgz", + "integrity": "sha512-hLyU8SBBdpgf6LKu0sdVNMEu0/fjot2VCmYrnUJUc3JGr7C9VVFkAuXG8wyr+EAWSmBhm1HhRJpvojOPrHI2EA==", + "bundleDependencies": [ + "@aws-sdk/client-cloudwatch-logs", + "@aws-sdk/client-dynamodb", + "@aws-sdk/client-ecs", + "@aws-sdk/client-elasticache", + "@aws-sdk/client-lambda", + "@aws-sdk/client-s3", + "@aws-sdk/client-secrets-manager", + "@aws-sdk/client-sns", + "@aws-sdk/client-sqs", + "@aws-sdk/s3-request-presigner", + "@aws-sdk/types", + "@aws-sdk/util-dynamodb", + "@azure/core-paging", + "@azure/data-tables", + "@azure/identity", + "@azure/storage-blob", + "@google-cloud/datastore", + "@google-cloud/storage", + "@smithy/util-stream", + "@smithy/util-utf8", + "@types/aws-lambda", + "@winglang/wingtunnels", + "ajv", + "cdktf", + "cron-parser", + "cron-validator", + "dotenv", + "dotenv-expand", + "express", + "glob", + "google-auth-library", + "jiti", + "mime", + "mime-types", + "nanoid", + "protobufjs", + "safe-stable-stringify", + "stacktracey", + "toml", + "ulid", + "uuid", + "vlq", + "yaml" + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@aws-sdk/client-cloudwatch-logs": "3.577.0", + "@aws-sdk/client-dynamodb": "3.577.0", + "@aws-sdk/client-ecs": "3.577.0", + "@aws-sdk/client-elasticache": "3.577.0", + "@aws-sdk/client-lambda": "3.577.0", + "@aws-sdk/client-s3": "3.577.0", + "@aws-sdk/client-secrets-manager": "3.577.0", + "@aws-sdk/client-sns": "3.577.0", + "@aws-sdk/client-sqs": "3.577.0", + "@aws-sdk/s3-request-presigner": "3.577.0", + "@aws-sdk/types": "3.449.0", + "@aws-sdk/util-dynamodb": "3.577.0", + "@azure/core-paging": "^1.6.2", + "@azure/data-tables": "13.2.2", + "@azure/identity": "4.3.0", + "@azure/storage-blob": "12.14.0", + "@google-cloud/datastore": "8.4.0", + "@google-cloud/storage": "6.9.5", + "@smithy/util-stream": "2.0.17", + "@smithy/util-utf8": "2.0.0", + "@types/aws-lambda": "^8.10.140", + "@winglang/wingtunnels": "0.85.45", + "ajv": "^8.16.0", + "cdktf": "0.20.7", + "constructs": "^10.3", + "cron-parser": "^4.9.0", + "cron-validator": "^1.3.1", + "dotenv": "^16.4.5", + "dotenv-expand": "^10.0.0", + "express": "^4.19.2", + "glob": "^8.1.0", + "google-auth-library": "^8.9.0", + "jiti": "^1.21.6", + "mime": "^3.0.0", + "mime-types": "^2.1.35", + "nanoid": "^3.3.7", + "protobufjs": "7.2.5", + "safe-stable-stringify": "^2.4.3", + "stacktracey": "^2.1.8", + "toml": "^3.0.0", + "ulid": "^2.3.0", + "uuid": "^8.3.2", + "vlq": "^2.0.4", + "yaml": "^2.4.5" + }, + "engines": { + "node": ">= 20.0.0" + }, + "optionalDependencies": { + "esbuild": "^0.19.12" + }, + "peerDependencies": { + "constructs": "^10.3" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/crc32c": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/sha1-browser": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-crypto/util": { + "version": "5.2.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-cloudwatch-logs": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/eventstream-serde-browser": "^3.0.0", + "@smithy/eventstream-serde-config-resolver": "^3.0.0", + "@smithy/eventstream-serde-node": "^3.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-dynamodb": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-endpoint-discovery": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-ecs": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-elasticache": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-lambda": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/eventstream-serde-browser": "^3.0.0", + "@smithy/eventstream-serde-config-resolver": "^3.0.0", + "@smithy/eventstream-serde-node": "^3.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-stream": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-s3": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha1-browser": "3.0.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-bucket-endpoint": "3.577.0", + "@aws-sdk/middleware-expect-continue": "3.577.0", + "@aws-sdk/middleware-flexible-checksums": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-location-constraint": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-sdk-s3": "3.577.0", + "@aws-sdk/middleware-signing": "3.577.0", + "@aws-sdk/middleware-ssec": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/signature-v4-multi-region": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@aws-sdk/xml-builder": "3.575.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/eventstream-serde-browser": "^3.0.0", + "@smithy/eventstream-serde-config-resolver": "^3.0.0", + "@smithy/eventstream-serde-node": "^3.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-blob-browser": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/hash-stream-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/md5-js": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-stream": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-sns": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-sqs": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-sdk-sqs": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/md5-js": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-sso": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/client-sts": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/core": { + "version": "3.576.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/core": "^2.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.577.0", + "@aws-sdk/credential-provider-ini": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/client-sso": "3.577.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/endpoint-cache": { + "version": "3.572.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "mnemonist": "0.38.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-endpoint-discovery": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/endpoint-cache": "3.572.0", + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", + "@aws-sdk/types": "3.577.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-sdk-sqs": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-signing": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-ssec": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-format-url": "3.577.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.577.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/types": { + "version": "3.449.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-arn-parser": { + "version": "3.568.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-dynamodb": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-dynamodb": "^3.577.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-endpoints": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-format-url": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@aws-sdk/xml-builder": { + "version": "3.575.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-auth": { + "version": "1.7.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-client": { + "version": "1.9.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-http": { + "version": "3.0.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-tracing": "1.0.0-preview.13", + "@azure/core-util": "^1.1.1", + "@azure/logger": "^1.0.0", + "@types/node-fetch": "^2.5.0", + "@types/tunnel": "^0.0.3", + "form-data": "^4.0.0", + "node-fetch": "^2.6.7", + "process": "^0.11.10", + "tslib": "^2.2.0", + "tunnel": "^0.0.6", + "uuid": "^8.3.0", + "xml2js": "^0.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-lro": { + "version": "2.7.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-paging": { + "version": "1.6.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-rest-pipeline": { + "version": "1.16.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-tracing": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-util": { + "version": "1.9.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/core-xml": { + "version": "1.4.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-xml-parser": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/data-tables": { + "version": "13.2.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/core-auth": "^1.3.0", + "@azure/core-client": "^1.0.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-xml": "^1.0.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/identity": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.11.1", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/logger": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/msal-browser": { + "version": "3.17.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/msal-common": "14.12.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/msal-common": { + "version": "14.12.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/msal-node": { + "version": "2.9.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/msal-common": "14.12.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@winglang/sdk/node_modules/@azure/storage-blob": { + "version": "12.14.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-http": "^3.0.0", + "@azure/core-lro": "^2.2.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-tracing": "1.0.0-preview.13", + "@azure/logger": "^1.0.0", + "events": "^3.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@google-cloud/datastore": { + "version": "8.4.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.1", + "concat-stream": "^2.0.0", + "extend": "^3.0.2", + "google-gax": "^4.0.5", + "is": "^3.3.0", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/@google-cloud/projectify": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/@google-cloud/storage": { + "version": "6.9.5", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "gaxios": "^5.0.0", + "google-auth-library": "^8.0.1", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/@grpc/grpc-js": { + "version": "1.10.9", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@winglang/sdk/node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/base64": { + "version": "1.1.2", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/float": { + "version": "1.0.2", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/path": { + "version": "1.1.2", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/pool": { + "version": "1.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@smithy/abort-controller": { + "version": "3.1.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/chunked-blob-reader": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/chunked-blob-reader-native": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/config-resolver": { + "version": "3.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/core": { + "version": "2.2.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.3", + "@smithy/middleware-retry": "^3.0.6", + "@smithy/middleware-serde": "^3.0.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/credential-provider-imds": { + "version": "3.1.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.2", + "@smithy/property-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/url-parser": "^3.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/eventstream-codec": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.2.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/eventstream-serde-browser": { + "version": "3.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.3", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/eventstream-serde-node": { + "version": "3.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.3", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/eventstream-serde-universal": { + "version": "3.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/eventstream-codec": "^3.1.1", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/fetch-http-handler": { + "version": "3.1.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^4.0.2", + "@smithy/querystring-builder": "^3.0.2", + "@smithy/types": "^3.2.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/hash-blob-browser": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/hash-node": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/hash-stream-node": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/invalid-dependency": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/md5-js": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/middleware-content-length": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^4.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/middleware-serde": "^3.0.2", + "@smithy/node-config-provider": "^3.1.2", + "@smithy/shared-ini-file-loader": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/url-parser": "^3.0.2", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/middleware-retry": { + "version": "3.0.6", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/service-error-classification": "^3.0.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "@smithy/util-middleware": "^3.0.2", + "@smithy/util-retry": "^3.0.2", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/middleware-serde": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/middleware-stack": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/node-config-provider": { + "version": "3.1.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/property-provider": "^3.1.2", + "@smithy/shared-ini-file-loader": "^3.1.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/node-http-handler": { + "version": "3.1.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/abort-controller": "^3.1.0", + "@smithy/protocol-http": "^4.0.2", + "@smithy/querystring-builder": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/property-provider": { + "version": "3.1.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/protocol-http": { + "version": "4.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/querystring-builder": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/querystring-parser": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/service-error-classification": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/signature-v4": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.2.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.2", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/smithy-client": { + "version": "3.1.4", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.3", + "@smithy/middleware-stack": "^3.0.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/types": "^3.2.0", + "@smithy/util-stream": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/types": { + "version": "3.2.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/url-parser": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/querystring-parser": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.6", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/property-provider": "^3.1.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.6", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/config-resolver": "^3.0.3", + "@smithy/credential-provider-imds": "^3.1.2", + "@smithy/node-config-provider": "^3.1.2", + "@smithy/property-provider": "^3.1.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-endpoints": { + "version": "2.0.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-middleware": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-retry": { + "version": "3.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/service-error-classification": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-stream": { + "version": "2.0.17", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/fetch-http-handler": "^2.2.4", + "@smithy/node-http-handler": "^2.1.8", + "@smithy/types": "^2.4.0", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-utf8": { + "version": "2.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@smithy/util-waiter": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@smithy/abort-controller": "^3.1.0", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@types/aws-lambda": { + "version": "8.10.140", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@types/caseless": { + "version": "0.12.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@types/long": { + "version": "4.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@types/ms": { + "version": "0.7.34", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@types/node": { + "version": "20.14.8", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@winglang/sdk/node_modules/@types/node-fetch": { + "version": "2.6.11", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@types/request": { + "version": "2.48.12", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@types/tough-cookie": { + "version": "4.0.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/@types/tunnel": { + "version": "0.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels": { + "version": "0.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/debug": "^4.1.12", + "@types/node": "^20.11.0", + "@types/ws": "^8.5.10", + "debug": "^4.3.5", + "ws": "^8.17.1" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/@types/debug": { + "version": "4.1.12", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/@types/node": { + "version": "20.14.8", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/@types/ws": { + "version": "8.5.10", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack": { + "version": "0.0.0", + "extraneous": true, + "inBundle": true, + "dependencies": { + "@actions/core": "^1.10.1", + "@pnpm/find-workspace-dir": "^6.0.3", + "@pnpm/reviewing.dependencies-hierarchy": "^2.1.11", + "@pnpm/workspace.find-packages": "^1.1.12", + "changelogen": "^0.5.5", + "fs-extra": "^11.2.0", + "minimatch": "^9.0.4", + "npm-which": "^3.0.1", + "semver": "^7.6.2", + "tsx": "^4.15.7" + }, + "bin": { + "bump-pack": "bin/bump-pack.cjs", + "link-bundles": "bin/link-bundles.cjs", + "turbo-diff": "bin/turbo-diff.cjs" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@actions/core": { + "version": "1.10.1", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@pnpm/find-workspace-dir": { + "version": "6.0.3", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@pnpm/error": "5.0.3", + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@pnpm/reviewing.dependencies-hierarchy": { + "version": "2.1.11", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@pnpm/dependency-path": "2.1.8", + "@pnpm/lockfile-file": "8.1.8", + "@pnpm/lockfile-utils": "9.0.6", + "@pnpm/matcher": "5.0.0", + "@pnpm/modules-yaml": "12.1.7", + "@pnpm/normalize-registries": "5.0.6", + "@pnpm/npm-package-arg": "^1.0.0", + "@pnpm/read-modules-dir": "6.0.1", + "@pnpm/read-package-json": "8.0.8", + "@pnpm/types": "9.4.2", + "normalize-path": "^3.0.0", + "realpath-missing": "^1.1.0", + "resolve-link-target": "^2.0.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@pnpm/workspace.find-packages": { + "version": "1.1.12", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@pnpm/cli-utils": "2.1.11", + "@pnpm/fs.find-packages": "2.0.11", + "@pnpm/types": "9.4.2", + "@pnpm/util.lex-comparator": "1.0.0", + "@pnpm/workspace.read-manifest": "1.0.3" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + }, + "peerDependencies": { + "@pnpm/logger": "^5.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@types/fs-extra": { + "version": "11.0.4", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@types/node": { + "version": "20.14.8", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/@types/semver": { + "version": "7.5.8", + "extraneous": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/changelogen": { + "version": "0.5.5", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "c12": "^1.4.2", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "convert-gitmoji": "^0.1.3", + "execa": "^8.0.1", + "mri": "^1.2.0", + "node-fetch-native": "^1.2.0", + "ofetch": "^1.1.1", + "open": "^9.1.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.0.0", + "semver": "^7.5.4", + "std-env": "^3.4.2", + "yaml": "^2.3.1" + }, + "bin": { + "changelogen": "dist/cli.mjs" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/fs-extra": { + "version": "11.2.0", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/minimatch": { + "version": "9.0.4", + "extraneous": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/npm-which": { + "version": "3.0.1", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + }, + "bin": { + "npm-which": "bin/npm-which.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/semver": { + "version": "7.6.2", + "extraneous": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/tsx": { + "version": "4.15.7", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.21.4", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/typescript": { + "version": "5.5.2", + "extraneous": true, + "inBundle": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/bump-pack/node_modules/vitest": { + "version": "1.6.0", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/debug": { + "version": "4.3.5", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/tsup": { + "version": "6.7.0", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.17.6", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^3.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/typescript": { + "version": "5.5.2", + "extraneous": true, + "inBundle": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/vitest": { + "version": "1.6.0", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/@winglang/wingtunnels/node_modules/ws": { + "version": "8.17.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/abort-controller": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/@winglang/sdk/node_modules/accepts": { + "version": "1.3.8", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/agent-base": { + "version": "7.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@winglang/sdk/node_modules/ajv": { + "version": "8.17.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@winglang/sdk/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@winglang/sdk/node_modules/array-flatten": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/arrify": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/as-table": { + "version": "1.0.55", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "printable-characters": "^1.0.42" + } + }, + "node_modules/@winglang/sdk/node_modules/async-retry": { + "version": "1.3.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/@winglang/sdk/node_modules/asynckit": { + "version": "0.4.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/bignumber.js": { + "version": "9.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/body-parser": { + "version": "1.20.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@winglang/sdk/node_modules/bowser": { + "version": "2.11.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/buffer-from": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/bytes": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/call-bind": { + "version": "1.0.7", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf": { + "version": "0.20.7", + "bundleDependencies": [ + "archiver", + "json-stable-stringify", + "semver" + ], + "inBundle": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "archiver": "6.0.2", + "json-stable-stringify": "1.1.1", + "semver": "7.6.0" + }, + "peerDependencies": { + "constructs": "^10.0.25" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/archiver": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^4.0.1", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/archiver-utils": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^8.0.0", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/async": { + "version": "3.2.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/b4a": { + "version": "1.6.6", + "inBundle": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/bare-events": { + "version": "2.2.1", + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/buffer-crc32": { + "version": "0.2.13", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/call-bind": { + "version": "1.0.7", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/compress-commons": { + "version": "5.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/core-util-is": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/crc-32": { + "version": "1.2.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/crc32-stream": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/define-data-property": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/es-define-property": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/es-errors": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/fast-fifo": { + "version": "1.3.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/get-intrinsic": { + "version": "1.2.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/glob": { + "version": "8.1.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/gopd": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/has-property-descriptors": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/has-proto": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/has-symbols": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/hasown": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/isarray": { + "version": "2.0.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/json-stable-stringify": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/jsonify": { + "version": "0.0.1", + "inBundle": true, + "license": "Public Domain", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lazystream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lodash": { + "version": "4.17.21", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/minimatch": { + "version": "5.1.6", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/normalize-path": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/object-keys": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/process-nextick-args": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/queue-tick": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/readable-stream": { + "version": "3.6.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/readdir-glob": { + "version": "1.1.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/set-function-length": { + "version": "1.2.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/streamx": { + "version": "2.16.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/tar-stream": { + "version": "3.1.7", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cdktf/node_modules/zip-stream": { + "version": "5.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cliui": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/combined-stream": { + "version": "1.0.8", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/compressible": { + "version": "2.0.18", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/concat-stream": { + "version": "2.0.0", + "engines": [ + "node >= 6.0" + ], + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/content-disposition": { + "version": "0.5.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/content-type": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/cookie": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/cookie-signature": { + "version": "1.0.6", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/cron-parser": { + "version": "4.9.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/cron-validator": { + "version": "1.3.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/data-uri-to-buffer": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/debug": { + "version": "4.3.5", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/define-data-property": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/define-lazy-prop": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/delayed-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@winglang/sdk/node_modules/depd": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/destroy": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@winglang/sdk/node_modules/dotenv": { + "version": "16.4.5", + "inBundle": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@winglang/sdk/node_modules/dotenv-expand": { + "version": "10.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/duplexify": { + "version": "4.1.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/@winglang/sdk/node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@winglang/sdk/node_modules/ee-first": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/encodeurl": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/end-of-stream": { + "version": "1.4.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/@winglang/sdk/node_modules/ent": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/es-define-property": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/es-errors": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/escalade": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@winglang/sdk/node_modules/escape-html": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/etag": { + "version": "1.8.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/event-target-shim": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@winglang/sdk/node_modules/events": { + "version": "3.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/@winglang/sdk/node_modules/express": { + "version": "4.19.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/extend": { + "version": "3.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/fast-text-encoding": { + "version": "1.0.6", + "inBundle": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/fast-uri": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/fast-xml-parser": { + "version": "4.4.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@winglang/sdk/node_modules/finalhandler": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/form-data": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@winglang/sdk/node_modules/forwarded": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/fresh": { + "version": "0.5.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/gaxios": { + "version": "6.6.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/gcp-metadata": { + "version": "6.1.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/get-caller-file": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", + "peer": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/@winglang/sdk/node_modules/get-intrinsic": { + "version": "1.2.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/get-source": { + "version": "2.0.12", + "inBundle": true, + "license": "Unlicense", + "peer": true, + "dependencies": { + "data-uri-to-buffer": "^2.0.0", + "source-map": "^0.6.1" + } + }, + "node_modules/@winglang/sdk/node_modules/glob": { + "version": "8.1.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@winglang/sdk/node_modules/google-auth-library": { + "version": "8.9.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.3.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/google-gax": { + "version": "4.3.7", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/gopd": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/gtoken": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/has-property-descriptors": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/has-proto": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/has-symbols": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/hasown": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/http-errors": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/http-proxy-agent": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@winglang/sdk/node_modules/https-proxy-agent": { + "version": "7.0.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@winglang/sdk/node_modules/iconv-lite": { + "version": "0.4.24", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/@winglang/sdk/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/ipaddr.js": { + "version": "1.9.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@winglang/sdk/node_modules/is": { + "version": "3.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/@winglang/sdk/node_modules/is-docker": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@winglang/sdk/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/is-stream": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@winglang/sdk/node_modules/is-stream-ended": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/is-wsl": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/jiti": { + "version": "1.21.6", + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@winglang/sdk/node_modules/json-bigint": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/jsonwebtoken": { + "version": "9.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/@winglang/sdk/node_modules/jwa": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@winglang/sdk/node_modules/jws": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@winglang/sdk/node_modules/lodash.camelcase": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.includes": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.isboolean": { + "version": "3.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.isinteger": { + "version": "4.0.4", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.isnumber": { + "version": "3.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.isplainobject": { + "version": "4.0.6", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.isstring": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lodash.once": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/long": { + "version": "5.2.3", + "inBundle": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/luxon": { + "version": "3.4.4", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/media-typer": { + "version": "0.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/merge-descriptors": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/methods": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/mime": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/minimatch": { + "version": "5.1.6", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/mnemonist": { + "version": "0.38.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "obliterator": "^1.6.1" + } + }, + "node_modules/@winglang/sdk/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/@winglang/sdk/node_modules/negotiator": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/node-fetch": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@winglang/sdk/node_modules/object-hash": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@winglang/sdk/node_modules/object-inspect": { + "version": "1.13.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/obliterator": { + "version": "1.6.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/on-finished": { + "version": "2.4.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/@winglang/sdk/node_modules/open": { + "version": "8.4.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@winglang/sdk/node_modules/p-limit": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@winglang/sdk/node_modules/parseurl": { + "version": "1.3.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/path-to-regexp": { + "version": "0.1.7", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/printable-characters": { + "version": "1.0.42", + "inBundle": true, + "license": "Unlicense", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/process": { + "version": "0.11.10", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@winglang/sdk/node_modules/proto3-json-serializer": { + "version": "2.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/protobufjs": { + "version": "7.2.5", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/proxy-addr": { + "version": "2.0.7", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@winglang/sdk/node_modules/punycode": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/qs": { + "version": "6.11.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/range-parser": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/raw-body": { + "version": "2.5.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/readable-stream": { + "version": "3.6.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@winglang/sdk/node_modules/require-directory": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/retry": { + "version": "0.13.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@winglang/sdk/node_modules/retry-request": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/safe-stable-stringify": { + "version": "2.4.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/sax": { + "version": "1.4.1", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/semver": { + "version": "7.6.3", + "inBundle": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/send": { + "version": "0.18.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@winglang/sdk/node_modules/serve-static": { + "version": "1.15.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@winglang/sdk/node_modules/set-function-length": { + "version": "1.2.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@winglang/sdk/node_modules/setprototypeof": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/side-channel": { + "version": "1.0.6", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@winglang/sdk/node_modules/source-map": { + "version": "0.6.1", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@winglang/sdk/node_modules/split-array-stream": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-stream-ended": "^0.1.4" + } + }, + "node_modules/@winglang/sdk/node_modules/stacktracey": { + "version": "2.1.8", + "inBundle": true, + "license": "Unlicense", + "peer": true, + "dependencies": { + "as-table": "^1.0.36", + "get-source": "^2.0.12" + } + }, + "node_modules/@winglang/sdk/node_modules/statuses": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/stoppable": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/@winglang/sdk/node_modules/stream-events": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/stream-shift": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/@winglang/sdk/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@winglang/sdk/node_modules/strnum": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/stubs": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/teeny-request": { + "version": "9.0.0", + "inBundle": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@winglang/sdk/node_modules/toidentifier": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/toml": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/tr46": { + "version": "0.0.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/tslib": { + "version": "2.6.3", + "inBundle": true, + "license": "0BSD", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/tunnel": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/@winglang/sdk/node_modules/type-is": { + "version": "1.6.18", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@winglang/sdk/node_modules/typedarray": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/ulid": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "ulid": "bin/cli.js" + } + }, + "node_modules/@winglang/sdk/node_modules/undici-types": { + "version": "5.26.5", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/unpipe": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/utils-merge": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/@winglang/sdk/node_modules/uuid": { + "version": "8.3.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@winglang/sdk/node_modules/vary": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@winglang/sdk/node_modules/vlq": { + "version": "2.0.4", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/webidl-conversions": { + "version": "3.0.1", + "inBundle": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/whatwg-url": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/wrap-ansi": { + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@winglang/sdk/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/xml2js": { + "version": "0.5.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@winglang/sdk/node_modules/xmlbuilder": { + "version": "11.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@winglang/sdk/node_modules/y18n": { + "version": "5.0.8", + "inBundle": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@winglang/sdk/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/@winglang/sdk/node_modules/yaml": { + "version": "2.4.5", + "inBundle": true, + "license": "ISC", + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@winglang/sdk/node_modules/yargs": { + "version": "17.7.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/yargs-parser": { + "version": "21.1.1", + "inBundle": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@winglang/sdk/node_modules/yocto-queue": { + "version": "0.1.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/constructs": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz", + "integrity": "sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "deprecated": "Package is no longer maintained", + "license": "MIT", + "peer": true, + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "peer": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/pulumi/package.json b/pulumi/package.json new file mode 100644 index 00000000..2e88da7f --- /dev/null +++ b/pulumi/package.json @@ -0,0 +1,26 @@ +{ + "name": "@winglibs/pulumi", + "description": "pulumi support for winglang", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/winglang/winglibs.git", + "directory": "pulumi" + }, + "peerDependencies": { + "@winglang/sdk": "*" + }, + "wing": { + "platforms": [ + "sim" + ] + }, + "license": "MIT", + "dependencies": { + "typescript": "^5.7.3", + "yaml": "^2.7.0" + }, + "devDependencies": { + "@types/node": "^22.10.7" + } +} diff --git a/pulumi/src/app.ts b/pulumi/src/app.ts new file mode 100644 index 00000000..b857c33f --- /dev/null +++ b/pulumi/src/app.ts @@ -0,0 +1,67 @@ +import { core, std } from "@winglang/sdk"; +import { PulumiYaml, ResourceDefinition, VariableDefinition } from "./schema"; +import * as fs from "fs"; +import * as path from "path"; +import { PulumiResource, PulumiVariable } from "./resource"; + +export class PulumiApp extends core.App { + _target = "pulumi" as any; + outdir: string; + + constructor(props: core.AppProps) { + super(undefined as any, "Default", props); + + if (!props.outdir) { + throw new Error("outdir is required"); + } + + this.outdir = props.outdir; + + std.Node._markRoot(props.rootConstruct); + new props.rootConstruct(this, props.rootId ?? "Default"); + } + + public synth(): string { + + + // call preSynthesize() on every construct in the tree + core.preSynthesizeAllConstructs(this); + + if (this._synthHooks?.preSynthesize) { + this._synthHooks.preSynthesize.forEach((hook) => hook(this)); + } + + const resources: Record = {}; + const variables: Record = {}; + const yaml: PulumiYaml = { + name: "wing", + runtime: "yaml", + resources, + variables, + }; + + for (const n of this.node.findAll()) { + if (n instanceof PulumiResource) { + resources[n.name] = n.definition; + } + } + + for (const n of this.node.findAll()) { + if (n instanceof PulumiVariable) { + variables[n.name] = n.props; + } + } + + const outfile = path.join(this.outdir, "Pulumi.yaml"); + fs.writeFileSync(outfile, JSON.stringify(yaml, null, 2)); + + // write `outdir/tree.json` + core.synthesizeTree(this, this.outdir); + + // write `outdir/connections.json` + core.Connections.of(this).synth(this.outdir); + + console.log(outfile); + return outfile; + } +} \ No newline at end of file diff --git a/pulumi/src/aws/bucket.ts b/pulumi/src/aws/bucket.ts new file mode 100644 index 00000000..c0e00dbd --- /dev/null +++ b/pulumi/src/aws/bucket.ts @@ -0,0 +1,46 @@ +import { cloud } from "@winglang/sdk"; +import { InflightClient } from "@winglang/sdk/lib/core/inflight"; +import { IInflightHost } from "@winglang/sdk/lib/std"; +import { AwsInflightHost, IAwsBucket } from "@winglang/sdk/lib/shared-aws"; +import { calculateBucketPermissions } from "@winglang/sdk/lib/shared-aws/permissions"; + +export abstract class AwsBucket extends cloud.Bucket implements IAwsBucket { + /** @internal */ + public static _toInflightType(): string { + return InflightClient.forType( + require.resolve("@winglang/sdk/lib/shared-aws/bucket.inflight"), + "BucketClient" + ); + } + + public abstract get bucketArn(): string; + public abstract get bucketName(): string; + public abstract get bucketDomainName(): string; + + public abstract addObject(path: string, content: string): void; + public abstract addCorsRule(value: cloud.BucketCorsOptions): void; + protected abstract createTopicHandler(eventType: cloud.BucketEventType, inflight: cloud.IBucketEventHandler): cloud.ITopicOnMessageHandler; + + public onLift(host: IInflightHost, ops: string[]): void { + host.addEnvironment(this.bucketNameEnv, this.bucketName); + + if (AwsInflightHost.isAwsInflightHost(host)) { + host.addPolicyStatements(...calculateBucketPermissions(this.bucketArn, ops)); + } + + super.onLift(host, ops); + } + + /** @internal */ + public _liftedState(): Record { + return { + $bucketName: `process.env["${this.bucketNameEnv}"]`, + $constructPath: `"${this.node.path}"`, + }; + } + + private get bucketNameEnv() { + return `BUCKET_${this.node.addr}`; + } +} + diff --git a/pulumi/src/aws/function.ts b/pulumi/src/aws/function.ts new file mode 100644 index 00000000..de9f6b09 --- /dev/null +++ b/pulumi/src/aws/function.ts @@ -0,0 +1,50 @@ +import { cloud } from "@winglang/sdk"; +import { createBundle } from "@winglang/sdk/lib/shared/bundling"; +import { externalLibraries, IAwsFunction, NetworkConfig, PolicyStatement } from "@winglang/sdk/lib/shared-aws"; +import { InflightClient } from "@winglang/sdk/lib/core/inflight"; +import { LiftMap } from "@winglang/sdk/lib/core"; + +export abstract class AwsFunction extends cloud.Function implements IAwsFunction { + /** @internal */ + public static _toInflightType(): string { + return InflightClient.forType( + require.resolve("@winglang/sdk/lib/shared-aws/function.inflight"), + "FunctionClient" + ); + } + + public abstract get functionArn(): string; + public abstract get functionName(): string; + public abstract addLambdaLayer(layerArn: string): void; + public abstract addPolicyStatements(...policies: PolicyStatement[]): void; + public abstract addNetwork(config: NetworkConfig): void; + + /** @internal */ + public _preSynthesize(): void { + super._preSynthesize(); + + // re-bundle the function + createBundle(this.entrypoint, externalLibraries); + } + + /** @internal */ + public get _liftMap(): LiftMap { + return { + [cloud.BucketInflightMethods.DELETE]: [], + [cloud.BucketInflightMethods.GET]: [], + [cloud.BucketInflightMethods.GET_JSON]: [], + [cloud.BucketInflightMethods.LIST]: [], + [cloud.BucketInflightMethods.PUT]: [], + [cloud.BucketInflightMethods.PUT_JSON]: [], + [cloud.BucketInflightMethods.PUBLIC_URL]: [], + [cloud.BucketInflightMethods.EXISTS]: [], + [cloud.BucketInflightMethods.TRY_GET]: [], + [cloud.BucketInflightMethods.TRY_GET_JSON]: [], + [cloud.BucketInflightMethods.TRY_DELETE]: [], + [cloud.BucketInflightMethods.SIGNED_URL]: [], + [cloud.BucketInflightMethods.METADATA]: [], + [cloud.BucketInflightMethods.COPY]: [], + [cloud.BucketInflightMethods.RENAME]: [], + }; + } +} diff --git a/pulumi/src/aws/queue.ts b/pulumi/src/aws/queue.ts new file mode 100644 index 00000000..6768459f --- /dev/null +++ b/pulumi/src/aws/queue.ts @@ -0,0 +1,121 @@ +import { QueueProps } from "@winglang/sdk/lib/cloud"; +import { AwsInflightHost, Effect, Function, IAwsFunction, IAwsQueue, Queue, QueueSetConsumerHandler } from "@winglang/sdk/lib/shared-aws"; +import { Construct } from "constructs"; +import { Duration, Node } from "@winglang/sdk/lib/std"; +import { cloud, std } from "@winglang/sdk"; +import { App, InflightClient, LiftMap } from "@winglang/sdk/lib/core"; +import { calculateQueuePermissions } from "@winglang/sdk/lib/shared-aws/permissions"; +import { IInflightHost } from "@winglang/sdk/lib/std"; + +export abstract class AwsQueue extends cloud.Queue implements IAwsQueue { + /** @internal */ + public static _toInflightType(): string { + return InflightClient.forType( + require.resolve("@winglang/sdk/lib/shared-aws/queue.inflight"), + "QueueClient" + ); + } + + private readonly queueTimeout: number; + + constructor(scope: Construct, id: string, props: QueueProps = {}) { + super(scope, id, props); + + this.queueTimeout = props.timeout?.seconds ?? 30; + } + + public abstract get queueArn(): string; + public abstract get queueName(): string; + public abstract get queueUrl(): string; + + + public onLift(host: IInflightHost, ops: string[]): void { + host.addEnvironment(this.queueUrlEnv, this.queueUrl); + + if (AwsInflightHost.isAwsInflightHost(host)) { + host.addPolicyStatements(...calculateQueuePermissions(this.queueArn, ops)); + } + + super.onLift(host, ops); + } + + protected abstract addEventSourceMapping(mapping: EventSourceMappingOptions): void; + + public setConsumer( + inflight: cloud.IQueueSetConsumerHandler, + props: cloud.QueueSetConsumerOptions = {} + ): cloud.Function { + const functionHandler = QueueSetConsumerHandler.toFunctionHandler(inflight); + + const cfn = new cloud.Function( + this, + App.of(this).makeId(this, "Consumer"), + functionHandler, + { + ...props, + timeout: Duration.fromSeconds(this.queueTimeout), + } + ); + + const fn = Function.from(cfn); + if (!fn) { + throw new Error("Expecting cloud.Function to satisfy IAwsFunction"); + } + + this.addEventSourceMapping({ + consumerFunction: fn, + batchSize: props.batchSize ?? 1, + functionResponseTypes: ["ReportBatchItemFailures"], + }); + + fn.addPolicyStatements({ + effect: Effect.ALLOW, + actions: [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes", + ], + resources: [this.queueArn], + }); + + Node.of(this).addConnection({ + source: this, + sourceOp: cloud.QueueInflightMethods.PUSH, + target: fn, + targetOp: cloud.FunctionInflightMethods.INVOKE, + name: "consumer", + }); + + return cfn; + } + + /** @internal */ + public get _liftMap(): LiftMap { + return { + [cloud.QueueInflightMethods.PUSH]: [], + [cloud.QueueInflightMethods.PURGE]: [], + [cloud.QueueInflightMethods.APPROX_SIZE]: [], + [cloud.QueueInflightMethods.POP]: [], + }; + } + + private get queueUrlEnv() { + return `QUEUE_URL_${this.node.addr}`; + } + + /** @internal */ + public _liftedState(): Record { + return { + $queueUrlOrArn: `process.env["${this.queueUrlEnv}"]`, + $constructPath: `"${this.node.path}"`, + }; + } +} + +export interface EventSourceMappingOptions { + consumerFunction: IAwsFunction; + batchSize: number; + functionResponseTypes: string[]; +} \ No newline at end of file diff --git a/pulumi/src/aws/website.ts b/pulumi/src/aws/website.ts new file mode 100644 index 00000000..ff36a209 --- /dev/null +++ b/pulumi/src/aws/website.ts @@ -0,0 +1,21 @@ +import { cloud } from "@winglang/sdk"; +import { aws } from "@winglang/sdk"; + +export abstract class AwsWebsite extends cloud.Website implements aws.IAwsWebsite { + private endpoint: cloud.Endpoint | undefined; + + protected get _endpoint(): cloud.Endpoint { + if (!this.endpoint) { + this.endpoint = new cloud.Endpoint(this, "Endpoint", this.url, { + label: `Website ${this.node.path}`, + browserSupport: true, + }); + } + + return this.endpoint; + } + + public abstract get url(): string; + public abstract get bucketArn(): string; + public abstract get bucketName(): string; +} \ No newline at end of file diff --git a/pulumi/src/bucket.ts b/pulumi/src/bucket.ts new file mode 100644 index 00000000..36bc4293 --- /dev/null +++ b/pulumi/src/bucket.ts @@ -0,0 +1,123 @@ +import { cloud } from "@winglang/sdk"; +import { Construct } from "constructs"; +import { PulumiResource } from "./resource"; +import { HttpMethod } from "@winglang/sdk/lib/cloud/api"; +import { AwsBucket } from "./aws/bucket"; + +export class PulumiBucket extends AwsBucket { + public readonly bucket: PulumiResource; + + constructor(scope: Construct, id: string, props: cloud.BucketProps = {}) { + super(scope, id, props); + + const p: Record = {}; + + if (props.forceDestroy ?? false) { + p.forceDestroy = true; + } + + this.bucket = new PulumiResource(this, id, { + type: "aws:s3:BucketV2", + properties: p, + }); + + if (props.cors ?? false) { + const options = props.corsOptions; + new PulumiResource(this, "BucketCorsConfigurationV2", { + type: "aws:s3:BucketCorsConfigurationV2", + properties: { + bucket: this.bucket.ref, + corsRules: [ + { + allowedHeaders: options?.allowedHeaders ?? ["Content-Type", "Authorization"], + allowedMethods: options?.allowedMethods ?? [HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE, HttpMethod.HEAD], + allowedOrigins: options?.allowedOrigins ?? ["*"], + exposeHeaders: options?.exposeHeaders ?? [], + maxAgeSeconds: options?.maxAge?.seconds ?? 300, + } + ] + } + }); + } + + if (props.public ?? false) { + const bucketOwnershipControls = new PulumiResource(this, "BucketOwnershipControls", { + type: "aws:s3:BucketOwnershipControls", + properties: { + bucket: this.bucket.ref, + rule: { + objectOwnership: "BucketOwnerPreferred", + } + } + }); + + const bucketPublicAccessBlock = new PulumiResource(this, "BucketPublicAccessBlock", { + type: "aws:s3:BucketPublicAccessBlock", + properties: { + bucket: this.bucket.ref, + blockPublicAcls: false, + blockPublicPolicy: false, + ignorePublicAcls: false, + restrictPublicBuckets: false, + } + }); + + new PulumiResource(this, "Acl", { + type: "aws:s3:BucketAclV2", + options: { + dependsOn: [ + bucketOwnershipControls.self, + bucketPublicAccessBlock.self, + ] + }, + properties: { + bucket: this.bucket.ref, + acl: "public-read", + } + }); + } + } + + public get bucketArn() { + return this.bucket.attr("arn"); + } + + public get bucketName() { + return this.bucket.attr("id"); + } + + public get bucketDomainName() { + return this.bucket.attr("bucketDomainName"); + } + + public addObject(path: string, content: string): void { + new PulumiResource(this, "BucketObject", { + type: "aws:s3:BucketObjectv2", + properties: { + bucket: this.bucket.ref, + key: path, + content: content, + } + }); + } + + public addCorsRule(value: cloud.BucketCorsOptions): void { + new PulumiResource(this, "BucketCorsConfigurationV2", { + type: "aws:s3:BucketCorsConfigurationV2", + properties: { + bucket: this.bucket.ref, + corsRules: { + allowedHeaders: value.allowedHeaders, + allowedMethods: value.allowedMethods, + allowedOrigins: value.allowedOrigins, + exposeHeaders: value.exposeHeaders, + maxAgeSeconds: value.maxAge?.seconds, + }, + } + }); + } + + protected createTopicHandler(eventType: cloud.BucketEventType, inflight: cloud.IBucketEventHandler): cloud.ITopicOnMessageHandler { + throw new Error("Method not implemented."); + } +} diff --git a/pulumi/src/function.ts b/pulumi/src/function.ts new file mode 100644 index 00000000..6e4edaf3 --- /dev/null +++ b/pulumi/src/function.ts @@ -0,0 +1,127 @@ +import { cloud } from "@winglang/sdk"; +import { createBundle } from "@winglang/sdk/lib/shared/bundling"; +import { Construct } from "constructs"; +import { PulumiResource, PulumiVariable } from "./resource"; +import { writeFileSync } from "fs"; +import { externalLibraries, NetworkConfig, PolicyStatement } from "@winglang/sdk/lib/shared-aws"; +import { join } from "path"; +import { AwsFunction } from "./aws/function"; + +export class PulumiFunction extends AwsFunction { + private readonly fn: PulumiResource; + private readonly policy: PolicyStatement[] = []; + private readonly environment: Record; + + constructor(scope: Construct, id: string, private readonly inflight: cloud.IFunctionHandler, private readonly props: cloud.FunctionProps = {}) { + super(scope, id, inflight, props); + + const inflightCodeApproximation = this._getCodeLines(this.inflight).join("\n"); + writeFileSync(this.entrypoint, inflightCodeApproximation); + + const bundle = createBundle(this.entrypoint, externalLibraries); + + this.environment = { + NODE_OPTIONS: "--enable-source-maps", + ...this.env, + }; + + const assumeRole = new PulumiVariable(this, "AssumeRole", { + "fn::invoke": { + function: "aws:iam:getPolicyDocument", + arguments: { + statements: [{ + effect: "Allow", + principals: [{ + type: "Service", + identifiers: ["lambda.amazonaws.com"] + }], + actions: ["sts:AssumeRole"] + }] + } + } + }) + + const policy = new PulumiVariable(this, "Policy", { + "fn::invoke": { + function: "aws:iam:getPolicyDocument", + arguments: { + statements: this.policy + } + } + }); + + const role = new PulumiResource(this, "Role", { + type: "aws:iam:Role", + properties: { + assumeRolePolicy: assumeRole.attr("json"), + managedPolicyArns: [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ], + inlinePolicies: [{ + name: "lambda-policy", + policy: policy.attr("json") + }], + } + }); + + const assetPath = "handler.zip"; + + const asset = new PulumiVariable(this, "Asset", { + "fn::invoke": { + function: "archive:getFile", + arguments: { + type: "zip", + sourceFile: join(bundle.directory, "index.cjs"), + outputPath: assetPath, + } + } + }); + + this.fn = new PulumiResource(this, "Function", { + type: "aws:lambda:Function", + properties: { + role: role.attr("arn"), + handler: "index.handler", + code: { "fn::fileArchive": assetPath }, + sourceCodeHash: asset.attr("outputBase64sha256"), + runtime: "nodejs20.x", + timeout: this.props.timeout ? this.props.timeout.seconds : 60, + memorySize: this.props.memory ?? 1024, + architectures: ["x86_64"], + environment: { + variables: this.environment + } + } + }); + + } + + public addEnvironment(name: string, value: string): void { + super.addEnvironment(name, value); + this.environment[name] = value; + } + + /** + * Add a Lambda layer to the function. + * @param layerArn The ARN of the layer. + */ + public addLambdaLayer(layerArn: string): void { + throw new Error("Method not implemented."); + } + + public get functionArn() { + return this.fn.attr("arn"); + } + + public get functionName() { + return this.fn.attr("id"); + } + + public addPolicyStatements(...policies: PolicyStatement[]): void { + this.policy.push(...policies); + } + + public addNetwork(config: NetworkConfig): void { + throw new Error("Method not implemented."); + } +} \ No newline at end of file diff --git a/pulumi/src/index.ts b/pulumi/src/index.ts new file mode 100644 index 00000000..ee4864ef --- /dev/null +++ b/pulumi/src/index.ts @@ -0,0 +1,29 @@ +import { core, platform } from "@winglang/sdk"; +import { PulumiApp } from "./app"; +import { PulumiBucket } from "./bucket"; +import { PulumiFunction } from "./function"; +import { PulumiQueue } from "./queue"; + +export class Platform implements platform.IPlatform { + target = "pulumi"; + + public newApp(props: core.AppProps): core.App { + return new PulumiApp(props); + } + + public resolveType(type: string): any { + if (type === "@winglang/sdk.cloud.Bucket") { + return PulumiBucket; + } + + if (type === "@winglang/sdk.cloud.Function") { + return PulumiFunction; + } + + if (type === "@winglang/sdk.cloud.Queue") { + return PulumiQueue; + } + + return undefined; + } +}; diff --git a/pulumi/src/queue.ts b/pulumi/src/queue.ts new file mode 100644 index 00000000..55f793fd --- /dev/null +++ b/pulumi/src/queue.ts @@ -0,0 +1,64 @@ +import { QueueProps } from "@winglang/sdk/lib/cloud"; +import { PulumiResource } from "./resource"; +import { Queue } from "@winglang/sdk/lib/shared-aws"; +import { Construct } from "constructs"; +import { AwsQueue, EventSourceMappingOptions } from "./aws/queue"; + +export class PulumiQueue extends AwsQueue { + public readonly queue: PulumiResource; + private timeout: number; + + constructor(scope: Construct, id: string, props: QueueProps = {}) { + super(scope, id); + + this.timeout = props.timeout?.seconds ?? 30; + + const p: Record = { + visibilityTimeoutSeconds: this.timeout, + messageRetentionSeconds: props.retentionPeriod?.seconds, + }; + + if (props.dlq) { + const awsQueue = Queue.from(props.dlq.queue); + if (!awsQueue) { + throw new Error("DLQ must be an AWS queue"); + } + + p.redrivePolicy = { + "fn::toJSON": { + deadLetterTargetArn: awsQueue.queueArn, + maxReceiveCount: props.dlq.maxDeliveryAttempts || 1, + } + } + } + + this.queue = new PulumiResource(this, "Queue", { + type: "aws:sqs:Queue", + properties: p + }); + } + + public get queueArn(): string { + return this.queue.attr("arn"); + } + + public get queueName(): string { + return this.queue.attr("id"); + } + + public get queueUrl(): string { + return this.queue.attr("url"); + } + + protected addEventSourceMapping(mapping: EventSourceMappingOptions): void { + new PulumiResource(this, "EventSourceMapping", { + type: "aws:lambda:EventSourceMapping", + properties: { + eventSourceArn: this.queueArn, + functionName: mapping.consumerFunction.functionName, + batchSize: mapping.batchSize, + functionResponseTypes: ["ReportBatchItemFailures"], + }, + }); + } +} diff --git a/pulumi/src/resource.ts b/pulumi/src/resource.ts new file mode 100644 index 00000000..1562f439 --- /dev/null +++ b/pulumi/src/resource.ts @@ -0,0 +1,59 @@ +import { Construct } from "@winglang/sdk/lib/core/types"; +import { ResourceDefinition, VariableDefinition } from "./schema"; + +export interface PulumiResourceProps extends ResourceDefinition { + +} + +export class PulumiResource extends Construct { + public readonly props: PulumiResourceProps; + + constructor(scope: Construct, id: string, props: PulumiResourceProps) { + super(scope, id); + + this.props = props; + } + + public get definition(): ResourceDefinition { + return this.props; + } + + public get self(): string { + return `\${${this.name}}`; + } + + public get name(): string { + return renderName(this); + } + + public get ref() { + return this.attr("id"); + } + + public attr(name: string) { + return `\${${this.name}.${name}}`; + } +} + +export class PulumiVariable extends Construct { + constructor(scope: Construct, id: string, public readonly props: VariableDefinition) { + super(scope, id); + } + + public attr(name: string) { + return `\${${this.name}.${name}}`; + } + + public get name(): string { + return this.node.addr; + } +} + +function renderName(c: Construct): string { + const components = [ + c.node.id, + c.node.addr.substring(0, 6), + ]; + + return components.map(c => c.replace(/^[a-zA-Z0-9]+:/g, "").replace(/:/g, "-").toLocaleLowerCase()).join("-"); +} diff --git a/pulumi/src/schema.ts b/pulumi/src/schema.ts new file mode 100644 index 00000000..4ce5e03a --- /dev/null +++ b/pulumi/src/schema.ts @@ -0,0 +1,41 @@ +export interface PulumiYaml { + name: string; + runtime: string; + description?: string; + config?: Record; + resources: Record; + outputs?: Record; // Outputs from the stack + variables?: Record; // Variables for the stack +} + +export interface ResourceDefinition { + type: string; // Resource type, e.g., "aws:s3/bucket:Bucket" + properties?: ResourceProperties; // Properties specific to the resource type + options?: ResourceOptions; // Options for resource behavior +} + +export interface ResourceProperties { + [key: string]: any; // Dynamic properties based on resource type +} + +export interface ResourceOptions { + dependsOn?: string[]; // Dependencies on other resources + protect?: boolean; // Protection flag + provider?: string; // Provider name + deleteBeforeReplace?: boolean; // Replace strategy + ignoreChanges?: string[]; // List of properties to ignore changes for + parent?: string; // Parent resource + additionalSecretOutputs?: string[]; // Outputs marked as secrets + aliases?: string[]; // Aliases for resource renaming + customTimeouts?: CustomTimeouts; // Timeouts for create, update, delete +} + +export interface CustomTimeouts { + create?: string; // Timeout for create operation + update?: string; // Timeout for update operation + delete?: string; // Timeout for delete operation +} + +export interface VariableDefinition { + [key: string]: any; +} diff --git a/pulumi/src/website.ts b/pulumi/src/website.ts new file mode 100644 index 00000000..3bce7fc6 --- /dev/null +++ b/pulumi/src/website.ts @@ -0,0 +1,22 @@ +import { AwsWebsite } from "./aws/website"; +import { Construct } from "@winglang/sdk/lib/core/types"; +import { WebsiteProps } from "@winglang/sdk/lib/cloud"; + +export class PulumiWebsite extends AwsWebsite { + constructor(scope: Construct, id: string, props: WebsiteProps) { + super(scope, id, props); + + + } + + public get url(): string { + throw new Error("Method not implemented."); + } + public get bucketArn(): string { + throw new Error("Method not implemented."); + } + public get bucketName(): string { + throw new Error("Method not implemented."); + } + +} \ No newline at end of file diff --git a/pulumi/tsconfig.json b/pulumi/tsconfig.json new file mode 100644 index 00000000..c413b449 --- /dev/null +++ b/pulumi/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "commonjs", + "lib": ["es2018", "dom"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "outDir": "lib", + "rootDir": "src", + "skipLibCheck": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "lib"] +}