├── .github ├── dependabot.yml └── workflows │ ├── branchUpdater.yml │ ├── deploy.yml │ └── oldToCompare.yml ├── .gitignore ├── .vscode ├── extensions.json ├── settings.json └── tasks.json ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── SECURITY.md ├── action.yml ├── compiled ├── index.js └── package.json ├── package-lock.json ├── package.json ├── src └── index.ts ├── test ├── package-lock.json ├── package.json ├── src │ └── worker.js └── wrangler.toml └── tsconfig.json /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: 'github-actions' 9 | directory: '/' 10 | schedule: 11 | interval: 'daily' 12 | open-pull-requests-limit: 999 13 | - package-ecosystem: 'npm' 14 | directory: '/' 15 | schedule: 16 | interval: 'daily' 17 | open-pull-requests-limit: 999 18 | ignore: 19 | - dependency-name: '@types/node' 20 | versions: '>=17.0.0' 21 | - package-ecosystem: 'npm' 22 | directory: '/test' 23 | schedule: 24 | interval: 'daily' 25 | open-pull-requests-limit: 999 26 | -------------------------------------------------------------------------------- /.github/workflows/branchUpdater.yml: -------------------------------------------------------------------------------- 1 | name: Branch Updater 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | concurrency: 9 | group: ${{ github.workflow }}-${{ github.ref }} 10 | cancel-in-progress: false 11 | 12 | jobs: 13 | update: 14 | runs-on: ubuntu-latest 15 | permissions: 16 | contents: write 17 | steps: 18 | - uses: step-security/harden-runner@v2 19 | with: 20 | disable-sudo: true 21 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 22 | - uses: actions/checkout@v3 23 | with: 24 | fetch-depth: 0 25 | - name: Setup Git 26 | run: | 27 | git config --local user.name "DemosJarco" 28 | git config --local user.email "1209494+demosjarco@users.noreply.github.com" 29 | - name: Extract major version from tag 30 | run: | 31 | VERSION=$(echo ${GITHUB_REF#refs/tags/} | cut -d. -f1) 32 | echo "VERSION=$VERSION" >> $GITHUB_ENV 33 | - name: Fetch branches from origin 34 | run: | 35 | git fetch origin 36 | - name: Check if branch exists and create if not 37 | run: | 38 | if ! git show-ref --verify --quiet refs/remotes/origin/$VERSION; then 39 | git branch $VERSION 40 | fi 41 | - name: Checkout to major version branch 42 | run: | 43 | git checkout $VERSION 44 | - name: Merge tag into major version branch 45 | run: | 46 | git merge -m "Merge tag ${GITHUB_REF#refs/tags/}" $GITHUB_SHA 47 | - name: Push major version branch to origin 48 | run: | 49 | git push origin $VERSION 50 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Compile, Test, and Publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | paths: 8 | - '.github/workflows/deploy.yml' 9 | - 'src/**' 10 | - 'test/**' 11 | - 'action.yml' 12 | - 'package.json' 13 | - 'package-lock.json' 14 | - 'tsconfig.json' 15 | tags-ignore: 16 | - '**' 17 | 18 | concurrency: 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: false 21 | 22 | jobs: 23 | compile-action: 24 | runs-on: ubuntu-latest 25 | steps: 26 | - uses: step-security/harden-runner@v2 27 | with: 28 | disable-sudo: true 29 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 30 | - uses: actions/checkout@v3 31 | - uses: actions/setup-node@v3 32 | with: 33 | node-version: lts/* 34 | check-latest: true 35 | cache: 'npm' 36 | - run: npm ci 37 | working-directory: ./test 38 | - name: Install action compiler 39 | run: npm install -D @vercel/ncc 40 | - name: Compile action 41 | run: npx ncc build src/index.ts --v8-cache --minify --target es2023 --out compiled 42 | - uses: actions/upload-artifact@v3 43 | with: 44 | name: compiled 45 | path: compiled 46 | if-no-files-found: error 47 | retention-days: 1 48 | test-build-only: 49 | needs: compile-action 50 | strategy: 51 | fail-fast: false 52 | matrix: 53 | os: [macos-latest, windows-latest, ubuntu-latest] 54 | runs-on: ${{ matrix.os }} 55 | steps: 56 | - uses: step-security/harden-runner@v2 57 | if: matrix.os == 'ubuntu-latest' 58 | with: 59 | disable-sudo: true 60 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 61 | - uses: actions/checkout@v3 62 | - uses: actions/setup-node@v3 63 | with: 64 | node-version: lts/* 65 | check-latest: true 66 | cache: 'npm' 67 | cache-dependency-path: 'test/package-lock.json' 68 | - run: npm ci 69 | working-directory: ./test 70 | - name: Delete old compiled action 71 | run: rm -rv compiled 72 | shell: bash 73 | - uses: actions/download-artifact@v3 74 | with: 75 | name: compiled 76 | path: compiled 77 | - name: (LOCAL) demosjarco/wrangler-action-node@${{ github.ref_name }} 78 | uses: ./ 79 | with: 80 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 81 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 82 | workingDirectory: test 83 | secrets: | 84 | SECRET1 85 | SECRET2 86 | preCommands: echo "*** pre commands ***" 87 | postCommands: | 88 | echo "*** post commands ***" 89 | wrangler build 90 | echo "******" 91 | env: 92 | SECRET1: ${{ secrets.SECRET1 }} 93 | SECRET2: ${{ secrets.SECRET2 }} 94 | test-publish: 95 | needs: compile-action 96 | strategy: 97 | fail-fast: false 98 | matrix: 99 | os: [macos-latest, windows-latest, ubuntu-latest] 100 | runs-on: ${{ matrix.os }} 101 | steps: 102 | - uses: step-security/harden-runner@v2 103 | if: matrix.os == 'ubuntu-latest' 104 | with: 105 | disable-sudo: true 106 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 107 | - uses: actions/checkout@v3 108 | - uses: actions/setup-node@v3 109 | with: 110 | node-version: lts/* 111 | check-latest: true 112 | cache: 'npm' 113 | cache-dependency-path: 'test/package-lock.json' 114 | - run: npm ci 115 | working-directory: ./test 116 | - name: Delete old compiled action 117 | run: rm -rv compiled 118 | shell: bash 119 | - uses: actions/download-artifact@v3 120 | with: 121 | name: compiled 122 | path: compiled 123 | - name: (LOCAL) demosjarco/wrangler-action-node@${{ github.ref_name }} 124 | uses: ./ 125 | with: 126 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 127 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 128 | environment: 'production' 129 | workingDirectory: test 130 | test-publish_legacy_credentials: 131 | # It's legacy (unsupported) wrangler so it's problaby gonna fail 132 | continue-on-error: true 133 | needs: compile-action 134 | strategy: 135 | fail-fast: false 136 | matrix: 137 | os: [macos-latest, windows-latest, ubuntu-latest] 138 | runs-on: ${{ matrix.os }} 139 | steps: 140 | - uses: step-security/harden-runner@v2 141 | if: matrix.os == 'ubuntu-latest' 142 | with: 143 | disable-sudo: true 144 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 145 | - uses: actions/checkout@v3 146 | - uses: actions/setup-node@v3 147 | with: 148 | node-version: lts/* 149 | check-latest: true 150 | cache: 'npm' 151 | cache-dependency-path: 'test/package-lock.json' 152 | - run: npm ci 153 | working-directory: ./test 154 | - name: Delete old compiled action 155 | run: rm -rv compiled 156 | shell: bash 157 | - uses: actions/download-artifact@v3 158 | with: 159 | name: compiled 160 | path: compiled 161 | - name: (LOCAL) demosjarco/wrangler-action-node@${{ github.ref_name }} 162 | uses: ./ 163 | with: 164 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 165 | apiKey: ${{ secrets.CLOUDFLARE_API_KEY_TESTING }} 166 | email: ${{ secrets.CLOUDFLARE_EMAIL_TESTING }} 167 | environment: 'production' 168 | wranglerVersion: '1.21.0' 169 | workingDirectory: 'test' 170 | test-publish_hardcoded_wrangler_version: 171 | # It's legacy (unsupported) wrangler so it's problaby gonna fail 172 | continue-on-error: true 173 | needs: compile-action 174 | strategy: 175 | fail-fast: false 176 | matrix: 177 | os: [macos-latest, windows-latest, ubuntu-latest] 178 | runs-on: ${{ matrix.os }} 179 | steps: 180 | - uses: step-security/harden-runner@v2 181 | if: matrix.os == 'ubuntu-latest' 182 | with: 183 | disable-sudo: true 184 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 185 | - uses: actions/checkout@v3 186 | - uses: actions/setup-node@v3 187 | with: 188 | node-version: lts/* 189 | check-latest: true 190 | cache: 'npm' 191 | cache-dependency-path: 'test/package-lock.json' 192 | - run: npm ci 193 | working-directory: ./test 194 | - name: Delete old compiled action 195 | run: rm -rv compiled 196 | shell: bash 197 | - uses: actions/download-artifact@v3 198 | with: 199 | name: compiled 200 | path: compiled 201 | - name: (LOCAL) demosjarco/wrangler-action-node@${{ github.ref_name }} 202 | uses: ./ 203 | with: 204 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 205 | apiKey: ${{ secrets.CLOUDFLARE_API_KEY_TESTING }} 206 | email: ${{ secrets.CLOUDFLARE_EMAIL_TESTING }} 207 | environment: 'production' 208 | wranglerVersion: '1.21.0' 209 | workingDirectory: 'test' 210 | test-publish_secrets: 211 | needs: compile-action 212 | strategy: 213 | fail-fast: false 214 | matrix: 215 | os: [macos-latest, windows-latest, ubuntu-latest] 216 | runs-on: ${{ matrix.os }} 217 | steps: 218 | - uses: step-security/harden-runner@v2 219 | if: matrix.os == 'ubuntu-latest' 220 | with: 221 | disable-sudo: true 222 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 223 | - uses: actions/checkout@v3 224 | - uses: actions/setup-node@v3 225 | with: 226 | node-version: lts/* 227 | check-latest: true 228 | cache: 'npm' 229 | cache-dependency-path: 'test/package-lock.json' 230 | - run: npm ci 231 | working-directory: ./test 232 | - name: Delete old compiled action 233 | run: rm -rv compiled 234 | shell: bash 235 | - uses: actions/download-artifact@v3 236 | with: 237 | name: compiled 238 | path: compiled 239 | - name: (LOCAL) demosjarco/wrangler-action-node@${{ github.ref_name }} 240 | uses: ./ 241 | with: 242 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 243 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 244 | environment: 'production' 245 | workingDirectory: test 246 | secrets: | 247 | SECRET1 248 | SECRET2 249 | preCommands: echo "*** pre command ***" 250 | postCommands: | 251 | echo "*** post commands ***" 252 | echo "******" 253 | env: 254 | SECRET1: ${{ secrets.SECRET1 }} 255 | SECRET2: ${{ secrets.SECRET2 }} 256 | publish-action: 257 | if: github.ref_name == 'main' 258 | # needs: [test-build-only, test-publish, test-publish_legacy_credentials, test-publish_hardcoded_wrangler_version, test-publish_secrets] 259 | needs: [test-build-only, test-publish, test-publish_secrets] 260 | runs-on: ubuntu-latest 261 | permissions: 262 | contents: write 263 | steps: 264 | - uses: step-security/harden-runner@v2 265 | with: 266 | disable-sudo: true 267 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 268 | - uses: actions/checkout@v3 269 | - name: Delete old compiled action 270 | run: rm -rv compiled 271 | shell: bash 272 | - uses: actions/download-artifact@v3 273 | with: 274 | name: compiled 275 | path: compiled 276 | - name: Setup Git 277 | run: | 278 | git config --local user.name "DemosJarco" 279 | git config --local user.email "1209494+demosjarco@users.noreply.github.com" 280 | - run: git add compiled/ 281 | - run: git commit -m "[ci skip] $PREVIOUS_GIT_MESSAGE" 282 | shell: bash 283 | env: 284 | PREVIOUS_GIT_MESSAGE: ${{ github.event.head_commit.message }} 285 | - run: git push 286 | -------------------------------------------------------------------------------- /.github/workflows/oldToCompare.yml: -------------------------------------------------------------------------------- 1 | name: Old Comparison 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | paths: 8 | - '.github/workflows/deploy.yml' 9 | - 'src/**' 10 | - 'test/**' 11 | - 'action.yml' 12 | - 'package.json' 13 | - 'package-lock.json' 14 | - 'tsconfig.json' 15 | tags-ignore: 16 | - '**' 17 | 18 | concurrency: 19 | group: ${{ github.workflow }}-${{ github.ref }} 20 | cancel-in-progress: false 21 | 22 | jobs: 23 | test-build-only: 24 | strategy: 25 | fail-fast: false 26 | matrix: 27 | os: [macos-latest, windows-latest, ubuntu-latest] 28 | runs-on: ${{ matrix.os }} 29 | steps: 30 | - uses: step-security/harden-runner@v2 31 | if: matrix.os == 'ubuntu-latest' 32 | with: 33 | disable-sudo: true 34 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 35 | - uses: actions/checkout@v3 36 | - uses: actions/setup-node@v3 37 | with: 38 | node-version: lts/* 39 | check-latest: true 40 | cache: 'npm' 41 | cache-dependency-path: 'test/package-lock.json' 42 | - run: npm ci 43 | working-directory: ./test 44 | - uses: cloudflare/wrangler-action@2.0.0 45 | with: 46 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 47 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 48 | workingDirectory: test 49 | secrets: | 50 | SECRET1 51 | SECRET2 52 | preCommands: echo "*** pre commands ***" 53 | postCommands: | 54 | echo "*** post commands ***" 55 | wrangler build 56 | echo "******" 57 | env: 58 | SECRET1: ${{ secrets.SECRET1 }} 59 | SECRET2: ${{ secrets.SECRET2 }} 60 | test-publish: 61 | strategy: 62 | fail-fast: false 63 | matrix: 64 | os: [macos-latest, windows-latest, ubuntu-latest] 65 | runs-on: ${{ matrix.os }} 66 | steps: 67 | - uses: step-security/harden-runner@v2 68 | if: matrix.os == 'ubuntu-latest' 69 | with: 70 | disable-sudo: true 71 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 72 | - uses: actions/checkout@v3 73 | - uses: actions/setup-node@v3 74 | with: 75 | node-version: lts/* 76 | check-latest: true 77 | cache: 'npm' 78 | cache-dependency-path: 'test/package-lock.json' 79 | - run: npm ci 80 | working-directory: ./test 81 | - uses: cloudflare/wrangler-action@2.0.0 82 | with: 83 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 84 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 85 | environment: 'production' 86 | workingDirectory: test 87 | test-publish_legacy_credentials: 88 | # It's legacy (unsupported) wrangler so it's problaby gonna fail 89 | continue-on-error: true 90 | strategy: 91 | fail-fast: false 92 | matrix: 93 | os: [macos-latest, windows-latest, ubuntu-latest] 94 | runs-on: ${{ matrix.os }} 95 | steps: 96 | - uses: step-security/harden-runner@v2 97 | if: matrix.os == 'ubuntu-latest' 98 | with: 99 | disable-sudo: true 100 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 101 | - uses: actions/checkout@v3 102 | - uses: actions/setup-node@v3 103 | with: 104 | node-version: lts/* 105 | check-latest: true 106 | cache: 'npm' 107 | cache-dependency-path: 'test/package-lock.json' 108 | - run: npm ci 109 | working-directory: ./test 110 | - uses: cloudflare/wrangler-action@2.0.0 111 | with: 112 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 113 | apiKey: ${{ secrets.CLOUDFLARE_API_KEY_TESTING }} 114 | email: ${{ secrets.CLOUDFLARE_EMAIL_TESTING }} 115 | environment: 'production' 116 | wranglerVersion: '1.21.0' 117 | workingDirectory: 'test' 118 | test-publish_hardcoded_wrangler_version: 119 | # It's legacy (unsupported) wrangler so it's problaby gonna fail 120 | continue-on-error: true 121 | strategy: 122 | fail-fast: false 123 | matrix: 124 | os: [macos-latest, windows-latest, ubuntu-latest] 125 | runs-on: ${{ matrix.os }} 126 | steps: 127 | - uses: step-security/harden-runner@v2 128 | if: matrix.os == 'ubuntu-latest' 129 | with: 130 | disable-sudo: true 131 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 132 | - uses: actions/checkout@v3 133 | - uses: actions/setup-node@v3 134 | with: 135 | node-version: lts/* 136 | check-latest: true 137 | cache: 'npm' 138 | cache-dependency-path: 'test/package-lock.json' 139 | - run: npm ci 140 | working-directory: ./test 141 | - uses: cloudflare/wrangler-action@2.0.0 142 | with: 143 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 144 | apiKey: ${{ secrets.CLOUDFLARE_API_KEY_TESTING }} 145 | email: ${{ secrets.CLOUDFLARE_EMAIL_TESTING }} 146 | environment: 'production' 147 | wranglerVersion: '1.21.0' 148 | workingDirectory: 'test' 149 | test-publish_secrets: 150 | strategy: 151 | fail-fast: false 152 | matrix: 153 | os: [macos-latest, windows-latest, ubuntu-latest] 154 | runs-on: ${{ matrix.os }} 155 | steps: 156 | - uses: step-security/harden-runner@v2 157 | if: matrix.os == 'ubuntu-latest' 158 | with: 159 | disable-sudo: true 160 | egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 161 | - uses: actions/checkout@v3 162 | - uses: actions/setup-node@v3 163 | with: 164 | node-version: lts/* 165 | check-latest: true 166 | cache: 'npm' 167 | cache-dependency-path: 'test/package-lock.json' 168 | - run: npm ci 169 | working-directory: ./test 170 | - uses: cloudflare/wrangler-action@2.0.0 171 | with: 172 | accountId: ${{ secrets.CF_ACCOUNT_ID_TESTING }} 173 | apiToken: ${{ secrets.CF_API_TOKEN_TESTING }} 174 | environment: 'production' 175 | workingDirectory: test 176 | secrets: | 177 | SECRET1 178 | SECRET2 179 | preCommands: echo "*** pre command ***" 180 | postCommands: | 181 | echo "*** post commands ***" 182 | echo "******" 183 | env: 184 | SECRET1: ${{ secrets.SECRET1 }} 185 | SECRET2: ${{ secrets.SECRET2 }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["esbenp.prettier-vscode", "unifiedjs.vscode-mdx", "github.vscode-github-actions"] 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "github-actions.workflows.pinned.workflows": [".github/workflows/deploy.yml"], 3 | "github-actions.workflows.pinned.refresh.enabled": true 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Action Build", 6 | "dependsOn": ["build.types"], 7 | "group": { 8 | "kind": "build", 9 | "isDefault": true 10 | } 11 | }, 12 | { 13 | "label": "build.types", 14 | "detail": "tsc --incremental --watch", 15 | "type": "npm", 16 | "script": "build.types:watch", 17 | "presentation": { 18 | "group": "compile" 19 | } 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Kristian Freeman 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Wrangler GitHub Action (Node Edition) 2 | 3 | --- 4 | 5 | ## Update Aug 7, 2023 6 | The official [`@cloudflare/wrangler-action`](https://github.com/cloudflare/wrangler-action) has now updated to v3.0.0 which is was also converted to TypeScript and no external deps (from Docker + Linux + Bash). As a result, this project will no longer be maintained and I recommend switching to the official one. This repo will be left up but archived. 7 | 8 | --- 9 | 10 | > This is a direct logic copy of [@cloudflare/wrangler-action](https://github.com/cloudflare/wrangler-action) but written in pure Node.JS without any external dependencies 11 | 12 | Easy-to-use GitHub Action to use [Wrangler](https://developers.cloudflare.com/workers/cli-wrangler/). Makes deploying Workers, Pages or modifying R2 easy to do. 13 | 14 | ## Usage 15 | 16 | Add `wrangler-action` to the workflow for your Workers/Pages application. The below example will publish a Worker on a `git push` to the `main` branch: 17 | 18 | ```yaml 19 | name: Deploy 20 | 21 | on: 22 | push: 23 | branches: 24 | - main 25 | 26 | jobs: 27 | deploy: 28 | runs-on: ubuntu-latest 29 | name: Deploy 30 | steps: 31 | - uses: actions/checkout@v2 32 | - name: Publish 33 | uses: demosjarco/wrangler-action-node@v1 34 | with: 35 | apiToken: ${{ secrets.CF_API_TOKEN }} 36 | ``` 37 | 38 | ## Authentication 39 | 40 | You'll need to configure Wrangler using GitHub's Secrets feature - go to "Settings -> Secrets" and add your Cloudflare API token (for help finding this, see the [Workers documentation](https://developers.cloudflare.com/workers/quickstart/#api-token)). Your API token is encrypted by GitHub, and the action won't print it into logs, so it should be safe! 41 | 42 | With your API token set as a secret for your repository, pass it to the action in the `with` block of your workflow. Below, I've set the secret name to `CF_API_TOKEN`: 43 | 44 | ```yaml 45 | jobs: 46 | deploy: 47 | name: Deploy 48 | steps: 49 | uses: demosjarco/wrangler-action-node@v1 50 | with: 51 | apiToken: ${{ secrets.CF_API_TOKEN }} 52 | ``` 53 | 54 | `wrangler-action` also supports using your [global API key and email](https://developers.cloudflare.com/workers/quickstart/#global-api-key) as an authentication method, although API tokens are preferred. Pass in `apiKey` and `email` to the GitHub Action to use this method: 55 | 56 | ```yaml 57 | jobs: 58 | deploy: 59 | name: Deploy 60 | steps: 61 | uses: demosjarco/wrangler-action-node@v1 62 | with: 63 | apiKey: ${{ secrets.CF_API_KEY }} 64 | email: ${{ secrets.CF_EMAIL }} 65 | ``` 66 | 67 | ## Configuration 68 | 69 | If you need to install a specific version of Wrangler to use for deployment, you can also pass the input `wranglerVersion` to install a specific version of Wrangler from NPM. This should be a [SemVer](https://semver.org/)-style version number, such as `1.6.0`: 70 | 71 | ```yaml 72 | jobs: 73 | deploy: 74 | steps: 75 | uses: demosjarco/wrangler-action-node@v1 76 | with: 77 | apiToken: ${{ secrets.CF_API_TOKEN }} 78 | wranglerVersion: '1.6.0' 79 | ``` 80 | 81 | Optionally, you can also pass a `workingDirectory` key to the action. This will allow you to specify a subdirectory of the repo to run the Wrangler command from. 82 | 83 | ```yaml 84 | jobs: 85 | deploy: 86 | steps: 87 | uses: demosjarco/wrangler-action-node@v1 88 | with: 89 | apiToken: ${{ secrets.CF_API_TOKEN }} 90 | workingDirectory: 'subfoldername' 91 | ``` 92 | 93 | [Worker secrets](https://developers.cloudflare.com/workers/tooling/wrangler/secrets/) can be optionally passed as a new line deliminated string of names in `secrets`. Each secret name must match an environment variable name specified in the `env` attribute. Creates or replaces the value for the Worker secret using the `wrangler secret put` command. 94 | 95 | ```yaml 96 | jobs: 97 | deploy: 98 | steps: 99 | uses: demosjarco/wrangler-action-node@v1 100 | with: 101 | apiToken: ${{ secrets.CF_API_TOKEN }} 102 | secrets: | 103 | SECRET1 104 | SECRET2 105 | env: 106 | SECRET1: ${{ secrets.SECRET1 }} 107 | SECRET2: ${{ secrets.SECRET2 }} 108 | ``` 109 | 110 | If you need to run additional shell commands before or after your command, you can specify them as input to `preCommands` (before `publish`) or `postCommands` (after `publish`). These can include additional `wrangler` commands (that is, `whoami`, `kv:key put`) or any other commands available inside the `wrangler-action` context. 111 | 112 | ```yaml 113 | jobs: 114 | deploy: 115 | steps: 116 | uses: demosjarco/wrangler-action-node@v1 117 | with: 118 | apiToken: ${{ secrets.CF_API_TOKEN }} 119 | preCommands: echo "*** pre command ***" 120 | postCommands: | 121 | echo "*** post commands ***" 122 | wrangler kv:key put --binding=MY_KV key2 value2 123 | echo "******" 124 | ``` 125 | 126 | You can use the `command` option to do specific actions such as running `wrangler whoami` against your project: 127 | 128 | ```yaml 129 | jobs: 130 | deploy: 131 | steps: 132 | uses: demosjarco/wrangler-action-node@v1 133 | with: 134 | apiToken: ${{ secrets.CF_API_TOKEN }} 135 | command: whoami 136 | ``` 137 | 138 | ## Sponsors 139 | 140 | [![James](https://github.com/Cherry.png?size=90)](https://github.com/Cherry)[![ChainFuse](https://github.com/ChainFuse.png?size=90)](https://github.com/ChainFuse) 141 | 142 | ## More Info 143 | See the [wiki](../../wiki) for more information 144 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # SECURITY.md 2 | 3 | ## Security Policy 4 | 5 | This document outlines the security procedures and general policies for the "Deploy to Cloudflare Workers with Wrangler using Node" GitHub Action. 6 | 7 | ### Supported Versions 8 | 9 | As of the latest update to this policy, we are providing support and security updates to the following version of the action: 10 | 11 | | Version | Supported | 12 | | ------- | ------------------ | 13 | | 1.x.x | :white_check_mark: | 14 | 15 | ### Reporting a Vulnerability 16 | 17 | If you discover a vulnerability in the GitHub Action, please follow the guidelines provided by GitHub for privately reporting a security vulnerability. You can find these instructions at the following link: [Privately reporting a security vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability). 18 | 19 | If you discover a vulnerability in `wrangler` itself, please report it directly to Cloudflare as per their instructions outlined [here](https://www.cloudflare.com/.well-known/security.txt). 20 | 21 | ### Security Aspects of the Action 22 | 23 | 1. **Authentication:** The action uses GitHub's Secrets feature for configuring Wrangler. The secrets feature allows you to store sensitive information, such as your Cloudflare API token, securely in your repository. The action also supports using your global API key and email as an authentication method, although API tokens are preferred. 24 | 25 | 2. **Log Safety:** Your API token is encrypted by GitHub, and the action won't print it into logs, so it should be safe. 26 | 27 | 3. **Worker Secrets:** Worker secrets can be optionally passed as a new line delimited string of names in `secrets`. Each secret name must match an environment variable name specified in the `env` attribute. Creates or replaces the value for the Worker secret using the `wrangler secret put` command. 28 | 29 | 4. **Additional Commands:** If you need to run additional shell commands before or after your command, you can specify them as input to `preCommands` (before `publish`) or `postCommands` (after `publish`). These can include additional `wrangler` commands or any other commands available inside the `wrangler-action` context. 30 | 31 | 5. **Event Triggers:** There are a number of possible events, like `push`, that can be used to trigger a workflow. For more details on the events available, refer to the GitHub Actions documentation. 32 | 33 | ### Regular Updates 34 | 35 | To ensure the security of your project, it is recommended that you keep the action updated to the latest version. Regular updates ensure that you are protected from any known vulnerabilities and also gain access to any new features and improvements. You can also use the major version tag (e.g., `@v1`) as the suffix to the command to ensure that you are using the latest release within that major version. Example: 36 | ```yaml 37 | - uses: demosjarco/wrangler-action-node@v1 38 | ``` 39 | 40 | ### Additional Security Practices 41 | 42 | For any security-related issues or inquiries not covered in this document, please refer to the general GitHub security practices and policies. 43 | 44 | This policy will be updated as new security procedures are implemented or existing procedures are modified. Please check back regularly for any updates. 45 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'Deploy to Cloudflare Workers with Wrangler using Node' 2 | branding: 3 | icon: 'upload-cloud' 4 | color: 'orange' 5 | description: 'Deploy your Cloudflare Workers and Pages projects from GitHub using Wrangler' 6 | runs: 7 | using: 'node16' 8 | main: 'compiled/index.js' 9 | inputs: 10 | apiKey: 11 | description: '(Legacy) Your Cloudflare API Key' 12 | required: false 13 | email: 14 | description: '(Legacy) Your Cloudflare Email' 15 | required: false 16 | apiToken: 17 | description: 'Your Cloudflare API Token' 18 | required: false 19 | accountId: 20 | description: 'Your Cloudflare Account ID' 21 | required: false 22 | 23 | environment: 24 | description: "The environment you'd like to publish your Workers project to - must be defined in wrangler.toml" 25 | workingDirectory: 26 | description: 'The relative path which Wrangler commands should be run from' 27 | required: false 28 | wranglerVersion: 29 | description: "The version of Wrangler you'd like to use to publish your Workers project" 30 | required: false 31 | vars: 32 | description: 'A new line deliminated string of environment variable names that should be configured as Worker environment variables' 33 | required: false 34 | secrets: 35 | description: 'A new line deliminated string of environment variable names that should be configured as Worker secrets' 36 | required: false 37 | preCommands: 38 | description: 'Commands to execute before publishing the Workers project' 39 | required: false 40 | postCommands: 41 | description: 'Commands to execute after publishing the Workers project' 42 | required: false 43 | command: 44 | description: 'The Wrangler command you wish to run. For example: "publish" - this will publish your Worker' 45 | required: false 46 | -------------------------------------------------------------------------------- /compiled/index.js: -------------------------------------------------------------------------------- 1 | import{createRequire as e}from"module";var t={351:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.issue=t.issueCommand=void 0;const s=i(r(37));const a=r(278);function issueCommand(e,t,r){const n=new Command(e,t,r);process.stdout.write(n.toString()+s.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const u="::";class Command{constructor(e,t,r){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=r}toString(){let e=u+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const r in this.properties){if(this.properties.hasOwnProperty(r)){const n=this.properties[r];if(n){if(t){t=false}else{e+=","}e+=`${r}=${escapeProperty(n)}`}}}}e+=`${u}${escapeData(this.message)}`;return e}}function escapeData(e){return a.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return a.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},186:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var s=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.getIDToken=t.getState=t.saveState=t.group=t.endGroup=t.startGroup=t.info=t.notice=t.warning=t.error=t.debug=t.isDebug=t.setFailed=t.setCommandEcho=t.setOutput=t.getBooleanInput=t.getMultilineInput=t.getInput=t.addPath=t.setSecret=t.exportVariable=t.ExitCode=void 0;const a=r(351);const u=r(717);const l=r(278);const c=i(r(37));const d=i(r(17));const f=r(41);var p;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(p=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){const r=l.toCommandValue(t);process.env[e]=r;const n=process.env["GITHUB_ENV"]||"";if(n){return u.issueFileCommand("ENV",u.prepareKeyValueMessage(e,t))}a.issueCommand("set-env",{name:e},r)}t.exportVariable=exportVariable;function setSecret(e){a.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){u.issueFileCommand("PATH",e)}else{a.issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${d.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!r){throw new Error(`Input required and not supplied: ${e}`)}if(t&&t.trimWhitespace===false){return r}return r.trim()}t.getInput=getInput;function getMultilineInput(e,t){const r=getInput(e,t).split("\n").filter((e=>e!==""));if(t&&t.trimWhitespace===false){return r}return r.map((e=>e.trim()))}t.getMultilineInput=getMultilineInput;function getBooleanInput(e,t){const r=["true","True","TRUE"];const n=["false","False","FALSE"];const o=getInput(e,t);if(r.includes(o))return true;if(n.includes(o))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}t.getBooleanInput=getBooleanInput;function setOutput(e,t){const r=process.env["GITHUB_OUTPUT"]||"";if(r){return u.issueFileCommand("OUTPUT",u.prepareKeyValueMessage(e,t))}process.stdout.write(c.EOL);a.issueCommand("set-output",{name:e},l.toCommandValue(t))}t.setOutput=setOutput;function setCommandEcho(e){a.issue("echo",e?"on":"off")}t.setCommandEcho=setCommandEcho;function setFailed(e){process.exitCode=p.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){a.issueCommand("debug",{},e)}t.debug=debug;function error(e,t={}){a.issueCommand("error",l.toCommandProperties(t),e instanceof Error?e.toString():e)}t.error=error;function warning(e,t={}){a.issueCommand("warning",l.toCommandProperties(t),e instanceof Error?e.toString():e)}t.warning=warning;function notice(e,t={}){a.issueCommand("notice",l.toCommandProperties(t),e instanceof Error?e.toString():e)}t.notice=notice;function info(e){process.stdout.write(e+c.EOL)}t.info=info;function startGroup(e){a.issue("group",e)}t.startGroup=startGroup;function endGroup(){a.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return s(this,void 0,void 0,(function*(){startGroup(e);let r;try{r=yield t()}finally{endGroup()}return r}))}t.group=group;function saveState(e,t){const r=process.env["GITHUB_STATE"]||"";if(r){return u.issueFileCommand("STATE",u.prepareKeyValueMessage(e,t))}a.issueCommand("save-state",{name:e},l.toCommandValue(t))}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState;function getIDToken(e){return s(this,void 0,void 0,(function*(){return yield f.OidcClient.getIDToken(e)}))}t.getIDToken=getIDToken;var h=r(327);Object.defineProperty(t,"summary",{enumerable:true,get:function(){return h.summary}});var m=r(327);Object.defineProperty(t,"markdownSummary",{enumerable:true,get:function(){return m.markdownSummary}});var v=r(981);Object.defineProperty(t,"toPosixPath",{enumerable:true,get:function(){return v.toPosixPath}});Object.defineProperty(t,"toWin32Path",{enumerable:true,get:function(){return v.toWin32Path}});Object.defineProperty(t,"toPlatformPath",{enumerable:true,get:function(){return v.toPlatformPath}})},717:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.prepareKeyValueMessage=t.issueFileCommand=void 0;const s=i(r(147));const a=i(r(37));const u=r(840);const l=r(278);function issueFileCommand(e,t){const r=process.env[`GITHUB_${e}`];if(!r){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!s.existsSync(r)){throw new Error(`Missing file at path: ${r}`)}s.appendFileSync(r,`${l.toCommandValue(t)}${a.EOL}`,{encoding:"utf8"})}t.issueFileCommand=issueFileCommand;function prepareKeyValueMessage(e,t){const r=`ghadelimiter_${u.v4()}`;const n=l.toCommandValue(t);if(e.includes(r)){throw new Error(`Unexpected input: name should not contain the delimiter "${r}"`)}if(n.includes(r)){throw new Error(`Unexpected input: value should not contain the delimiter "${r}"`)}return`${e}<<${r}${a.EOL}${n}${a.EOL}${r}`}t.prepareKeyValueMessage=prepareKeyValueMessage},41:function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.OidcClient=void 0;const o=r(255);const i=r(526);const s=r(186);class OidcClient{static createHttpClient(e=true,t=10){const r={allowRetries:e,maxRetries:t};return new o.HttpClient("actions/oidc-client",[new i.BearerCredentialHandler(OidcClient.getRequestToken())],r)}static getRequestToken(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return e}static getIDTokenUrl(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return e}static getCall(e){var t;return n(this,void 0,void 0,(function*(){const r=OidcClient.createHttpClient();const n=yield r.getJson(e).catch((e=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.result.message}`)}));const o=(t=n.result)===null||t===void 0?void 0:t.value;if(!o){throw new Error("Response json body do not have ID Token field")}return o}))}static getIDToken(e){return n(this,void 0,void 0,(function*(){try{let t=OidcClient.getIDTokenUrl();if(e){const r=encodeURIComponent(e);t=`${t}&audience=${r}`}s.debug(`ID token url is ${t}`);const r=yield OidcClient.getCall(t);s.setSecret(r);return r}catch(e){throw new Error(`Error message: ${e.message}`)}}))}}t.OidcClient=OidcClient},981:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.toPlatformPath=t.toWin32Path=t.toPosixPath=void 0;const s=i(r(17));function toPosixPath(e){return e.replace(/[\\]/g,"/")}t.toPosixPath=toPosixPath;function toWin32Path(e){return e.replace(/[/]/g,"\\")}t.toWin32Path=toWin32Path;function toPlatformPath(e){return e.replace(/[/\\]/g,s.sep)}t.toPlatformPath=toPlatformPath},327:function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.summary=t.markdownSummary=t.SUMMARY_DOCS_URL=t.SUMMARY_ENV_VAR=void 0;const o=r(37);const i=r(147);const{access:s,appendFile:a,writeFile:u}=i.promises;t.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";t.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return n(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const e=process.env[t.SUMMARY_ENV_VAR];if(!e){throw new Error(`Unable to find environment variable for $${t.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield s(e,i.constants.R_OK|i.constants.W_OK)}catch(t){throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}this._filePath=e;return this._filePath}))}wrap(e,t,r={}){const n=Object.entries(r).map((([e,t])=>` ${e}="${t}"`)).join("");if(!t){return`<${e}${n}>`}return`<${e}${n}>${t}`}write(e){return n(this,void 0,void 0,(function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const r=yield this.filePath();const n=t?u:a;yield n(r,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return n(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(e,t=false){this._buffer+=e;return t?this.addEOL():this}addEOL(){return this.addRaw(o.EOL)}addCodeBlock(e,t){const r=Object.assign({},t&&{lang:t});const n=this.wrap("pre",this.wrap("code",e),r);return this.addRaw(n).addEOL()}addList(e,t=false){const r=t?"ol":"ul";const n=e.map((e=>this.wrap("li",e))).join("");const o=this.wrap(r,n);return this.addRaw(o).addEOL()}addTable(e){const t=e.map((e=>{const t=e.map((e=>{if(typeof e==="string"){return this.wrap("td",e)}const{header:t,data:r,colspan:n,rowspan:o}=e;const i=t?"th":"td";const s=Object.assign(Object.assign({},n&&{colspan:n}),o&&{rowspan:o});return this.wrap(i,r,s)})).join("");return this.wrap("tr",t)})).join("");const r=this.wrap("table",t);return this.addRaw(r).addEOL()}addDetails(e,t){const r=this.wrap("details",this.wrap("summary",e)+t);return this.addRaw(r).addEOL()}addImage(e,t,r){const{width:n,height:o}=r||{};const i=Object.assign(Object.assign({},n&&{width:n}),o&&{height:o});const s=this.wrap("img",null,Object.assign({src:e,alt:t},i));return this.addRaw(s).addEOL()}addHeading(e,t){const r=`h${t}`;const n=["h1","h2","h3","h4","h5","h6"].includes(r)?r:"h1";const o=this.wrap(n,e);return this.addRaw(o).addEOL()}addSeparator(){const e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){const e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,t){const r=Object.assign({},t&&{cite:t});const n=this.wrap("blockquote",e,r);return this.addRaw(n).addEOL()}addLink(e,t){const r=this.wrap("a",e,{href:t});return this.addRaw(r).addEOL()}}const l=new Summary;t.markdownSummary=l;t.summary=l},278:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.toCommandProperties=t.toCommandValue=void 0;function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}t.toCommandValue=toCommandValue;function toCommandProperties(e){if(!Object.keys(e).length){return{}}return{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}}t.toCommandProperties=toCommandProperties},526:function(e,t){var r=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.PersonalAccessTokenCredentialHandler=t.BearerCredentialHandler=t.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(e,t){this.username=e;this.password=t}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},255:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var s=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.HttpClient=t.isHttps=t.HttpClientResponse=t.HttpClientError=t.getProxyUrl=t.MediaTypes=t.Headers=t.HttpCodes=void 0;const a=i(r(685));const u=i(r(687));const l=i(r(835));const c=i(r(294));var d;(function(e){e[e["OK"]=200]="OK";e[e["MultipleChoices"]=300]="MultipleChoices";e[e["MovedPermanently"]=301]="MovedPermanently";e[e["ResourceMoved"]=302]="ResourceMoved";e[e["SeeOther"]=303]="SeeOther";e[e["NotModified"]=304]="NotModified";e[e["UseProxy"]=305]="UseProxy";e[e["SwitchProxy"]=306]="SwitchProxy";e[e["TemporaryRedirect"]=307]="TemporaryRedirect";e[e["PermanentRedirect"]=308]="PermanentRedirect";e[e["BadRequest"]=400]="BadRequest";e[e["Unauthorized"]=401]="Unauthorized";e[e["PaymentRequired"]=402]="PaymentRequired";e[e["Forbidden"]=403]="Forbidden";e[e["NotFound"]=404]="NotFound";e[e["MethodNotAllowed"]=405]="MethodNotAllowed";e[e["NotAcceptable"]=406]="NotAcceptable";e[e["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";e[e["RequestTimeout"]=408]="RequestTimeout";e[e["Conflict"]=409]="Conflict";e[e["Gone"]=410]="Gone";e[e["TooManyRequests"]=429]="TooManyRequests";e[e["InternalServerError"]=500]="InternalServerError";e[e["NotImplemented"]=501]="NotImplemented";e[e["BadGateway"]=502]="BadGateway";e[e["ServiceUnavailable"]=503]="ServiceUnavailable";e[e["GatewayTimeout"]=504]="GatewayTimeout"})(d=t.HttpCodes||(t.HttpCodes={}));var f;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(f=t.Headers||(t.Headers={}));var p;(function(e){e["ApplicationJson"]="application/json"})(p=t.MediaTypes||(t.MediaTypes={}));function getProxyUrl(e){const t=l.getProxyUrl(new URL(e));return t?t.href:""}t.getProxyUrl=getProxyUrl;const h=[d.MovedPermanently,d.ResourceMoved,d.SeeOther,d.TemporaryRedirect,d.PermanentRedirect];const m=[d.BadGateway,d.ServiceUnavailable,d.GatewayTimeout];const v=["OPTIONS","GET","DELETE","HEAD"];const _=10;const g=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}t.HttpClientError=HttpClientError;class HttpClientResponse{constructor(e){this.message=e}readBody(){return s(this,void 0,void 0,(function*(){return new Promise((e=>s(this,void 0,void 0,(function*(){let t=Buffer.alloc(0);this.message.on("data",(e=>{t=Buffer.concat([t,e])}));this.message.on("end",(()=>{e(t.toString())}))}))))}))}}t.HttpClientResponse=HttpClientResponse;function isHttps(e){const t=new URL(e);return t.protocol==="https:"}t.isHttps=isHttps;class HttpClient{constructor(e,t,r){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=e;this.handlers=t||[];this.requestOptions=r;if(r){if(r.ignoreSslError!=null){this._ignoreSslError=r.ignoreSslError}this._socketTimeout=r.socketTimeout;if(r.allowRedirects!=null){this._allowRedirects=r.allowRedirects}if(r.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=r.allowRedirectDowngrade}if(r.maxRedirects!=null){this._maxRedirects=Math.max(r.maxRedirects,0)}if(r.keepAlive!=null){this._keepAlive=r.keepAlive}if(r.allowRetries!=null){this._allowRetries=r.allowRetries}if(r.maxRetries!=null){this._maxRetries=r.maxRetries}}}options(e,t){return s(this,void 0,void 0,(function*(){return this.request("OPTIONS",e,null,t||{})}))}get(e,t){return s(this,void 0,void 0,(function*(){return this.request("GET",e,null,t||{})}))}del(e,t){return s(this,void 0,void 0,(function*(){return this.request("DELETE",e,null,t||{})}))}post(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("POST",e,t,r||{})}))}patch(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("PATCH",e,t,r||{})}))}put(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("PUT",e,t,r||{})}))}head(e,t){return s(this,void 0,void 0,(function*(){return this.request("HEAD",e,null,t||{})}))}sendStream(e,t,r,n){return s(this,void 0,void 0,(function*(){return this.request(e,t,r,n)}))}getJson(e,t={}){return s(this,void 0,void 0,(function*(){t[f.Accept]=this._getExistingOrDefaultHeader(t,f.Accept,p.ApplicationJson);const r=yield this.get(e,t);return this._processResponse(r,this.requestOptions)}))}postJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.post(e,n,r);return this._processResponse(o,this.requestOptions)}))}putJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.put(e,n,r);return this._processResponse(o,this.requestOptions)}))}patchJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.patch(e,n,r);return this._processResponse(o,this.requestOptions)}))}request(e,t,r,n){return s(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const o=new URL(t);let i=this._prepareRequest(e,o,n);const s=this._allowRetries&&v.includes(e)?this._maxRetries+1:1;let a=0;let u;do{u=yield this.requestRaw(i,r);if(u&&u.message&&u.message.statusCode===d.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(u)){e=t;break}}if(e){return e.handleAuthentication(this,i,r)}else{return u}}let t=this._maxRedirects;while(u.message.statusCode&&h.includes(u.message.statusCode)&&this._allowRedirects&&t>0){const s=u.message.headers["location"];if(!s){break}const a=new URL(s);if(o.protocol==="https:"&&o.protocol!==a.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield u.readBody();if(a.hostname!==o.hostname){for(const e in n){if(e.toLowerCase()==="authorization"){delete n[e]}}}i=this._prepareRequest(e,a,n);u=yield this.requestRaw(i,r);t--}if(!u.message.statusCode||!m.includes(u.message.statusCode)){return u}a+=1;if(a{function callbackForResult(e,t){if(e){n(e)}else if(!t){n(new Error("Unknown error"))}else{r(t)}}this.requestRawWithCallback(e,t,callbackForResult)}))}))}requestRawWithCallback(e,t,r){if(typeof t==="string"){if(!e.options.headers){e.options.headers={}}e.options.headers["Content-Length"]=Buffer.byteLength(t,"utf8")}let n=false;function handleResult(e,t){if(!n){n=true;r(e,t)}}const o=e.httpModule.request(e.options,(e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)}));let i;o.on("socket",(e=>{i=e}));o.setTimeout(this._socketTimeout||3*6e4,(()=>{if(i){i.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))}));o.on("error",(function(e){handleResult(e)}));if(t&&typeof t==="string"){o.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",(function(){o.end()}));t.pipe(o)}else{o.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}_prepareRequest(e,t,r){const n={};n.parsedUrl=t;const o=n.parsedUrl.protocol==="https:";n.httpModule=o?u:a;const i=o?443:80;n.options={};n.options.host=n.parsedUrl.hostname;n.options.port=n.parsedUrl.port?parseInt(n.parsedUrl.port):i;n.options.path=(n.parsedUrl.pathname||"")+(n.parsedUrl.search||"");n.options.method=e;n.options.headers=this._mergeHeaders(r);if(this.userAgent!=null){n.options.headers["user-agent"]=this.userAgent}n.options.agent=this._getAgent(n.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(n.options)}}return n}_mergeHeaders(e){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(e||{}))}return lowercaseKeys(e||{})}_getExistingOrDefaultHeader(e,t,r){let n;if(this.requestOptions&&this.requestOptions.headers){n=lowercaseKeys(this.requestOptions.headers)[t]}return e[t]||n||r}_getAgent(e){let t;const r=l.getProxyUrl(e);const n=r&&r.hostname;if(this._keepAlive&&n){t=this._proxyAgent}if(this._keepAlive&&!n){t=this._agent}if(t){return t}const o=e.protocol==="https:";let i=100;if(this.requestOptions){i=this.requestOptions.maxSockets||a.globalAgent.maxSockets}if(r&&r.hostname){const e={maxSockets:i,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(r.username||r.password)&&{proxyAuth:`${r.username}:${r.password}`}),{host:r.hostname,port:r.port})};let n;const s=r.protocol==="https:";if(o){n=s?c.httpsOverHttps:c.httpsOverHttp}else{n=s?c.httpOverHttps:c.httpOverHttp}t=n(e);this._proxyAgent=t}if(this._keepAlive&&!t){const e={keepAlive:this._keepAlive,maxSockets:i};t=o?new u.Agent(e):new a.Agent(e);this._agent=t}if(!t){t=o?u.globalAgent:a.globalAgent}if(o&&this._ignoreSslError){t.options=Object.assign(t.options||{},{rejectUnauthorized:false})}return t}_performExponentialBackoff(e){return s(this,void 0,void 0,(function*(){e=Math.min(_,e);const t=g*Math.pow(2,e);return new Promise((e=>setTimeout((()=>e()),t)))}))}_processResponse(e,t){return s(this,void 0,void 0,(function*(){return new Promise(((r,n)=>s(this,void 0,void 0,(function*(){const o=e.message.statusCode||0;const i={statusCode:o,result:null,headers:{}};if(o===d.NotFound){r(i)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let s;let a;try{a=yield e.readBody();if(a&&a.length>0){if(t&&t.deserializeDates){s=JSON.parse(a,dateTimeDeserializer)}else{s=JSON.parse(a)}i.result=s}i.headers=e.message.headers}catch(e){}if(o>299){let e;if(s&&s.message){e=s.message}else if(a&&a.length>0){e=a}else{e=`Failed request: (${o})`}const t=new HttpClientError(e,o);t.result=i.result;n(t)}else{r(i)}}))))}))}}t.HttpClient=HttpClient;const lowercaseKeys=e=>Object.keys(e).reduce(((t,r)=>(t[r.toLowerCase()]=e[r],t)),{})},835:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.checkBypass=t.getProxyUrl=void 0;function getProxyUrl(e){const t=e.protocol==="https:";if(checkBypass(e)){return undefined}const r=(()=>{if(t){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(r){return new URL(r)}else{return undefined}}t.getProxyUrl=getProxyUrl;function checkBypass(e){if(!e.hostname){return false}const t=e.hostname;if(isLoopbackAddress(t)){return true}const r=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!r){return false}let n;if(e.port){n=Number(e.port)}else if(e.protocol==="http:"){n=80}else if(e.protocol==="https:"){n=443}const o=[e.hostname.toUpperCase()];if(typeof n==="number"){o.push(`${o[0]}:${n}`)}for(const e of r.split(",").map((e=>e.trim().toUpperCase())).filter((e=>e))){if(e==="*"||o.some((t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`)))){return true}}return false}t.checkBypass=checkBypass;function isLoopbackAddress(e){const t=e.toLowerCase();return t==="localhost"||t.startsWith("127.")||t.startsWith("[::1]")||t.startsWith("[0:0:0:0:0:0:0:1]")}},294:(e,t,r)=>{e.exports=r(219)},219:(e,t,r)=>{var n=r(808);var o=r(404);var i=r(685);var s=r(687);var a=r(361);var u=r(491);var l=r(837);t.httpOverHttp=httpOverHttp;t.httpsOverHttp=httpsOverHttp;t.httpOverHttps=httpOverHttps;t.httpsOverHttps=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function httpOverHttps(e){var t=new TunnelingAgent(e);t.request=s.request;return t}function httpsOverHttps(e){var t=new TunnelingAgent(e);t.request=s.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function TunnelingAgent(e){var t=this;t.options=e||{};t.proxyOptions=t.options.proxy||{};t.maxSockets=t.options.maxSockets||i.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",(function onFree(e,r,n,o){var i=toOptions(r,n,o);for(var s=0,a=t.requests.length;s=this.maxSockets){o.requests.push(i);return}o.createSocket(i,(function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){o.emit("free",t,i)}function onCloseOrRemove(e){o.removeSocket(t);t.removeListener("free",onFree);t.removeListener("close",onCloseOrRemove);t.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(e,t){var r=this;var n={};r.sockets.push(n);var o=mergeOptions({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){o.localAddress=e.localAddress}if(o.proxyAuth){o.headers=o.headers||{};o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")}c("making CONNECT request");var i=r.request(o);i.useChunkedEncodingByDefault=false;i.once("response",onResponse);i.once("upgrade",onUpgrade);i.once("connect",onConnect);i.once("error",onError);i.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,r){process.nextTick((function(){onConnect(e,t,r)}))}function onConnect(o,s,a){i.removeAllListeners();s.removeAllListeners();if(o.statusCode!==200){c("tunneling socket could not be established, statusCode=%d",o.statusCode);s.destroy();var u=new Error("tunneling socket could not be established, "+"statusCode="+o.statusCode);u.code="ECONNRESET";e.request.emit("error",u);r.removeSocket(n);return}if(a.length>0){c("got illegal response body from proxy");s.destroy();var u=new Error("got illegal response body from proxy");u.code="ECONNRESET";e.request.emit("error",u);r.removeSocket(n);return}c("tunneling connection has established");r.sockets[r.sockets.indexOf(n)]=s;return t(s)}function onError(t){i.removeAllListeners();c("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var o=new Error("tunneling socket could not be established, "+"cause="+t.message);o.code="ECONNRESET";e.request.emit("error",o);r.removeSocket(n)}};TunnelingAgent.prototype.removeSocket=function removeSocket(e){var t=this.sockets.indexOf(e);if(t===-1){return}this.sockets.splice(t,1);var r=this.requests.shift();if(r){this.createSocket(r,(function(e){r.request.onSocket(e)}))}};function createSecureSocket(e,t){var r=this;TunnelingAgent.prototype.createSocket.call(r,e,(function(n){var i=e.request.getHeader("host");var s=mergeOptions({},r.options,{socket:n,servername:i?i.replace(/:.*$/,""):e.host});var a=o.connect(0,s);r.sockets[r.sockets.indexOf(n)]=a;t(a)}))}function toOptions(e,t,r){if(typeof e==="string"){return{host:e,port:t,localAddress:r}}return e}function mergeOptions(e){for(var t=1,r=arguments.length;t{Object.defineProperty(t,"__esModule",{value:true});Object.defineProperty(t,"v1",{enumerable:true,get:function(){return n.default}});Object.defineProperty(t,"v3",{enumerable:true,get:function(){return o.default}});Object.defineProperty(t,"v4",{enumerable:true,get:function(){return i.default}});Object.defineProperty(t,"v5",{enumerable:true,get:function(){return s.default}});Object.defineProperty(t,"NIL",{enumerable:true,get:function(){return a.default}});Object.defineProperty(t,"version",{enumerable:true,get:function(){return u.default}});Object.defineProperty(t,"validate",{enumerable:true,get:function(){return l.default}});Object.defineProperty(t,"stringify",{enumerable:true,get:function(){return c.default}});Object.defineProperty(t,"parse",{enumerable:true,get:function(){return d.default}});var n=_interopRequireDefault(r(628));var o=_interopRequireDefault(r(409));var i=_interopRequireDefault(r(122));var s=_interopRequireDefault(r(120));var a=_interopRequireDefault(r(332));var u=_interopRequireDefault(r(595));var l=_interopRequireDefault(r(900));var c=_interopRequireDefault(r(950));var d=_interopRequireDefault(r(746));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}},569:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function md5(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return n.default.createHash("md5").update(e).digest()}var o=md5;t["default"]=o},332:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var r="00000000-0000-0000-0000-000000000000";t["default"]=r},746:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parse(e){if(!(0,n.default)(e)){throw TypeError("Invalid UUID")}let t;const r=new Uint8Array(16);r[0]=(t=parseInt(e.slice(0,8),16))>>>24;r[1]=t>>>16&255;r[2]=t>>>8&255;r[3]=t&255;r[4]=(t=parseInt(e.slice(9,13),16))>>>8;r[5]=t&255;r[6]=(t=parseInt(e.slice(14,18),16))>>>8;r[7]=t&255;r[8]=(t=parseInt(e.slice(19,23),16))>>>8;r[9]=t&255;r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255;r[11]=t/4294967296&255;r[12]=t>>>24&255;r[13]=t>>>16&255;r[14]=t>>>8&255;r[15]=t&255;return r}var o=parse;t["default"]=o},814:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;t["default"]=r},807:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=rng;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const o=new Uint8Array(256);let i=o.length;function rng(){if(i>o.length-16){n.default.randomFillSync(o);i=0}return o.slice(i,i+=16)}},274:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function sha1(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return n.default.createHash("sha1").update(e).digest()}var o=sha1;t["default"]=o},950:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const o=[];for(let e=0;e<256;++e){o.push((e+256).toString(16).substr(1))}function stringify(e,t=0){const r=(o[e[t+0]]+o[e[t+1]]+o[e[t+2]]+o[e[t+3]]+"-"+o[e[t+4]]+o[e[t+5]]+"-"+o[e[t+6]]+o[e[t+7]]+"-"+o[e[t+8]]+o[e[t+9]]+"-"+o[e[t+10]]+o[e[t+11]]+o[e[t+12]]+o[e[t+13]]+o[e[t+14]]+o[e[t+15]]).toLowerCase();if(!(0,n.default)(r)){throw TypeError("Stringified UUID is invalid")}return r}var i=stringify;t["default"]=i},628:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(807));var o=_interopRequireDefault(r(950));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let i;let s;let a=0;let u=0;function v1(e,t,r){let l=t&&r||0;const c=t||new Array(16);e=e||{};let d=e.node||i;let f=e.clockseq!==undefined?e.clockseq:s;if(d==null||f==null){const t=e.random||(e.rng||n.default)();if(d==null){d=i=[t[0]|1,t[1],t[2],t[3],t[4],t[5]]}if(f==null){f=s=(t[6]<<8|t[7])&16383}}let p=e.msecs!==undefined?e.msecs:Date.now();let h=e.nsecs!==undefined?e.nsecs:u+1;const m=p-a+(h-u)/1e4;if(m<0&&e.clockseq===undefined){f=f+1&16383}if((m<0||p>a)&&e.nsecs===undefined){h=0}if(h>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}a=p;u=h;s=f;p+=122192928e5;const v=((p&268435455)*1e4+h)%4294967296;c[l++]=v>>>24&255;c[l++]=v>>>16&255;c[l++]=v>>>8&255;c[l++]=v&255;const _=p/4294967296*1e4&268435455;c[l++]=_>>>8&255;c[l++]=_&255;c[l++]=_>>>24&15|16;c[l++]=_>>>16&255;c[l++]=f>>>8|128;c[l++]=f&255;for(let e=0;e<6;++e){c[l+e]=d[e]}return t||(0,o.default)(c)}var l=v1;t["default"]=l},409:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(998));var o=_interopRequireDefault(r(569));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const i=(0,n.default)("v3",48,o.default);var s=i;t["default"]=s},998:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=_default;t.URL=t.DNS=void 0;var n=_interopRequireDefault(r(950));var o=_interopRequireDefault(r(746));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function stringToBytes(e){e=unescape(encodeURIComponent(e));const t=[];for(let r=0;r{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(807));var o=_interopRequireDefault(r(950));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function v4(e,t,r){e=e||{};const i=e.random||(e.rng||n.default)();i[6]=i[6]&15|64;i[8]=i[8]&63|128;if(t){r=r||0;for(let e=0;e<16;++e){t[r+e]=i[e]}return t}return(0,o.default)(i)}var i=v4;t["default"]=i},120:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(998));var o=_interopRequireDefault(r(274));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const i=(0,n.default)("v5",80,o.default);var s=i;t["default"]=s},900:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(814));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function validate(e){return typeof e==="string"&&n.default.test(e)}var o=validate;t["default"]=o},595:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function version(e){if(!(0,n.default)(e)){throw TypeError("Invalid UUID")}return parseInt(e.substr(14,1),16)}var o=version;t["default"]=o},144:(e,t,r)=>{r.a(e,(async(e,t)=>{try{var n=r(186);var o=r.n(n);var i=r(411);var s=r.n(i);var a=r(718);var u=r.n(a);class Wrangler{API_CREDENTIALS="";workingDirectory=this.setupWorkingDirectory(n.getInput("workingDirectory"));WRANGLER_VERSION=3;CF_API_TOKEN;CLOUDFLARE_API_TOKEN;CF_EMAIL;CF_API_KEY;CF_ACCOUNT_ID;CLOUDFLARE_ACCOUNT_ID;async main(){await this.installWrangler(n.getInput("wranglerVersion"));this.authenticationSetup(n.getInput("apiToken"),n.getInput("apiKey"),n.getInput("email"),n.getInput("accountId"));await this.execute_commands(n.getMultilineInput("preCommands"));await this.putSecrets(n.getMultilineInput("secrets"),n.getInput("environment"));await this.main_command(n.getInput("command"),n.getInput("environment"),n.getMultilineInput("vars"));await this.execute_commands(n.getMultilineInput("postCommands"))}setupWorkingDirectory(e=""){let t="";try{t=s().normalize(e)}catch(r){console.error(e,"not a valid path",r);console.warn("Ignoring `workingDirectory` and using current directory");t=s().normalize("")}return t}installWrangler(e){let t="wrangler";let r="";if(e.length===0){}else if(e.startsWith("1")){t="@cloudflare/wrangler";r=`@${e}`;this.WRANGLER_VERSION=1}else{r=`@${e}`;this.WRANGLER_VERSION=Number(e[0])}const o=`npm install --save-dev ${t}${r}`;console.info(o);return new Promise(((e,t)=>{(0,a.exec)(o,{cwd:this.workingDirectory,env:process.env},((r,o,i)=>{if(r){console.error(r);n.setFailed(r.message);t(r)}console.log(o);e()}))}))}authenticationSetup(e,t,r,o){if(e.length!==0){if(this.WRANGLER_VERSION===1){this.CF_API_TOKEN=e;process.env.CF_API_TOKEN=e}else{this.CLOUDFLARE_API_TOKEN=e;process.env.CLOUDFLARE_API_TOKEN=e}this.API_CREDENTIALS="API Token"}if(t.length!==0&&r.length!==0){if(this.WRANGLER_VERSION===1){this.CF_EMAIL=r;process.env.CF_EMAIL=r;this.CF_API_KEY=t;process.env.CF_API_KEY=t}else{const e="::error::Wrangler v2 does not support using the API Key. You should instead use an API token.";n.setFailed(e);throw new Error(e)}this.API_CREDENTIALS="Email and API Key"}if(o.length!==0){if(this.WRANGLER_VERSION===1){this.CF_ACCOUNT_ID=o;process.env.CF_ACCOUNT_ID=o}else{this.CLOUDFLARE_ACCOUNT_ID=o;process.env.CLOUDFLARE_ACCOUNT_ID=o}}if(t.length!==0&&r.length===0){console.warn("Provided an API key without an email for authentication. Please pass in 'apiKey' and 'email' to the action.")}if(t.length===0&&r.length!==0){n.setFailed("Provided an email without an API key for authentication. Please pass in 'apiKey' and 'email' to the action.")}if(this.API_CREDENTIALS.length===0){n.setFailed("Unable to find authentication details. Please pass in an 'apiToken' as an input to the action, or a legacy 'apiKey' and 'email'.")}else{console.log(`Using ${this.API_CREDENTIALS} authentication`)}}execute_commands(e){return new Promise((async(t,r)=>{let o=false;for(let t of e){if(t.startsWith("wrangler")){t="npx "+t}console.info(`$ Running: ${t}`);await new Promise(((e,r)=>{(0,a.exec)(t,{cwd:this.workingDirectory,env:process.env},((t,i,s)=>{if(t){o=true;console.error(t);n.setFailed(t.message);r(t)}console.log(i);e()}))}))}if(o){n.setFailed("command failure");r()}else{t()}}))}putSecrets(e,t){return new Promise((async(r,o)=>{let i=false;for(const r of e){let e;if(process.env[r]&&process.env[r]?.length!==0){e=process.env[r]}else{this.secret_not_found(r);o()}let i="npx";if(process.env.RUNNER_OS==="Windows"){i="npx.cmd"}let s="wrangler";if(this.WRANGLER_VERSION===1){s="@cloudflare/wrangler"}let u=[];if(t.length===0){u=`${i} ${s} secret put ${r}`.split(" ")}else{u=`${i} ${s} secret put ${r} --env ${t}`.split(" ")}await new Promise(((t,r)=>{const o=(0,a.spawn)(u.shift(),u,{cwd:this.workingDirectory,env:process.env,stdio:"pipe"});o.stdin.write(e);o.stdin.end();o.stdout.on("data",(e=>console.log(e.toString())));o.once("error",(e=>{console.error(e);n.setFailed(e.message);r(e)}));o.once("close",(e=>{if(e!==0){const t=`child process exited with code ${e}`;console.error(t);n.setFailed(t);r(new Error(t))}else{t()}}))}))}if(i){n.setFailed("command failure");o()}else{r()}}))}secret_not_found(e){const t=`::error::Specified secret ${e} not found in environment variables.`;n.setFailed(t);throw new Error(t)}var_not_found(e){const t=`::error::Specified var ${e} not found in environment variables.`;n.setFailed(t);throw new Error(t)}main_command(e,t,r){let o="wrangler";if(this.WRANGLER_VERSION===1){o="@cloudflare/wrangler"}if(e.length===0){let e="deploy";if(this.WRANGLER_VERSION!==3){e="publish"}console.warn(`::notice:: No command was provided, defaulting to '${e}'`);let i="";let s=new Map;if(r.length>0){for(const e of r){if(process.env[e]&&process.env[e]?.length!==0){s.set(e,process.env[e])}else{this.var_not_found(e)}}i="--var "+Array.from(s).map((([e,t])=>`${e}:${t}`)).join(" ").trim()}if(t.length===0){return new Promise(((t,r)=>{(0,a.exec)(`npx ${o} ${e} ${i}`.trim(),{cwd:this.workingDirectory,env:process.env},((e,o,i)=>{if(e){console.error(e);n.setFailed(e.message);r(e)}console.log(o);t()}))}))}else{return new Promise(((r,s)=>{(0,a.exec)(`npx ${o} ${e} --env ${t} ${i}`.trim(),{cwd:this.workingDirectory,env:process.env},((e,t,o)=>{if(e){console.error(e);n.setFailed(e.message);s(e)}console.log(t);r()}))}))}}else{if(t.length===0){console.warn(`::notice::Since you have specified an environment you need to make sure to pass in '--env ${t}' to your command.`)}return this.execute_commands([`npx ${o} ${e}`])}}}await(new Wrangler).main();t()}catch(e){t(e)}}),1)},491:t=>{t.exports=e(import.meta.url)("assert")},113:t=>{t.exports=e(import.meta.url)("crypto")},361:t=>{t.exports=e(import.meta.url)("events")},147:t=>{t.exports=e(import.meta.url)("fs")},685:t=>{t.exports=e(import.meta.url)("http")},687:t=>{t.exports=e(import.meta.url)("https")},808:t=>{t.exports=e(import.meta.url)("net")},718:t=>{t.exports=e(import.meta.url)("node:child_process")},411:t=>{t.exports=e(import.meta.url)("node:path")},37:t=>{t.exports=e(import.meta.url)("os")},17:t=>{t.exports=e(import.meta.url)("path")},404:t=>{t.exports=e(import.meta.url)("tls")},837:t=>{t.exports=e(import.meta.url)("util")}};var r={};function __nccwpck_require__(e){var n=r[e];if(n!==undefined){return n.exports}var o=r[e]={exports:{}};var i=true;try{t[e].call(o.exports,o,o.exports,__nccwpck_require__);i=false}finally{if(i)delete r[e]}return o.exports}(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var t=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var r=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&!e.d){e.d=1;e.forEach((e=>e.r--));e.forEach((e=>e.r--?e.r++:e()))}};var wrapDeps=n=>n.map((n=>{if(n!==null&&typeof n==="object"){if(n[e])return n;if(n.then){var o=[];o.d=0;n.then((e=>{i[t]=e;resolveQueue(o)}),(e=>{i[r]=e;resolveQueue(o)}));var i={};i[e]=e=>e(o);return i}}var s={};s[e]=e=>{};s[t]=n;return s}));__nccwpck_require__.a=(n,o,i)=>{var s;i&&((s=[]).d=1);var a=new Set;var u=n.exports;var l;var c;var d;var f=new Promise(((e,t)=>{d=t;c=e}));f[t]=u;f[e]=e=>(s&&e(s),a.forEach(e),f["catch"]((e=>{})));n.exports=f;o((n=>{l=wrapDeps(n);var o;var getResult=()=>l.map((e=>{if(e[r])throw e[r];return e[t]}));var i=new Promise((t=>{o=()=>t(getResult);o.r=0;var fnQueue=e=>e!==s&&!a.has(e)&&(a.add(e),e&&!e.d&&(o.r++,e.push(o)));l.map((t=>t[e](fnQueue)))}));return o.r?i:getResult()}),(e=>(e?d(f[r]=e):c(u),resolveQueue(s))));s&&(s.d=0)}})();(()=>{__nccwpck_require__.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;__nccwpck_require__.d(t,{a:t});return t}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=new URL(".",import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";var n=__nccwpck_require__(144);n=await n; -------------------------------------------------------------------------------- /compiled/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module" 3 | } 4 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wrangler-action-node", 3 | "version": "1.1.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "wrangler-action-node", 9 | "version": "1.1.1", 10 | "dependencies": { 11 | "@actions/core": "^1.10.0" 12 | }, 13 | "devDependencies": { 14 | "@demosjarco/prettier-config": "^1.0.0", 15 | "@types/node": "^16.18.38", 16 | "prettier": "^3.0.0", 17 | "typescript": "^5.1.6" 18 | } 19 | }, 20 | "node_modules/@actions/core": { 21 | "version": "1.10.0", 22 | "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", 23 | "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", 24 | "dependencies": { 25 | "@actions/http-client": "^2.0.1", 26 | "uuid": "^8.3.2" 27 | } 28 | }, 29 | "node_modules/@actions/http-client": { 30 | "version": "2.1.0", 31 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.1.0.tgz", 32 | "integrity": "sha512-BonhODnXr3amchh4qkmjPMUO8mFi/zLaaCeCAJZqch8iQqyDnVIkySjB38VHAC8IJ+bnlgfOqlhpyCUZHlQsqw==", 33 | "dependencies": { 34 | "tunnel": "^0.0.6" 35 | } 36 | }, 37 | "node_modules/@demosjarco/prettier-config": { 38 | "version": "1.0.0", 39 | "resolved": "https://registry.npmjs.org/@demosjarco/prettier-config/-/prettier-config-1.0.0.tgz", 40 | "integrity": "sha512-vizH5FUh3ugHfE8CoaQ2GOjpRH2HvUlSMg58iJq33PdbWpd9ptpaN+/GvzpSCVo1NNN+B28KQu7UuIwBi6PVuw==", 41 | "dev": true 42 | }, 43 | "node_modules/@types/node": { 44 | "version": "16.18.38", 45 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz", 46 | "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==", 47 | "dev": true 48 | }, 49 | "node_modules/prettier": { 50 | "version": "3.0.0", 51 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", 52 | "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", 53 | "dev": true, 54 | "bin": { 55 | "prettier": "bin/prettier.cjs" 56 | }, 57 | "engines": { 58 | "node": ">=14" 59 | }, 60 | "funding": { 61 | "url": "https://github.com/prettier/prettier?sponsor=1" 62 | } 63 | }, 64 | "node_modules/tunnel": { 65 | "version": "0.0.6", 66 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 67 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 68 | "engines": { 69 | "node": ">=0.6.11 <=0.7.0 || >=0.7.3" 70 | } 71 | }, 72 | "node_modules/typescript": { 73 | "version": "5.1.6", 74 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", 75 | "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", 76 | "dev": true, 77 | "bin": { 78 | "tsc": "bin/tsc", 79 | "tsserver": "bin/tsserver" 80 | }, 81 | "engines": { 82 | "node": ">=14.17" 83 | } 84 | }, 85 | "node_modules/uuid": { 86 | "version": "8.3.2", 87 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 88 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 89 | "bin": { 90 | "uuid": "dist/bin/uuid" 91 | } 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wrangler-action-node", 3 | "version": "1.1.1", 4 | "description": "Easy-to-use GitHub Action to use [Wrangler](https://developers.cloudflare.com/workers/cli-wrangler/). Makes deploying Workers, Pages or modifying R2 easy to do.", 5 | "type": "module", 6 | "scripts": { 7 | "build.types": "tsc --incremental", 8 | "build.types:watch": "npm run build.types -- --watch" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/demosjarco/wrangler-action-node.git" 13 | }, 14 | "author": "DemosJarco", 15 | "bugs": { 16 | "url": "https://github.com/demosjarco/wrangler-action-node/issues" 17 | }, 18 | "homepage": "https://github.com/demosjarco/wrangler-action-node#readme", 19 | "prettier": "@demosjarco/prettier-config", 20 | "dependencies": { 21 | "@actions/core": "^1.10.0" 22 | }, 23 | "devDependencies": { 24 | "@demosjarco/prettier-config": "^1.0.0", 25 | "@types/node": "^16.18.38", 26 | "prettier": "^3.0.0", 27 | "typescript": "^5.1.6" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core'; 2 | 3 | import path from 'node:path'; 4 | import { exec, spawn } from 'node:child_process'; 5 | 6 | class Wrangler { 7 | private API_CREDENTIALS: string = ''; 8 | private workingDirectory: string = this.setupWorkingDirectory(core.getInput('workingDirectory')); 9 | private WRANGLER_VERSION: number = 3; 10 | 11 | private CF_API_TOKEN?: string; 12 | private CLOUDFLARE_API_TOKEN?: string; 13 | private CF_EMAIL?: string; 14 | private CF_API_KEY?: string; 15 | private CF_ACCOUNT_ID?: string; 16 | private CLOUDFLARE_ACCOUNT_ID?: string; 17 | 18 | public async main() { 19 | await this.installWrangler(core.getInput('wranglerVersion')); 20 | this.authenticationSetup(core.getInput('apiToken'), core.getInput('apiKey'), core.getInput('email'), core.getInput('accountId')); 21 | await this.execute_commands(core.getMultilineInput('preCommands')); 22 | await this.putSecrets(core.getMultilineInput('secrets'), core.getInput('environment')); 23 | await this.main_command(core.getInput('command'), core.getInput('environment'), core.getMultilineInput('vars')); 24 | await this.execute_commands(core.getMultilineInput('postCommands')); 25 | } 26 | 27 | private setupWorkingDirectory(workingDirectory: string = ''): string { 28 | let normalizedPath: string = ''; 29 | try { 30 | normalizedPath = path.normalize(workingDirectory); 31 | } catch (error) { 32 | console.error(workingDirectory, 'not a valid path', error); 33 | console.warn('Ignoring `workingDirectory` and using current directory'); 34 | normalizedPath = path.normalize(''); 35 | } 36 | 37 | return normalizedPath; 38 | } 39 | 40 | private installWrangler(INPUT_WRANGLERVERSION: string): Promise { 41 | let packageName = 'wrangler'; 42 | let versionToUse = ''; 43 | 44 | if (INPUT_WRANGLERVERSION.length === 0) { 45 | // If no Wrangler version is specified install v2. 46 | } else if (INPUT_WRANGLERVERSION.startsWith('1')) { 47 | // If Wrangler version starts with 1 then install wrangler v1 48 | packageName = '@cloudflare/wrangler'; 49 | versionToUse = `@${INPUT_WRANGLERVERSION}`; 50 | this.WRANGLER_VERSION = 1; 51 | } else { 52 | // Else install Wrangler 2 53 | versionToUse = `@${INPUT_WRANGLERVERSION}`; 54 | this.WRANGLER_VERSION = Number(INPUT_WRANGLERVERSION[0]); 55 | } 56 | 57 | const command = `npm install --save-dev ${packageName}${versionToUse}`; 58 | console.info(command); 59 | return new Promise((resolve, reject) => { 60 | exec(command, { cwd: this.workingDirectory, env: process.env }, (error, stdout, stderr) => { 61 | if (error) { 62 | console.error(error); 63 | core.setFailed(error.message); 64 | reject(error); 65 | } 66 | console.log(stdout); 67 | resolve(); 68 | }); 69 | }); 70 | } 71 | 72 | private authenticationSetup(INPUT_APITOKEN: string, INPUT_APIKEY: string, INPUT_EMAIL: string, INPUT_ACCOUNTID: string) { 73 | // If an API token is detected as input 74 | if (INPUT_APITOKEN.length !== 0) { 75 | // Wrangler v1 uses CF_API_TOKEN but v2 uses CLOUDFLARE_API_TOKEN 76 | if (this.WRANGLER_VERSION === 1) { 77 | this.CF_API_TOKEN = INPUT_APITOKEN; 78 | process.env.CF_API_TOKEN = INPUT_APITOKEN; 79 | } else { 80 | this.CLOUDFLARE_API_TOKEN = INPUT_APITOKEN; 81 | process.env.CLOUDFLARE_API_TOKEN = INPUT_APITOKEN; 82 | } 83 | 84 | this.API_CREDENTIALS = 'API Token'; 85 | } 86 | 87 | // If an API key and email are detected as input 88 | if (INPUT_APIKEY.length !== 0 && INPUT_EMAIL.length !== 0) { 89 | if (this.WRANGLER_VERSION === 1) { 90 | this.CF_EMAIL = INPUT_EMAIL; 91 | process.env.CF_EMAIL = INPUT_EMAIL; 92 | this.CF_API_KEY = INPUT_APIKEY; 93 | process.env.CF_API_KEY = INPUT_APIKEY; 94 | } else { 95 | const errorMsg = '::error::Wrangler v2 does not support using the API Key. You should instead use an API token.'; 96 | core.setFailed(errorMsg); 97 | throw new Error(errorMsg); 98 | } 99 | 100 | this.API_CREDENTIALS = 'Email and API Key'; 101 | } 102 | 103 | if (INPUT_ACCOUNTID.length !== 0) { 104 | if (this.WRANGLER_VERSION === 1) { 105 | this.CF_ACCOUNT_ID = INPUT_ACCOUNTID; 106 | process.env.CF_ACCOUNT_ID = INPUT_ACCOUNTID; 107 | } else { 108 | this.CLOUDFLARE_ACCOUNT_ID = INPUT_ACCOUNTID; 109 | process.env.CLOUDFLARE_ACCOUNT_ID = INPUT_ACCOUNTID; 110 | } 111 | } 112 | 113 | if (INPUT_APIKEY.length !== 0 && INPUT_EMAIL.length === 0) { 114 | console.warn("Provided an API key without an email for authentication. Please pass in 'apiKey' and 'email' to the action."); 115 | } 116 | 117 | if (INPUT_APIKEY.length === 0 && INPUT_EMAIL.length !== 0) { 118 | core.setFailed("Provided an email without an API key for authentication. Please pass in 'apiKey' and 'email' to the action."); 119 | } 120 | 121 | if (this.API_CREDENTIALS.length === 0) { 122 | core.setFailed("Unable to find authentication details. Please pass in an 'apiToken' as an input to the action, or a legacy 'apiKey' and 'email'."); 123 | } else { 124 | console.log(`Using ${this.API_CREDENTIALS} authentication`); 125 | } 126 | } 127 | 128 | private execute_commands(commands: string[]): Promise { 129 | // Global promise to safely wait for all subcommands to finish 130 | return new Promise(async (mainResolve, mainReject) => { 131 | let childError = false; 132 | for (let command of commands) { 133 | // npx needs to be prepended to `wrangler` 134 | if (command.startsWith('wrangler')) { 135 | command = 'npx ' + command; 136 | } 137 | // Print out command before running 138 | console.info(`$ Running: ${command}`); 139 | // Promise to wait for subcommand to finish before moving to next 140 | await new Promise((childResolve, childReject) => { 141 | exec(command, { cwd: this.workingDirectory, env: process.env }, (error, stdout, stderr) => { 142 | if (error) { 143 | childError = true; 144 | console.error(error); 145 | core.setFailed(error.message); 146 | childReject(error); 147 | } 148 | console.log(stdout); 149 | childResolve(); 150 | }); 151 | }); 152 | } 153 | if (childError) { 154 | core.setFailed('command failure'); 155 | mainReject(); 156 | } else { 157 | mainResolve(); 158 | } 159 | }); 160 | } 161 | 162 | private putSecrets(INPUT_SECRETS: string[], INPUT_ENVIRONMENT: string): Promise { 163 | return new Promise(async (mainResolve, mainReject) => { 164 | let childError = false; 165 | for (const secret of INPUT_SECRETS) { 166 | let VALUE: string; 167 | if (process.env[secret] && process.env[secret]?.length !== 0) { 168 | VALUE = process.env[secret]!; 169 | } else { 170 | this.secret_not_found(secret); 171 | mainReject(); 172 | } 173 | 174 | let npxCommand = 'npx'; 175 | if (process.env.RUNNER_OS === 'Windows') { 176 | npxCommand = 'npx.cmd'; 177 | } 178 | 179 | let wranglerCommand = 'wrangler'; 180 | if (this.WRANGLER_VERSION === 1) { 181 | wranglerCommand = '@cloudflare/wrangler'; 182 | } 183 | 184 | let secretCommand: string[] = []; 185 | 186 | if (INPUT_ENVIRONMENT.length === 0) { 187 | secretCommand = `${npxCommand} ${wranglerCommand} secret put ${secret}`.split(' '); 188 | } else { 189 | secretCommand = `${npxCommand} ${wranglerCommand} secret put ${secret} --env ${INPUT_ENVIRONMENT}`.split(' '); 190 | } 191 | 192 | await new Promise((childResolve, childReject) => { 193 | const child = spawn(secretCommand.shift()!, secretCommand, { cwd: this.workingDirectory, env: process.env, stdio: 'pipe' }); 194 | 195 | child.stdin.write(VALUE); 196 | child.stdin.end(); 197 | 198 | child.stdout.on('data', (data) => console.log(data.toString())); 199 | 200 | child.once('error', (error) => { 201 | console.error(error); 202 | core.setFailed(error.message); 203 | childReject(error); 204 | }); 205 | 206 | child.once('close', (code) => { 207 | if (code !== 0) { 208 | const errorMsg = `child process exited with code ${code}`; 209 | console.error(errorMsg); 210 | core.setFailed(errorMsg); 211 | childReject(new Error(errorMsg)); 212 | } else { 213 | childResolve(); 214 | } 215 | }); 216 | }); 217 | } 218 | if (childError) { 219 | core.setFailed('command failure'); 220 | mainReject(); 221 | } else { 222 | mainResolve(); 223 | } 224 | }); 225 | } 226 | 227 | private secret_not_found(secret: string) { 228 | const errorMsg = `::error::Specified secret ${secret} not found in environment variables.`; 229 | core.setFailed(errorMsg); 230 | throw new Error(errorMsg); 231 | } 232 | 233 | private var_not_found(envVar: string) { 234 | const errorMsg = `::error::Specified var ${envVar} not found in environment variables.`; 235 | core.setFailed(errorMsg); 236 | throw new Error(errorMsg); 237 | } 238 | 239 | private main_command(INPUT_COMMAND: string, INPUT_ENVIRONMENT: string, INPUT_VARS: string[]): Promise { 240 | let wranglerCommand = 'wrangler'; 241 | if (this.WRANGLER_VERSION === 1) { 242 | wranglerCommand = '@cloudflare/wrangler'; 243 | } 244 | 245 | if (INPUT_COMMAND.length === 0) { 246 | let deployCommand = 'deploy'; 247 | if (this.WRANGLER_VERSION !== 3) { 248 | deployCommand = 'publish'; 249 | } 250 | 251 | console.warn(`::notice:: No command was provided, defaulting to '${deployCommand}'`); 252 | 253 | let envVarArgument = ''; 254 | let envVars = new Map(); 255 | if (INPUT_VARS.length > 0) { 256 | for (const envName of INPUT_VARS) { 257 | if (process.env[envName] && process.env[envName]?.length !== 0) { 258 | envVars.set(envName, process.env[envName]!); 259 | } else { 260 | this.var_not_found(envName); 261 | } 262 | } 263 | envVarArgument = 264 | '--var ' + 265 | Array.from(envVars) 266 | .map(([key, value]) => `${key}:${value}`) 267 | .join(' ') 268 | .trim(); 269 | } 270 | 271 | if (INPUT_ENVIRONMENT.length === 0) { 272 | return new Promise((resolve, reject) => { 273 | exec(`npx ${wranglerCommand} ${deployCommand} ${envVarArgument}`.trim(), { cwd: this.workingDirectory, env: process.env }, (error, stdout, stderr) => { 274 | if (error) { 275 | console.error(error); 276 | core.setFailed(error.message); 277 | reject(error); 278 | } 279 | console.log(stdout); 280 | resolve(); 281 | }); 282 | }); 283 | } else { 284 | return new Promise((resolve, reject) => { 285 | exec(`npx ${wranglerCommand} ${deployCommand} --env ${INPUT_ENVIRONMENT} ${envVarArgument}`.trim(), { cwd: this.workingDirectory, env: process.env }, (error, stdout, stderr) => { 286 | if (error) { 287 | console.error(error); 288 | core.setFailed(error.message); 289 | reject(error); 290 | } 291 | console.log(stdout); 292 | resolve(); 293 | }); 294 | }); 295 | } 296 | } else { 297 | if (INPUT_ENVIRONMENT.length === 0) { 298 | console.warn(`::notice::Since you have specified an environment you need to make sure to pass in '--env ${INPUT_ENVIRONMENT}' to your command.`); 299 | } 300 | 301 | return this.execute_commands([`npx ${wranglerCommand} ${INPUT_COMMAND}`]); 302 | } 303 | } 304 | } 305 | 306 | await new Wrangler().main(); 307 | -------------------------------------------------------------------------------- /test/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "devDependencies": { 8 | "wrangler": "^3.2.0" 9 | } 10 | }, 11 | "node_modules/@cloudflare/kv-asset-handler": { 12 | "version": "0.2.0", 13 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz", 14 | "integrity": "sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==", 15 | "dev": true, 16 | "dependencies": { 17 | "mime": "^3.0.0" 18 | } 19 | }, 20 | "node_modules/@cloudflare/workerd-darwin-64": { 21 | "version": "1.20230710.0", 22 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230710.0.tgz", 23 | "integrity": "sha512-TDEgTfzTkveW+U0qtg9/60PXbl2klnEso0oio501zAnY2SOC1x7M0qb8UkhvjHFUVpwdykUzTPWPIWFBcF1ibA==", 24 | "cpu": [ 25 | "x64" 26 | ], 27 | "dev": true, 28 | "optional": true, 29 | "os": [ 30 | "darwin" 31 | ], 32 | "engines": { 33 | "node": ">=16" 34 | } 35 | }, 36 | "node_modules/@cloudflare/workerd-darwin-arm64": { 37 | "version": "1.20230710.0", 38 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230710.0.tgz", 39 | "integrity": "sha512-dxBwnKcj7TiM1JGiODg0LASa25A9P0XLeMkmF8YCECZoq+3QLH/uY4Vbm1xeEy8iXUZrt/uYN72bBE83vY4HIQ==", 40 | "cpu": [ 41 | "arm64" 42 | ], 43 | "dev": true, 44 | "optional": true, 45 | "os": [ 46 | "darwin" 47 | ], 48 | "engines": { 49 | "node": ">=16" 50 | } 51 | }, 52 | "node_modules/@cloudflare/workerd-linux-64": { 53 | "version": "1.20230710.0", 54 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230710.0.tgz", 55 | "integrity": "sha512-WrKZwL76i51jQLFpSxklpRSm2s8T9Xf6tVzQaiLTtpguKZSF/CTAyjjEOVfS7FXk+Te8lyAJAFQnj5QHoJ3pzA==", 56 | "cpu": [ 57 | "x64" 58 | ], 59 | "dev": true, 60 | "optional": true, 61 | "os": [ 62 | "linux" 63 | ], 64 | "engines": { 65 | "node": ">=16" 66 | } 67 | }, 68 | "node_modules/@cloudflare/workerd-linux-arm64": { 69 | "version": "1.20230710.0", 70 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230710.0.tgz", 71 | "integrity": "sha512-eWdbOoqFqQ4m1/Wwy2dRDaOVXjOmWGjwBliU8pvm2m9RjfRTdfik7z6E3vOkalxqJDHiJ0f8SUykKz2oM1lD0A==", 72 | "cpu": [ 73 | "arm64" 74 | ], 75 | "dev": true, 76 | "optional": true, 77 | "os": [ 78 | "linux" 79 | ], 80 | "engines": { 81 | "node": ">=16" 82 | } 83 | }, 84 | "node_modules/@cloudflare/workerd-windows-64": { 85 | "version": "1.20230710.0", 86 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230710.0.tgz", 87 | "integrity": "sha512-P5ihH98Pb72HrsVsvb/HCSezvAvEtPeVQVBKgIclNE9e0fkA4zX9QMzBBFvLy3yr0YLf4r7MO2tNnt7JFnheGA==", 88 | "cpu": [ 89 | "x64" 90 | ], 91 | "dev": true, 92 | "optional": true, 93 | "os": [ 94 | "win32" 95 | ], 96 | "engines": { 97 | "node": ">=16" 98 | } 99 | }, 100 | "node_modules/@esbuild-plugins/node-globals-polyfill": { 101 | "version": "0.1.1", 102 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", 103 | "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", 104 | "dev": true, 105 | "peerDependencies": { 106 | "esbuild": "*" 107 | } 108 | }, 109 | "node_modules/@esbuild-plugins/node-modules-polyfill": { 110 | "version": "0.1.4", 111 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz", 112 | "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==", 113 | "dev": true, 114 | "dependencies": { 115 | "escape-string-regexp": "^4.0.0", 116 | "rollup-plugin-node-polyfills": "^0.2.1" 117 | }, 118 | "peerDependencies": { 119 | "esbuild": "*" 120 | } 121 | }, 122 | "node_modules/@esbuild/android-arm": { 123 | "version": "0.16.3", 124 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.3.tgz", 125 | "integrity": "sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==", 126 | "cpu": [ 127 | "arm" 128 | ], 129 | "dev": true, 130 | "optional": true, 131 | "os": [ 132 | "android" 133 | ], 134 | "engines": { 135 | "node": ">=12" 136 | } 137 | }, 138 | "node_modules/@esbuild/android-arm64": { 139 | "version": "0.16.3", 140 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz", 141 | "integrity": "sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==", 142 | "cpu": [ 143 | "arm64" 144 | ], 145 | "dev": true, 146 | "optional": true, 147 | "os": [ 148 | "android" 149 | ], 150 | "engines": { 151 | "node": ">=12" 152 | } 153 | }, 154 | "node_modules/@esbuild/android-x64": { 155 | "version": "0.16.3", 156 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.3.tgz", 157 | "integrity": "sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==", 158 | "cpu": [ 159 | "x64" 160 | ], 161 | "dev": true, 162 | "optional": true, 163 | "os": [ 164 | "android" 165 | ], 166 | "engines": { 167 | "node": ">=12" 168 | } 169 | }, 170 | "node_modules/@esbuild/darwin-arm64": { 171 | "version": "0.16.3", 172 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz", 173 | "integrity": "sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==", 174 | "cpu": [ 175 | "arm64" 176 | ], 177 | "dev": true, 178 | "optional": true, 179 | "os": [ 180 | "darwin" 181 | ], 182 | "engines": { 183 | "node": ">=12" 184 | } 185 | }, 186 | "node_modules/@esbuild/darwin-x64": { 187 | "version": "0.16.3", 188 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz", 189 | "integrity": "sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==", 190 | "cpu": [ 191 | "x64" 192 | ], 193 | "dev": true, 194 | "optional": true, 195 | "os": [ 196 | "darwin" 197 | ], 198 | "engines": { 199 | "node": ">=12" 200 | } 201 | }, 202 | "node_modules/@esbuild/freebsd-arm64": { 203 | "version": "0.16.3", 204 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz", 205 | "integrity": "sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==", 206 | "cpu": [ 207 | "arm64" 208 | ], 209 | "dev": true, 210 | "optional": true, 211 | "os": [ 212 | "freebsd" 213 | ], 214 | "engines": { 215 | "node": ">=12" 216 | } 217 | }, 218 | "node_modules/@esbuild/freebsd-x64": { 219 | "version": "0.16.3", 220 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz", 221 | "integrity": "sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==", 222 | "cpu": [ 223 | "x64" 224 | ], 225 | "dev": true, 226 | "optional": true, 227 | "os": [ 228 | "freebsd" 229 | ], 230 | "engines": { 231 | "node": ">=12" 232 | } 233 | }, 234 | "node_modules/@esbuild/linux-arm": { 235 | "version": "0.16.3", 236 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz", 237 | "integrity": "sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==", 238 | "cpu": [ 239 | "arm" 240 | ], 241 | "dev": true, 242 | "optional": true, 243 | "os": [ 244 | "linux" 245 | ], 246 | "engines": { 247 | "node": ">=12" 248 | } 249 | }, 250 | "node_modules/@esbuild/linux-arm64": { 251 | "version": "0.16.3", 252 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz", 253 | "integrity": "sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==", 254 | "cpu": [ 255 | "arm64" 256 | ], 257 | "dev": true, 258 | "optional": true, 259 | "os": [ 260 | "linux" 261 | ], 262 | "engines": { 263 | "node": ">=12" 264 | } 265 | }, 266 | "node_modules/@esbuild/linux-ia32": { 267 | "version": "0.16.3", 268 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz", 269 | "integrity": "sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==", 270 | "cpu": [ 271 | "ia32" 272 | ], 273 | "dev": true, 274 | "optional": true, 275 | "os": [ 276 | "linux" 277 | ], 278 | "engines": { 279 | "node": ">=12" 280 | } 281 | }, 282 | "node_modules/@esbuild/linux-loong64": { 283 | "version": "0.16.3", 284 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz", 285 | "integrity": "sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==", 286 | "cpu": [ 287 | "loong64" 288 | ], 289 | "dev": true, 290 | "optional": true, 291 | "os": [ 292 | "linux" 293 | ], 294 | "engines": { 295 | "node": ">=12" 296 | } 297 | }, 298 | "node_modules/@esbuild/linux-mips64el": { 299 | "version": "0.16.3", 300 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz", 301 | "integrity": "sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==", 302 | "cpu": [ 303 | "mips64el" 304 | ], 305 | "dev": true, 306 | "optional": true, 307 | "os": [ 308 | "linux" 309 | ], 310 | "engines": { 311 | "node": ">=12" 312 | } 313 | }, 314 | "node_modules/@esbuild/linux-ppc64": { 315 | "version": "0.16.3", 316 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz", 317 | "integrity": "sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==", 318 | "cpu": [ 319 | "ppc64" 320 | ], 321 | "dev": true, 322 | "optional": true, 323 | "os": [ 324 | "linux" 325 | ], 326 | "engines": { 327 | "node": ">=12" 328 | } 329 | }, 330 | "node_modules/@esbuild/linux-riscv64": { 331 | "version": "0.16.3", 332 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz", 333 | "integrity": "sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==", 334 | "cpu": [ 335 | "riscv64" 336 | ], 337 | "dev": true, 338 | "optional": true, 339 | "os": [ 340 | "linux" 341 | ], 342 | "engines": { 343 | "node": ">=12" 344 | } 345 | }, 346 | "node_modules/@esbuild/linux-s390x": { 347 | "version": "0.16.3", 348 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz", 349 | "integrity": "sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==", 350 | "cpu": [ 351 | "s390x" 352 | ], 353 | "dev": true, 354 | "optional": true, 355 | "os": [ 356 | "linux" 357 | ], 358 | "engines": { 359 | "node": ">=12" 360 | } 361 | }, 362 | "node_modules/@esbuild/linux-x64": { 363 | "version": "0.16.3", 364 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz", 365 | "integrity": "sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==", 366 | "cpu": [ 367 | "x64" 368 | ], 369 | "dev": true, 370 | "optional": true, 371 | "os": [ 372 | "linux" 373 | ], 374 | "engines": { 375 | "node": ">=12" 376 | } 377 | }, 378 | "node_modules/@esbuild/netbsd-x64": { 379 | "version": "0.16.3", 380 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz", 381 | "integrity": "sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==", 382 | "cpu": [ 383 | "x64" 384 | ], 385 | "dev": true, 386 | "optional": true, 387 | "os": [ 388 | "netbsd" 389 | ], 390 | "engines": { 391 | "node": ">=12" 392 | } 393 | }, 394 | "node_modules/@esbuild/openbsd-x64": { 395 | "version": "0.16.3", 396 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz", 397 | "integrity": "sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==", 398 | "cpu": [ 399 | "x64" 400 | ], 401 | "dev": true, 402 | "optional": true, 403 | "os": [ 404 | "openbsd" 405 | ], 406 | "engines": { 407 | "node": ">=12" 408 | } 409 | }, 410 | "node_modules/@esbuild/sunos-x64": { 411 | "version": "0.16.3", 412 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz", 413 | "integrity": "sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==", 414 | "cpu": [ 415 | "x64" 416 | ], 417 | "dev": true, 418 | "optional": true, 419 | "os": [ 420 | "sunos" 421 | ], 422 | "engines": { 423 | "node": ">=12" 424 | } 425 | }, 426 | "node_modules/@esbuild/win32-arm64": { 427 | "version": "0.16.3", 428 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz", 429 | "integrity": "sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==", 430 | "cpu": [ 431 | "arm64" 432 | ], 433 | "dev": true, 434 | "optional": true, 435 | "os": [ 436 | "win32" 437 | ], 438 | "engines": { 439 | "node": ">=12" 440 | } 441 | }, 442 | "node_modules/@esbuild/win32-ia32": { 443 | "version": "0.16.3", 444 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz", 445 | "integrity": "sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==", 446 | "cpu": [ 447 | "ia32" 448 | ], 449 | "dev": true, 450 | "optional": true, 451 | "os": [ 452 | "win32" 453 | ], 454 | "engines": { 455 | "node": ">=12" 456 | } 457 | }, 458 | "node_modules/@esbuild/win32-x64": { 459 | "version": "0.16.3", 460 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz", 461 | "integrity": "sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==", 462 | "cpu": [ 463 | "x64" 464 | ], 465 | "dev": true, 466 | "optional": true, 467 | "os": [ 468 | "win32" 469 | ], 470 | "engines": { 471 | "node": ">=12" 472 | } 473 | }, 474 | "node_modules/acorn": { 475 | "version": "8.10.0", 476 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", 477 | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", 478 | "dev": true, 479 | "bin": { 480 | "acorn": "bin/acorn" 481 | }, 482 | "engines": { 483 | "node": ">=0.4.0" 484 | } 485 | }, 486 | "node_modules/acorn-walk": { 487 | "version": "8.2.0", 488 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 489 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 490 | "dev": true, 491 | "engines": { 492 | "node": ">=0.4.0" 493 | } 494 | }, 495 | "node_modules/anymatch": { 496 | "version": "3.1.3", 497 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 498 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 499 | "dev": true, 500 | "dependencies": { 501 | "normalize-path": "^3.0.0", 502 | "picomatch": "^2.0.4" 503 | }, 504 | "engines": { 505 | "node": ">= 8" 506 | } 507 | }, 508 | "node_modules/as-table": { 509 | "version": "1.0.55", 510 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", 511 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", 512 | "dev": true, 513 | "dependencies": { 514 | "printable-characters": "^1.0.42" 515 | } 516 | }, 517 | "node_modules/base64-js": { 518 | "version": "1.5.1", 519 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 520 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 521 | "dev": true, 522 | "funding": [ 523 | { 524 | "type": "github", 525 | "url": "https://github.com/sponsors/feross" 526 | }, 527 | { 528 | "type": "patreon", 529 | "url": "https://www.patreon.com/feross" 530 | }, 531 | { 532 | "type": "consulting", 533 | "url": "https://feross.org/support" 534 | } 535 | ] 536 | }, 537 | "node_modules/better-sqlite3": { 538 | "version": "8.4.0", 539 | "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.4.0.tgz", 540 | "integrity": "sha512-NmsNW1CQvqMszu/CFAJ3pLct6NEFlNfuGM6vw72KHkjOD1UDnL96XNN1BMQc1hiHo8vE2GbOWQYIpZ+YM5wrZw==", 541 | "dev": true, 542 | "hasInstallScript": true, 543 | "dependencies": { 544 | "bindings": "^1.5.0", 545 | "prebuild-install": "^7.1.0" 546 | } 547 | }, 548 | "node_modules/binary-extensions": { 549 | "version": "2.2.0", 550 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 551 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 552 | "dev": true, 553 | "engines": { 554 | "node": ">=8" 555 | } 556 | }, 557 | "node_modules/bindings": { 558 | "version": "1.5.0", 559 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 560 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 561 | "dev": true, 562 | "dependencies": { 563 | "file-uri-to-path": "1.0.0" 564 | } 565 | }, 566 | "node_modules/bl": { 567 | "version": "4.1.0", 568 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 569 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 570 | "dev": true, 571 | "dependencies": { 572 | "buffer": "^5.5.0", 573 | "inherits": "^2.0.4", 574 | "readable-stream": "^3.4.0" 575 | } 576 | }, 577 | "node_modules/blake3-wasm": { 578 | "version": "2.1.5", 579 | "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", 580 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 581 | "dev": true 582 | }, 583 | "node_modules/braces": { 584 | "version": "3.0.2", 585 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 586 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 587 | "dev": true, 588 | "dependencies": { 589 | "fill-range": "^7.0.1" 590 | }, 591 | "engines": { 592 | "node": ">=8" 593 | } 594 | }, 595 | "node_modules/buffer": { 596 | "version": "5.7.1", 597 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 598 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 599 | "dev": true, 600 | "funding": [ 601 | { 602 | "type": "github", 603 | "url": "https://github.com/sponsors/feross" 604 | }, 605 | { 606 | "type": "patreon", 607 | "url": "https://www.patreon.com/feross" 608 | }, 609 | { 610 | "type": "consulting", 611 | "url": "https://feross.org/support" 612 | } 613 | ], 614 | "dependencies": { 615 | "base64-js": "^1.3.1", 616 | "ieee754": "^1.1.13" 617 | } 618 | }, 619 | "node_modules/buffer-from": { 620 | "version": "1.1.2", 621 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 622 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 623 | "dev": true 624 | }, 625 | "node_modules/busboy": { 626 | "version": "1.6.0", 627 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 628 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 629 | "dev": true, 630 | "dependencies": { 631 | "streamsearch": "^1.1.0" 632 | }, 633 | "engines": { 634 | "node": ">=10.16.0" 635 | } 636 | }, 637 | "node_modules/capnp-ts": { 638 | "version": "0.7.0", 639 | "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", 640 | "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", 641 | "dev": true, 642 | "dependencies": { 643 | "debug": "^4.3.1", 644 | "tslib": "^2.2.0" 645 | } 646 | }, 647 | "node_modules/chokidar": { 648 | "version": "3.5.3", 649 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 650 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 651 | "dev": true, 652 | "funding": [ 653 | { 654 | "type": "individual", 655 | "url": "https://paulmillr.com/funding/" 656 | } 657 | ], 658 | "dependencies": { 659 | "anymatch": "~3.1.2", 660 | "braces": "~3.0.2", 661 | "glob-parent": "~5.1.2", 662 | "is-binary-path": "~2.1.0", 663 | "is-glob": "~4.0.1", 664 | "normalize-path": "~3.0.0", 665 | "readdirp": "~3.6.0" 666 | }, 667 | "engines": { 668 | "node": ">= 8.10.0" 669 | }, 670 | "optionalDependencies": { 671 | "fsevents": "~2.3.2" 672 | } 673 | }, 674 | "node_modules/chownr": { 675 | "version": "1.1.4", 676 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 677 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 678 | "dev": true 679 | }, 680 | "node_modules/cookie": { 681 | "version": "0.5.0", 682 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 683 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 684 | "dev": true, 685 | "engines": { 686 | "node": ">= 0.6" 687 | } 688 | }, 689 | "node_modules/data-uri-to-buffer": { 690 | "version": "2.0.2", 691 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", 692 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", 693 | "dev": true 694 | }, 695 | "node_modules/debug": { 696 | "version": "4.3.4", 697 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 698 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 699 | "dev": true, 700 | "dependencies": { 701 | "ms": "2.1.2" 702 | }, 703 | "engines": { 704 | "node": ">=6.0" 705 | }, 706 | "peerDependenciesMeta": { 707 | "supports-color": { 708 | "optional": true 709 | } 710 | } 711 | }, 712 | "node_modules/decompress-response": { 713 | "version": "6.0.0", 714 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 715 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 716 | "dev": true, 717 | "dependencies": { 718 | "mimic-response": "^3.1.0" 719 | }, 720 | "engines": { 721 | "node": ">=10" 722 | }, 723 | "funding": { 724 | "url": "https://github.com/sponsors/sindresorhus" 725 | } 726 | }, 727 | "node_modules/deep-extend": { 728 | "version": "0.6.0", 729 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 730 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 731 | "dev": true, 732 | "engines": { 733 | "node": ">=4.0.0" 734 | } 735 | }, 736 | "node_modules/detect-libc": { 737 | "version": "2.0.1", 738 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 739 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 740 | "dev": true, 741 | "engines": { 742 | "node": ">=8" 743 | } 744 | }, 745 | "node_modules/end-of-stream": { 746 | "version": "1.4.4", 747 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 748 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 749 | "dev": true, 750 | "dependencies": { 751 | "once": "^1.4.0" 752 | } 753 | }, 754 | "node_modules/esbuild": { 755 | "version": "0.16.3", 756 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.3.tgz", 757 | "integrity": "sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==", 758 | "dev": true, 759 | "hasInstallScript": true, 760 | "bin": { 761 | "esbuild": "bin/esbuild" 762 | }, 763 | "engines": { 764 | "node": ">=12" 765 | }, 766 | "optionalDependencies": { 767 | "@esbuild/android-arm": "0.16.3", 768 | "@esbuild/android-arm64": "0.16.3", 769 | "@esbuild/android-x64": "0.16.3", 770 | "@esbuild/darwin-arm64": "0.16.3", 771 | "@esbuild/darwin-x64": "0.16.3", 772 | "@esbuild/freebsd-arm64": "0.16.3", 773 | "@esbuild/freebsd-x64": "0.16.3", 774 | "@esbuild/linux-arm": "0.16.3", 775 | "@esbuild/linux-arm64": "0.16.3", 776 | "@esbuild/linux-ia32": "0.16.3", 777 | "@esbuild/linux-loong64": "0.16.3", 778 | "@esbuild/linux-mips64el": "0.16.3", 779 | "@esbuild/linux-ppc64": "0.16.3", 780 | "@esbuild/linux-riscv64": "0.16.3", 781 | "@esbuild/linux-s390x": "0.16.3", 782 | "@esbuild/linux-x64": "0.16.3", 783 | "@esbuild/netbsd-x64": "0.16.3", 784 | "@esbuild/openbsd-x64": "0.16.3", 785 | "@esbuild/sunos-x64": "0.16.3", 786 | "@esbuild/win32-arm64": "0.16.3", 787 | "@esbuild/win32-ia32": "0.16.3", 788 | "@esbuild/win32-x64": "0.16.3" 789 | } 790 | }, 791 | "node_modules/escape-string-regexp": { 792 | "version": "4.0.0", 793 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 794 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 795 | "dev": true, 796 | "engines": { 797 | "node": ">=10" 798 | }, 799 | "funding": { 800 | "url": "https://github.com/sponsors/sindresorhus" 801 | } 802 | }, 803 | "node_modules/estree-walker": { 804 | "version": "0.6.1", 805 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 806 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 807 | "dev": true 808 | }, 809 | "node_modules/exit-hook": { 810 | "version": "2.2.1", 811 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 812 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 813 | "dev": true, 814 | "engines": { 815 | "node": ">=6" 816 | }, 817 | "funding": { 818 | "url": "https://github.com/sponsors/sindresorhus" 819 | } 820 | }, 821 | "node_modules/expand-template": { 822 | "version": "2.0.3", 823 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 824 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 825 | "dev": true, 826 | "engines": { 827 | "node": ">=6" 828 | } 829 | }, 830 | "node_modules/file-uri-to-path": { 831 | "version": "1.0.0", 832 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 833 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 834 | "dev": true 835 | }, 836 | "node_modules/fill-range": { 837 | "version": "7.0.1", 838 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 839 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 840 | "dev": true, 841 | "dependencies": { 842 | "to-regex-range": "^5.0.1" 843 | }, 844 | "engines": { 845 | "node": ">=8" 846 | } 847 | }, 848 | "node_modules/fs-constants": { 849 | "version": "1.0.0", 850 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 851 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 852 | "dev": true 853 | }, 854 | "node_modules/fsevents": { 855 | "version": "2.3.2", 856 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 857 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 858 | "dev": true, 859 | "hasInstallScript": true, 860 | "optional": true, 861 | "os": [ 862 | "darwin" 863 | ], 864 | "engines": { 865 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 866 | } 867 | }, 868 | "node_modules/get-source": { 869 | "version": "2.0.12", 870 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", 871 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", 872 | "dev": true, 873 | "dependencies": { 874 | "data-uri-to-buffer": "^2.0.0", 875 | "source-map": "^0.6.1" 876 | } 877 | }, 878 | "node_modules/get-source/node_modules/source-map": { 879 | "version": "0.6.1", 880 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 881 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 882 | "dev": true, 883 | "engines": { 884 | "node": ">=0.10.0" 885 | } 886 | }, 887 | "node_modules/github-from-package": { 888 | "version": "0.0.0", 889 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 890 | "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 891 | "dev": true 892 | }, 893 | "node_modules/glob-parent": { 894 | "version": "5.1.2", 895 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 896 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 897 | "dev": true, 898 | "dependencies": { 899 | "is-glob": "^4.0.1" 900 | }, 901 | "engines": { 902 | "node": ">= 6" 903 | } 904 | }, 905 | "node_modules/glob-to-regexp": { 906 | "version": "0.4.1", 907 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 908 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 909 | "dev": true 910 | }, 911 | "node_modules/http-cache-semantics": { 912 | "version": "4.1.1", 913 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 914 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", 915 | "dev": true 916 | }, 917 | "node_modules/ieee754": { 918 | "version": "1.2.1", 919 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 920 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 921 | "dev": true, 922 | "funding": [ 923 | { 924 | "type": "github", 925 | "url": "https://github.com/sponsors/feross" 926 | }, 927 | { 928 | "type": "patreon", 929 | "url": "https://www.patreon.com/feross" 930 | }, 931 | { 932 | "type": "consulting", 933 | "url": "https://feross.org/support" 934 | } 935 | ] 936 | }, 937 | "node_modules/inherits": { 938 | "version": "2.0.4", 939 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 940 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 941 | "dev": true 942 | }, 943 | "node_modules/ini": { 944 | "version": "1.3.8", 945 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 946 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 947 | "dev": true 948 | }, 949 | "node_modules/is-binary-path": { 950 | "version": "2.1.0", 951 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 952 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 953 | "dev": true, 954 | "dependencies": { 955 | "binary-extensions": "^2.0.0" 956 | }, 957 | "engines": { 958 | "node": ">=8" 959 | } 960 | }, 961 | "node_modules/is-extglob": { 962 | "version": "2.1.1", 963 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 964 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 965 | "dev": true, 966 | "engines": { 967 | "node": ">=0.10.0" 968 | } 969 | }, 970 | "node_modules/is-glob": { 971 | "version": "4.0.3", 972 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 973 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 974 | "dev": true, 975 | "dependencies": { 976 | "is-extglob": "^2.1.1" 977 | }, 978 | "engines": { 979 | "node": ">=0.10.0" 980 | } 981 | }, 982 | "node_modules/is-number": { 983 | "version": "7.0.0", 984 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 985 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 986 | "dev": true, 987 | "engines": { 988 | "node": ">=0.12.0" 989 | } 990 | }, 991 | "node_modules/kleur": { 992 | "version": "4.1.5", 993 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 994 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 995 | "dev": true, 996 | "engines": { 997 | "node": ">=6" 998 | } 999 | }, 1000 | "node_modules/lru-cache": { 1001 | "version": "6.0.0", 1002 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1003 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1004 | "dev": true, 1005 | "dependencies": { 1006 | "yallist": "^4.0.0" 1007 | }, 1008 | "engines": { 1009 | "node": ">=10" 1010 | } 1011 | }, 1012 | "node_modules/magic-string": { 1013 | "version": "0.25.9", 1014 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1015 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1016 | "dev": true, 1017 | "dependencies": { 1018 | "sourcemap-codec": "^1.4.8" 1019 | } 1020 | }, 1021 | "node_modules/mime": { 1022 | "version": "3.0.0", 1023 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1024 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1025 | "dev": true, 1026 | "bin": { 1027 | "mime": "cli.js" 1028 | }, 1029 | "engines": { 1030 | "node": ">=10.0.0" 1031 | } 1032 | }, 1033 | "node_modules/mimic-response": { 1034 | "version": "3.1.0", 1035 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 1036 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 1037 | "dev": true, 1038 | "engines": { 1039 | "node": ">=10" 1040 | }, 1041 | "funding": { 1042 | "url": "https://github.com/sponsors/sindresorhus" 1043 | } 1044 | }, 1045 | "node_modules/miniflare": { 1046 | "version": "3.20230710.0", 1047 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20230710.0.tgz", 1048 | "integrity": "sha512-kVxJoJFeepK+rGJp9UN0D8d3sL6hjFbzd3qcLUUUKosp0ouoleOa6uPNK0b8fEBWWqFUD2W4V4ziN7UvXFB4pg==", 1049 | "dev": true, 1050 | "dependencies": { 1051 | "acorn": "^8.8.0", 1052 | "acorn-walk": "^8.2.0", 1053 | "better-sqlite3": "^8.1.0", 1054 | "capnp-ts": "^0.7.0", 1055 | "exit-hook": "^2.2.1", 1056 | "glob-to-regexp": "^0.4.1", 1057 | "http-cache-semantics": "^4.1.0", 1058 | "kleur": "^4.1.5", 1059 | "set-cookie-parser": "^2.6.0", 1060 | "source-map-support": "0.5.21", 1061 | "stoppable": "^1.1.0", 1062 | "undici": "^5.13.0", 1063 | "workerd": "1.20230710.0", 1064 | "ws": "^8.11.0", 1065 | "youch": "^3.2.2", 1066 | "zod": "^3.20.6" 1067 | }, 1068 | "engines": { 1069 | "node": ">=16.13" 1070 | } 1071 | }, 1072 | "node_modules/minimist": { 1073 | "version": "1.2.8", 1074 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1075 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1076 | "dev": true, 1077 | "funding": { 1078 | "url": "https://github.com/sponsors/ljharb" 1079 | } 1080 | }, 1081 | "node_modules/mkdirp-classic": { 1082 | "version": "0.5.3", 1083 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1084 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 1085 | "dev": true 1086 | }, 1087 | "node_modules/ms": { 1088 | "version": "2.1.2", 1089 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1090 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1091 | "dev": true 1092 | }, 1093 | "node_modules/mustache": { 1094 | "version": "4.2.0", 1095 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", 1096 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 1097 | "dev": true, 1098 | "bin": { 1099 | "mustache": "bin/mustache" 1100 | } 1101 | }, 1102 | "node_modules/nanoid": { 1103 | "version": "3.3.6", 1104 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 1105 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 1106 | "dev": true, 1107 | "funding": [ 1108 | { 1109 | "type": "github", 1110 | "url": "https://github.com/sponsors/ai" 1111 | } 1112 | ], 1113 | "bin": { 1114 | "nanoid": "bin/nanoid.cjs" 1115 | }, 1116 | "engines": { 1117 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1118 | } 1119 | }, 1120 | "node_modules/napi-build-utils": { 1121 | "version": "1.0.2", 1122 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 1123 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", 1124 | "dev": true 1125 | }, 1126 | "node_modules/node-abi": { 1127 | "version": "3.45.0", 1128 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", 1129 | "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "semver": "^7.3.5" 1133 | }, 1134 | "engines": { 1135 | "node": ">=10" 1136 | } 1137 | }, 1138 | "node_modules/node-forge": { 1139 | "version": "1.3.1", 1140 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 1141 | "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", 1142 | "dev": true, 1143 | "engines": { 1144 | "node": ">= 6.13.0" 1145 | } 1146 | }, 1147 | "node_modules/normalize-path": { 1148 | "version": "3.0.0", 1149 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1150 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1151 | "dev": true, 1152 | "engines": { 1153 | "node": ">=0.10.0" 1154 | } 1155 | }, 1156 | "node_modules/once": { 1157 | "version": "1.4.0", 1158 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1159 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1160 | "dev": true, 1161 | "dependencies": { 1162 | "wrappy": "1" 1163 | } 1164 | }, 1165 | "node_modules/path-to-regexp": { 1166 | "version": "6.2.1", 1167 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", 1168 | "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", 1169 | "dev": true 1170 | }, 1171 | "node_modules/picomatch": { 1172 | "version": "2.3.1", 1173 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1174 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1175 | "dev": true, 1176 | "engines": { 1177 | "node": ">=8.6" 1178 | }, 1179 | "funding": { 1180 | "url": "https://github.com/sponsors/jonschlinkert" 1181 | } 1182 | }, 1183 | "node_modules/prebuild-install": { 1184 | "version": "7.1.1", 1185 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", 1186 | "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", 1187 | "dev": true, 1188 | "dependencies": { 1189 | "detect-libc": "^2.0.0", 1190 | "expand-template": "^2.0.3", 1191 | "github-from-package": "0.0.0", 1192 | "minimist": "^1.2.3", 1193 | "mkdirp-classic": "^0.5.3", 1194 | "napi-build-utils": "^1.0.1", 1195 | "node-abi": "^3.3.0", 1196 | "pump": "^3.0.0", 1197 | "rc": "^1.2.7", 1198 | "simple-get": "^4.0.0", 1199 | "tar-fs": "^2.0.0", 1200 | "tunnel-agent": "^0.6.0" 1201 | }, 1202 | "bin": { 1203 | "prebuild-install": "bin.js" 1204 | }, 1205 | "engines": { 1206 | "node": ">=10" 1207 | } 1208 | }, 1209 | "node_modules/printable-characters": { 1210 | "version": "1.0.42", 1211 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", 1212 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", 1213 | "dev": true 1214 | }, 1215 | "node_modules/pump": { 1216 | "version": "3.0.0", 1217 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1218 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1219 | "dev": true, 1220 | "dependencies": { 1221 | "end-of-stream": "^1.1.0", 1222 | "once": "^1.3.1" 1223 | } 1224 | }, 1225 | "node_modules/rc": { 1226 | "version": "1.2.8", 1227 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1228 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1229 | "dev": true, 1230 | "dependencies": { 1231 | "deep-extend": "^0.6.0", 1232 | "ini": "~1.3.0", 1233 | "minimist": "^1.2.0", 1234 | "strip-json-comments": "~2.0.1" 1235 | }, 1236 | "bin": { 1237 | "rc": "cli.js" 1238 | } 1239 | }, 1240 | "node_modules/readable-stream": { 1241 | "version": "3.6.2", 1242 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1243 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1244 | "dev": true, 1245 | "dependencies": { 1246 | "inherits": "^2.0.3", 1247 | "string_decoder": "^1.1.1", 1248 | "util-deprecate": "^1.0.1" 1249 | }, 1250 | "engines": { 1251 | "node": ">= 6" 1252 | } 1253 | }, 1254 | "node_modules/readdirp": { 1255 | "version": "3.6.0", 1256 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1257 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1258 | "dev": true, 1259 | "dependencies": { 1260 | "picomatch": "^2.2.1" 1261 | }, 1262 | "engines": { 1263 | "node": ">=8.10.0" 1264 | } 1265 | }, 1266 | "node_modules/rollup-plugin-inject": { 1267 | "version": "3.0.2", 1268 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", 1269 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", 1270 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", 1271 | "dev": true, 1272 | "dependencies": { 1273 | "estree-walker": "^0.6.1", 1274 | "magic-string": "^0.25.3", 1275 | "rollup-pluginutils": "^2.8.1" 1276 | } 1277 | }, 1278 | "node_modules/rollup-plugin-node-polyfills": { 1279 | "version": "0.2.1", 1280 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", 1281 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", 1282 | "dev": true, 1283 | "dependencies": { 1284 | "rollup-plugin-inject": "^3.0.0" 1285 | } 1286 | }, 1287 | "node_modules/rollup-pluginutils": { 1288 | "version": "2.8.2", 1289 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 1290 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1291 | "dev": true, 1292 | "dependencies": { 1293 | "estree-walker": "^0.6.1" 1294 | } 1295 | }, 1296 | "node_modules/safe-buffer": { 1297 | "version": "5.2.1", 1298 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1299 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1300 | "dev": true, 1301 | "funding": [ 1302 | { 1303 | "type": "github", 1304 | "url": "https://github.com/sponsors/feross" 1305 | }, 1306 | { 1307 | "type": "patreon", 1308 | "url": "https://www.patreon.com/feross" 1309 | }, 1310 | { 1311 | "type": "consulting", 1312 | "url": "https://feross.org/support" 1313 | } 1314 | ] 1315 | }, 1316 | "node_modules/selfsigned": { 1317 | "version": "2.1.1", 1318 | "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", 1319 | "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", 1320 | "dev": true, 1321 | "dependencies": { 1322 | "node-forge": "^1" 1323 | }, 1324 | "engines": { 1325 | "node": ">=10" 1326 | } 1327 | }, 1328 | "node_modules/semver": { 1329 | "version": "7.5.4", 1330 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1331 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1332 | "dev": true, 1333 | "dependencies": { 1334 | "lru-cache": "^6.0.0" 1335 | }, 1336 | "bin": { 1337 | "semver": "bin/semver.js" 1338 | }, 1339 | "engines": { 1340 | "node": ">=10" 1341 | } 1342 | }, 1343 | "node_modules/set-cookie-parser": { 1344 | "version": "2.6.0", 1345 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", 1346 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 1347 | "dev": true 1348 | }, 1349 | "node_modules/simple-concat": { 1350 | "version": "1.0.1", 1351 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 1352 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 1353 | "dev": true, 1354 | "funding": [ 1355 | { 1356 | "type": "github", 1357 | "url": "https://github.com/sponsors/feross" 1358 | }, 1359 | { 1360 | "type": "patreon", 1361 | "url": "https://www.patreon.com/feross" 1362 | }, 1363 | { 1364 | "type": "consulting", 1365 | "url": "https://feross.org/support" 1366 | } 1367 | ] 1368 | }, 1369 | "node_modules/simple-get": { 1370 | "version": "4.0.1", 1371 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 1372 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 1373 | "dev": true, 1374 | "funding": [ 1375 | { 1376 | "type": "github", 1377 | "url": "https://github.com/sponsors/feross" 1378 | }, 1379 | { 1380 | "type": "patreon", 1381 | "url": "https://www.patreon.com/feross" 1382 | }, 1383 | { 1384 | "type": "consulting", 1385 | "url": "https://feross.org/support" 1386 | } 1387 | ], 1388 | "dependencies": { 1389 | "decompress-response": "^6.0.0", 1390 | "once": "^1.3.1", 1391 | "simple-concat": "^1.0.0" 1392 | } 1393 | }, 1394 | "node_modules/source-map": { 1395 | "version": "0.7.4", 1396 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", 1397 | "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 1398 | "dev": true, 1399 | "engines": { 1400 | "node": ">= 8" 1401 | } 1402 | }, 1403 | "node_modules/source-map-support": { 1404 | "version": "0.5.21", 1405 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1406 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1407 | "dev": true, 1408 | "dependencies": { 1409 | "buffer-from": "^1.0.0", 1410 | "source-map": "^0.6.0" 1411 | } 1412 | }, 1413 | "node_modules/source-map-support/node_modules/source-map": { 1414 | "version": "0.6.1", 1415 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1416 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1417 | "dev": true, 1418 | "engines": { 1419 | "node": ">=0.10.0" 1420 | } 1421 | }, 1422 | "node_modules/sourcemap-codec": { 1423 | "version": "1.4.8", 1424 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1425 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1426 | "deprecated": "Please use @jridgewell/sourcemap-codec instead", 1427 | "dev": true 1428 | }, 1429 | "node_modules/stacktracey": { 1430 | "version": "2.1.8", 1431 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", 1432 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", 1433 | "dev": true, 1434 | "dependencies": { 1435 | "as-table": "^1.0.36", 1436 | "get-source": "^2.0.12" 1437 | } 1438 | }, 1439 | "node_modules/stoppable": { 1440 | "version": "1.1.0", 1441 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 1442 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 1443 | "dev": true, 1444 | "engines": { 1445 | "node": ">=4", 1446 | "npm": ">=6" 1447 | } 1448 | }, 1449 | "node_modules/streamsearch": { 1450 | "version": "1.1.0", 1451 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1452 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1453 | "dev": true, 1454 | "engines": { 1455 | "node": ">=10.0.0" 1456 | } 1457 | }, 1458 | "node_modules/string_decoder": { 1459 | "version": "1.3.0", 1460 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1461 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1462 | "dev": true, 1463 | "dependencies": { 1464 | "safe-buffer": "~5.2.0" 1465 | } 1466 | }, 1467 | "node_modules/strip-json-comments": { 1468 | "version": "2.0.1", 1469 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1470 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 1471 | "dev": true, 1472 | "engines": { 1473 | "node": ">=0.10.0" 1474 | } 1475 | }, 1476 | "node_modules/tar-fs": { 1477 | "version": "2.1.1", 1478 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1479 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1480 | "dev": true, 1481 | "dependencies": { 1482 | "chownr": "^1.1.1", 1483 | "mkdirp-classic": "^0.5.2", 1484 | "pump": "^3.0.0", 1485 | "tar-stream": "^2.1.4" 1486 | } 1487 | }, 1488 | "node_modules/tar-stream": { 1489 | "version": "2.2.0", 1490 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1491 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1492 | "dev": true, 1493 | "dependencies": { 1494 | "bl": "^4.0.3", 1495 | "end-of-stream": "^1.4.1", 1496 | "fs-constants": "^1.0.0", 1497 | "inherits": "^2.0.3", 1498 | "readable-stream": "^3.1.1" 1499 | }, 1500 | "engines": { 1501 | "node": ">=6" 1502 | } 1503 | }, 1504 | "node_modules/to-regex-range": { 1505 | "version": "5.0.1", 1506 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1507 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1508 | "dev": true, 1509 | "dependencies": { 1510 | "is-number": "^7.0.0" 1511 | }, 1512 | "engines": { 1513 | "node": ">=8.0" 1514 | } 1515 | }, 1516 | "node_modules/tslib": { 1517 | "version": "2.6.0", 1518 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", 1519 | "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", 1520 | "dev": true 1521 | }, 1522 | "node_modules/tunnel-agent": { 1523 | "version": "0.6.0", 1524 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1525 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 1526 | "dev": true, 1527 | "dependencies": { 1528 | "safe-buffer": "^5.0.1" 1529 | }, 1530 | "engines": { 1531 | "node": "*" 1532 | } 1533 | }, 1534 | "node_modules/undici": { 1535 | "version": "5.22.1", 1536 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", 1537 | "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", 1538 | "dev": true, 1539 | "dependencies": { 1540 | "busboy": "^1.6.0" 1541 | }, 1542 | "engines": { 1543 | "node": ">=14.0" 1544 | } 1545 | }, 1546 | "node_modules/util-deprecate": { 1547 | "version": "1.0.2", 1548 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1549 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1550 | "dev": true 1551 | }, 1552 | "node_modules/workerd": { 1553 | "version": "1.20230710.0", 1554 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20230710.0.tgz", 1555 | "integrity": "sha512-4iC+8w3UNixJ+b6GA2VOG2B6rnfSbSnm7Fnvsvq9iJuolG34fnD9xrfaXu6oN7H3Wyby3z8OIm0fy3szTvuRcg==", 1556 | "dev": true, 1557 | "hasInstallScript": true, 1558 | "bin": { 1559 | "workerd": "bin/workerd" 1560 | }, 1561 | "engines": { 1562 | "node": ">=16" 1563 | }, 1564 | "optionalDependencies": { 1565 | "@cloudflare/workerd-darwin-64": "1.20230710.0", 1566 | "@cloudflare/workerd-darwin-arm64": "1.20230710.0", 1567 | "@cloudflare/workerd-linux-64": "1.20230710.0", 1568 | "@cloudflare/workerd-linux-arm64": "1.20230710.0", 1569 | "@cloudflare/workerd-windows-64": "1.20230710.0" 1570 | } 1571 | }, 1572 | "node_modules/wrangler": { 1573 | "version": "3.2.0", 1574 | "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.2.0.tgz", 1575 | "integrity": "sha512-Fne5c91uolV4+E0B60F/meWbD/sr/oSPBfr6x1gapu6I7Ipu5uUt29K/fuGRgXRQcVVKnd5k3fS++ruuLODoxA==", 1576 | "dev": true, 1577 | "dependencies": { 1578 | "@cloudflare/kv-asset-handler": "^0.2.0", 1579 | "@esbuild-plugins/node-globals-polyfill": "^0.1.1", 1580 | "@esbuild-plugins/node-modules-polyfill": "^0.1.4", 1581 | "blake3-wasm": "^2.1.5", 1582 | "chokidar": "^3.5.3", 1583 | "esbuild": "0.16.3", 1584 | "miniflare": "3.20230710.0", 1585 | "nanoid": "^3.3.3", 1586 | "path-to-regexp": "^6.2.0", 1587 | "selfsigned": "^2.0.1", 1588 | "source-map": "^0.7.4", 1589 | "xxhash-wasm": "^1.0.1" 1590 | }, 1591 | "bin": { 1592 | "wrangler": "bin/wrangler.js", 1593 | "wrangler2": "bin/wrangler.js" 1594 | }, 1595 | "engines": { 1596 | "node": ">=16.13.0" 1597 | }, 1598 | "optionalDependencies": { 1599 | "fsevents": "~2.3.2" 1600 | } 1601 | }, 1602 | "node_modules/wrappy": { 1603 | "version": "1.0.2", 1604 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1605 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1606 | "dev": true 1607 | }, 1608 | "node_modules/ws": { 1609 | "version": "8.13.0", 1610 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 1611 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 1612 | "dev": true, 1613 | "engines": { 1614 | "node": ">=10.0.0" 1615 | }, 1616 | "peerDependencies": { 1617 | "bufferutil": "^4.0.1", 1618 | "utf-8-validate": ">=5.0.2" 1619 | }, 1620 | "peerDependenciesMeta": { 1621 | "bufferutil": { 1622 | "optional": true 1623 | }, 1624 | "utf-8-validate": { 1625 | "optional": true 1626 | } 1627 | } 1628 | }, 1629 | "node_modules/xxhash-wasm": { 1630 | "version": "1.0.2", 1631 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", 1632 | "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", 1633 | "dev": true 1634 | }, 1635 | "node_modules/yallist": { 1636 | "version": "4.0.0", 1637 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1638 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1639 | "dev": true 1640 | }, 1641 | "node_modules/youch": { 1642 | "version": "3.2.3", 1643 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", 1644 | "integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==", 1645 | "dev": true, 1646 | "dependencies": { 1647 | "cookie": "^0.5.0", 1648 | "mustache": "^4.2.0", 1649 | "stacktracey": "^2.1.8" 1650 | } 1651 | }, 1652 | "node_modules/zod": { 1653 | "version": "3.21.4", 1654 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", 1655 | "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", 1656 | "dev": true, 1657 | "funding": { 1658 | "url": "https://github.com/sponsors/colinhacks" 1659 | } 1660 | } 1661 | }, 1662 | "dependencies": { 1663 | "@cloudflare/kv-asset-handler": { 1664 | "version": "0.2.0", 1665 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz", 1666 | "integrity": "sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==", 1667 | "dev": true, 1668 | "requires": { 1669 | "mime": "^3.0.0" 1670 | } 1671 | }, 1672 | "@cloudflare/workerd-darwin-64": { 1673 | "version": "1.20230710.0", 1674 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230710.0.tgz", 1675 | "integrity": "sha512-TDEgTfzTkveW+U0qtg9/60PXbl2klnEso0oio501zAnY2SOC1x7M0qb8UkhvjHFUVpwdykUzTPWPIWFBcF1ibA==", 1676 | "dev": true, 1677 | "optional": true 1678 | }, 1679 | "@cloudflare/workerd-darwin-arm64": { 1680 | "version": "1.20230710.0", 1681 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230710.0.tgz", 1682 | "integrity": "sha512-dxBwnKcj7TiM1JGiODg0LASa25A9P0XLeMkmF8YCECZoq+3QLH/uY4Vbm1xeEy8iXUZrt/uYN72bBE83vY4HIQ==", 1683 | "dev": true, 1684 | "optional": true 1685 | }, 1686 | "@cloudflare/workerd-linux-64": { 1687 | "version": "1.20230710.0", 1688 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230710.0.tgz", 1689 | "integrity": "sha512-WrKZwL76i51jQLFpSxklpRSm2s8T9Xf6tVzQaiLTtpguKZSF/CTAyjjEOVfS7FXk+Te8lyAJAFQnj5QHoJ3pzA==", 1690 | "dev": true, 1691 | "optional": true 1692 | }, 1693 | "@cloudflare/workerd-linux-arm64": { 1694 | "version": "1.20230710.0", 1695 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230710.0.tgz", 1696 | "integrity": "sha512-eWdbOoqFqQ4m1/Wwy2dRDaOVXjOmWGjwBliU8pvm2m9RjfRTdfik7z6E3vOkalxqJDHiJ0f8SUykKz2oM1lD0A==", 1697 | "dev": true, 1698 | "optional": true 1699 | }, 1700 | "@cloudflare/workerd-windows-64": { 1701 | "version": "1.20230710.0", 1702 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230710.0.tgz", 1703 | "integrity": "sha512-P5ihH98Pb72HrsVsvb/HCSezvAvEtPeVQVBKgIclNE9e0fkA4zX9QMzBBFvLy3yr0YLf4r7MO2tNnt7JFnheGA==", 1704 | "dev": true, 1705 | "optional": true 1706 | }, 1707 | "@esbuild-plugins/node-globals-polyfill": { 1708 | "version": "0.1.1", 1709 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", 1710 | "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", 1711 | "dev": true, 1712 | "requires": {} 1713 | }, 1714 | "@esbuild-plugins/node-modules-polyfill": { 1715 | "version": "0.1.4", 1716 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz", 1717 | "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==", 1718 | "dev": true, 1719 | "requires": { 1720 | "escape-string-regexp": "^4.0.0", 1721 | "rollup-plugin-node-polyfills": "^0.2.1" 1722 | } 1723 | }, 1724 | "@esbuild/android-arm": { 1725 | "version": "0.16.3", 1726 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.3.tgz", 1727 | "integrity": "sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==", 1728 | "dev": true, 1729 | "optional": true 1730 | }, 1731 | "@esbuild/android-arm64": { 1732 | "version": "0.16.3", 1733 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz", 1734 | "integrity": "sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==", 1735 | "dev": true, 1736 | "optional": true 1737 | }, 1738 | "@esbuild/android-x64": { 1739 | "version": "0.16.3", 1740 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.3.tgz", 1741 | "integrity": "sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==", 1742 | "dev": true, 1743 | "optional": true 1744 | }, 1745 | "@esbuild/darwin-arm64": { 1746 | "version": "0.16.3", 1747 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz", 1748 | "integrity": "sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==", 1749 | "dev": true, 1750 | "optional": true 1751 | }, 1752 | "@esbuild/darwin-x64": { 1753 | "version": "0.16.3", 1754 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz", 1755 | "integrity": "sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==", 1756 | "dev": true, 1757 | "optional": true 1758 | }, 1759 | "@esbuild/freebsd-arm64": { 1760 | "version": "0.16.3", 1761 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz", 1762 | "integrity": "sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==", 1763 | "dev": true, 1764 | "optional": true 1765 | }, 1766 | "@esbuild/freebsd-x64": { 1767 | "version": "0.16.3", 1768 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz", 1769 | "integrity": "sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==", 1770 | "dev": true, 1771 | "optional": true 1772 | }, 1773 | "@esbuild/linux-arm": { 1774 | "version": "0.16.3", 1775 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz", 1776 | "integrity": "sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==", 1777 | "dev": true, 1778 | "optional": true 1779 | }, 1780 | "@esbuild/linux-arm64": { 1781 | "version": "0.16.3", 1782 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz", 1783 | "integrity": "sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==", 1784 | "dev": true, 1785 | "optional": true 1786 | }, 1787 | "@esbuild/linux-ia32": { 1788 | "version": "0.16.3", 1789 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz", 1790 | "integrity": "sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==", 1791 | "dev": true, 1792 | "optional": true 1793 | }, 1794 | "@esbuild/linux-loong64": { 1795 | "version": "0.16.3", 1796 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz", 1797 | "integrity": "sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==", 1798 | "dev": true, 1799 | "optional": true 1800 | }, 1801 | "@esbuild/linux-mips64el": { 1802 | "version": "0.16.3", 1803 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz", 1804 | "integrity": "sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==", 1805 | "dev": true, 1806 | "optional": true 1807 | }, 1808 | "@esbuild/linux-ppc64": { 1809 | "version": "0.16.3", 1810 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz", 1811 | "integrity": "sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==", 1812 | "dev": true, 1813 | "optional": true 1814 | }, 1815 | "@esbuild/linux-riscv64": { 1816 | "version": "0.16.3", 1817 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz", 1818 | "integrity": "sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==", 1819 | "dev": true, 1820 | "optional": true 1821 | }, 1822 | "@esbuild/linux-s390x": { 1823 | "version": "0.16.3", 1824 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz", 1825 | "integrity": "sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==", 1826 | "dev": true, 1827 | "optional": true 1828 | }, 1829 | "@esbuild/linux-x64": { 1830 | "version": "0.16.3", 1831 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz", 1832 | "integrity": "sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==", 1833 | "dev": true, 1834 | "optional": true 1835 | }, 1836 | "@esbuild/netbsd-x64": { 1837 | "version": "0.16.3", 1838 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz", 1839 | "integrity": "sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==", 1840 | "dev": true, 1841 | "optional": true 1842 | }, 1843 | "@esbuild/openbsd-x64": { 1844 | "version": "0.16.3", 1845 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz", 1846 | "integrity": "sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==", 1847 | "dev": true, 1848 | "optional": true 1849 | }, 1850 | "@esbuild/sunos-x64": { 1851 | "version": "0.16.3", 1852 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz", 1853 | "integrity": "sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==", 1854 | "dev": true, 1855 | "optional": true 1856 | }, 1857 | "@esbuild/win32-arm64": { 1858 | "version": "0.16.3", 1859 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz", 1860 | "integrity": "sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==", 1861 | "dev": true, 1862 | "optional": true 1863 | }, 1864 | "@esbuild/win32-ia32": { 1865 | "version": "0.16.3", 1866 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz", 1867 | "integrity": "sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==", 1868 | "dev": true, 1869 | "optional": true 1870 | }, 1871 | "@esbuild/win32-x64": { 1872 | "version": "0.16.3", 1873 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz", 1874 | "integrity": "sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==", 1875 | "dev": true, 1876 | "optional": true 1877 | }, 1878 | "acorn": { 1879 | "version": "8.10.0", 1880 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", 1881 | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", 1882 | "dev": true 1883 | }, 1884 | "acorn-walk": { 1885 | "version": "8.2.0", 1886 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1887 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 1888 | "dev": true 1889 | }, 1890 | "anymatch": { 1891 | "version": "3.1.3", 1892 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1893 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1894 | "dev": true, 1895 | "requires": { 1896 | "normalize-path": "^3.0.0", 1897 | "picomatch": "^2.0.4" 1898 | } 1899 | }, 1900 | "as-table": { 1901 | "version": "1.0.55", 1902 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", 1903 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", 1904 | "dev": true, 1905 | "requires": { 1906 | "printable-characters": "^1.0.42" 1907 | } 1908 | }, 1909 | "base64-js": { 1910 | "version": "1.5.1", 1911 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1912 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1913 | "dev": true 1914 | }, 1915 | "better-sqlite3": { 1916 | "version": "8.4.0", 1917 | "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.4.0.tgz", 1918 | "integrity": "sha512-NmsNW1CQvqMszu/CFAJ3pLct6NEFlNfuGM6vw72KHkjOD1UDnL96XNN1BMQc1hiHo8vE2GbOWQYIpZ+YM5wrZw==", 1919 | "dev": true, 1920 | "requires": { 1921 | "bindings": "^1.5.0", 1922 | "prebuild-install": "^7.1.0" 1923 | } 1924 | }, 1925 | "binary-extensions": { 1926 | "version": "2.2.0", 1927 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1928 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1929 | "dev": true 1930 | }, 1931 | "bindings": { 1932 | "version": "1.5.0", 1933 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 1934 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 1935 | "dev": true, 1936 | "requires": { 1937 | "file-uri-to-path": "1.0.0" 1938 | } 1939 | }, 1940 | "bl": { 1941 | "version": "4.1.0", 1942 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1943 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1944 | "dev": true, 1945 | "requires": { 1946 | "buffer": "^5.5.0", 1947 | "inherits": "^2.0.4", 1948 | "readable-stream": "^3.4.0" 1949 | } 1950 | }, 1951 | "blake3-wasm": { 1952 | "version": "2.1.5", 1953 | "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", 1954 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 1955 | "dev": true 1956 | }, 1957 | "braces": { 1958 | "version": "3.0.2", 1959 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1960 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1961 | "dev": true, 1962 | "requires": { 1963 | "fill-range": "^7.0.1" 1964 | } 1965 | }, 1966 | "buffer": { 1967 | "version": "5.7.1", 1968 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1969 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1970 | "dev": true, 1971 | "requires": { 1972 | "base64-js": "^1.3.1", 1973 | "ieee754": "^1.1.13" 1974 | } 1975 | }, 1976 | "buffer-from": { 1977 | "version": "1.1.2", 1978 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1979 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1980 | "dev": true 1981 | }, 1982 | "busboy": { 1983 | "version": "1.6.0", 1984 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 1985 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 1986 | "dev": true, 1987 | "requires": { 1988 | "streamsearch": "^1.1.0" 1989 | } 1990 | }, 1991 | "capnp-ts": { 1992 | "version": "0.7.0", 1993 | "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", 1994 | "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", 1995 | "dev": true, 1996 | "requires": { 1997 | "debug": "^4.3.1", 1998 | "tslib": "^2.2.0" 1999 | } 2000 | }, 2001 | "chokidar": { 2002 | "version": "3.5.3", 2003 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2004 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2005 | "dev": true, 2006 | "requires": { 2007 | "anymatch": "~3.1.2", 2008 | "braces": "~3.0.2", 2009 | "fsevents": "~2.3.2", 2010 | "glob-parent": "~5.1.2", 2011 | "is-binary-path": "~2.1.0", 2012 | "is-glob": "~4.0.1", 2013 | "normalize-path": "~3.0.0", 2014 | "readdirp": "~3.6.0" 2015 | } 2016 | }, 2017 | "chownr": { 2018 | "version": "1.1.4", 2019 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2020 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 2021 | "dev": true 2022 | }, 2023 | "cookie": { 2024 | "version": "0.5.0", 2025 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 2026 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 2027 | "dev": true 2028 | }, 2029 | "data-uri-to-buffer": { 2030 | "version": "2.0.2", 2031 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", 2032 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", 2033 | "dev": true 2034 | }, 2035 | "debug": { 2036 | "version": "4.3.4", 2037 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2038 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2039 | "dev": true, 2040 | "requires": { 2041 | "ms": "2.1.2" 2042 | } 2043 | }, 2044 | "decompress-response": { 2045 | "version": "6.0.0", 2046 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 2047 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 2048 | "dev": true, 2049 | "requires": { 2050 | "mimic-response": "^3.1.0" 2051 | } 2052 | }, 2053 | "deep-extend": { 2054 | "version": "0.6.0", 2055 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 2056 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 2057 | "dev": true 2058 | }, 2059 | "detect-libc": { 2060 | "version": "2.0.1", 2061 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 2062 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 2063 | "dev": true 2064 | }, 2065 | "end-of-stream": { 2066 | "version": "1.4.4", 2067 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 2068 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 2069 | "dev": true, 2070 | "requires": { 2071 | "once": "^1.4.0" 2072 | } 2073 | }, 2074 | "esbuild": { 2075 | "version": "0.16.3", 2076 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.3.tgz", 2077 | "integrity": "sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==", 2078 | "dev": true, 2079 | "requires": { 2080 | "@esbuild/android-arm": "0.16.3", 2081 | "@esbuild/android-arm64": "0.16.3", 2082 | "@esbuild/android-x64": "0.16.3", 2083 | "@esbuild/darwin-arm64": "0.16.3", 2084 | "@esbuild/darwin-x64": "0.16.3", 2085 | "@esbuild/freebsd-arm64": "0.16.3", 2086 | "@esbuild/freebsd-x64": "0.16.3", 2087 | "@esbuild/linux-arm": "0.16.3", 2088 | "@esbuild/linux-arm64": "0.16.3", 2089 | "@esbuild/linux-ia32": "0.16.3", 2090 | "@esbuild/linux-loong64": "0.16.3", 2091 | "@esbuild/linux-mips64el": "0.16.3", 2092 | "@esbuild/linux-ppc64": "0.16.3", 2093 | "@esbuild/linux-riscv64": "0.16.3", 2094 | "@esbuild/linux-s390x": "0.16.3", 2095 | "@esbuild/linux-x64": "0.16.3", 2096 | "@esbuild/netbsd-x64": "0.16.3", 2097 | "@esbuild/openbsd-x64": "0.16.3", 2098 | "@esbuild/sunos-x64": "0.16.3", 2099 | "@esbuild/win32-arm64": "0.16.3", 2100 | "@esbuild/win32-ia32": "0.16.3", 2101 | "@esbuild/win32-x64": "0.16.3" 2102 | } 2103 | }, 2104 | "escape-string-regexp": { 2105 | "version": "4.0.0", 2106 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2107 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2108 | "dev": true 2109 | }, 2110 | "estree-walker": { 2111 | "version": "0.6.1", 2112 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 2113 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 2114 | "dev": true 2115 | }, 2116 | "exit-hook": { 2117 | "version": "2.2.1", 2118 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", 2119 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", 2120 | "dev": true 2121 | }, 2122 | "expand-template": { 2123 | "version": "2.0.3", 2124 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 2125 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 2126 | "dev": true 2127 | }, 2128 | "file-uri-to-path": { 2129 | "version": "1.0.0", 2130 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 2131 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 2132 | "dev": true 2133 | }, 2134 | "fill-range": { 2135 | "version": "7.0.1", 2136 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2137 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2138 | "dev": true, 2139 | "requires": { 2140 | "to-regex-range": "^5.0.1" 2141 | } 2142 | }, 2143 | "fs-constants": { 2144 | "version": "1.0.0", 2145 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 2146 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 2147 | "dev": true 2148 | }, 2149 | "fsevents": { 2150 | "version": "2.3.2", 2151 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2152 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2153 | "dev": true, 2154 | "optional": true 2155 | }, 2156 | "get-source": { 2157 | "version": "2.0.12", 2158 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", 2159 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", 2160 | "dev": true, 2161 | "requires": { 2162 | "data-uri-to-buffer": "^2.0.0", 2163 | "source-map": "^0.6.1" 2164 | }, 2165 | "dependencies": { 2166 | "source-map": { 2167 | "version": "0.6.1", 2168 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2169 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2170 | "dev": true 2171 | } 2172 | } 2173 | }, 2174 | "github-from-package": { 2175 | "version": "0.0.0", 2176 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 2177 | "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 2178 | "dev": true 2179 | }, 2180 | "glob-parent": { 2181 | "version": "5.1.2", 2182 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2183 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2184 | "dev": true, 2185 | "requires": { 2186 | "is-glob": "^4.0.1" 2187 | } 2188 | }, 2189 | "glob-to-regexp": { 2190 | "version": "0.4.1", 2191 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 2192 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 2193 | "dev": true 2194 | }, 2195 | "http-cache-semantics": { 2196 | "version": "4.1.1", 2197 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 2198 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", 2199 | "dev": true 2200 | }, 2201 | "ieee754": { 2202 | "version": "1.2.1", 2203 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2204 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 2205 | "dev": true 2206 | }, 2207 | "inherits": { 2208 | "version": "2.0.4", 2209 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2210 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2211 | "dev": true 2212 | }, 2213 | "ini": { 2214 | "version": "1.3.8", 2215 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 2216 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 2217 | "dev": true 2218 | }, 2219 | "is-binary-path": { 2220 | "version": "2.1.0", 2221 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2222 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2223 | "dev": true, 2224 | "requires": { 2225 | "binary-extensions": "^2.0.0" 2226 | } 2227 | }, 2228 | "is-extglob": { 2229 | "version": "2.1.1", 2230 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2231 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2232 | "dev": true 2233 | }, 2234 | "is-glob": { 2235 | "version": "4.0.3", 2236 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2237 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2238 | "dev": true, 2239 | "requires": { 2240 | "is-extglob": "^2.1.1" 2241 | } 2242 | }, 2243 | "is-number": { 2244 | "version": "7.0.0", 2245 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2246 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2247 | "dev": true 2248 | }, 2249 | "kleur": { 2250 | "version": "4.1.5", 2251 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 2252 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 2253 | "dev": true 2254 | }, 2255 | "lru-cache": { 2256 | "version": "6.0.0", 2257 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2258 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2259 | "dev": true, 2260 | "requires": { 2261 | "yallist": "^4.0.0" 2262 | } 2263 | }, 2264 | "magic-string": { 2265 | "version": "0.25.9", 2266 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 2267 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 2268 | "dev": true, 2269 | "requires": { 2270 | "sourcemap-codec": "^1.4.8" 2271 | } 2272 | }, 2273 | "mime": { 2274 | "version": "3.0.0", 2275 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 2276 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 2277 | "dev": true 2278 | }, 2279 | "mimic-response": { 2280 | "version": "3.1.0", 2281 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 2282 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 2283 | "dev": true 2284 | }, 2285 | "miniflare": { 2286 | "version": "3.20230710.0", 2287 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20230710.0.tgz", 2288 | "integrity": "sha512-kVxJoJFeepK+rGJp9UN0D8d3sL6hjFbzd3qcLUUUKosp0ouoleOa6uPNK0b8fEBWWqFUD2W4V4ziN7UvXFB4pg==", 2289 | "dev": true, 2290 | "requires": { 2291 | "acorn": "^8.8.0", 2292 | "acorn-walk": "^8.2.0", 2293 | "better-sqlite3": "^8.1.0", 2294 | "capnp-ts": "^0.7.0", 2295 | "exit-hook": "^2.2.1", 2296 | "glob-to-regexp": "^0.4.1", 2297 | "http-cache-semantics": "^4.1.0", 2298 | "kleur": "^4.1.5", 2299 | "set-cookie-parser": "^2.6.0", 2300 | "source-map-support": "0.5.21", 2301 | "stoppable": "^1.1.0", 2302 | "undici": "^5.13.0", 2303 | "workerd": "1.20230710.0", 2304 | "ws": "^8.11.0", 2305 | "youch": "^3.2.2", 2306 | "zod": "^3.20.6" 2307 | } 2308 | }, 2309 | "minimist": { 2310 | "version": "1.2.8", 2311 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2312 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2313 | "dev": true 2314 | }, 2315 | "mkdirp-classic": { 2316 | "version": "0.5.3", 2317 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2318 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 2319 | "dev": true 2320 | }, 2321 | "ms": { 2322 | "version": "2.1.2", 2323 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2324 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2325 | "dev": true 2326 | }, 2327 | "mustache": { 2328 | "version": "4.2.0", 2329 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", 2330 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 2331 | "dev": true 2332 | }, 2333 | "nanoid": { 2334 | "version": "3.3.6", 2335 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 2336 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 2337 | "dev": true 2338 | }, 2339 | "napi-build-utils": { 2340 | "version": "1.0.2", 2341 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 2342 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", 2343 | "dev": true 2344 | }, 2345 | "node-abi": { 2346 | "version": "3.45.0", 2347 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", 2348 | "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", 2349 | "dev": true, 2350 | "requires": { 2351 | "semver": "^7.3.5" 2352 | } 2353 | }, 2354 | "node-forge": { 2355 | "version": "1.3.1", 2356 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", 2357 | "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", 2358 | "dev": true 2359 | }, 2360 | "normalize-path": { 2361 | "version": "3.0.0", 2362 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2363 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2364 | "dev": true 2365 | }, 2366 | "once": { 2367 | "version": "1.4.0", 2368 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2369 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2370 | "dev": true, 2371 | "requires": { 2372 | "wrappy": "1" 2373 | } 2374 | }, 2375 | "path-to-regexp": { 2376 | "version": "6.2.1", 2377 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", 2378 | "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", 2379 | "dev": true 2380 | }, 2381 | "picomatch": { 2382 | "version": "2.3.1", 2383 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2384 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2385 | "dev": true 2386 | }, 2387 | "prebuild-install": { 2388 | "version": "7.1.1", 2389 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", 2390 | "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", 2391 | "dev": true, 2392 | "requires": { 2393 | "detect-libc": "^2.0.0", 2394 | "expand-template": "^2.0.3", 2395 | "github-from-package": "0.0.0", 2396 | "minimist": "^1.2.3", 2397 | "mkdirp-classic": "^0.5.3", 2398 | "napi-build-utils": "^1.0.1", 2399 | "node-abi": "^3.3.0", 2400 | "pump": "^3.0.0", 2401 | "rc": "^1.2.7", 2402 | "simple-get": "^4.0.0", 2403 | "tar-fs": "^2.0.0", 2404 | "tunnel-agent": "^0.6.0" 2405 | } 2406 | }, 2407 | "printable-characters": { 2408 | "version": "1.0.42", 2409 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", 2410 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", 2411 | "dev": true 2412 | }, 2413 | "pump": { 2414 | "version": "3.0.0", 2415 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2416 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2417 | "dev": true, 2418 | "requires": { 2419 | "end-of-stream": "^1.1.0", 2420 | "once": "^1.3.1" 2421 | } 2422 | }, 2423 | "rc": { 2424 | "version": "1.2.8", 2425 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2426 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2427 | "dev": true, 2428 | "requires": { 2429 | "deep-extend": "^0.6.0", 2430 | "ini": "~1.3.0", 2431 | "minimist": "^1.2.0", 2432 | "strip-json-comments": "~2.0.1" 2433 | } 2434 | }, 2435 | "readable-stream": { 2436 | "version": "3.6.2", 2437 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2438 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2439 | "dev": true, 2440 | "requires": { 2441 | "inherits": "^2.0.3", 2442 | "string_decoder": "^1.1.1", 2443 | "util-deprecate": "^1.0.1" 2444 | } 2445 | }, 2446 | "readdirp": { 2447 | "version": "3.6.0", 2448 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2449 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2450 | "dev": true, 2451 | "requires": { 2452 | "picomatch": "^2.2.1" 2453 | } 2454 | }, 2455 | "rollup-plugin-inject": { 2456 | "version": "3.0.2", 2457 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", 2458 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", 2459 | "dev": true, 2460 | "requires": { 2461 | "estree-walker": "^0.6.1", 2462 | "magic-string": "^0.25.3", 2463 | "rollup-pluginutils": "^2.8.1" 2464 | } 2465 | }, 2466 | "rollup-plugin-node-polyfills": { 2467 | "version": "0.2.1", 2468 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", 2469 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", 2470 | "dev": true, 2471 | "requires": { 2472 | "rollup-plugin-inject": "^3.0.0" 2473 | } 2474 | }, 2475 | "rollup-pluginutils": { 2476 | "version": "2.8.2", 2477 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 2478 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 2479 | "dev": true, 2480 | "requires": { 2481 | "estree-walker": "^0.6.1" 2482 | } 2483 | }, 2484 | "safe-buffer": { 2485 | "version": "5.2.1", 2486 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2487 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2488 | "dev": true 2489 | }, 2490 | "selfsigned": { 2491 | "version": "2.1.1", 2492 | "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", 2493 | "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", 2494 | "dev": true, 2495 | "requires": { 2496 | "node-forge": "^1" 2497 | } 2498 | }, 2499 | "semver": { 2500 | "version": "7.5.4", 2501 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 2502 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 2503 | "dev": true, 2504 | "requires": { 2505 | "lru-cache": "^6.0.0" 2506 | } 2507 | }, 2508 | "set-cookie-parser": { 2509 | "version": "2.6.0", 2510 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", 2511 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 2512 | "dev": true 2513 | }, 2514 | "simple-concat": { 2515 | "version": "1.0.1", 2516 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2517 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 2518 | "dev": true 2519 | }, 2520 | "simple-get": { 2521 | "version": "4.0.1", 2522 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 2523 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 2524 | "dev": true, 2525 | "requires": { 2526 | "decompress-response": "^6.0.0", 2527 | "once": "^1.3.1", 2528 | "simple-concat": "^1.0.0" 2529 | } 2530 | }, 2531 | "source-map": { 2532 | "version": "0.7.4", 2533 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", 2534 | "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 2535 | "dev": true 2536 | }, 2537 | "source-map-support": { 2538 | "version": "0.5.21", 2539 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 2540 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 2541 | "dev": true, 2542 | "requires": { 2543 | "buffer-from": "^1.0.0", 2544 | "source-map": "^0.6.0" 2545 | }, 2546 | "dependencies": { 2547 | "source-map": { 2548 | "version": "0.6.1", 2549 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2550 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2551 | "dev": true 2552 | } 2553 | } 2554 | }, 2555 | "sourcemap-codec": { 2556 | "version": "1.4.8", 2557 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 2558 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 2559 | "dev": true 2560 | }, 2561 | "stacktracey": { 2562 | "version": "2.1.8", 2563 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", 2564 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", 2565 | "dev": true, 2566 | "requires": { 2567 | "as-table": "^1.0.36", 2568 | "get-source": "^2.0.12" 2569 | } 2570 | }, 2571 | "stoppable": { 2572 | "version": "1.1.0", 2573 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", 2574 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", 2575 | "dev": true 2576 | }, 2577 | "streamsearch": { 2578 | "version": "1.1.0", 2579 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 2580 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 2581 | "dev": true 2582 | }, 2583 | "string_decoder": { 2584 | "version": "1.3.0", 2585 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2586 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2587 | "dev": true, 2588 | "requires": { 2589 | "safe-buffer": "~5.2.0" 2590 | } 2591 | }, 2592 | "strip-json-comments": { 2593 | "version": "2.0.1", 2594 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2595 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 2596 | "dev": true 2597 | }, 2598 | "tar-fs": { 2599 | "version": "2.1.1", 2600 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 2601 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 2602 | "dev": true, 2603 | "requires": { 2604 | "chownr": "^1.1.1", 2605 | "mkdirp-classic": "^0.5.2", 2606 | "pump": "^3.0.0", 2607 | "tar-stream": "^2.1.4" 2608 | } 2609 | }, 2610 | "tar-stream": { 2611 | "version": "2.2.0", 2612 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2613 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2614 | "dev": true, 2615 | "requires": { 2616 | "bl": "^4.0.3", 2617 | "end-of-stream": "^1.4.1", 2618 | "fs-constants": "^1.0.0", 2619 | "inherits": "^2.0.3", 2620 | "readable-stream": "^3.1.1" 2621 | } 2622 | }, 2623 | "to-regex-range": { 2624 | "version": "5.0.1", 2625 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2626 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2627 | "dev": true, 2628 | "requires": { 2629 | "is-number": "^7.0.0" 2630 | } 2631 | }, 2632 | "tslib": { 2633 | "version": "2.6.0", 2634 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", 2635 | "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", 2636 | "dev": true 2637 | }, 2638 | "tunnel-agent": { 2639 | "version": "0.6.0", 2640 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2641 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2642 | "dev": true, 2643 | "requires": { 2644 | "safe-buffer": "^5.0.1" 2645 | } 2646 | }, 2647 | "undici": { 2648 | "version": "5.22.1", 2649 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", 2650 | "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", 2651 | "dev": true, 2652 | "requires": { 2653 | "busboy": "^1.6.0" 2654 | } 2655 | }, 2656 | "util-deprecate": { 2657 | "version": "1.0.2", 2658 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2659 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2660 | "dev": true 2661 | }, 2662 | "workerd": { 2663 | "version": "1.20230710.0", 2664 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20230710.0.tgz", 2665 | "integrity": "sha512-4iC+8w3UNixJ+b6GA2VOG2B6rnfSbSnm7Fnvsvq9iJuolG34fnD9xrfaXu6oN7H3Wyby3z8OIm0fy3szTvuRcg==", 2666 | "dev": true, 2667 | "requires": { 2668 | "@cloudflare/workerd-darwin-64": "1.20230710.0", 2669 | "@cloudflare/workerd-darwin-arm64": "1.20230710.0", 2670 | "@cloudflare/workerd-linux-64": "1.20230710.0", 2671 | "@cloudflare/workerd-linux-arm64": "1.20230710.0", 2672 | "@cloudflare/workerd-windows-64": "1.20230710.0" 2673 | } 2674 | }, 2675 | "wrangler": { 2676 | "version": "3.2.0", 2677 | "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.2.0.tgz", 2678 | "integrity": "sha512-Fne5c91uolV4+E0B60F/meWbD/sr/oSPBfr6x1gapu6I7Ipu5uUt29K/fuGRgXRQcVVKnd5k3fS++ruuLODoxA==", 2679 | "dev": true, 2680 | "requires": { 2681 | "@cloudflare/kv-asset-handler": "^0.2.0", 2682 | "@esbuild-plugins/node-globals-polyfill": "^0.1.1", 2683 | "@esbuild-plugins/node-modules-polyfill": "^0.1.4", 2684 | "blake3-wasm": "^2.1.5", 2685 | "chokidar": "^3.5.3", 2686 | "esbuild": "0.16.3", 2687 | "fsevents": "~2.3.2", 2688 | "miniflare": "3.20230710.0", 2689 | "nanoid": "^3.3.3", 2690 | "path-to-regexp": "^6.2.0", 2691 | "selfsigned": "^2.0.1", 2692 | "source-map": "^0.7.4", 2693 | "xxhash-wasm": "^1.0.1" 2694 | } 2695 | }, 2696 | "wrappy": { 2697 | "version": "1.0.2", 2698 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2699 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2700 | "dev": true 2701 | }, 2702 | "ws": { 2703 | "version": "8.13.0", 2704 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 2705 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 2706 | "dev": true, 2707 | "requires": {} 2708 | }, 2709 | "xxhash-wasm": { 2710 | "version": "1.0.2", 2711 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", 2712 | "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", 2713 | "dev": true 2714 | }, 2715 | "yallist": { 2716 | "version": "4.0.0", 2717 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2718 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2719 | "dev": true 2720 | }, 2721 | "youch": { 2722 | "version": "3.2.3", 2723 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", 2724 | "integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==", 2725 | "dev": true, 2726 | "requires": { 2727 | "cookie": "^0.5.0", 2728 | "mustache": "^4.2.0", 2729 | "stacktracey": "^2.1.8" 2730 | } 2731 | }, 2732 | "zod": { 2733 | "version": "3.21.4", 2734 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", 2735 | "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", 2736 | "dev": true 2737 | } 2738 | } 2739 | } 2740 | -------------------------------------------------------------------------------- /test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "prettier": "prettier --check .", 4 | "prettier:fix": "prettier --write .", 5 | "start": "wrangler dev --ip localhost --local-protocol https --port 8788" 6 | }, 7 | "devDependencies": { 8 | "wrangler": "^3.2.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/src/worker.js: -------------------------------------------------------------------------------- 1 | export default { 2 | async fetch(request, env, ctx) { 3 | // console.log(JSON.stringify(request.cf)); 4 | let temp = { 5 | // body: await response.clone().text(), 6 | cache: request.cache, 7 | cf: request.cf, 8 | credentials: request.credentials, 9 | destination: request.destination, 10 | headers: {}, 11 | integrity: request.integrity, 12 | method: request.method, 13 | mode: request.mode, 14 | redirect: request.redirect, 15 | referrer: request.referrer, 16 | referrerPolicy: request.referrerPolicy, 17 | signal: request.signal, 18 | url: request.url, 19 | }; 20 | for (const [key, value] of request.headers.entries()) { 21 | temp.headers[key] = value; 22 | } 23 | return new Response(JSON.stringify(temp, null, '\t'), { headers: { 'Content-Type': 'application/json' } }); 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /test/wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "debug-dev" 2 | main = "src/worker.js" 3 | compatibility_date = "2023-03-14" 4 | compatibility_flags = [ "nodejs_compat" ] 5 | workers_dev = true 6 | route = { pattern = "debug-dev.demosjarco.dev", custom_domain = true } 7 | usage_model = "bundled" 8 | minify = false 9 | 10 | [env.production] 11 | name = "debug" 12 | main = "src/worker.js" 13 | compatibility_date = "2023-03-14" 14 | compatibility_flags = [ "nodejs_compat" ] 15 | workers_dev = true 16 | route = { pattern = "debug.demosjarco.dev", custom_domain = true } 17 | usage_model = "bundled" 18 | minify = true -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "ESNext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | "lib": ["ESNext"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, 16 | "jsx": "react" /* Specify what JSX code is generated. */, 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "ESNext" /* Specify what module code is generated. */, 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | "moduleResolution": "NodeNext" /* Specify how TypeScript looks up a file from a given module specifier. */, 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": ["node"] /* Specify type package names to be included without being referenced in a source file. */, 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | "resolveJsonModule": true /* Enable importing .json files */, 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, 41 | "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 50 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 51 | "removeComments": true /* Disable emitting comments. */, 52 | "noEmit": true /* Disable emitting files from a compilation. */, 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 68 | 69 | /* Interop Constraints */ 70 | "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, 71 | "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, 72 | // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, 73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 74 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 75 | 76 | /* Type Checking */ 77 | "strict": true /* Enable all strict type-checking options. */, 78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 96 | 97 | /* Completeness */ 98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 100 | } 101 | } 102 | --------------------------------------------------------------------------------