├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github ├── dependabot.yml └── workflows │ ├── check-dist.yml │ ├── codeql-analysis.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .vscode └── tasks.json ├── CODEOWNERS ├── LICENSE ├── README.md ├── __tests__ └── main.test.ts ├── action.yml ├── dist ├── file.js ├── index.js ├── index.js.map ├── licenses.txt ├── serializer.js ├── sourcemap-register.js ├── validator.js ├── worker-pipeline.js ├── worker.js └── worker1.js ├── jest.config.js ├── package.json ├── pnpm-lock.yaml ├── post.js ├── src └── main.ts └── tsconfig.json /.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | lib/ 3 | node_modules/ 4 | jest.config.js 5 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["jest", "@typescript-eslint"], 3 | "extends": ["plugin:github/recommended"], 4 | "parser": "@typescript-eslint/parser", 5 | "parserOptions": { 6 | "ecmaVersion": 9, 7 | "sourceType": "module", 8 | "project": "./tsconfig.json" 9 | }, 10 | "rules": { 11 | "i18n-text/no-en": "off", 12 | "eslint-comments/no-use": "off", 13 | "import/no-namespace": "off", 14 | "no-unused-vars": "off", 15 | "@typescript-eslint/no-unused-vars": "error", 16 | "@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}], 17 | "@typescript-eslint/no-require-imports": "error", 18 | "@typescript-eslint/array-type": "error", 19 | "@typescript-eslint/await-thenable": "error", 20 | "@typescript-eslint/ban-ts-comment": "error", 21 | "camelcase": "off", 22 | "@typescript-eslint/consistent-type-assertions": "error", 23 | "@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}], 24 | "@typescript-eslint/func-call-spacing": ["error", "never"], 25 | "@typescript-eslint/no-array-constructor": "error", 26 | "@typescript-eslint/no-empty-interface": "error", 27 | "@typescript-eslint/no-explicit-any": "error", 28 | "@typescript-eslint/no-extraneous-class": "error", 29 | "@typescript-eslint/no-for-in-array": "error", 30 | "@typescript-eslint/no-inferrable-types": "error", 31 | "@typescript-eslint/no-misused-new": "error", 32 | "@typescript-eslint/no-namespace": "error", 33 | "@typescript-eslint/no-non-null-assertion": "warn", 34 | "@typescript-eslint/no-unnecessary-qualifier": "error", 35 | "@typescript-eslint/no-unnecessary-type-assertion": "error", 36 | "@typescript-eslint/no-useless-constructor": "error", 37 | "@typescript-eslint/no-var-requires": "error", 38 | "@typescript-eslint/prefer-for-of": "warn", 39 | "@typescript-eslint/prefer-function-type": "warn", 40 | "@typescript-eslint/prefer-includes": "error", 41 | "@typescript-eslint/prefer-string-starts-ends-with": "error", 42 | "@typescript-eslint/promise-function-async": "error", 43 | "@typescript-eslint/require-array-sort-compare": "error", 44 | "@typescript-eslint/restrict-plus-operands": "error", 45 | "semi": "off", 46 | "@typescript-eslint/semi": ["error", "never"], 47 | "@typescript-eslint/type-annotation-spacing": "error", 48 | "@typescript-eslint/unbound-method": "error" 49 | }, 50 | "env": { 51 | "node": true, 52 | "es6": true, 53 | "jest/globals": true 54 | } 55 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | dist/** -diff linguist-generated=true -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: daily 7 | 8 | - package-ecosystem: npm 9 | directory: / 10 | schedule: 11 | interval: daily 12 | -------------------------------------------------------------------------------- /.github/workflows/check-dist.yml: -------------------------------------------------------------------------------- 1 | # `dist/index.js` is a special file in Actions. 2 | # When you reference an action with `uses:` in a workflow, 3 | # `index.js` is the code that will run. 4 | # For our project, we generate this file through a build process from other source files. 5 | # We need to make sure the checked-in `index.js` actually matches what we expect it to be. 6 | name: Check dist/ 7 | 8 | on: 9 | push: 10 | branches: 11 | - main 12 | paths-ignore: 13 | - '**.md' 14 | pull_request: 15 | paths-ignore: 16 | - '**.md' 17 | workflow_dispatch: 18 | 19 | jobs: 20 | check-dist: 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | 26 | - uses: pnpm/action-setup@v2 27 | with: 28 | version: 8 29 | 30 | - name: Set Node.js 20.x 31 | uses: actions/setup-node@v4 32 | with: 33 | node-version: 20.x 34 | cache: pnpm 35 | 36 | - name: Install dependencies 37 | run: pnpm i 38 | 39 | - name: Rebuild the dist/ directory 40 | run: | 41 | pnpm run build 42 | pnpm run package 43 | 44 | - name: Compare the expected and actual dist/ directories 45 | run: | 46 | if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then 47 | echo "Detected uncommitted changes after build. See status below:" 48 | git diff 49 | exit 1 50 | fi 51 | id: diff 52 | 53 | # If index.js was different than expected, upload the expected version as an artifact 54 | - uses: actions/upload-artifact@v2 55 | if: ${{ failure() && steps.diff.conclusion == 'failure' }} 56 | with: 57 | name: dist 58 | path: dist/ 59 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ main ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ main ] 20 | schedule: 21 | - cron: '31 7 * * 3' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'TypeScript' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 37 | # Learn more about CodeQL language support at https://git.io/codeql-language-support 38 | 39 | steps: 40 | - name: Checkout repository 41 | uses: actions/checkout@v4 42 | 43 | # Initializes the CodeQL tools for scanning. 44 | - name: Initialize CodeQL 45 | uses: github/codeql-action/init@v1 46 | with: 47 | languages: ${{ matrix.language }} 48 | source-root: src 49 | # If you wish to specify custom queries, you can do so here or in a config file. 50 | # By default, queries listed here will override any specified in a config file. 51 | # Prefix the list here with "+" to use these queries and those in the config file. 52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 53 | 54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 55 | # If this step fails, then you should remove it and run the build manually (see below) 56 | - name: Autobuild 57 | uses: github/codeql-action/autobuild@v1 58 | 59 | # ℹ️ Command-line programs to run using the OS shell. 60 | # 📚 https://git.io/JvXDl 61 | 62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 63 | # and modify them (or add more) to build your code if your project 64 | # uses a compiled language 65 | 66 | #- run: | 67 | # make bootstrap 68 | # make release 69 | 70 | - name: Perform CodeQL Analysis 71 | uses: github/codeql-action/analyze@v1 72 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: 'build-test' 2 | on: # rebuild any PRs and main branch changes 3 | pull_request: 4 | push: 5 | branches: 6 | - main 7 | - 'releases/*' 8 | 9 | jobs: 10 | build: # make sure build/ci work properly 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: pnpm/action-setup@v2 15 | with: 16 | version: 8 17 | - name: Set Node.js 20.x 18 | uses: actions/setup-node@v4 19 | with: 20 | node-version: 20.x 21 | cache: pnpm 22 | - run: | 23 | pnpm install 24 | - run: | 25 | pnpm run all 26 | test: # make sure the action works on a clean machine without building 27 | runs-on: ubuntu-latest 28 | steps: 29 | - uses: actions/checkout@v3 30 | - uses: ./ 31 | - uses: actions/checkout@v3 32 | with: 33 | repository: dtinth/turbo-caching-test 34 | path: demo 35 | - uses: pnpm/action-setup@v2 36 | with: 37 | version: 7 38 | - name: Set Node.js 20.x 39 | uses: actions/setup-node@v4 40 | with: 41 | node-version: 20.x 42 | cache: pnpm 43 | - run: cd demo && pnpm install && pnpm turbo build 44 | # # For interactive debugging 45 | # - name: Setup tmate session 46 | # uses: mxschmitt/action-tmate@v3 47 | # with: 48 | # limit-access-to-actor: true 49 | # timeout-minutes: 15 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependency directory 2 | node_modules 3 | 4 | # Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # nyc test coverage 30 | .nyc_output 31 | 32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 | .grunt 34 | 35 | # Bower dependency directory (https://bower.io/) 36 | bower_components 37 | 38 | # node-waf configuration 39 | .lock-wscript 40 | 41 | # Compiled binary addons (https://nodejs.org/api/addons.html) 42 | build/Release 43 | 44 | # Dependency directories 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional REPL history 60 | .node_repl_history 61 | 62 | # Output of 'npm pack' 63 | *.tgz 64 | 65 | # Yarn Integrity file 66 | .yarn-integrity 67 | 68 | # dotenv environment variables file 69 | .env 70 | .env.test 71 | 72 | # parcel-bundler cache (https://parceljs.org/) 73 | .cache 74 | 75 | # next.js build output 76 | .next 77 | 78 | # nuxt.js build output 79 | .nuxt 80 | 81 | # vuepress build output 82 | .vuepress/dist 83 | 84 | # Serverless directories 85 | .serverless/ 86 | 87 | # FuseBox cache 88 | .fusebox/ 89 | 90 | # DynamoDB Local files 91 | .dynamodb/ 92 | 93 | # OS metadata 94 | .DS_Store 95 | Thumbs.db 96 | 97 | # Ignore built ts files 98 | __tests__/runner/* 99 | lib/**/* -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | lib/ 3 | node_modules/ -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "semi": false, 6 | "singleQuote": true, 7 | "trailingComma": "none", 8 | "bracketSpacing": false, 9 | "arrowParens": "avoid" 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "typescript", 6 | "tsconfig": "tsconfig.json", 7 | "option": "watch", 8 | "problemMatcher": [ 9 | "$tsc-watch" 10 | ], 11 | "group": "build", 12 | "label": "tsc: watch - tsconfig.json" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @actions/actions-runtime 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2018 GitHub, Inc. and contributors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > [!NOTE] 2 | > **Users are recommended to use [rharkor/caching-for-turbo](https://github.com/marketplace/actions/caching-for-turborepo) instead.** It is a drop-in replacement, so existing users can migrate easily. 3 | 4 | > [!WARNING] 5 | > This action is no longer actively maintained, and there have been [breaking changes to the underlying API](https://github.com/dtinth/setup-github-actions-caching-for-turbo/issues/26#issuecomment-2166446362) that makes this action no longer work. 6 | 7 | --- 8 | 9 | _Original README file contents below:_ 10 | 11 |

12 | turbogha, Turborepo Remote Caching Server API implementation for GitHub Actions 13 |

14 | 15 |

16 | typescript-action status 17 |

18 | 19 | The `dtinth/setup-github-actions-caching-for-turbo` action launches a [custom Turborepo Remote Caching Server](https://turbo.build/repo/docs/core-concepts/remote-caching#custom-remote-caches) (codenamed “turbogha”) that leverages [GitHub Actions’ Cache Service API](https://github.com/tonistiigi/go-actions-cache/blob/master/api.md) as a backing storage, and then configures Turborepo to use it. 20 | 21 | ## How to use 22 | 23 | Add this to your GitHub Actions workflow, **before** running `turbo build`. 24 | 25 | 26 | ```yaml 27 | - uses: dtinth/setup-github-actions-caching-for-turbo@v1 28 | ``` 29 | 30 | The action will: 31 | 32 | 1. Launch a server on `localhost:41230` (and waits for it to be ready). 33 | 34 | 2. Exports the `TURBO_API`, `TURBO_TOKEN` and `TURBO_TEAM` environment variables for use by `turbo build`. 35 | 36 | 3. Sets up a post-build step to print the server logs (for debugging). 37 | 38 | ## Configuration 39 | 40 | Configuration is optional. Here are the available options and their default values: 41 | 42 | 43 | ```yaml 44 | with: 45 | # Set the prefix for the cache keys. 46 | cache-prefix: turbogha_ 47 | ``` 48 | 49 | ## Disclaimer 50 | 51 | This project is experimental and is provided as-is. It relies on [GitHub Actions Cache Service API](https://github.com/tonistiigi/go-actions-cache/blob/master/api.md), for which there is no official documentation (however [it’s been used by Docker Build as a cache backend for a long time](https://docs.docker.com/build/cache/backends/gha/)). It is only tested to work with GitHub Actions’ hosted runners running on Linux. Please do not expect that it will be stable or work in all cases. Feel free to open an issue if you have any questions or problems, but I have no plans to provide support beyond my own use cases. If you need this action to work in your use case, you are welcome to fork this project and make changes to suit your needs in accordance with the [MIT License](LICENSE). 52 | -------------------------------------------------------------------------------- /__tests__/main.test.ts: -------------------------------------------------------------------------------- 1 | import * as process from 'process' 2 | import * as cp from 'child_process' 3 | import * as path from 'path' 4 | import {expect, test} from '@jest/globals' 5 | import {beforeAll} from '@jest/globals' 6 | import axios from 'axios' 7 | 8 | beforeAll(() => { 9 | const np = process.execPath 10 | const ip = path.join(__dirname, '..', 'lib', 'main.js') 11 | cp.spawnSync(np, [ip], {stdio: 'inherit'}) 12 | }) 13 | 14 | it('works', async () => { 15 | const {data} = await axios.get('http://localhost:41230/') 16 | expect(data).toEqual({ok: true}) 17 | }) 18 | 19 | it('can save and load', async () => { 20 | await axios.put( 21 | 'http://localhost:41230/v8/artifacts/123', 22 | Buffer.from('meow'), 23 | { 24 | headers: { 25 | 'Content-Type': 'application/octet-stream' 26 | } 27 | } 28 | ) 29 | const {data} = await axios.get('http://localhost:41230/v8/artifacts/123', { 30 | responseType: 'arraybuffer' 31 | }) 32 | expect(Buffer.from(data).toString()).toEqual('meow') 33 | }) 34 | 35 | afterAll(async () => { 36 | await axios.delete('http://localhost:41230/self') 37 | }) 38 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'Set up GitHub Actions caching for Turborepo' 2 | description: 'Sets up Turborepo Remote Caching to work with GitHub Actions’ built-in cache. No Vercel account access tokens needed.' 3 | author: 'Thai Pangsakulyanont' 4 | branding: 5 | icon: cloud-lightning 6 | color: blue 7 | runs: 8 | using: 'node20' 9 | main: 'dist/index.js' 10 | post: 'post.js' 11 | inputs: 12 | cache-prefix: 13 | description: 'Prefix for the cache key' 14 | required: false 15 | default: turbogha_ 16 | -------------------------------------------------------------------------------- /dist/file.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const pino = require('./pino') 4 | const { once } = require('events') 5 | 6 | module.exports = async function (opts = {}) { 7 | const destOpts = Object.assign({}, opts, { dest: opts.destination || 1, sync: false }) 8 | delete destOpts.destination 9 | const destination = pino.destination(destOpts) 10 | await once(destination, 'ready') 11 | return destination 12 | } 13 | -------------------------------------------------------------------------------- /dist/licenses.txt: -------------------------------------------------------------------------------- 1 | @actions/core 2 | MIT 3 | The MIT License (MIT) 4 | 5 | Copyright 2019 GitHub 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | 13 | @actions/http-client 14 | MIT 15 | Actions Http Client for Node.js 16 | 17 | Copyright (c) GitHub, Inc. 18 | 19 | All rights reserved. 20 | 21 | MIT License 22 | 23 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 24 | associated documentation files (the "Software"), to deal in the Software without restriction, 25 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 26 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 27 | subject to the following conditions: 28 | 29 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 32 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 33 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 34 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 35 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 36 | 37 | 38 | @fastify/ajv-compiler 39 | MIT 40 | MIT License 41 | 42 | Copyright (c) The Fastify Team 43 | 44 | The Fastify team members are listed at https://github.com/fastify/fastify#team 45 | and in the README file. 46 | 47 | Permission is hereby granted, free of charge, to any person obtaining a copy 48 | of this software and associated documentation files (the "Software"), to deal 49 | in the Software without restriction, including without limitation the rights 50 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 51 | copies of the Software, and to permit persons to whom the Software is 52 | furnished to do so, subject to the following conditions: 53 | 54 | The above copyright notice and this permission notice shall be included in all 55 | copies or substantial portions of the Software. 56 | 57 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 58 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 59 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 60 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 61 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 62 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 63 | SOFTWARE. 64 | 65 | 66 | @fastify/deepmerge 67 | MIT 68 | MIT License 69 | 70 | Copyright (c) The Fastify Team 71 | 72 | The Fastify team members are listed at https://github.com/fastify/fastify#team 73 | and in the README file. 74 | 75 | Permission is hereby granted, free of charge, to any person obtaining a copy 76 | of this software and associated documentation files (the "Software"), to deal 77 | in the Software without restriction, including without limitation the rights 78 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 79 | copies of the Software, and to permit persons to whom the Software is 80 | furnished to do so, subject to the following conditions: 81 | 82 | The above copyright notice and this permission notice shall be included in all 83 | copies or substantial portions of the Software. 84 | 85 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 86 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 87 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 88 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 89 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 90 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 91 | SOFTWARE. 92 | 93 | @fastify/error 94 | MIT 95 | MIT License 96 | 97 | Copyright (c) 2020 Fastify 98 | 99 | Permission is hereby granted, free of charge, to any person obtaining a copy 100 | of this software and associated documentation files (the "Software"), to deal 101 | in the Software without restriction, including without limitation the rights 102 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 103 | copies of the Software, and to permit persons to whom the Software is 104 | furnished to do so, subject to the following conditions: 105 | 106 | The above copyright notice and this permission notice shall be included in all 107 | copies or substantial portions of the Software. 108 | 109 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 110 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 111 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 112 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 113 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 114 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 115 | SOFTWARE. 116 | 117 | 118 | @fastify/fast-json-stringify-compiler 119 | MIT 120 | MIT License 121 | 122 | Copyright (c) 2022 Fastify 123 | 124 | Permission is hereby granted, free of charge, to any person obtaining a copy 125 | of this software and associated documentation files (the "Software"), to deal 126 | in the Software without restriction, including without limitation the rights 127 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 128 | copies of the Software, and to permit persons to whom the Software is 129 | furnished to do so, subject to the following conditions: 130 | 131 | The above copyright notice and this permission notice shall be included in all 132 | copies or substantial portions of the Software. 133 | 134 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 135 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 136 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 137 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 138 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 139 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 140 | SOFTWARE. 141 | 142 | 143 | @hapi/hoek 144 | BSD-3-Clause 145 | Copyright (c) 2011-2020, Sideway Inc, and project contributors 146 | Copyright (c) 2011-2014, Walmart 147 | Copyright (c) 2011, Yahoo Inc. 148 | 149 | All rights reserved. 150 | 151 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 152 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 153 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 154 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 155 | 156 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 157 | 158 | 159 | @hapi/topo 160 | BSD-3-Clause 161 | Copyright (c) 2012-2020, Sideway Inc, and project contributors 162 | Copyright (c) 2012-2014, Walmart. 163 | All rights reserved. 164 | 165 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 166 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 167 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 168 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 169 | 170 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 171 | 172 | 173 | @sideway/address 174 | BSD-3-Clause 175 | Copyright (c) 2019-2020, Sideway, Inc. and Project contributors 176 | All rights reserved. 177 | 178 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 179 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 180 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 181 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 182 | 183 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 184 | 185 | 186 | @sideway/formula 187 | BSD-3-Clause 188 | Copyright (c) 2019-2020, Sideway. Inc, and project contributors 189 | All rights reserved. 190 | 191 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 192 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 193 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 194 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 195 | 196 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 197 | 198 | 199 | @sideway/pinpoint 200 | BSD-3-Clause 201 | Copyright (c) 2019-2020, Sideway. Inc, and project contributors 202 | 203 | All rights reserved. 204 | 205 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 206 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 207 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 208 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 209 | 210 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS OFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 211 | 212 | 213 | abstract-logging 214 | MIT 215 | 216 | ajv 217 | MIT 218 | The MIT License (MIT) 219 | 220 | Copyright (c) 2015-2021 Evgeny Poberezkin 221 | 222 | Permission is hereby granted, free of charge, to any person obtaining a copy 223 | of this software and associated documentation files (the "Software"), to deal 224 | in the Software without restriction, including without limitation the rights 225 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 226 | copies of the Software, and to permit persons to whom the Software is 227 | furnished to do so, subject to the following conditions: 228 | 229 | The above copyright notice and this permission notice shall be included in all 230 | copies or substantial portions of the Software. 231 | 232 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 233 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 234 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 235 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 236 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 237 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 238 | SOFTWARE. 239 | 240 | 241 | 242 | ajv-formats 243 | MIT 244 | MIT License 245 | 246 | Copyright (c) 2020 Evgeny Poberezkin 247 | 248 | Permission is hereby granted, free of charge, to any person obtaining a copy 249 | of this software and associated documentation files (the "Software"), to deal 250 | in the Software without restriction, including without limitation the rights 251 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 252 | copies of the Software, and to permit persons to whom the Software is 253 | furnished to do so, subject to the following conditions: 254 | 255 | The above copyright notice and this permission notice shall be included in all 256 | copies or substantial portions of the Software. 257 | 258 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 259 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 260 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 261 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 262 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 263 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 264 | SOFTWARE. 265 | 266 | 267 | archy 268 | MIT 269 | This software is released under the MIT license: 270 | 271 | Permission is hereby granted, free of charge, to any person obtaining a copy of 272 | this software and associated documentation files (the "Software"), to deal in 273 | the Software without restriction, including without limitation the rights to 274 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 275 | the Software, and to permit persons to whom the Software is furnished to do so, 276 | subject to the following conditions: 277 | 278 | The above copyright notice and this permission notice shall be included in all 279 | copies or substantial portions of the Software. 280 | 281 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 282 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 283 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 284 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 285 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 286 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 287 | 288 | 289 | asynckit 290 | MIT 291 | The MIT License (MIT) 292 | 293 | Copyright (c) 2016 Alex Indigo 294 | 295 | Permission is hereby granted, free of charge, to any person obtaining a copy 296 | of this software and associated documentation files (the "Software"), to deal 297 | in the Software without restriction, including without limitation the rights 298 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 299 | copies of the Software, and to permit persons to whom the Software is 300 | furnished to do so, subject to the following conditions: 301 | 302 | The above copyright notice and this permission notice shall be included in all 303 | copies or substantial portions of the Software. 304 | 305 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 306 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 307 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 308 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 309 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 310 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 311 | SOFTWARE. 312 | 313 | 314 | atomic-sleep 315 | MIT 316 | The MIT License (MIT) 317 | Copyright (c) 2020 David Mark Clements 318 | 319 | 320 | Permission is hereby granted, free of charge, to any person obtaining a copy 321 | of this software and associated documentation files (the "Software"), to deal 322 | in the Software without restriction, including without limitation the rights 323 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 324 | copies of the Software, and to permit persons to whom the Software is 325 | furnished to do so, subject to the following conditions: 326 | 327 | The above copyright notice and this permission notice shall be included in all 328 | copies or substantial portions of the Software. 329 | 330 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 331 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 332 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 333 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 334 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 335 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 336 | OR OTHER DEALINGS IN THE SOFTWARE. 337 | 338 | 339 | 340 | avvio 341 | MIT 342 | MIT License 343 | 344 | Copyright (c) 2016-2020 Matteo Collina 345 | 346 | Permission is hereby granted, free of charge, to any person obtaining a copy 347 | of this software and associated documentation files (the "Software"), to deal 348 | in the Software without restriction, including without limitation the rights 349 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 350 | copies of the Software, and to permit persons to whom the Software is 351 | furnished to do so, subject to the following conditions: 352 | 353 | The above copyright notice and this permission notice shall be included in all 354 | copies or substantial portions of the Software. 355 | 356 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 357 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 358 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 359 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 360 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 361 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 362 | SOFTWARE. 363 | 364 | 365 | axios 366 | MIT 367 | # Copyright (c) 2014-present Matt Zabriskie & Collaborators 368 | 369 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 370 | 371 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 372 | 373 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 374 | 375 | 376 | combined-stream 377 | MIT 378 | Copyright (c) 2011 Debuggable Limited 379 | 380 | Permission is hereby granted, free of charge, to any person obtaining a copy 381 | of this software and associated documentation files (the "Software"), to deal 382 | in the Software without restriction, including without limitation the rights 383 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 384 | copies of the Software, and to permit persons to whom the Software is 385 | furnished to do so, subject to the following conditions: 386 | 387 | The above copyright notice and this permission notice shall be included in 388 | all copies or substantial portions of the Software. 389 | 390 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 391 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 392 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 393 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 394 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 395 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 396 | THE SOFTWARE. 397 | 398 | 399 | cookie 400 | MIT 401 | (The MIT License) 402 | 403 | Copyright (c) 2012-2014 Roman Shtylman 404 | Copyright (c) 2015 Douglas Christopher Wilson 405 | 406 | Permission is hereby granted, free of charge, to any person obtaining 407 | a copy of this software and associated documentation files (the 408 | 'Software'), to deal in the Software without restriction, including 409 | without limitation the rights to use, copy, modify, merge, publish, 410 | distribute, sublicense, and/or sell copies of the Software, and to 411 | permit persons to whom the Software is furnished to do so, subject to 412 | the following conditions: 413 | 414 | The above copyright notice and this permission notice shall be 415 | included in all copies or substantial portions of the Software. 416 | 417 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 418 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 419 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 420 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 421 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 422 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 423 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 424 | 425 | 426 | 427 | debug 428 | MIT 429 | (The MIT License) 430 | 431 | Copyright (c) 2014-2017 TJ Holowaychuk 432 | Copyright (c) 2018-2021 Josh Junon 433 | 434 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 435 | and associated documentation files (the 'Software'), to deal in the Software without restriction, 436 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 437 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 438 | subject to the following conditions: 439 | 440 | The above copyright notice and this permission notice shall be included in all copies or substantial 441 | portions of the Software. 442 | 443 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 444 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 445 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 446 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 447 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 448 | 449 | 450 | 451 | delayed-stream 452 | MIT 453 | Copyright (c) 2011 Debuggable Limited 454 | 455 | Permission is hereby granted, free of charge, to any person obtaining a copy 456 | of this software and associated documentation files (the "Software"), to deal 457 | in the Software without restriction, including without limitation the rights 458 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 459 | copies of the Software, and to permit persons to whom the Software is 460 | furnished to do so, subject to the following conditions: 461 | 462 | The above copyright notice and this permission notice shall be included in 463 | all copies or substantial portions of the Software. 464 | 465 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 466 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 467 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 468 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 469 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 470 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 471 | THE SOFTWARE. 472 | 473 | 474 | fast-content-type-parse 475 | MIT 476 | MIT License 477 | 478 | Copyright (c) 2023 The Fastify Team 479 | 480 | The Fastify team members are listed at https://github.com/fastify/fastify#team 481 | and in the README file. 482 | 483 | Permission is hereby granted, free of charge, to any person obtaining a copy 484 | of this software and associated documentation files (the "Software"), to deal 485 | in the Software without restriction, including without limitation the rights 486 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 487 | copies of the Software, and to permit persons to whom the Software is 488 | furnished to do so, subject to the following conditions: 489 | 490 | The above copyright notice and this permission notice shall be included in all 491 | copies or substantial portions of the Software. 492 | 493 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 494 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 495 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 496 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 497 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 498 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 499 | SOFTWARE. 500 | 501 | fast-decode-uri-component 502 | MIT 503 | MIT License 504 | 505 | Copyright (c) 2018 Tomas Della Vedova 506 | Copyright (c) 2017 Justin Ridgewell 507 | Copyright (c) 2008-2009 Bjoern Hoehrmann 508 | 509 | Permission is hereby granted, free of charge, to any person obtaining a copy 510 | of this software and associated documentation files (the "Software"), to deal 511 | in the Software without restriction, including without limitation the rights 512 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 513 | copies of the Software, and to permit persons to whom the Software is 514 | furnished to do so, subject to the following conditions: 515 | 516 | The above copyright notice and this permission notice shall be included in all 517 | copies or substantial portions of the Software. 518 | 519 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 520 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 521 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 522 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 523 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 524 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 525 | SOFTWARE. 526 | 527 | 528 | fast-deep-equal 529 | MIT 530 | MIT License 531 | 532 | Copyright (c) 2017 Evgeny Poberezkin 533 | 534 | Permission is hereby granted, free of charge, to any person obtaining a copy 535 | of this software and associated documentation files (the "Software"), to deal 536 | in the Software without restriction, including without limitation the rights 537 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 538 | copies of the Software, and to permit persons to whom the Software is 539 | furnished to do so, subject to the following conditions: 540 | 541 | The above copyright notice and this permission notice shall be included in all 542 | copies or substantial portions of the Software. 543 | 544 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 545 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 546 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 547 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 548 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 549 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 550 | SOFTWARE. 551 | 552 | 553 | fast-json-stringify 554 | MIT 555 | The MIT License (MIT) 556 | 557 | Copyright (c) 2016-2018 Matteo Collina 558 | 559 | Permission is hereby granted, free of charge, to any person obtaining a copy 560 | of this software and associated documentation files (the "Software"), to deal 561 | in the Software without restriction, including without limitation the rights 562 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 563 | copies of the Software, and to permit persons to whom the Software is 564 | furnished to do so, subject to the following conditions: 565 | 566 | The above copyright notice and this permission notice shall be included in all 567 | copies or substantial portions of the Software. 568 | 569 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 570 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 571 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 572 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 573 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 574 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 575 | SOFTWARE. 576 | 577 | 578 | fast-querystring 579 | MIT 580 | Copyright (c) 2022 Yagiz Nizipli 581 | 582 | Permission is hereby granted, free of charge, to any 583 | person obtaining a copy of this software and associated 584 | documentation files (the "Software"), to deal in the 585 | Software without restriction, including without 586 | limitation the rights to use, copy, modify, merge, 587 | publish, distribute, sublicense, and/or sell copies of 588 | the Software, and to permit persons to whom the Software 589 | is furnished to do so, subject to the following 590 | conditions: 591 | 592 | The above copyright notice and this permission notice 593 | shall be included in all copies or substantial portions 594 | of the Software. 595 | 596 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 597 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 598 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 599 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 600 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 601 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 602 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 603 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 604 | DEALINGS IN THE SOFTWARE. 605 | 606 | 607 | fast-redact 608 | MIT 609 | The MIT License (MIT) 610 | 611 | Copyright (c) 2019-2020 David Mark Clements 612 | 613 | Permission is hereby granted, free of charge, to any person obtaining a copy 614 | of this software and associated documentation files (the "Software"), to deal 615 | in the Software without restriction, including without limitation the rights 616 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 617 | copies of the Software, and to permit persons to whom the Software is 618 | furnished to do so, subject to the following conditions: 619 | 620 | The above copyright notice and this permission notice shall be included in all 621 | copies or substantial portions of the Software. 622 | 623 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 624 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 625 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 626 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 627 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 628 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 629 | SOFTWARE. 630 | 631 | fast-uri 632 | MIT 633 | Copyright (c) 2021 The Fastify Team 634 | Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae 635 | All rights reserved. 636 | 637 | Redistribution and use in source and binary forms, with or without 638 | modification, are permitted provided that the following conditions are met: 639 | * Redistributions of source code must retain the above copyright 640 | notice, this list of conditions and the following disclaimer. 641 | * Redistributions in binary form must reproduce the above copyright 642 | notice, this list of conditions and the following disclaimer in the 643 | documentation and/or other materials provided with the distribution. 644 | * The names of any contributors may not be used to endorse or promote 645 | products derived from this software without specific prior written 646 | permission. 647 | 648 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 649 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 650 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 651 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY 652 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 653 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 654 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 655 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 656 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 657 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 658 | 659 | * * * 660 | 661 | The complete list of contributors can be found at: 662 | - https://github.com/garycourt/uri-js/graphs/contributors 663 | 664 | fastify 665 | MIT 666 | MIT License 667 | 668 | Copyright (c) 2016-2023 The Fastify Team 669 | 670 | The Fastify team members are listed at https://github.com/fastify/fastify#team 671 | and in the README file. 672 | 673 | Permission is hereby granted, free of charge, to any person obtaining a copy 674 | of this software and associated documentation files (the "Software"), to deal 675 | in the Software without restriction, including without limitation the rights 676 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 677 | copies of the Software, and to permit persons to whom the Software is 678 | furnished to do so, subject to the following conditions: 679 | 680 | The above copyright notice and this permission notice shall be included in all 681 | copies or substantial portions of the Software. 682 | 683 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 684 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 685 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 686 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 687 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 688 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 689 | SOFTWARE. 690 | 691 | 692 | fastq 693 | ISC 694 | Copyright (c) 2015-2020, Matteo Collina 695 | 696 | Permission to use, copy, modify, and/or distribute this software for any 697 | purpose with or without fee is hereby granted, provided that the above 698 | copyright notice and this permission notice appear in all copies. 699 | 700 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 701 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 702 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 703 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 704 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 705 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 706 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 707 | 708 | 709 | find-my-way 710 | MIT 711 | MIT License 712 | 713 | Copyright (c) 2017-2019 Tomas Della Vedova 714 | 715 | Permission is hereby granted, free of charge, to any person obtaining a copy 716 | of this software and associated documentation files (the "Software"), to deal 717 | in the Software without restriction, including without limitation the rights 718 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 719 | copies of the Software, and to permit persons to whom the Software is 720 | furnished to do so, subject to the following conditions: 721 | 722 | The above copyright notice and this permission notice shall be included in all 723 | copies or substantial portions of the Software. 724 | 725 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 726 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 727 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 728 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 729 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 730 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 731 | SOFTWARE. 732 | 733 | 734 | follow-redirects 735 | MIT 736 | Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh 737 | 738 | Permission is hereby granted, free of charge, to any person obtaining a copy of 739 | this software and associated documentation files (the "Software"), to deal in 740 | the Software without restriction, including without limitation the rights to 741 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 742 | of the Software, and to permit persons to whom the Software is furnished to do 743 | so, subject to the following conditions: 744 | 745 | The above copyright notice and this permission notice shall be included in all 746 | copies or substantial portions of the Software. 747 | 748 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 749 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 750 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 751 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 752 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 753 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 754 | 755 | 756 | form-data 757 | MIT 758 | Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors 759 | 760 | Permission is hereby granted, free of charge, to any person obtaining a copy 761 | of this software and associated documentation files (the "Software"), to deal 762 | in the Software without restriction, including without limitation the rights 763 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 764 | copies of the Software, and to permit persons to whom the Software is 765 | furnished to do so, subject to the following conditions: 766 | 767 | The above copyright notice and this permission notice shall be included in 768 | all copies or substantial portions of the Software. 769 | 770 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 771 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 772 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 773 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 774 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 775 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 776 | THE SOFTWARE. 777 | 778 | 779 | forwarded 780 | MIT 781 | (The MIT License) 782 | 783 | Copyright (c) 2014-2017 Douglas Christopher Wilson 784 | 785 | Permission is hereby granted, free of charge, to any person obtaining 786 | a copy of this software and associated documentation files (the 787 | 'Software'), to deal in the Software without restriction, including 788 | without limitation the rights to use, copy, modify, merge, publish, 789 | distribute, sublicense, and/or sell copies of the Software, and to 790 | permit persons to whom the Software is furnished to do so, subject to 791 | the following conditions: 792 | 793 | The above copyright notice and this permission notice shall be 794 | included in all copies or substantial portions of the Software. 795 | 796 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 797 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 798 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 799 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 800 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 801 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 802 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 803 | 804 | 805 | has-flag 806 | MIT 807 | MIT License 808 | 809 | Copyright (c) Sindre Sorhus (sindresorhus.com) 810 | 811 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 812 | 813 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 814 | 815 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 816 | 817 | 818 | ipaddr.js 819 | MIT 820 | Copyright (C) 2011-2017 whitequark 821 | 822 | Permission is hereby granted, free of charge, to any person obtaining a copy 823 | of this software and associated documentation files (the "Software"), to deal 824 | in the Software without restriction, including without limitation the rights 825 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 826 | copies of the Software, and to permit persons to whom the Software is 827 | furnished to do so, subject to the following conditions: 828 | 829 | The above copyright notice and this permission notice shall be included in 830 | all copies or substantial portions of the Software. 831 | 832 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 833 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 834 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 835 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 836 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 837 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 838 | THE SOFTWARE. 839 | 840 | 841 | joi 842 | BSD-3-Clause 843 | Copyright (c) 2012-2022, Project contributors. 844 | Copyright (c) 2012-2022, Sideway. Inc. 845 | Copyright (c) 2012-2014, Walmart. 846 | All rights reserved. 847 | 848 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 849 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 850 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 851 | * The names of any contributors may not be used to endorse or promote products derived from this software without specific prior written permission. 852 | 853 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 854 | 855 | 856 | json-schema-ref-resolver 857 | MIT 858 | MIT License 859 | 860 | Copyright (c) 2023 Fastify 861 | 862 | Permission is hereby granted, free of charge, to any person obtaining a copy 863 | of this software and associated documentation files (the "Software"), to deal 864 | in the Software without restriction, including without limitation the rights 865 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 866 | copies of the Software, and to permit persons to whom the Software is 867 | furnished to do so, subject to the following conditions: 868 | 869 | The above copyright notice and this permission notice shall be included in all 870 | copies or substantial portions of the Software. 871 | 872 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 873 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 874 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 875 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 876 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 877 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 878 | SOFTWARE. 879 | 880 | 881 | json-schema-traverse 882 | MIT 883 | MIT License 884 | 885 | Copyright (c) 2017 Evgeny Poberezkin 886 | 887 | Permission is hereby granted, free of charge, to any person obtaining a copy 888 | of this software and associated documentation files (the "Software"), to deal 889 | in the Software without restriction, including without limitation the rights 890 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 891 | copies of the Software, and to permit persons to whom the Software is 892 | furnished to do so, subject to the following conditions: 893 | 894 | The above copyright notice and this permission notice shall be included in all 895 | copies or substantial portions of the Software. 896 | 897 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 898 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 899 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 900 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 901 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 902 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 903 | SOFTWARE. 904 | 905 | 906 | lazy-strict-env 907 | 908 | light-my-request 909 | BSD-3-Clause 910 | Copyright (c) 2017 The Fastify Team 911 | Copyright (c) 2012-2017, Project contributors 912 | Copyright (c) 2012-2014, Walmart 913 | All rights reserved. 914 | 915 | Redistribution and use in source and binary forms, with or without 916 | modification, are permitted provided that the following conditions are met: 917 | * Redistributions of source code must retain the above copyright 918 | notice, this list of conditions and the following disclaimer. 919 | * Redistributions in binary form must reproduce the above copyright 920 | notice, this list of conditions and the following disclaimer in the 921 | documentation and/or other materials provided with the distribution. 922 | * The names of any contributors may not be used to endorse or promote 923 | products derived from this software without specific prior written 924 | permission. 925 | 926 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 927 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 928 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 929 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY 930 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 931 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 932 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 933 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 934 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 935 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 936 | 937 | * * * 938 | 939 | The complete list of contributors can be found at: 940 | - https://github.com/hapijs/shot/graphs/contributors 941 | - https://github.com/fastify/light-my-request/graphs/contributors 942 | 943 | 944 | lodash 945 | MIT 946 | Copyright OpenJS Foundation and other contributors 947 | 948 | Based on Underscore.js, copyright Jeremy Ashkenas, 949 | DocumentCloud and Investigative Reporters & Editors 950 | 951 | This software consists of voluntary contributions made by many 952 | individuals. For exact contribution history, see the revision history 953 | available at https://github.com/lodash/lodash 954 | 955 | The following license applies to all parts of this software except as 956 | documented below: 957 | 958 | ==== 959 | 960 | Permission is hereby granted, free of charge, to any person obtaining 961 | a copy of this software and associated documentation files (the 962 | "Software"), to deal in the Software without restriction, including 963 | without limitation the rights to use, copy, modify, merge, publish, 964 | distribute, sublicense, and/or sell copies of the Software, and to 965 | permit persons to whom the Software is furnished to do so, subject to 966 | the following conditions: 967 | 968 | The above copyright notice and this permission notice shall be 969 | included in all copies or substantial portions of the Software. 970 | 971 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 972 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 973 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 974 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 975 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 976 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 977 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 978 | 979 | ==== 980 | 981 | Copyright and related rights for sample code are waived via CC0. Sample 982 | code is defined as all source code displayed within the prose of the 983 | documentation. 984 | 985 | CC0: http://creativecommons.org/publicdomain/zero/1.0/ 986 | 987 | ==== 988 | 989 | Files located in the node_modules and vendor directories are externally 990 | maintained libraries used by this software which have their own 991 | licenses; we recommend you read them, as their terms may differ from the 992 | terms above. 993 | 994 | 995 | lru-cache 996 | ISC 997 | The ISC License 998 | 999 | Copyright (c) Isaac Z. Schlueter and Contributors 1000 | 1001 | Permission to use, copy, modify, and/or distribute this software for any 1002 | purpose with or without fee is hereby granted, provided that the above 1003 | copyright notice and this permission notice appear in all copies. 1004 | 1005 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1006 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1007 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1008 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1009 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1010 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 1011 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1012 | 1013 | 1014 | mime-db 1015 | MIT 1016 | (The MIT License) 1017 | 1018 | Copyright (c) 2014 Jonathan Ong 1019 | Copyright (c) 2015-2022 Douglas Christopher Wilson 1020 | 1021 | Permission is hereby granted, free of charge, to any person obtaining 1022 | a copy of this software and associated documentation files (the 1023 | 'Software'), to deal in the Software without restriction, including 1024 | without limitation the rights to use, copy, modify, merge, publish, 1025 | distribute, sublicense, and/or sell copies of the Software, and to 1026 | permit persons to whom the Software is furnished to do so, subject to 1027 | the following conditions: 1028 | 1029 | The above copyright notice and this permission notice shall be 1030 | included in all copies or substantial portions of the Software. 1031 | 1032 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1033 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1034 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1035 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1036 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1037 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1038 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1039 | 1040 | 1041 | mime-types 1042 | MIT 1043 | (The MIT License) 1044 | 1045 | Copyright (c) 2014 Jonathan Ong 1046 | Copyright (c) 2015 Douglas Christopher Wilson 1047 | 1048 | Permission is hereby granted, free of charge, to any person obtaining 1049 | a copy of this software and associated documentation files (the 1050 | 'Software'), to deal in the Software without restriction, including 1051 | without limitation the rights to use, copy, modify, merge, publish, 1052 | distribute, sublicense, and/or sell copies of the Software, and to 1053 | permit persons to whom the Software is furnished to do so, subject to 1054 | the following conditions: 1055 | 1056 | The above copyright notice and this permission notice shall be 1057 | included in all copies or substantial portions of the Software. 1058 | 1059 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1060 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1061 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1062 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1063 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1064 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1065 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1066 | 1067 | 1068 | ms 1069 | MIT 1070 | The MIT License (MIT) 1071 | 1072 | Copyright (c) 2016 Zeit, Inc. 1073 | 1074 | Permission is hereby granted, free of charge, to any person obtaining a copy 1075 | of this software and associated documentation files (the "Software"), to deal 1076 | in the Software without restriction, including without limitation the rights 1077 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1078 | copies of the Software, and to permit persons to whom the Software is 1079 | furnished to do so, subject to the following conditions: 1080 | 1081 | The above copyright notice and this permission notice shall be included in all 1082 | copies or substantial portions of the Software. 1083 | 1084 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1085 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1086 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1087 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1088 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1089 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1090 | SOFTWARE. 1091 | 1092 | 1093 | on-exit-leak-free 1094 | MIT 1095 | MIT License 1096 | 1097 | Copyright (c) 2021 Matteo Collina 1098 | 1099 | Permission is hereby granted, free of charge, to any person obtaining a copy 1100 | of this software and associated documentation files (the "Software"), to deal 1101 | in the Software without restriction, including without limitation the rights 1102 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1103 | copies of the Software, and to permit persons to whom the Software is 1104 | furnished to do so, subject to the following conditions: 1105 | 1106 | The above copyright notice and this permission notice shall be included in all 1107 | copies or substantial portions of the Software. 1108 | 1109 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1110 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1111 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1112 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1113 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1114 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1115 | SOFTWARE. 1116 | 1117 | 1118 | pino 1119 | MIT 1120 | The MIT License (MIT) 1121 | 1122 | Copyright (c) 2016-2019 Matteo Collina, David Mark Clements and the Pino contributors listed at https://github.com/pinojs/pino#the-team and in the README file. 1123 | 1124 | Permission is hereby granted, free of charge, to any person obtaining a copy 1125 | of this software and associated documentation files (the "Software"), to deal 1126 | in the Software without restriction, including without limitation the rights 1127 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1128 | copies of the Software, and to permit persons to whom the Software is 1129 | furnished to do so, subject to the following conditions: 1130 | 1131 | The above copyright notice and this permission notice shall be included in all 1132 | copies or substantial portions of the Software. 1133 | 1134 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1135 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1136 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1137 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1138 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1139 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1140 | SOFTWARE. 1141 | 1142 | 1143 | pino-std-serializers 1144 | MIT 1145 | Copyright Mateo Collina, David Mark Clements, James Sumners 1146 | 1147 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1148 | 1149 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1150 | 1151 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1152 | 1153 | 1154 | process-warning 1155 | MIT 1156 | MIT License 1157 | 1158 | Copyright (c) Fastify 1159 | 1160 | Permission is hereby granted, free of charge, to any person obtaining a copy 1161 | of this software and associated documentation files (the "Software"), to deal 1162 | in the Software without restriction, including without limitation the rights 1163 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1164 | copies of the Software, and to permit persons to whom the Software is 1165 | furnished to do so, subject to the following conditions: 1166 | 1167 | The above copyright notice and this permission notice shall be included in all 1168 | copies or substantial portions of the Software. 1169 | 1170 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1171 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1172 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1173 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1174 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1175 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1176 | SOFTWARE. 1177 | 1178 | 1179 | proxy-addr 1180 | MIT 1181 | (The MIT License) 1182 | 1183 | Copyright (c) 2014-2016 Douglas Christopher Wilson 1184 | 1185 | Permission is hereby granted, free of charge, to any person obtaining 1186 | a copy of this software and associated documentation files (the 1187 | 'Software'), to deal in the Software without restriction, including 1188 | without limitation the rights to use, copy, modify, merge, publish, 1189 | distribute, sublicense, and/or sell copies of the Software, and to 1190 | permit persons to whom the Software is furnished to do so, subject to 1191 | the following conditions: 1192 | 1193 | The above copyright notice and this permission notice shall be 1194 | included in all copies or substantial portions of the Software. 1195 | 1196 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1197 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1198 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1199 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1200 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1201 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1202 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1203 | 1204 | 1205 | proxy-from-env 1206 | MIT 1207 | The MIT License 1208 | 1209 | Copyright (C) 2016-2018 Rob Wu 1210 | 1211 | Permission is hereby granted, free of charge, to any person obtaining a copy of 1212 | this software and associated documentation files (the "Software"), to deal in 1213 | the Software without restriction, including without limitation the rights to 1214 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 1215 | of the Software, and to permit persons to whom the Software is furnished to do 1216 | so, subject to the following conditions: 1217 | 1218 | The above copyright notice and this permission notice shall be included in all 1219 | copies or substantial portions of the Software. 1220 | 1221 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1222 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 1223 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 1224 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 1225 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1226 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1227 | 1228 | 1229 | quick-format-unescaped 1230 | MIT 1231 | The MIT License (MIT) 1232 | 1233 | Copyright (c) 2016-2019 David Mark Clements 1234 | 1235 | Permission is hereby granted, free of charge, to any person obtaining a copy 1236 | of this software and associated documentation files (the "Software"), to deal 1237 | in the Software without restriction, including without limitation the rights 1238 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1239 | copies of the Software, and to permit persons to whom the Software is 1240 | furnished to do so, subject to the following conditions: 1241 | 1242 | The above copyright notice and this permission notice shall be included in all 1243 | copies or substantial portions of the Software. 1244 | 1245 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1246 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1247 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1248 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1249 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1250 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1251 | SOFTWARE. 1252 | 1253 | 1254 | ret 1255 | MIT 1256 | MIT License 1257 | 1258 | Copyright (C) 2011 by fent 1259 | 1260 | Permission is hereby granted, free of charge, to any person obtaining a copy 1261 | of this software and associated documentation files (the "Software"), to deal 1262 | in the Software without restriction, including without limitation the rights 1263 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1264 | copies of the Software, and to permit persons to whom the Software is 1265 | furnished to do so, subject to the following conditions: 1266 | 1267 | The above copyright notice and this permission notice shall be included in 1268 | all copies or substantial portions of the Software. 1269 | 1270 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1271 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1272 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1273 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1274 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1275 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1276 | THE SOFTWARE. 1277 | 1278 | 1279 | reusify 1280 | MIT 1281 | The MIT License (MIT) 1282 | 1283 | Copyright (c) 2015 Matteo Collina 1284 | 1285 | Permission is hereby granted, free of charge, to any person obtaining a copy 1286 | of this software and associated documentation files (the "Software"), to deal 1287 | in the Software without restriction, including without limitation the rights 1288 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1289 | copies of the Software, and to permit persons to whom the Software is 1290 | furnished to do so, subject to the following conditions: 1291 | 1292 | The above copyright notice and this permission notice shall be included in all 1293 | copies or substantial portions of the Software. 1294 | 1295 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1296 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1297 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1298 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1299 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1300 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1301 | SOFTWARE. 1302 | 1303 | 1304 | 1305 | rfdc 1306 | MIT 1307 | Copyright 2019 "David Mark Clements " 1308 | 1309 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 1310 | documentation files (the "Software"), to deal in the Software without restriction, including without limitation 1311 | the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 1312 | to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1313 | 1314 | The above copyright notice and this permission notice shall be included in all copies or substantial portions 1315 | of the Software. 1316 | 1317 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 1318 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1319 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 1320 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 1321 | IN THE SOFTWARE. 1322 | 1323 | 1324 | rxjs 1325 | Apache-2.0 1326 | Apache License 1327 | Version 2.0, January 2004 1328 | http://www.apache.org/licenses/ 1329 | 1330 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1331 | 1332 | 1. Definitions. 1333 | 1334 | "License" shall mean the terms and conditions for use, reproduction, 1335 | and distribution as defined by Sections 1 through 9 of this document. 1336 | 1337 | "Licensor" shall mean the copyright owner or entity authorized by 1338 | the copyright owner that is granting the License. 1339 | 1340 | "Legal Entity" shall mean the union of the acting entity and all 1341 | other entities that control, are controlled by, or are under common 1342 | control with that entity. For the purposes of this definition, 1343 | "control" means (i) the power, direct or indirect, to cause the 1344 | direction or management of such entity, whether by contract or 1345 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 1346 | outstanding shares, or (iii) beneficial ownership of such entity. 1347 | 1348 | "You" (or "Your") shall mean an individual or Legal Entity 1349 | exercising permissions granted by this License. 1350 | 1351 | "Source" form shall mean the preferred form for making modifications, 1352 | including but not limited to software source code, documentation 1353 | source, and configuration files. 1354 | 1355 | "Object" form shall mean any form resulting from mechanical 1356 | transformation or translation of a Source form, including but 1357 | not limited to compiled object code, generated documentation, 1358 | and conversions to other media types. 1359 | 1360 | "Work" shall mean the work of authorship, whether in Source or 1361 | Object form, made available under the License, as indicated by a 1362 | copyright notice that is included in or attached to the work 1363 | (an example is provided in the Appendix below). 1364 | 1365 | "Derivative Works" shall mean any work, whether in Source or Object 1366 | form, that is based on (or derived from) the Work and for which the 1367 | editorial revisions, annotations, elaborations, or other modifications 1368 | represent, as a whole, an original work of authorship. For the purposes 1369 | of this License, Derivative Works shall not include works that remain 1370 | separable from, or merely link (or bind by name) to the interfaces of, 1371 | the Work and Derivative Works thereof. 1372 | 1373 | "Contribution" shall mean any work of authorship, including 1374 | the original version of the Work and any modifications or additions 1375 | to that Work or Derivative Works thereof, that is intentionally 1376 | submitted to Licensor for inclusion in the Work by the copyright owner 1377 | or by an individual or Legal Entity authorized to submit on behalf of 1378 | the copyright owner. For the purposes of this definition, "submitted" 1379 | means any form of electronic, verbal, or written communication sent 1380 | to the Licensor or its representatives, including but not limited to 1381 | communication on electronic mailing lists, source code control systems, 1382 | and issue tracking systems that are managed by, or on behalf of, the 1383 | Licensor for the purpose of discussing and improving the Work, but 1384 | excluding communication that is conspicuously marked or otherwise 1385 | designated in writing by the copyright owner as "Not a Contribution." 1386 | 1387 | "Contributor" shall mean Licensor and any individual or Legal Entity 1388 | on behalf of whom a Contribution has been received by Licensor and 1389 | subsequently incorporated within the Work. 1390 | 1391 | 2. Grant of Copyright License. Subject to the terms and conditions of 1392 | this License, each Contributor hereby grants to You a perpetual, 1393 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 1394 | copyright license to reproduce, prepare Derivative Works of, 1395 | publicly display, publicly perform, sublicense, and distribute the 1396 | Work and such Derivative Works in Source or Object form. 1397 | 1398 | 3. Grant of Patent License. Subject to the terms and conditions of 1399 | this License, each Contributor hereby grants to You a perpetual, 1400 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 1401 | (except as stated in this section) patent license to make, have made, 1402 | use, offer to sell, sell, import, and otherwise transfer the Work, 1403 | where such license applies only to those patent claims licensable 1404 | by such Contributor that are necessarily infringed by their 1405 | Contribution(s) alone or by combination of their Contribution(s) 1406 | with the Work to which such Contribution(s) was submitted. If You 1407 | institute patent litigation against any entity (including a 1408 | cross-claim or counterclaim in a lawsuit) alleging that the Work 1409 | or a Contribution incorporated within the Work constitutes direct 1410 | or contributory patent infringement, then any patent licenses 1411 | granted to You under this License for that Work shall terminate 1412 | as of the date such litigation is filed. 1413 | 1414 | 4. Redistribution. You may reproduce and distribute copies of the 1415 | Work or Derivative Works thereof in any medium, with or without 1416 | modifications, and in Source or Object form, provided that You 1417 | meet the following conditions: 1418 | 1419 | (a) You must give any other recipients of the Work or 1420 | Derivative Works a copy of this License; and 1421 | 1422 | (b) You must cause any modified files to carry prominent notices 1423 | stating that You changed the files; and 1424 | 1425 | (c) You must retain, in the Source form of any Derivative Works 1426 | that You distribute, all copyright, patent, trademark, and 1427 | attribution notices from the Source form of the Work, 1428 | excluding those notices that do not pertain to any part of 1429 | the Derivative Works; and 1430 | 1431 | (d) If the Work includes a "NOTICE" text file as part of its 1432 | distribution, then any Derivative Works that You distribute must 1433 | include a readable copy of the attribution notices contained 1434 | within such NOTICE file, excluding those notices that do not 1435 | pertain to any part of the Derivative Works, in at least one 1436 | of the following places: within a NOTICE text file distributed 1437 | as part of the Derivative Works; within the Source form or 1438 | documentation, if provided along with the Derivative Works; or, 1439 | within a display generated by the Derivative Works, if and 1440 | wherever such third-party notices normally appear. The contents 1441 | of the NOTICE file are for informational purposes only and 1442 | do not modify the License. You may add Your own attribution 1443 | notices within Derivative Works that You distribute, alongside 1444 | or as an addendum to the NOTICE text from the Work, provided 1445 | that such additional attribution notices cannot be construed 1446 | as modifying the License. 1447 | 1448 | You may add Your own copyright statement to Your modifications and 1449 | may provide additional or different license terms and conditions 1450 | for use, reproduction, or distribution of Your modifications, or 1451 | for any such Derivative Works as a whole, provided Your use, 1452 | reproduction, and distribution of the Work otherwise complies with 1453 | the conditions stated in this License. 1454 | 1455 | 5. Submission of Contributions. Unless You explicitly state otherwise, 1456 | any Contribution intentionally submitted for inclusion in the Work 1457 | by You to the Licensor shall be under the terms and conditions of 1458 | this License, without any additional terms or conditions. 1459 | Notwithstanding the above, nothing herein shall supersede or modify 1460 | the terms of any separate license agreement you may have executed 1461 | with Licensor regarding such Contributions. 1462 | 1463 | 6. Trademarks. This License does not grant permission to use the trade 1464 | names, trademarks, service marks, or product names of the Licensor, 1465 | except as required for reasonable and customary use in describing the 1466 | origin of the Work and reproducing the content of the NOTICE file. 1467 | 1468 | 7. Disclaimer of Warranty. Unless required by applicable law or 1469 | agreed to in writing, Licensor provides the Work (and each 1470 | Contributor provides its Contributions) on an "AS IS" BASIS, 1471 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1472 | implied, including, without limitation, any warranties or conditions 1473 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 1474 | PARTICULAR PURPOSE. You are solely responsible for determining the 1475 | appropriateness of using or redistributing the Work and assume any 1476 | risks associated with Your exercise of permissions under this License. 1477 | 1478 | 8. Limitation of Liability. In no event and under no legal theory, 1479 | whether in tort (including negligence), contract, or otherwise, 1480 | unless required by applicable law (such as deliberate and grossly 1481 | negligent acts) or agreed to in writing, shall any Contributor be 1482 | liable to You for damages, including any direct, indirect, special, 1483 | incidental, or consequential damages of any character arising as a 1484 | result of this License or out of the use or inability to use the 1485 | Work (including but not limited to damages for loss of goodwill, 1486 | work stoppage, computer failure or malfunction, or any and all 1487 | other commercial damages or losses), even if such Contributor 1488 | has been advised of the possibility of such damages. 1489 | 1490 | 9. Accepting Warranty or Additional Liability. While redistributing 1491 | the Work or Derivative Works thereof, You may choose to offer, 1492 | and charge a fee for, acceptance of support, warranty, indemnity, 1493 | or other liability obligations and/or rights consistent with this 1494 | License. However, in accepting such obligations, You may act only 1495 | on Your own behalf and on Your sole responsibility, not on behalf 1496 | of any other Contributor, and only if You agree to indemnify, 1497 | defend, and hold each Contributor harmless for any liability 1498 | incurred by, or claims asserted against, such Contributor by reason 1499 | of your accepting any such warranty or additional liability. 1500 | 1501 | END OF TERMS AND CONDITIONS 1502 | 1503 | APPENDIX: How to apply the Apache License to your work. 1504 | 1505 | To apply the Apache License to your work, attach the following 1506 | boilerplate notice, with the fields enclosed by brackets "[]" 1507 | replaced with your own identifying information. (Don't include 1508 | the brackets!) The text should be enclosed in the appropriate 1509 | comment syntax for the file format. We also recommend that a 1510 | file or class name and description of purpose be included on the 1511 | same "printed page" as the copyright notice for easier 1512 | identification within third-party archives. 1513 | 1514 | Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors 1515 | 1516 | Licensed under the Apache License, Version 2.0 (the "License"); 1517 | you may not use this file except in compliance with the License. 1518 | You may obtain a copy of the License at 1519 | 1520 | http://www.apache.org/licenses/LICENSE-2.0 1521 | 1522 | Unless required by applicable law or agreed to in writing, software 1523 | distributed under the License is distributed on an "AS IS" BASIS, 1524 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1525 | See the License for the specific language governing permissions and 1526 | limitations under the License. 1527 | 1528 | 1529 | 1530 | safe-regex2 1531 | MIT 1532 | This software is released under the MIT license: 1533 | 1534 | Permission is hereby granted, free of charge, to any person obtaining a copy of 1535 | this software and associated documentation files (the "Software"), to deal in 1536 | the Software without restriction, including without limitation the rights to 1537 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 1538 | the Software, and to permit persons to whom the Software is furnished to do so, 1539 | subject to the following conditions: 1540 | 1541 | The above copyright notice and this permission notice shall be included in all 1542 | copies or substantial portions of the Software. 1543 | 1544 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1545 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 1546 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 1547 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 1548 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1549 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1550 | 1551 | 1552 | safe-stable-stringify 1553 | MIT 1554 | The MIT License (MIT) 1555 | 1556 | Copyright (c) Ruben Bridgewater 1557 | 1558 | Permission is hereby granted, free of charge, to any person obtaining a copy 1559 | of this software and associated documentation files (the "Software"), to deal 1560 | in the Software without restriction, including without limitation the rights 1561 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1562 | copies of the Software, and to permit persons to whom the Software is 1563 | furnished to do so, subject to the following conditions: 1564 | 1565 | The above copyright notice and this permission notice shall be included in all 1566 | copies or substantial portions of the Software. 1567 | 1568 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1569 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1570 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1571 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1572 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1573 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1574 | SOFTWARE. 1575 | 1576 | 1577 | secure-json-parse 1578 | BSD-3-Clause 1579 | Copyright (c) 2019 The Fastify Team 1580 | Copyright (c) 2019, Sideway Inc, and project contributors 1581 | All rights reserved. 1582 | 1583 | The complete list of contributors can be found at: 1584 | - https://github.com/hapijs/bourne/graphs/contributors 1585 | - https://github.com/fastify/secure-json-parse/graphs/contributors 1586 | 1587 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1588 | 1589 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 1590 | 1591 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 1592 | 1593 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 1594 | 1595 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1596 | 1597 | 1598 | semver 1599 | ISC 1600 | The ISC License 1601 | 1602 | Copyright (c) Isaac Z. Schlueter and Contributors 1603 | 1604 | Permission to use, copy, modify, and/or distribute this software for any 1605 | purpose with or without fee is hereby granted, provided that the above 1606 | copyright notice and this permission notice appear in all copies. 1607 | 1608 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1609 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1610 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1611 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1612 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1613 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 1614 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1615 | 1616 | 1617 | set-cookie-parser 1618 | MIT 1619 | The MIT License (MIT) 1620 | 1621 | Copyright (c) 2015 Nathan Friedly (http://nfriedly.com/) 1622 | 1623 | Permission is hereby granted, free of charge, to any person obtaining a copy 1624 | of this software and associated documentation files (the "Software"), to deal 1625 | in the Software without restriction, including without limitation the rights 1626 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1627 | copies of the Software, and to permit persons to whom the Software is 1628 | furnished to do so, subject to the following conditions: 1629 | 1630 | The above copyright notice and this permission notice shall be included in 1631 | all copies or substantial portions of the Software. 1632 | 1633 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1634 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1635 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1636 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1637 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1638 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1639 | THE SOFTWARE. 1640 | 1641 | 1642 | sonic-boom 1643 | MIT 1644 | MIT License 1645 | 1646 | Copyright (c) 2017 Matteo Collina 1647 | 1648 | Permission is hereby granted, free of charge, to any person obtaining a copy 1649 | of this software and associated documentation files (the "Software"), to deal 1650 | in the Software without restriction, including without limitation the rights 1651 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1652 | copies of the Software, and to permit persons to whom the Software is 1653 | furnished to do so, subject to the following conditions: 1654 | 1655 | The above copyright notice and this permission notice shall be included in all 1656 | copies or substantial portions of the Software. 1657 | 1658 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1659 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1660 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1661 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1662 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1663 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1664 | SOFTWARE. 1665 | 1666 | 1667 | supports-color 1668 | MIT 1669 | MIT License 1670 | 1671 | Copyright (c) Sindre Sorhus (sindresorhus.com) 1672 | 1673 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1674 | 1675 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1676 | 1677 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1678 | 1679 | 1680 | thread-stream 1681 | MIT 1682 | MIT License 1683 | 1684 | Copyright (c) 2021 Matteo Collina 1685 | 1686 | Permission is hereby granted, free of charge, to any person obtaining a copy 1687 | of this software and associated documentation files (the "Software"), to deal 1688 | in the Software without restriction, including without limitation the rights 1689 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1690 | copies of the Software, and to permit persons to whom the Software is 1691 | furnished to do so, subject to the following conditions: 1692 | 1693 | The above copyright notice and this permission notice shall be included in all 1694 | copies or substantial portions of the Software. 1695 | 1696 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1697 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1698 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1699 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1700 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1701 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1702 | SOFTWARE. 1703 | 1704 | 1705 | toad-cache 1706 | MIT 1707 | MIT License 1708 | 1709 | Copyright (c) 2023 Igor Savin 1710 | 1711 | Permission is hereby granted, free of charge, to any person obtaining a copy 1712 | of this software and associated documentation files (the "Software"), to deal 1713 | in the Software without restriction, including without limitation the rights 1714 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1715 | copies of the Software, and to permit persons to whom the Software is 1716 | furnished to do so, subject to the following conditions: 1717 | 1718 | The above copyright notice and this permission notice shall be included in all 1719 | copies or substantial portions of the Software. 1720 | 1721 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1722 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1723 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1724 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1725 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1726 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1727 | SOFTWARE. 1728 | 1729 | 1730 | tunnel 1731 | MIT 1732 | The MIT License (MIT) 1733 | 1734 | Copyright (c) 2012 Koichi Kobayashi 1735 | 1736 | Permission is hereby granted, free of charge, to any person obtaining a copy 1737 | of this software and associated documentation files (the "Software"), to deal 1738 | in the Software without restriction, including without limitation the rights 1739 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1740 | copies of the Software, and to permit persons to whom the Software is 1741 | furnished to do so, subject to the following conditions: 1742 | 1743 | The above copyright notice and this permission notice shall be included in 1744 | all copies or substantial portions of the Software. 1745 | 1746 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1747 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1748 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1749 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1750 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1751 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1752 | THE SOFTWARE. 1753 | 1754 | 1755 | uri-js 1756 | BSD-2-Clause 1757 | Copyright 2011 Gary Court. All rights reserved. 1758 | 1759 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1760 | 1761 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 1762 | 1763 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 1764 | 1765 | THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1766 | 1767 | The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court. 1768 | 1769 | 1770 | uuid 1771 | MIT 1772 | The MIT License (MIT) 1773 | 1774 | Copyright (c) 2010-2020 Robert Kieffer and other contributors 1775 | 1776 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1777 | 1778 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1779 | 1780 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1781 | 1782 | 1783 | wait-on 1784 | MIT 1785 | The MIT License (MIT) 1786 | 1787 | Copyright (c) 2015 Jeff Barczewski 1788 | 1789 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1790 | 1791 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1792 | 1793 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1794 | 1795 | yallist 1796 | ISC 1797 | The ISC License 1798 | 1799 | Copyright (c) Isaac Z. Schlueter and Contributors 1800 | 1801 | Permission to use, copy, modify, and/or distribute this software for any 1802 | purpose with or without fee is hereby granted, provided that the above 1803 | copyright notice and this permission notice appear in all copies. 1804 | 1805 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1806 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1807 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1808 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1809 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1810 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 1811 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1812 | 1813 | 1814 | zod 1815 | MIT 1816 | MIT License 1817 | 1818 | Copyright (c) 2020 Colin McDonnell 1819 | 1820 | Permission is hereby granted, free of charge, to any person obtaining a copy 1821 | of this software and associated documentation files (the "Software"), to deal 1822 | in the Software without restriction, including without limitation the rights 1823 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1824 | copies of the Software, and to permit persons to whom the Software is 1825 | furnished to do so, subject to the following conditions: 1826 | 1827 | The above copyright notice and this permission notice shall be included in all 1828 | copies or substantial portions of the Software. 1829 | 1830 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1831 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1832 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1833 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1834 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1835 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1836 | SOFTWARE. 1837 | -------------------------------------------------------------------------------- /dist/serializer.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | // eslint-disable-next-line 4 | const STR_ESCAPE = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/ 5 | 6 | module.exports = class Serializer { 7 | constructor (options = {}) { 8 | switch (options.rounding) { 9 | case 'floor': 10 | this.parseInteger = Math.floor 11 | break 12 | case 'ceil': 13 | this.parseInteger = Math.ceil 14 | break 15 | case 'round': 16 | this.parseInteger = Math.round 17 | break 18 | default: 19 | this.parseInteger = Math.trunc 20 | break 21 | } 22 | } 23 | 24 | asInteger (i) { 25 | if (typeof i === 'bigint') { 26 | return i.toString() 27 | } else if (Number.isInteger(i)) { 28 | return '' + i 29 | } else { 30 | /* eslint no-undef: "off" */ 31 | const integer = this.parseInteger(i) 32 | if (Number.isNaN(integer) || !Number.isFinite(integer)) { 33 | throw new Error(`The value "${i}" cannot be converted to an integer.`) 34 | } else { 35 | return '' + integer 36 | } 37 | } 38 | } 39 | 40 | asNumber (i) { 41 | const num = Number(i) 42 | if (Number.isNaN(num)) { 43 | throw new Error(`The value "${i}" cannot be converted to a number.`) 44 | } else if (!Number.isFinite(num)) { 45 | return null 46 | } else { 47 | return '' + num 48 | } 49 | } 50 | 51 | asBoolean (bool) { 52 | return bool && 'true' || 'false' // eslint-disable-line 53 | } 54 | 55 | asDateTime (date) { 56 | if (date === null) return '""' 57 | if (date instanceof Date) { 58 | return '"' + date.toISOString() + '"' 59 | } 60 | if (typeof date === 'string') { 61 | return '"' + date + '"' 62 | } 63 | throw new Error(`The value "${date}" cannot be converted to a date-time.`) 64 | } 65 | 66 | asDate (date) { 67 | if (date === null) return '""' 68 | if (date instanceof Date) { 69 | return '"' + new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().slice(0, 10) + '"' 70 | } 71 | if (typeof date === 'string') { 72 | return '"' + date + '"' 73 | } 74 | throw new Error(`The value "${date}" cannot be converted to a date.`) 75 | } 76 | 77 | asTime (date) { 78 | if (date === null) return '""' 79 | if (date instanceof Date) { 80 | return '"' + new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().slice(11, 19) + '"' 81 | } 82 | if (typeof date === 'string') { 83 | return '"' + date + '"' 84 | } 85 | throw new Error(`The value "${date}" cannot be converted to a time.`) 86 | } 87 | 88 | asString (str) { 89 | const quotes = '"' 90 | if (str instanceof Date) { 91 | return quotes + str.toISOString() + quotes 92 | } else if (str === null) { 93 | return quotes + quotes 94 | } else if (str instanceof RegExp) { 95 | str = str.source 96 | } else if (typeof str !== 'string') { 97 | str = str.toString() 98 | } 99 | 100 | // Fast escape chars check 101 | if (!STR_ESCAPE.test(str)) { 102 | return quotes + str + quotes 103 | } 104 | 105 | if (str.length < 42) { 106 | return this.asStringSmall(str) 107 | } else { 108 | return JSON.stringify(str) 109 | } 110 | } 111 | 112 | // magically escape strings for json 113 | // relying on their charCodeAt 114 | // everything below 32 needs JSON.stringify() 115 | // every string that contain surrogate needs JSON.stringify() 116 | // 34 and 92 happens all the time, so we 117 | // have a fast case for them 118 | asStringSmall (str) { 119 | const l = str.length 120 | let result = '' 121 | let last = 0 122 | let found = false 123 | let surrogateFound = false 124 | let point = 255 125 | // eslint-disable-next-line 126 | for (var i = 0; i < l && point >= 32; i++) { 127 | point = str.charCodeAt(i) 128 | if (point >= 0xD800 && point <= 0xDFFF) { 129 | // The current character is a surrogate. 130 | surrogateFound = true 131 | } 132 | if (point === 34 || point === 92) { 133 | result += str.slice(last, i) + '\\' 134 | last = i 135 | found = true 136 | } 137 | } 138 | 139 | if (!found) { 140 | result = str 141 | } else { 142 | result += str.slice(last) 143 | } 144 | return ((point < 32) || (surrogateFound === true)) ? JSON.stringify(str) : '"' + result + '"' 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /dist/sourcemap-register.js: -------------------------------------------------------------------------------- 1 | (()=>{var e={650:e=>{var r=Object.prototype.toString;var n=typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},274:(e,r,n)=>{var t=n(339);var o=Object.prototype.hasOwnProperty;var i=typeof Map!=="undefined";function ArraySet(){this._array=[];this._set=i?new Map:Object.create(null)}ArraySet.fromArray=function ArraySet_fromArray(e,r){var n=new ArraySet;for(var t=0,o=e.length;t=0){return r}}else{var n=t.toSetString(e);if(o.call(this._set,n)){return this._set[n]}}throw new Error('"'+e+'" is not in the set.')};ArraySet.prototype.at=function ArraySet_at(e){if(e>=0&&e{var t=n(190);var o=5;var i=1<>1;return r?-n:n}r.encode=function base64VLQ_encode(e){var r="";var n;var i=toVLQSigned(e);do{n=i&a;i>>>=o;if(i>0){n|=u}r+=t.encode(n)}while(i>0);return r};r.decode=function base64VLQ_decode(e,r,n){var i=e.length;var s=0;var l=0;var c,p;do{if(r>=i){throw new Error("Expected more digits in base 64 VLQ value.")}p=t.decode(e.charCodeAt(r++));if(p===-1){throw new Error("Invalid base64 digit: "+e.charAt(r-1))}c=!!(p&u);p&=a;s=s+(p<{var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");r.encode=function(e){if(0<=e&&e{r.GREATEST_LOWER_BOUND=1;r.LEAST_UPPER_BOUND=2;function recursiveSearch(e,n,t,o,i,a){var u=Math.floor((n-e)/2)+e;var s=i(t,o[u],true);if(s===0){return u}else if(s>0){if(n-u>1){return recursiveSearch(u,n,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return n1){return recursiveSearch(e,u,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return u}else{return e<0?-1:e}}}r.search=function search(e,n,t,o){if(n.length===0){return-1}var i=recursiveSearch(-1,n.length,e,n,t,o||r.GREATEST_LOWER_BOUND);if(i<0){return-1}while(i-1>=0){if(t(n[i],n[i-1],true)!==0){break}--i}return i}},680:(e,r,n)=>{var t=n(339);function generatedPositionAfter(e,r){var n=e.generatedLine;var o=r.generatedLine;var i=e.generatedColumn;var a=r.generatedColumn;return o>n||o==n&&a>=i||t.compareByGeneratedPositionsInflated(e,r)<=0}function MappingList(){this._array=[];this._sorted=true;this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function MappingList_forEach(e,r){this._array.forEach(e,r)};MappingList.prototype.add=function MappingList_add(e){if(generatedPositionAfter(this._last,e)){this._last=e;this._array.push(e)}else{this._sorted=false;this._array.push(e)}};MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(t.compareByGeneratedPositionsInflated);this._sorted=true}return this._array};r.H=MappingList},758:(e,r)=>{function swap(e,r,n){var t=e[r];e[r]=e[n];e[n]=t}function randomIntInRange(e,r){return Math.round(e+Math.random()*(r-e))}function doQuickSort(e,r,n,t){if(n{var t;var o=n(339);var i=n(345);var a=n(274).I;var u=n(449);var s=n(758).U;function SourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}return n.sections!=null?new IndexedSourceMapConsumer(n,r):new BasicSourceMapConsumer(n,r)}SourceMapConsumer.fromSourceMap=function(e,r){return BasicSourceMapConsumer.fromSourceMap(e,r)};SourceMapConsumer.prototype._version=3;SourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{configurable:true,enumerable:true,get:function(){if(!this.__generatedMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__generatedMappings}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{configurable:true,enumerable:true,get:function(){if(!this.__originalMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__originalMappings}});SourceMapConsumer.prototype._charIsMappingSeparator=function SourceMapConsumer_charIsMappingSeparator(e,r){var n=e.charAt(r);return n===";"||n===","};SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(e,r){throw new Error("Subclasses must implement _parseMappings")};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.GREATEST_LOWER_BOUND=1;SourceMapConsumer.LEAST_UPPER_BOUND=2;SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(e,r,n){var t=r||null;var i=n||SourceMapConsumer.GENERATED_ORDER;var a;switch(i){case SourceMapConsumer.GENERATED_ORDER:a=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:a=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;a.map((function(e){var r=e.source===null?null:this._sources.at(e.source);r=o.computeSourceURL(u,r,this._sourceMapURL);return{source:r,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:e.name===null?null:this._names.at(e.name)}}),this).forEach(e,t)};SourceMapConsumer.prototype.allGeneratedPositionsFor=function SourceMapConsumer_allGeneratedPositionsFor(e){var r=o.getArg(e,"line");var n={source:o.getArg(e,"source"),originalLine:r,originalColumn:o.getArg(e,"column",0)};n.source=this._findSourceIndex(n.source);if(n.source<0){return[]}var t=[];var a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,i.LEAST_UPPER_BOUND);if(a>=0){var u=this._originalMappings[a];if(e.column===undefined){var s=u.originalLine;while(u&&u.originalLine===s){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}else{var l=u.originalColumn;while(u&&u.originalLine===r&&u.originalColumn==l){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}}return t};r.SourceMapConsumer=SourceMapConsumer;function BasicSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sources");var u=o.getArg(n,"names",[]);var s=o.getArg(n,"sourceRoot",null);var l=o.getArg(n,"sourcesContent",null);var c=o.getArg(n,"mappings");var p=o.getArg(n,"file",null);if(t!=this._version){throw new Error("Unsupported version: "+t)}if(s){s=o.normalize(s)}i=i.map(String).map(o.normalize).map((function(e){return s&&o.isAbsolute(s)&&o.isAbsolute(e)?o.relative(s,e):e}));this._names=a.fromArray(u.map(String),true);this._sources=a.fromArray(i,true);this._absoluteSources=this._sources.toArray().map((function(e){return o.computeSourceURL(s,e,r)}));this.sourceRoot=s;this.sourcesContent=l;this._mappings=c;this._sourceMapURL=r;this.file=p}BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer;BasicSourceMapConsumer.prototype._findSourceIndex=function(e){var r=e;if(this.sourceRoot!=null){r=o.relative(this.sourceRoot,r)}if(this._sources.has(r)){return this._sources.indexOf(r)}var n;for(n=0;n1){v.source=l+_[1];l+=_[1];v.originalLine=i+_[2];i=v.originalLine;v.originalLine+=1;v.originalColumn=a+_[3];a=v.originalColumn;if(_.length>4){v.name=c+_[4];c+=_[4]}}m.push(v);if(typeof v.originalLine==="number"){d.push(v)}}}s(m,o.compareByGeneratedPositionsDeflated);this.__generatedMappings=m;s(d,o.compareByOriginalPositions);this.__originalMappings=d};BasicSourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(e,r,n,t,o,a){if(e[n]<=0){throw new TypeError("Line must be greater than or equal to 1, got "+e[n])}if(e[t]<0){throw new TypeError("Column must be greater than or equal to 0, got "+e[t])}return i.search(e,r,o,a)};BasicSourceMapConsumer.prototype.computeColumnSpans=function SourceMapConsumer_computeColumnSpans(){for(var e=0;e=0){var t=this._generatedMappings[n];if(t.generatedLine===r.generatedLine){var i=o.getArg(t,"source",null);if(i!==null){i=this._sources.at(i);i=o.computeSourceURL(this.sourceRoot,i,this._sourceMapURL)}var a=o.getArg(t,"name",null);if(a!==null){a=this._names.at(a)}return{source:i,line:o.getArg(t,"originalLine",null),column:o.getArg(t,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}};BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function BasicSourceMapConsumer_hasContentsOfAllSources(){if(!this.sourcesContent){return false}return this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return e==null}))};BasicSourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(e,r){if(!this.sourcesContent){return null}var n=this._findSourceIndex(e);if(n>=0){return this.sourcesContent[n]}var t=e;if(this.sourceRoot!=null){t=o.relative(this.sourceRoot,t)}var i;if(this.sourceRoot!=null&&(i=o.urlParse(this.sourceRoot))){var a=t.replace(/^file:\/\//,"");if(i.scheme=="file"&&this._sources.has(a)){return this.sourcesContent[this._sources.indexOf(a)]}if((!i.path||i.path=="/")&&this._sources.has("/"+t)){return this.sourcesContent[this._sources.indexOf("/"+t)]}}if(r){return null}else{throw new Error('"'+t+'" is not in the SourceMap.')}};BasicSourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(e){var r=o.getArg(e,"source");r=this._findSourceIndex(r);if(r<0){return{line:null,column:null,lastColumn:null}}var n={source:r,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")};var t=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(t>=0){var i=this._originalMappings[t];if(i.source===n.source){return{line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}}}return{line:null,column:null,lastColumn:null}};t=BasicSourceMapConsumer;function IndexedSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sections");if(t!=this._version){throw new Error("Unsupported version: "+t)}this._sources=new a;this._names=new a;var u={line:-1,column:0};this._sections=i.map((function(e){if(e.url){throw new Error("Support for url field in sections not implemented.")}var n=o.getArg(e,"offset");var t=o.getArg(n,"line");var i=o.getArg(n,"column");if(t{var t=n(449);var o=n(339);var i=n(274).I;var a=n(680).H;function SourceMapGenerator(e){if(!e){e={}}this._file=o.getArg(e,"file",null);this._sourceRoot=o.getArg(e,"sourceRoot",null);this._skipValidation=o.getArg(e,"skipValidation",false);this._sources=new i;this._names=new i;this._mappings=new a;this._sourcesContents=null}SourceMapGenerator.prototype._version=3;SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(e){var r=e.sourceRoot;var n=new SourceMapGenerator({file:e.file,sourceRoot:r});e.eachMapping((function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};if(e.source!=null){t.source=e.source;if(r!=null){t.source=o.relative(r,t.source)}t.original={line:e.originalLine,column:e.originalColumn};if(e.name!=null){t.name=e.name}}n.addMapping(t)}));e.sources.forEach((function(t){var i=t;if(r!==null){i=o.relative(r,t)}if(!n._sources.has(i)){n._sources.add(i)}var a=e.sourceContentFor(t);if(a!=null){n.setSourceContent(t,a)}}));return n};SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(e){var r=o.getArg(e,"generated");var n=o.getArg(e,"original",null);var t=o.getArg(e,"source",null);var i=o.getArg(e,"name",null);if(!this._skipValidation){this._validateMapping(r,n,t,i)}if(t!=null){t=String(t);if(!this._sources.has(t)){this._sources.add(t)}}if(i!=null){i=String(i);if(!this._names.has(i)){this._names.add(i)}}this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:t,name:i})};SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(e,r){var n=e;if(this._sourceRoot!=null){n=o.relative(this._sourceRoot,n)}if(r!=null){if(!this._sourcesContents){this._sourcesContents=Object.create(null)}this._sourcesContents[o.toSetString(n)]=r}else if(this._sourcesContents){delete this._sourcesContents[o.toSetString(n)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null}}};SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(e,r,n){var t=r;if(r==null){if(e.file==null){throw new Error("SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, "+'or the source map\'s "file" property. Both were omitted.')}t=e.file}var a=this._sourceRoot;if(a!=null){t=o.relative(a,t)}var u=new i;var s=new i;this._mappings.unsortedForEach((function(r){if(r.source===t&&r.originalLine!=null){var i=e.originalPositionFor({line:r.originalLine,column:r.originalColumn});if(i.source!=null){r.source=i.source;if(n!=null){r.source=o.join(n,r.source)}if(a!=null){r.source=o.relative(a,r.source)}r.originalLine=i.line;r.originalColumn=i.column;if(i.name!=null){r.name=i.name}}}var l=r.source;if(l!=null&&!u.has(l)){u.add(l)}var c=r.name;if(c!=null&&!s.has(c)){s.add(c)}}),this);this._sources=u;this._names=s;e.sources.forEach((function(r){var t=e.sourceContentFor(r);if(t!=null){if(n!=null){r=o.join(n,r)}if(a!=null){r=o.relative(a,r)}this.setSourceContent(r,t)}}),this)};SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(e,r,n,t){if(r&&typeof r.line!=="number"&&typeof r.column!=="number"){throw new Error("original.line and original.column are not numbers -- you probably meant to omit "+"the original mapping entirely and only map the generated position. If so, pass "+"null for the original mapping instead of an object with empty or null values.")}if(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!r&&!n&&!t){return}else if(e&&"line"in e&&"column"in e&&r&&"line"in r&&"column"in r&&e.line>0&&e.column>=0&&r.line>0&&r.column>=0&&n){return}else{throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:r,name:t}))}};SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var e=0;var r=1;var n=0;var i=0;var a=0;var u=0;var s="";var l;var c;var p;var f;var g=this._mappings.toArray();for(var h=0,d=g.length;h0){if(!o.compareByGeneratedPositionsInflated(c,g[h-1])){continue}l+=","}}l+=t.encode(c.generatedColumn-e);e=c.generatedColumn;if(c.source!=null){f=this._sources.indexOf(c.source);l+=t.encode(f-u);u=f;l+=t.encode(c.originalLine-1-i);i=c.originalLine-1;l+=t.encode(c.originalColumn-n);n=c.originalColumn;if(c.name!=null){p=this._names.indexOf(c.name);l+=t.encode(p-a);a=p}}s+=l}return s};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(e,r){return e.map((function(e){if(!this._sourcesContents){return null}if(r!=null){e=o.relative(r,e)}var n=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)};SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null){e.file=this._file}if(this._sourceRoot!=null){e.sourceRoot=this._sourceRoot}if(this._sourcesContents){e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)}return e};SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this.toJSON())};r.h=SourceMapGenerator},351:(e,r,n)=>{var t;var o=n(591).h;var i=n(339);var a=/(\r?\n)/;var u=10;var s="$$$isSourceNode$$$";function SourceNode(e,r,n,t,o){this.children=[];this.sourceContents={};this.line=e==null?null:e;this.column=r==null?null:r;this.source=n==null?null:n;this.name=o==null?null:o;this[s]=true;if(t!=null)this.add(t)}SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(e,r,n){var t=new SourceNode;var o=e.split(a);var u=0;var shiftNextLine=function(){var e=getNextLine();var r=getNextLine()||"";return e+r;function getNextLine(){return u=0;r--){this.prepend(e[r])}}else if(e[s]||typeof e==="string"){this.children.unshift(e)}else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e)}return this};SourceNode.prototype.walk=function SourceNode_walk(e){var r;for(var n=0,t=this.children.length;n0){r=[];for(n=0;n{function getArg(e,r,n){if(r in e){return e[r]}else if(arguments.length===3){return n}else{throw new Error('"'+r+'" is a required argument.')}}r.getArg=getArg;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;var t=/^data:.+\,.+$/;function urlParse(e){var r=e.match(n);if(!r){return null}return{scheme:r[1],auth:r[2],host:r[3],port:r[4],path:r[5]}}r.urlParse=urlParse;function urlGenerate(e){var r="";if(e.scheme){r+=e.scheme+":"}r+="//";if(e.auth){r+=e.auth+"@"}if(e.host){r+=e.host}if(e.port){r+=":"+e.port}if(e.path){r+=e.path}return r}r.urlGenerate=urlGenerate;function normalize(e){var n=e;var t=urlParse(e);if(t){if(!t.path){return e}n=t.path}var o=r.isAbsolute(n);var i=n.split(/\/+/);for(var a,u=0,s=i.length-1;s>=0;s--){a=i[s];if(a==="."){i.splice(s,1)}else if(a===".."){u++}else if(u>0){if(a===""){i.splice(s+1,u);u=0}else{i.splice(s,2);u--}}}n=i.join("/");if(n===""){n=o?"/":"."}if(t){t.path=n;return urlGenerate(t)}return n}r.normalize=normalize;function join(e,r){if(e===""){e="."}if(r===""){r="."}var n=urlParse(r);var o=urlParse(e);if(o){e=o.path||"/"}if(n&&!n.scheme){if(o){n.scheme=o.scheme}return urlGenerate(n)}if(n||r.match(t)){return r}if(o&&!o.host&&!o.path){o.host=r;return urlGenerate(o)}var i=r.charAt(0)==="/"?r:normalize(e.replace(/\/+$/,"")+"/"+r);if(o){o.path=i;return urlGenerate(o)}return i}r.join=join;r.isAbsolute=function(e){return e.charAt(0)==="/"||n.test(e)};function relative(e,r){if(e===""){e="."}e=e.replace(/\/$/,"");var n=0;while(r.indexOf(e+"/")!==0){var t=e.lastIndexOf("/");if(t<0){return r}e=e.slice(0,t);if(e.match(/^([^\/]+:\/)?\/*$/)){return r}++n}return Array(n+1).join("../")+r.substr(e.length+1)}r.relative=relative;var o=function(){var e=Object.create(null);return!("__proto__"in e)}();function identity(e){return e}function toSetString(e){if(isProtoString(e)){return"$"+e}return e}r.toSetString=o?identity:toSetString;function fromSetString(e){if(isProtoString(e)){return e.slice(1)}return e}r.fromSetString=o?identity:fromSetString;function isProtoString(e){if(!e){return false}var r=e.length;if(r<9){return false}if(e.charCodeAt(r-1)!==95||e.charCodeAt(r-2)!==95||e.charCodeAt(r-3)!==111||e.charCodeAt(r-4)!==116||e.charCodeAt(r-5)!==111||e.charCodeAt(r-6)!==114||e.charCodeAt(r-7)!==112||e.charCodeAt(r-8)!==95||e.charCodeAt(r-9)!==95){return false}for(var n=r-10;n>=0;n--){if(e.charCodeAt(n)!==36){return false}}return true}function compareByOriginalPositions(e,r,n){var t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0||n){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0){return t}t=e.generatedLine-r.generatedLine;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByOriginalPositions=compareByOriginalPositions;function compareByGeneratedPositionsDeflated(e,r,n){var t=e.generatedLine-r.generatedLine;if(t!==0){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0||n){return t}t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsDeflated=compareByGeneratedPositionsDeflated;function strcmp(e,r){if(e===r){return 0}if(e===null){return 1}if(r===null){return-1}if(e>r){return 1}return-1}function compareByGeneratedPositionsInflated(e,r){var n=e.generatedLine-r.generatedLine;if(n!==0){return n}n=e.generatedColumn-r.generatedColumn;if(n!==0){return n}n=strcmp(e.source,r.source);if(n!==0){return n}n=e.originalLine-r.originalLine;if(n!==0){return n}n=e.originalColumn-r.originalColumn;if(n!==0){return n}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsInflated=compareByGeneratedPositionsInflated;function parseSourceMapInput(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}r.parseSourceMapInput=parseSourceMapInput;function computeSourceURL(e,r,n){r=r||"";if(e){if(e[e.length-1]!=="/"&&r[0]!=="/"){e+="/"}r=e+r}if(n){var t=urlParse(n);if(!t){throw new Error("sourceMapURL could not be parsed")}if(t.path){var o=t.path.lastIndexOf("/");if(o>=0){t.path=t.path.substring(0,o+1)}}r=join(urlGenerate(t),r)}return normalize(r)}r.computeSourceURL=computeSourceURL},997:(e,r,n)=>{n(591).h;r.SourceMapConsumer=n(952).SourceMapConsumer;n(351)},284:(e,r,n)=>{e=n.nmd(e);var t=n(997).SourceMapConsumer;var o=n(17);var i;try{i=n(147);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(650);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var h=[];var d=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"")}}else if(u){o+="new "+(i||"")}else if(i){o+=i}else{o+=r;a=false}if(a){o+=" ("+r+")"}return o}function cloneCallSite(e){var r={};Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach((function(n){r[n]=/^(?:is|get)/.test(n)?function(){return e[n].call(e)}:e[n]}));r.toString=CallSiteToString;return r}function wrapCallSite(e,r){if(r===undefined){r={nextPosition:null,curPosition:null}}if(e.isNative()){r.curPosition=null;return e}var n=e.getFileName()||e.getScriptNameOrSourceURL();if(n){var t=e.getLineNumber();var o=e.getColumnNumber()-1;var i=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;var a=i.test(globalProcessVersion())?0:62;if(t===1&&o>a&&!isInBrowser()&&!e.isEval()){o-=a}var u=mapSourcePosition({source:n,line:t,column:o});r.curPosition=u;e=cloneCallSite(e);var s=e.getFunctionName;e.getFunctionName=function(){if(r.nextPosition==null){return s()}return r.nextPosition.name||s()};e.getFileName=function(){return u.source};e.getLineNumber=function(){return u.line};e.getColumnNumber=function(){return u.column+1};e.getScriptNameOrSourceURL=function(){return u.source};return e}var l=e.isEval()&&e.getEvalOrigin();if(l){l=mapEvalOrigin(l);e=cloneCallSite(e);e.getEvalOrigin=function(){return l};return e}return e}function prepareStackTrace(e,r){if(l){p={};f={}}var n=e.name||"Error";var t=e.message||"";var o=n+": "+t;var i={nextPosition:null,curPosition:null};var a=[];for(var u=r.length-1;u>=0;u--){a.push("\n at "+wrapCallSite(r[u],i));i.nextPosition=i.curPosition}i.curPosition=i.nextPosition=null;return o+a.reverse().join("")}function getErrorSource(e){var r=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(r){var n=r[1];var t=+r[2];var o=+r[3];var a=p[n];if(!a&&i&&i.existsSync(n)){try{a=i.readFileSync(n,"utf8")}catch(e){a=""}}if(a){var u=a.split(/(?:\r\n|\r|\n)/)[t-1];if(u){return n+":"+t+"\n"+u+"\n"+new Array(o).join(" ")+"^"}}}return null}function printErrorAndExit(e){var r=getErrorSource(e);var n=globalProcessStderr();if(n&&n._handle&&n._handle.setBlocking){n._handle.setBlocking(true)}if(r){console.error();console.error(r)}console.error(e.stack);globalProcessExit(1)}function shimEmitUncaughtException(){var e=process.emit;process.emit=function(r){if(r==="uncaughtException"){var n=arguments[1]&&arguments[1].stack;var t=this.listeners(r).length>0;if(n&&!t){return printErrorAndExit(arguments[1])}}return e.apply(this,arguments)}}var S=h.slice(0);var _=d.slice(0);r.wrapCallSite=wrapCallSite;r.getErrorSource=getErrorSource;r.mapSourcePosition=mapSourcePosition;r.retrieveSourceMap=v;r.install=function(r){r=r||{};if(r.environment){c=r.environment;if(["node","browser","auto"].indexOf(c)===-1){throw new Error("environment "+c+" was unknown. Available options are {auto, browser, node}")}}if(r.retrieveFile){if(r.overrideRetrieveFile){h.length=0}h.unshift(r.retrieveFile)}if(r.retrieveSourceMap){if(r.overrideRetrieveSourceMap){d.length=0}d.unshift(r.retrieveSourceMap)}if(r.hookRequire&&!isInBrowser()){var n=dynamicRequire(e,"module");var t=n.prototype._compile;if(!t.__sourceMapSupport){n.prototype._compile=function(e,r){p[r]=e;f[r]=undefined;return t.call(this,e,r)};n.prototype._compile.__sourceMapSupport=true}}if(!l){l="emptyCacheBetweenOperations"in r?r.emptyCacheBetweenOperations:false}if(!u){u=true;Error.prepareStackTrace=prepareStackTrace}if(!s){var o="handleUncaughtExceptions"in r?r.handleUncaughtExceptions:true;try{var i=dynamicRequire(e,"worker_threads");if(i.isMainThread===false){o=false}}catch(e){}if(o&&hasGlobalProcessEventEmitter()){s=true;shimEmitUncaughtException()}}};r.resetRetrieveHandlers=function(){h.length=0;d.length=0;h=S.slice(0);d=_.slice(0);v=handlerExec(d);m=handlerExec(h)}},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}};var r={};function __webpack_require__(n){var t=r[n];if(t!==undefined){return t.exports}var o=r[n]={id:n,loaded:false,exports:{}};var i=true;try{e[n](o,o.exports,__webpack_require__);i=false}finally{if(i)delete r[n]}o.loaded=true;return o.exports}(()=>{__webpack_require__.nmd=e=>{e.paths=[];if(!e.children)e.children=[];return e}})();if(typeof __webpack_require__!=="undefined")__webpack_require__.ab=__dirname+"/";var n={};(()=>{__webpack_require__(284).install()})();module.exports=n})(); -------------------------------------------------------------------------------- /dist/validator.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const Ajv = require('ajv') 4 | const fastUri = require('fast-uri') 5 | const ajvFormats = require('ajv-formats') 6 | const clone = require('rfdc')({ proto: true }) 7 | 8 | class Validator { 9 | constructor (ajvOptions) { 10 | this.ajv = new Ajv({ 11 | ...ajvOptions, 12 | strictSchema: false, 13 | validateSchema: false, 14 | allowUnionTypes: true, 15 | uriResolver: fastUri 16 | }) 17 | 18 | ajvFormats(this.ajv) 19 | 20 | this.ajv.addKeyword({ 21 | keyword: 'fjs_type', 22 | type: 'object', 23 | errors: false, 24 | validate: (type, date) => { 25 | return date instanceof Date 26 | } 27 | }) 28 | } 29 | 30 | addSchema (schema, schemaName) { 31 | let schemaKey = schema.$id || schemaName 32 | if (schema.$id !== undefined && schema.$id[0] === '#') { 33 | schemaKey = schemaName + schema.$id // relative URI 34 | } 35 | 36 | if ( 37 | this.ajv.refs[schemaKey] === undefined && 38 | this.ajv.schemas[schemaKey] === undefined 39 | ) { 40 | const ajvSchema = clone(schema) 41 | this.convertSchemaToAjvFormat(ajvSchema) 42 | this.ajv.addSchema(ajvSchema, schemaKey) 43 | } 44 | } 45 | 46 | validate (schemaRef, data) { 47 | return this.ajv.validate(schemaRef, data) 48 | } 49 | 50 | // Ajv does not support js date format. In order to properly validate objects containing a date, 51 | // it needs to replace all occurrences of the string date format with a custom keyword fjs_type. 52 | // (see https://github.com/fastify/fast-json-stringify/pull/441) 53 | convertSchemaToAjvFormat (schema) { 54 | if (schema === null) return 55 | 56 | if (schema.type === 'string') { 57 | schema.fjs_type = 'string' 58 | schema.type = ['string', 'object'] 59 | } else if ( 60 | Array.isArray(schema.type) && 61 | schema.type.includes('string') && 62 | !schema.type.includes('object') 63 | ) { 64 | schema.fjs_type = 'string' 65 | schema.type.push('object') 66 | } 67 | for (const property in schema) { 68 | if (typeof schema[property] === 'object') { 69 | this.convertSchemaToAjvFormat(schema[property]) 70 | } 71 | } 72 | } 73 | } 74 | 75 | module.exports = Validator 76 | -------------------------------------------------------------------------------- /dist/worker-pipeline.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const EE = require('events') 4 | const loadTransportStreamBuilder = require('./transport-stream') 5 | const { pipeline, PassThrough } = require('stream') 6 | 7 | // This file is not checked by the code coverage tool, 8 | // as it is not reliable. 9 | 10 | /* istanbul ignore file */ 11 | 12 | module.exports = async function ({ targets }) { 13 | const streams = await Promise.all(targets.map(async (t) => { 14 | const fn = await loadTransportStreamBuilder(t.target) 15 | const stream = await fn(t.options) 16 | return stream 17 | })) 18 | const ee = new EE() 19 | 20 | const stream = new PassThrough({ 21 | autoDestroy: true, 22 | destroy (_, cb) { 23 | ee.on('error', cb) 24 | ee.on('closed', cb) 25 | } 26 | }) 27 | 28 | pipeline(stream, ...streams, function (err) { 29 | if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { 30 | ee.emit('error', err) 31 | return 32 | } 33 | 34 | ee.emit('closed') 35 | }) 36 | 37 | return stream 38 | } 39 | -------------------------------------------------------------------------------- /dist/worker.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const pino = require('../pino.js') 4 | const build = require('pino-abstract-transport') 5 | const loadTransportStreamBuilder = require('./transport-stream') 6 | 7 | // This file is not checked by the code coverage tool, 8 | // as it is not reliable. 9 | 10 | /* istanbul ignore file */ 11 | 12 | module.exports = async function ({ targets, levels, dedupe }) { 13 | targets = await Promise.all(targets.map(async (t) => { 14 | const fn = await loadTransportStreamBuilder(t.target) 15 | const stream = await fn(t.options) 16 | return { 17 | level: t.level, 18 | stream 19 | } 20 | })) 21 | return build(process, { 22 | parse: 'lines', 23 | metadata: true, 24 | close (err, cb) { 25 | let expected = 0 26 | for (const transport of targets) { 27 | expected++ 28 | transport.stream.on('close', closeCb) 29 | transport.stream.end() 30 | } 31 | 32 | function closeCb () { 33 | if (--expected === 0) { 34 | cb(err) 35 | } 36 | } 37 | } 38 | }) 39 | 40 | function process (stream) { 41 | const multi = pino.multistream(targets, { levels, dedupe }) 42 | // TODO manage backpressure 43 | stream.on('data', function (chunk) { 44 | const { lastTime, lastMsg, lastObj, lastLevel } = this 45 | multi.lastLevel = lastLevel 46 | multi.lastTime = lastTime 47 | multi.lastMsg = lastMsg 48 | multi.lastObj = lastObj 49 | 50 | // TODO handle backpressure 51 | multi.write(chunk + '\n') 52 | }) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /dist/worker1.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const { realImport, realRequire } = require('real-require') 4 | const { workerData, parentPort } = require('worker_threads') 5 | const { WRITE_INDEX, READ_INDEX } = require('./indexes') 6 | const { waitDiff } = require('./wait') 7 | 8 | const { 9 | dataBuf, 10 | filename, 11 | stateBuf 12 | } = workerData 13 | 14 | let destination 15 | 16 | const state = new Int32Array(stateBuf) 17 | const data = Buffer.from(dataBuf) 18 | 19 | async function start () { 20 | let worker 21 | try { 22 | if (filename.endsWith('.ts') || filename.endsWith('.cts')) { 23 | // TODO: add support for the TSM modules loader ( https://github.com/lukeed/tsm ). 24 | if (!process[Symbol.for('ts-node.register.instance')]) { 25 | realRequire('ts-node/register') 26 | } else if (process.env.TS_NODE_DEV) { 27 | realRequire('ts-node-dev') 28 | } 29 | // TODO: Support ES imports once tsc, tap & ts-node provide better compatibility guarantees. 30 | // Remove extra forwardslash on Windows 31 | worker = realRequire(decodeURIComponent(filename.replace(process.platform === 'win32' ? 'file:///' : 'file://', ''))) 32 | } else { 33 | worker = (await realImport(filename)) 34 | } 35 | } catch (error) { 36 | // A yarn user that tries to start a ThreadStream for an external module 37 | // provides a filename pointing to a zip file. 38 | // eg. require.resolve('pino-elasticsearch') // returns /foo/pino-elasticsearch-npm-6.1.0-0c03079478-6915435172.zip/bar.js 39 | // The `import` will fail to try to load it. 40 | // This catch block executes the `require` fallback to load the module correctly. 41 | // In fact, yarn modifies the `require` function to manage the zipped path. 42 | // More details at https://github.com/pinojs/pino/pull/1113 43 | // The error codes may change based on the node.js version (ENOTDIR > 12, ERR_MODULE_NOT_FOUND <= 12 ) 44 | if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND') && 45 | filename.startsWith('file://')) { 46 | worker = realRequire(decodeURIComponent(filename.replace('file://', ''))) 47 | } else if (error.code === undefined) { 48 | // When bundled with pkg, an undefined error is thrown when called with realImport 49 | worker = realRequire(decodeURIComponent(filename.replace(process.platform === 'win32' ? 'file:///' : 'file://', ''))) 50 | } else { 51 | throw error 52 | } 53 | } 54 | 55 | // Depending on how the default export is performed, and on how the code is 56 | // transpiled, we may find cases of two nested "default" objects. 57 | // See https://github.com/pinojs/pino/issues/1243#issuecomment-982774762 58 | if (typeof worker === 'object') worker = worker.default 59 | if (typeof worker === 'object') worker = worker.default 60 | 61 | destination = await worker(workerData.workerData) 62 | 63 | destination.on('error', function (err) { 64 | Atomics.store(state, WRITE_INDEX, -2) 65 | Atomics.notify(state, WRITE_INDEX) 66 | 67 | Atomics.store(state, READ_INDEX, -2) 68 | Atomics.notify(state, READ_INDEX) 69 | 70 | parentPort.postMessage({ 71 | code: 'ERROR', 72 | err 73 | }) 74 | }) 75 | 76 | destination.on('close', function () { 77 | // process._rawDebug('worker close emitted') 78 | const end = Atomics.load(state, WRITE_INDEX) 79 | Atomics.store(state, READ_INDEX, end) 80 | Atomics.notify(state, READ_INDEX) 81 | setImmediate(() => { 82 | process.exit(0) 83 | }) 84 | }) 85 | } 86 | 87 | // No .catch() handler, 88 | // in case there is an error it goes 89 | // to unhandledRejection 90 | start().then(function () { 91 | parentPort.postMessage({ 92 | code: 'READY' 93 | }) 94 | 95 | process.nextTick(run) 96 | }) 97 | 98 | function run () { 99 | const current = Atomics.load(state, READ_INDEX) 100 | const end = Atomics.load(state, WRITE_INDEX) 101 | 102 | // process._rawDebug(`pre state ${current} ${end}`) 103 | 104 | if (end === current) { 105 | if (end === data.length) { 106 | waitDiff(state, READ_INDEX, end, Infinity, run) 107 | } else { 108 | waitDiff(state, WRITE_INDEX, end, Infinity, run) 109 | } 110 | return 111 | } 112 | 113 | // process._rawDebug(`post state ${current} ${end}`) 114 | 115 | if (end === -1) { 116 | // process._rawDebug('end') 117 | destination.end() 118 | return 119 | } 120 | 121 | const toWrite = data.toString('utf8', current, end) 122 | // process._rawDebug('worker writing: ' + toWrite) 123 | 124 | const res = destination.write(toWrite) 125 | 126 | if (res) { 127 | Atomics.store(state, READ_INDEX, end) 128 | Atomics.notify(state, READ_INDEX) 129 | setImmediate(run) 130 | } else { 131 | destination.once('drain', function () { 132 | Atomics.store(state, READ_INDEX, end) 133 | Atomics.notify(state, READ_INDEX) 134 | run() 135 | }) 136 | } 137 | } 138 | 139 | process.on('unhandledRejection', function (err) { 140 | parentPort.postMessage({ 141 | code: 'ERROR', 142 | err 143 | }) 144 | process.exit(1) 145 | }) 146 | 147 | process.on('uncaughtException', function (err) { 148 | parentPort.postMessage({ 149 | code: 'ERROR', 150 | err 151 | }) 152 | process.exit(1) 153 | }) 154 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | clearMocks: true, 3 | moduleFileExtensions: ['js', 'ts'], 4 | testMatch: ['**/*.test.ts'], 5 | transform: { 6 | '^.+\\.ts$': 'ts-jest' 7 | }, 8 | verbose: true 9 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-action", 3 | "version": "1.2.0", 4 | "private": true, 5 | "description": "TypeScript template action", 6 | "main": "lib/main.js", 7 | "packageManager": "pnpm@8.14.3", 8 | "scripts": { 9 | "build": "tsc", 10 | "format": "prettier --write '**/*.ts'", 11 | "format-check": "prettier --check '**/*.ts'", 12 | "lint": "eslint src/**/*.ts", 13 | "package": "ncc build --source-map --license licenses.txt", 14 | "test": "jest", 15 | "all": "pnpm run build && pnpm run format && pnpm run lint && pnpm run package && pnpm test" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/actions/typescript-action.git" 20 | }, 21 | "keywords": [ 22 | "actions", 23 | "node", 24 | "setup" 25 | ], 26 | "author": "", 27 | "license": "MIT", 28 | "dependencies": { 29 | "@actions/core": "^1.10.0", 30 | "axios": "^1.6.6", 31 | "fastify": "^4.25.0", 32 | "lazy-strict-env": "^0.3.1", 33 | "pino-pretty": "^10.3.1", 34 | "wait-on": "^7.2.0", 35 | "zod": "^3.22.4" 36 | }, 37 | "devDependencies": { 38 | "@jest/globals": "^29.7.0", 39 | "@types/jest": "^29.4.0", 40 | "@types/node": "^18.11.0", 41 | "@types/wait-on": "^5.3.1", 42 | "@typescript-eslint/parser": "^6.19.1", 43 | "@vercel/ncc": "^0.36.1", 44 | "eslint": "^8.56.0", 45 | "eslint-plugin-github": "^4.10.0", 46 | "eslint-plugin-jest": "^27.6.3", 47 | "jest": "^29.7.0", 48 | "js-yaml": "^4.1.0", 49 | "prettier": "2.8.3", 50 | "ts-jest": "^29.1.2", 51 | "typescript": "^5.3.3" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /post.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, import/no-commonjs 2 | const {execSync} = require('child_process') 3 | 4 | execSync( 5 | ` 6 | curl -X DELETE http://localhost:41230/self || true 7 | cat /tmp/turbogha.log || true 8 | `, 9 | {stdio: 'inherit'} 10 | ) 11 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable github/no-then */ 2 | import * as core from '@actions/core' 3 | import Fastify from 'fastify' 4 | import {spawn} from 'node:child_process' 5 | import { 6 | createReadStream, 7 | createWriteStream, 8 | existsSync, 9 | openSync, 10 | statSync 11 | } from 'node:fs' 12 | import waitOn from 'wait-on' 13 | import axios from 'axios' 14 | import type {AxiosInstance} from 'axios' 15 | import {pipeline} from 'node:stream/promises' 16 | import {Readable} from 'node:stream' 17 | import {Env} from 'lazy-strict-env' 18 | import {z} from 'zod' 19 | 20 | const serverPort = 41230 21 | const serverLogFile = '/tmp/turbogha.log' 22 | const cacheVersion = 'turbogha_v2' 23 | const cachePrefix = core.getInput('cache-prefix') || 'turbogha_' 24 | const getCacheKey = (hash: string): string => `${cachePrefix}${hash}` 25 | 26 | async function run(): Promise { 27 | if (process.argv[2] === '--server') { 28 | return server() 29 | } 30 | if (process.argv[2] === '--self-test') { 31 | return saveCache( 32 | {log: console}, 33 | 'self-test', 34 | 4, 35 | '', 36 | Readable.from([Buffer.from('meow')], {objectMode: false}) 37 | ) 38 | } 39 | return launchServer() 40 | } 41 | 42 | async function launchServer(): Promise { 43 | try { 44 | // Launch a detached child process to run the server 45 | // See: https://nodejs.org/docs/latest-v16.x/api/child_process.html#optionsdetached 46 | const out = openSync(serverLogFile, 'a') 47 | const err = openSync(serverLogFile, 'a') 48 | const child = spawn(process.argv[0], [process.argv[1], '--server'], { 49 | detached: true, 50 | stdio: ['ignore', out, err] 51 | }) 52 | child.unref() 53 | core.info(`Cache version: ${cacheVersion}`) 54 | core.info(`Cache prefix: ${cachePrefix}`) 55 | core.info(`Launched child process: ${child.pid}`) 56 | core.info(`Server log file: ${serverLogFile}`) 57 | 58 | // Wait for the server to be up and running 59 | await waitOn({ 60 | resources: [`http-get://localhost:${serverPort}`], 61 | timeout: 10000 62 | }) 63 | core.info(`Server is now up and running.`) 64 | 65 | // Export the environment variables for Turbo to pick up 66 | core.info('The following environment variables are exported:') 67 | const exportVariable = (name: string, value: string): void => { 68 | core.exportVariable(name, value) 69 | core.info(` ${name}=${value}`) 70 | } 71 | exportVariable('TURBOGHA_PORT', `${serverPort}`) 72 | exportVariable('TURBO_API', `http://localhost:${serverPort}`) 73 | exportVariable('TURBO_TOKEN', 'turbogha') 74 | exportVariable('TURBO_TEAM', 'turbogha') 75 | } catch (error) { 76 | if (error instanceof Error) core.setFailed(error.message) 77 | } 78 | } 79 | 80 | async function server(): Promise { 81 | const fastify = Fastify({ 82 | logger: true 83 | }) 84 | 85 | // For server status check 86 | fastify.get('/', async () => { 87 | return {ok: true} 88 | }) 89 | 90 | // For shutting down the server 91 | fastify.delete('/self', async () => { 92 | setTimeout(() => process.exit(0), 100) 93 | return {ok: true} 94 | }) 95 | 96 | // Handle streaming request body 97 | // https://www.fastify.io/docs/latest/Reference/ContentTypeParser/#catch-all 98 | fastify.addContentTypeParser( 99 | 'application/octet-stream', 100 | (_req, _payload, done) => { 101 | done(null) 102 | } 103 | ) 104 | 105 | // Upload cache 106 | fastify.put('/v8/artifacts/:hash', async request => { 107 | const hash = (request.params as {hash: string}).hash 108 | request.log.info(`Received artifact for ${hash}`) 109 | await saveCache( 110 | request, 111 | hash, 112 | +(request.headers['content-length'] || 0), 113 | String(request.headers['x-artifact-tag'] || ''), 114 | request.raw 115 | ) 116 | return {ok: true} 117 | }) 118 | 119 | // Download cache 120 | fastify.get('/v8/artifacts/:hash', async (request, reply) => { 121 | const hash = (request.params as {hash: string}).hash 122 | request.log.info(`Requested artifact for ${hash}`) 123 | const result = await getCache(request, hash) 124 | if (result === null) { 125 | reply.code(404) 126 | return {ok: false} 127 | } 128 | const [size, stream, artifactTag] = result 129 | if (size) { 130 | reply.header('Content-Length', size) 131 | } 132 | reply.header('Content-Type', 'application/octet-stream') 133 | if (artifactTag) { 134 | reply.header('x-artifact-tag', artifactTag) 135 | } 136 | return reply.send(stream) 137 | }) 138 | await fastify.listen({port: serverPort}) 139 | } 140 | 141 | const env = Env( 142 | z.object({ 143 | ACTIONS_RUNTIME_TOKEN: z.string(), 144 | ACTIONS_CACHE_URL: z.string() 145 | }) 146 | ) 147 | 148 | // GitHub's Cache API 149 | // Thanks: https://github.com/tonistiigi/go-actions-cache/blob/master/api.md 150 | 151 | function getCacheClient(): AxiosInstance { 152 | return axios.create({ 153 | baseURL: `${env.ACTIONS_CACHE_URL.replace(/\/$/, '')}/_apis/artifactcache`, 154 | headers: { 155 | Authorization: `Bearer ${env.ACTIONS_RUNTIME_TOKEN}`, 156 | Accept: 'application/json;api-version=6.0-preview.1' 157 | } 158 | }) 159 | } 160 | 161 | interface RequestContext { 162 | log: { 163 | info: (message: string) => void 164 | } 165 | } 166 | 167 | async function saveCache( 168 | ctx: RequestContext, 169 | hash: string, 170 | size: number, 171 | tag: string, 172 | stream: Readable 173 | ): Promise { 174 | if (!env.valid) { 175 | ctx.log.info( 176 | `Using filesystem cache because cache API env vars are not set` 177 | ) 178 | await pipeline(stream, createWriteStream(`/tmp/${hash}.tg.bin`)) 179 | return 180 | } 181 | const client = getCacheClient() 182 | const existingCacheResponse = await client 183 | .post(`/caches`, { 184 | key: getCacheKey(hash) + (tag ? `#${tag}` : ''), 185 | version: cacheVersion 186 | }) 187 | .then(response => ({success: true as const, data: response.data})) 188 | .catch(error => { 189 | if (error.response && error.response.status === 409) { 190 | ctx.log.info( 191 | `Cache key is already being written to, skipping cache write.` 192 | ) 193 | return {success: false as const} // Early return to skip writing to cache 194 | } 195 | 196 | return handleAxiosError('Unable to reserve cache')(error) 197 | }) 198 | 199 | // Silently exit when we have not been able to receive a cache-hit 200 | if (existingCacheResponse.success === false) { 201 | return 202 | } 203 | 204 | const id = existingCacheResponse.data.cacheId 205 | if (!id) { 206 | throw new Error( 207 | `Unable to reserve cache (received: ${JSON.stringify( 208 | existingCacheResponse.data 209 | )})` 210 | ) 211 | } 212 | ctx.log.info(`Reserved cache ${id}`) 213 | await client 214 | .patch(`/caches/${id}`, stream, { 215 | headers: { 216 | 'Content-Length': size, 217 | 'Content-Type': 'application/octet-stream', 218 | 'Content-Range': `bytes 0-${size - 1}/*` 219 | } 220 | }) 221 | .catch(handleAxiosError('Unable to upload cache')) 222 | await client 223 | .post(`/caches/${id}`, {size}) 224 | .catch(handleAxiosError('Unable to commit cache')) 225 | ctx.log.info(`Saved cache ${id} for ${hash} (${size} bytes)`) 226 | } 227 | 228 | async function getCache( 229 | ctx: RequestContext, 230 | hash: string 231 | ): Promise<[number | undefined, Readable, string | undefined] | null> { 232 | if (!env.valid) { 233 | const path = `/tmp/${hash}.tg.bin` 234 | if (!existsSync(path)) return null 235 | const size = statSync(path).size 236 | return [size, createReadStream(path), undefined] 237 | } 238 | const client = getCacheClient() 239 | const cacheKey = getCacheKey(hash) 240 | const {data, status} = await client 241 | .get(`/caches`, { 242 | params: { 243 | keys: cacheKey, 244 | version: cacheVersion 245 | }, 246 | validateStatus: s => s < 500 247 | }) 248 | .catch(handleAxiosError('Unable to query cache')) 249 | ctx.log.info(`Cache lookup for ${cacheKey}: ${status}`) 250 | if (!data) { 251 | ctx.log.info(`Cache lookup did not return data`) 252 | return null 253 | } 254 | const [foundCacheKey, artifactTag] = String(data.cacheKey).split('#') 255 | if (foundCacheKey !== cacheKey) { 256 | ctx.log.info(`Cache key mismatch: ${foundCacheKey} !== ${cacheKey}`) 257 | return null 258 | } 259 | const resp = await axios.get(data.archiveLocation, { 260 | responseType: 'stream' 261 | }) 262 | const size = +(resp.headers['content-length'] || 0) 263 | return [size, resp.data, artifactTag] 264 | } 265 | 266 | run() 267 | 268 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 269 | function handleAxiosError(message: string): (err: any) => never { 270 | return err => { 271 | if (err.response) { 272 | const data = JSON.stringify(err.response.data) 273 | core.debug( 274 | `Response status ${err.response.status}: ${err.response.statusText}` 275 | ) 276 | core.debug(`Response headers: ${JSON.stringify(err.response.headers)}`) 277 | core.debug(`Response data: ${data}`) 278 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 279 | // @ts-ignore 280 | throw new Error(`${message}: ${err.message}`, {cause: err}) 281 | } 282 | throw err 283 | } 284 | } 285 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ 4 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 5 | "outDir": "./lib", /* Redirect output structure to the directory. */ 6 | "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 7 | "strict": true, /* Enable all strict type-checking options. */ 8 | "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 9 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 10 | }, 11 | "exclude": ["node_modules", "**/*.test.ts"] 12 | } 13 | --------------------------------------------------------------------------------