├── .eslintignore ├── .eslintrc.json ├── .github ├── dependabot.yml └── workflows │ ├── check-dist.yml │ ├── codeql-analysis.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── CODEOWNERS ├── LICENSE ├── MAINTAINERS.md ├── README.md ├── __tests__ └── main.test.ts ├── action.yml ├── dist ├── index.js ├── index.js.map ├── licenses.txt └── sourcemap-register.js ├── docs └── test.md ├── jest.config.js ├── package-lock.json ├── package.json ├── src ├── main.ts └── sources │ ├── base.ts │ ├── markdown.ts │ └── util.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 | } -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: monthly 7 | 8 | - package-ecosystem: npm 9 | directory: / 10 | schedule: 11 | interval: monthly 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 | - name: Set Node.js 16.x 27 | uses: actions/setup-node@v3.8.1 28 | with: 29 | node-version: 16.x 30 | 31 | - name: Install dependencies 32 | run: npm ci 33 | 34 | - name: Rebuild the dist/ directory 35 | run: | 36 | npm run package 37 | 38 | # @kiwicopple: I've disabled this worklfow for now, as it's not working as expected. It will still output an error. 39 | # - name: Compare the expected and actual dist/ directories 40 | # run: | 41 | # if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then 42 | # echo "Detected uncommitted changes after build. See status below:" 43 | # git diff 44 | # exit 1 45 | # fi 46 | # id: diff 47 | # 48 | # # If index.js was different than expected, upload the expected version as an artifact 49 | # - uses: actions/upload-artifact@v3 50 | # if: ${{ failure() && steps.diff.conclusion == 'failure' }} 51 | # with: 52 | # name: dist 53 | # path: dist/ 54 | -------------------------------------------------------------------------------- /.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@v2 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@v2 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@v2 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 | - run: | 15 | npm install 16 | - run: | 17 | npm run all 18 | test: # make sure the action works on a clean machine without building 19 | runs-on: ubuntu-latest 20 | steps: 21 | - uses: actions/checkout@v4 22 | - uses: ./ 23 | with: 24 | supabase-url: 'https://nihypcognmeejjrivnde.supabase.co' 25 | supabase-service-role-key: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }} 26 | openai-key: ${{ secrets.OPENAI_KEY }} 27 | docs-root-path: 'docs' 28 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @supabase/ai 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. -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | # Maintainers 2 | 3 | Instructions for developing and releasing this action. 4 | 5 | ## Develop 6 | 7 | ```bash 8 | npm install 9 | npm run package 10 | ``` 11 | 12 | ## Publish 13 | 14 | - Update the version in [package.json](package.json) 15 | - Make sure `/dist` is up to date: `npm run package` 16 | - Commit the version update: `git commit -a -m "Update to version x.x.x"` 17 | - Push a new tag 18 | 19 | ```bash 20 | git tag -a -m "Update to version x.x.x" vx.x.x 21 | git push --follow-tags 22 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Supabase Embeddings Generator 2 | 3 | A GitHub Action that converts your markdown files into embeddings and stores them in your Postgres/Supabase database, allowing you to perform vector similarity search inside your documentation and website. 4 | 5 | This action is a companion to the [`headless-vector-search`](https://github.com/supabase/headless-vector-search) repo, which is used to store and retrieve the embeddings using [OpenAI](https://openai.com) and [Supabase](https://supabase.com). 6 | 7 | ## Usage 8 | 9 | You can find this action on the [GitHub Marketplace](https://github.com/marketplace/actions/supabase-embeddings-generator). 10 | 11 | In your knowledge base repository, create a new action called `.github/workflows/generate_embeddings.yml` with the following content: 12 | 13 | ```yml 14 | name: 'generate_embeddings' 15 | on: # run on main branch changes 16 | push: 17 | branches: 18 | - main 19 | 20 | jobs: 21 | generate: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v3 25 | - uses: supabase/embeddings-generator@v0.x.x # Find the latest version in the Marketplace 26 | with: 27 | supabase-url: 'https://your-project-ref.supabase.co' 28 | supabase-service-role-key: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }} 29 | openai-key: ${{ secrets.OPENAI_KEY }} 30 | docs-root-path: 'docs' # the path to the root of your md(x) files 31 | ``` 32 | 33 | Make sure to set `SUPABASE_SERVICE_ROLE_KEY`, and `OPENAI_KEY` as repository secrets in your repo settings (settings > secrets > actions). 34 | 35 | See the instructions in the [`headless-vector-search`](https://github.com/supabase/headless-vector-search) for more information on how to query your database from your website. 36 | 37 | ## Developers 38 | 39 | See details in [MAINTAINERS.md](https://github.com/supabase/embeddings-generator/blob/main/MAINTAINERS.md) 40 | 41 | ## License 42 | 43 | [MIT](https://github.com/supabase/embeddings-generator/blob/main/LICENSE) -------------------------------------------------------------------------------- /__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 {test} from '@jest/globals' 5 | 6 | // shows how the runner will run a javascript action with env / stdout protocol 7 | test('test runs', () => { 8 | process.env['INPUT_MILLISECONDS'] = '500' 9 | const np = process.execPath 10 | const ip = path.join(__dirname, '..', 'dist', 'index.js') 11 | const options: cp.ExecFileSyncOptions = { 12 | env: process.env 13 | } 14 | console.log(cp.execFileSync(np, [ip], options).toString()) 15 | }) 16 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'supabase-embeddings-generator' 2 | description: 'Generate embeddings from your Knowledge Base to use with Supabase Vector.' 3 | author: 'Supabase' 4 | inputs: 5 | supabase-url: 6 | required: true 7 | description: 'Your Supabase project URL' 8 | supabase-service-role-key: 9 | required: true 10 | description: 'Your Supabase SERVICE_ROLE key' 11 | openai-key: 12 | required: true 13 | description: 'Your OpenAI API key' 14 | docs-root-path: 15 | required: true 16 | description: 'The path to the root of your knowledge base or docs folder' 17 | default: 'docs' 18 | runs: 19 | using: 'node16' 20 | main: 'dist/index.js' 21 | -------------------------------------------------------------------------------- /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 | @supabase/functions-js 39 | MIT 40 | MIT License 41 | 42 | Copyright (c) 2020 Supabase 43 | 44 | Permission is hereby granted, free of charge, to any person obtaining a copy 45 | of this software and associated documentation files (the "Software"), to deal 46 | in the Software without restriction, including without limitation the rights 47 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 48 | copies of the Software, and to permit persons to whom the Software is 49 | furnished to do so, subject to the following conditions: 50 | 51 | The above copyright notice and this permission notice shall be included in all 52 | copies or substantial portions of the Software. 53 | 54 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 55 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 56 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 57 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 58 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 59 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 60 | SOFTWARE. 61 | 62 | 63 | @supabase/gotrue-js 64 | MIT 65 | MIT License 66 | 67 | Copyright (c) 2020 Supabase 68 | 69 | Permission is hereby granted, free of charge, to any person obtaining a copy 70 | of this software and associated documentation files (the "Software"), to deal 71 | in the Software without restriction, including without limitation the rights 72 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 73 | copies of the Software, and to permit persons to whom the Software is 74 | furnished to do so, subject to the following conditions: 75 | 76 | The above copyright notice and this permission notice shall be included in all 77 | copies or substantial portions of the Software. 78 | 79 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 80 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 81 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 82 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 83 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 84 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 85 | SOFTWARE. 86 | 87 | 88 | @supabase/postgrest-js 89 | MIT 90 | MIT License 91 | 92 | Copyright (c) 2020 Supabase 93 | 94 | Permission is hereby granted, free of charge, to any person obtaining a copy 95 | of this software and associated documentation files (the "Software"), to deal 96 | in the Software without restriction, including without limitation the rights 97 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 98 | copies of the Software, and to permit persons to whom the Software is 99 | furnished to do so, subject to the following conditions: 100 | 101 | The above copyright notice and this permission notice shall be included in all 102 | copies or substantial portions of the Software. 103 | 104 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 105 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 106 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 107 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 108 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 109 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 110 | SOFTWARE. 111 | 112 | 113 | @supabase/realtime-js 114 | MIT 115 | # MIT License 116 | 117 | Copyright (c) 2020 Supabase 118 | 119 | Permission is hereby granted, free of charge, to any person obtaining 120 | a copy of this software and associated documentation files (the 121 | "Software"), to deal in the Software without restriction, including 122 | without limitation the rights to use, copy, modify, merge, publish, 123 | distribute, sublicense, and/or sell copies of the Software, and to 124 | permit persons to whom the Software is furnished to do so, subject to 125 | the following conditions: 126 | 127 | The above copyright notice and this permission notice shall be 128 | included in all copies or substantial portions of the Software. 129 | 130 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 131 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 132 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 133 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 134 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 135 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 136 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 137 | 138 | 139 | @supabase/storage-js 140 | MIT 141 | Apache License 142 | Version 2.0, January 2004 143 | http://www.apache.org/licenses/ 144 | 145 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 146 | 147 | 1. Definitions. 148 | 149 | "License" shall mean the terms and conditions for use, reproduction, 150 | and distribution as defined by Sections 1 through 9 of this document. 151 | 152 | "Licensor" shall mean the copyright owner or entity authorized by 153 | the copyright owner that is granting the License. 154 | 155 | "Legal Entity" shall mean the union of the acting entity and all 156 | other entities that control, are controlled by, or are under common 157 | control with that entity. For the purposes of this definition, 158 | "control" means (i) the power, direct or indirect, to cause the 159 | direction or management of such entity, whether by contract or 160 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 161 | outstanding shares, or (iii) beneficial ownership of such entity. 162 | 163 | "You" (or "Your") shall mean an individual or Legal Entity 164 | exercising permissions granted by this License. 165 | 166 | "Source" form shall mean the preferred form for making modifications, 167 | including but not limited to software source code, documentation 168 | source, and configuration files. 169 | 170 | "Object" form shall mean any form resulting from mechanical 171 | transformation or translation of a Source form, including but 172 | not limited to compiled object code, generated documentation, 173 | and conversions to other media types. 174 | 175 | "Work" shall mean the work of authorship, whether in Source or 176 | Object form, made available under the License, as indicated by a 177 | copyright notice that is included in or attached to the work 178 | (an example is provided in the Appendix below). 179 | 180 | "Derivative Works" shall mean any work, whether in Source or Object 181 | form, that is based on (or derived from) the Work and for which the 182 | editorial revisions, annotations, elaborations, or other modifications 183 | represent, as a whole, an original work of authorship. For the purposes 184 | of this License, Derivative Works shall not include works that remain 185 | separable from, or merely link (or bind by name) to the interfaces of, 186 | the Work and Derivative Works thereof. 187 | 188 | "Contribution" shall mean any work of authorship, including 189 | the original version of the Work and any modifications or additions 190 | to that Work or Derivative Works thereof, that is intentionally 191 | submitted to Licensor for inclusion in the Work by the copyright owner 192 | or by an individual or Legal Entity authorized to submit on behalf of 193 | the copyright owner. For the purposes of this definition, "submitted" 194 | means any form of electronic, verbal, or written communication sent 195 | to the Licensor or its representatives, including but not limited to 196 | communication on electronic mailing lists, source code control systems, 197 | and issue tracking systems that are managed by, or on behalf of, the 198 | Licensor for the purpose of discussing and improving the Work, but 199 | excluding communication that is conspicuously marked or otherwise 200 | designated in writing by the copyright owner as "Not a Contribution." 201 | 202 | "Contributor" shall mean Licensor and any individual or Legal Entity 203 | on behalf of whom a Contribution has been received by Licensor and 204 | subsequently incorporated within the Work. 205 | 206 | 2. Grant of Copyright License. Subject to the terms and conditions of 207 | this License, each Contributor hereby grants to You a perpetual, 208 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 209 | copyright license to reproduce, prepare Derivative Works of, 210 | publicly display, publicly perform, sublicense, and distribute the 211 | Work and such Derivative Works in Source or Object form. 212 | 213 | 3. Grant of Patent License. Subject to the terms and conditions of 214 | this License, each Contributor hereby grants to You a perpetual, 215 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 216 | (except as stated in this section) patent license to make, have made, 217 | use, offer to sell, sell, import, and otherwise transfer the Work, 218 | where such license applies only to those patent claims licensable 219 | by such Contributor that are necessarily infringed by their 220 | Contribution(s) alone or by combination of their Contribution(s) 221 | with the Work to which such Contribution(s) was submitted. If You 222 | institute patent litigation against any entity (including a 223 | cross-claim or counterclaim in a lawsuit) alleging that the Work 224 | or a Contribution incorporated within the Work constitutes direct 225 | or contributory patent infringement, then any patent licenses 226 | granted to You under this License for that Work shall terminate 227 | as of the date such litigation is filed. 228 | 229 | 4. Redistribution. You may reproduce and distribute copies of the 230 | Work or Derivative Works thereof in any medium, with or without 231 | modifications, and in Source or Object form, provided that You 232 | meet the following conditions: 233 | 234 | (a) You must give any other recipients of the Work or 235 | Derivative Works a copy of this License; and 236 | 237 | (b) You must cause any modified files to carry prominent notices 238 | stating that You changed the files; and 239 | 240 | (c) You must retain, in the Source form of any Derivative Works 241 | that You distribute, all copyright, patent, trademark, and 242 | attribution notices from the Source form of the Work, 243 | excluding those notices that do not pertain to any part of 244 | the Derivative Works; and 245 | 246 | (d) If the Work includes a "NOTICE" text file as part of its 247 | distribution, then any Derivative Works that You distribute must 248 | include a readable copy of the attribution notices contained 249 | within such NOTICE file, excluding those notices that do not 250 | pertain to any part of the Derivative Works, in at least one 251 | of the following places: within a NOTICE text file distributed 252 | as part of the Derivative Works; within the Source form or 253 | documentation, if provided along with the Derivative Works; or, 254 | within a display generated by the Derivative Works, if and 255 | wherever such third-party notices normally appear. The contents 256 | of the NOTICE file are for informational purposes only and 257 | do not modify the License. You may add Your own attribution 258 | notices within Derivative Works that You distribute, alongside 259 | or as an addendum to the NOTICE text from the Work, provided 260 | that such additional attribution notices cannot be construed 261 | as modifying the License. 262 | 263 | You may add Your own copyright statement to Your modifications and 264 | may provide additional or different license terms and conditions 265 | for use, reproduction, or distribution of Your modifications, or 266 | for any such Derivative Works as a whole, provided Your use, 267 | reproduction, and distribution of the Work otherwise complies with 268 | the conditions stated in this License. 269 | 270 | 5. Submission of Contributions. Unless You explicitly state otherwise, 271 | any Contribution intentionally submitted for inclusion in the Work 272 | by You to the Licensor shall be under the terms and conditions of 273 | this License, without any additional terms or conditions. 274 | Notwithstanding the above, nothing herein shall supersede or modify 275 | the terms of any separate license agreement you may have executed 276 | with Licensor regarding such Contributions. 277 | 278 | 6. Trademarks. This License does not grant permission to use the trade 279 | names, trademarks, service marks, or product names of the Licensor, 280 | except as required for reasonable and customary use in describing the 281 | origin of the Work and reproducing the content of the NOTICE file. 282 | 283 | 7. Disclaimer of Warranty. Unless required by applicable law or 284 | agreed to in writing, Licensor provides the Work (and each 285 | Contributor provides its Contributions) on an "AS IS" BASIS, 286 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 287 | implied, including, without limitation, any warranties or conditions 288 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 289 | PARTICULAR PURPOSE. You are solely responsible for determining the 290 | appropriateness of using or redistributing the Work and assume any 291 | risks associated with Your exercise of permissions under this License. 292 | 293 | 8. Limitation of Liability. In no event and under no legal theory, 294 | whether in tort (including negligence), contract, or otherwise, 295 | unless required by applicable law (such as deliberate and grossly 296 | negligent acts) or agreed to in writing, shall any Contributor be 297 | liable to You for damages, including any direct, indirect, special, 298 | incidental, or consequential damages of any character arising as a 299 | result of this License or out of the use or inability to use the 300 | Work (including but not limited to damages for loss of goodwill, 301 | work stoppage, computer failure or malfunction, or any and all 302 | other commercial damages or losses), even if such Contributor 303 | has been advised of the possibility of such damages. 304 | 305 | 9. Accepting Warranty or Additional Liability. While redistributing 306 | the Work or Derivative Works thereof, You may choose to offer, 307 | and charge a fee for, acceptance of support, warranty, indemnity, 308 | or other liability obligations and/or rights consistent with this 309 | License. However, in accepting such obligations, You may act only 310 | on Your own behalf and on Your sole responsibility, not on behalf 311 | of any other Contributor, and only if You agree to indemnify, 312 | defend, and hold each Contributor harmless for any liability 313 | incurred by, or claims asserted against, such Contributor by reason 314 | of your accepting any such warranty or additional liability. 315 | 316 | END OF TERMS AND CONDITIONS 317 | 318 | APPENDIX: How to apply the Apache License to your work. 319 | 320 | To apply the Apache License to your work, attach the following 321 | boilerplate notice, with the fields enclosed by brackets "[]" 322 | replaced with your own identifying information. (Don't include 323 | the brackets!) The text should be enclosed in the appropriate 324 | comment syntax for the file format. We also recommend that a 325 | file or class name and description of purpose be included on the 326 | same "printed page" as the copyright notice for easier 327 | identification within third-party archives. 328 | 329 | Copyright [yyyy] [name of copyright owner] 330 | 331 | Licensed under the Apache License, Version 2.0 (the "License"); 332 | you may not use this file except in compliance with the License. 333 | You may obtain a copy of the License at 334 | 335 | http://www.apache.org/licenses/LICENSE-2.0 336 | 337 | Unless required by applicable law or agreed to in writing, software 338 | distributed under the License is distributed on an "AS IS" BASIS, 339 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 340 | See the License for the specific language governing permissions and 341 | limitations under the License. 342 | 343 | 344 | @supabase/supabase-js 345 | MIT 346 | MIT License 347 | 348 | Copyright (c) 2020 Supabase 349 | 350 | Permission is hereby granted, free of charge, to any person obtaining a copy 351 | of this software and associated documentation files (the "Software"), to deal 352 | in the Software without restriction, including without limitation the rights 353 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 354 | copies of the Software, and to permit persons to whom the Software is 355 | furnished to do so, subject to the following conditions: 356 | 357 | The above copyright notice and this permission notice shall be included in all 358 | copies or substantial portions of the Software. 359 | 360 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 361 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 362 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 363 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 364 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 365 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 366 | SOFTWARE. 367 | 368 | 369 | @vercel/ncc 370 | MIT 371 | Copyright 2018 ZEIT, Inc. 372 | 373 | 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: 374 | 375 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 376 | 377 | 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. 378 | 379 | acorn 380 | MIT 381 | MIT License 382 | 383 | Copyright (C) 2012-2022 by various contributors (see AUTHORS) 384 | 385 | Permission is hereby granted, free of charge, to any person obtaining a copy 386 | of this software and associated documentation files (the "Software"), to deal 387 | in the Software without restriction, including without limitation the rights 388 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 389 | copies of the Software, and to permit persons to whom the Software is 390 | furnished to do so, subject to the following conditions: 391 | 392 | The above copyright notice and this permission notice shall be included in 393 | all copies or substantial portions of the Software. 394 | 395 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 396 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 397 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 398 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 399 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 400 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 401 | THE SOFTWARE. 402 | 403 | 404 | acorn-jsx 405 | MIT 406 | Copyright (C) 2012-2017 by Ingvar Stepanyan 407 | 408 | Permission is hereby granted, free of charge, to any person obtaining a copy 409 | of this software and associated documentation files (the "Software"), to deal 410 | in the Software without restriction, including without limitation the rights 411 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 412 | copies of the Software, and to permit persons to whom the Software is 413 | furnished to do so, subject to the following conditions: 414 | 415 | The above copyright notice and this permission notice shall be included in 416 | all copies or substantial portions of the Software. 417 | 418 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 419 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 420 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 421 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 422 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 423 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 424 | THE SOFTWARE. 425 | 426 | 427 | asynckit 428 | MIT 429 | The MIT License (MIT) 430 | 431 | Copyright (c) 2016 Alex Indigo 432 | 433 | Permission is hereby granted, free of charge, to any person obtaining a copy 434 | of this software and associated documentation files (the "Software"), to deal 435 | in the Software without restriction, including without limitation the rights 436 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 437 | copies of the Software, and to permit persons to whom the Software is 438 | furnished to do so, subject to the following conditions: 439 | 440 | The above copyright notice and this permission notice shall be included in all 441 | copies or substantial portions of the Software. 442 | 443 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 444 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 445 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 446 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 447 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 448 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 449 | SOFTWARE. 450 | 451 | 452 | axios 453 | MIT 454 | Copyright (c) 2014-present Matt Zabriskie 455 | 456 | Permission is hereby granted, free of charge, to any person obtaining a copy 457 | of this software and associated documentation files (the "Software"), to deal 458 | in the Software without restriction, including without limitation the rights 459 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 460 | copies of the Software, and to permit persons to whom the Software is 461 | furnished to do so, subject to the following conditions: 462 | 463 | The above copyright notice and this permission notice shall be included in 464 | all copies or substantial portions of the Software. 465 | 466 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 467 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 468 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 469 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 470 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 471 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 472 | THE SOFTWARE. 473 | 474 | 475 | bufferutil 476 | MIT 477 | Copyright (c) 2011 Einar Otto Stangvik (http://2x.io) 478 | 479 | Permission is hereby granted, free of charge, to any person obtaining a copy 480 | of this software and associated documentation files (the "Software"), to deal 481 | in the Software without restriction, including without limitation the rights 482 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 483 | copies of the Software, and to permit persons to whom the Software is 484 | furnished to do so, subject to the following conditions: 485 | 486 | The above copyright notice and this permission notice shall be included in all 487 | copies or substantial portions of the Software. 488 | 489 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 490 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 491 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 492 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 493 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 494 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 495 | SOFTWARE. 496 | 497 | 498 | character-entities 499 | MIT 500 | (The MIT License) 501 | 502 | Copyright (c) 2015 Titus Wormer 503 | 504 | Permission is hereby granted, free of charge, to any person obtaining 505 | a copy of this software and associated documentation files (the 506 | 'Software'), to deal in the Software without restriction, including 507 | without limitation the rights to use, copy, modify, merge, publish, 508 | distribute, sublicense, and/or sell copies of the Software, and to 509 | permit persons to whom the Software is furnished to do so, subject to 510 | the following conditions: 511 | 512 | The above copyright notice and this permission notice shall be 513 | included in all copies or substantial portions of the Software. 514 | 515 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 516 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 517 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 518 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 519 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 520 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 521 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 522 | 523 | 524 | character-entities-legacy 525 | MIT 526 | (The MIT License) 527 | 528 | Copyright (c) 2015 Titus Wormer 529 | 530 | Permission is hereby granted, free of charge, to any person obtaining 531 | a copy of this software and associated documentation files (the 532 | 'Software'), to deal in the Software without restriction, including 533 | without limitation the rights to use, copy, modify, merge, publish, 534 | distribute, sublicense, and/or sell copies of the Software, and to 535 | permit persons to whom the Software is furnished to do so, subject to 536 | the following conditions: 537 | 538 | The above copyright notice and this permission notice shall be 539 | included in all copies or substantial portions of the Software. 540 | 541 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 542 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 543 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 544 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 545 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 546 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 547 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 548 | 549 | 550 | character-reference-invalid 551 | MIT 552 | (The MIT License) 553 | 554 | Copyright (c) 2015 Titus Wormer 555 | 556 | Permission is hereby granted, free of charge, to any person obtaining 557 | a copy of this software and associated documentation files (the 558 | 'Software'), to deal in the Software without restriction, including 559 | without limitation the rights to use, copy, modify, merge, publish, 560 | distribute, sublicense, and/or sell copies of the Software, and to 561 | permit persons to whom the Software is furnished to do so, subject to 562 | the following conditions: 563 | 564 | The above copyright notice and this permission notice shall be 565 | included in all copies or substantial portions of the Software. 566 | 567 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 568 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 569 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 570 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 571 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 572 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 573 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 574 | 575 | 576 | combined-stream 577 | MIT 578 | Copyright (c) 2011 Debuggable Limited 579 | 580 | Permission is hereby granted, free of charge, to any person obtaining a copy 581 | of this software and associated documentation files (the "Software"), to deal 582 | in the Software without restriction, including without limitation the rights 583 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 584 | copies of the Software, and to permit persons to whom the Software is 585 | furnished to do so, subject to the following conditions: 586 | 587 | The above copyright notice and this permission notice shall be included in 588 | all copies or substantial portions of the Software. 589 | 590 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 591 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 592 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 593 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 594 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 595 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 596 | THE SOFTWARE. 597 | 598 | 599 | cross-fetch 600 | MIT 601 | The MIT License (MIT) 602 | 603 | Copyright (c) 2017 Leonardo Quixadá 604 | 605 | Permission is hereby granted, free of charge, to any person obtaining a copy 606 | of this software and associated documentation files (the "Software"), to deal 607 | in the Software without restriction, including without limitation the rights 608 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 609 | copies of the Software, and to permit persons to whom the Software is 610 | furnished to do so, subject to the following conditions: 611 | 612 | The above copyright notice and this permission notice shall be included in all 613 | copies or substantial portions of the Software. 614 | 615 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 616 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 617 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 618 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 619 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 620 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 621 | SOFTWARE. 622 | 623 | 624 | debug 625 | MIT 626 | (The MIT License) 627 | 628 | Copyright (c) 2014-2017 TJ Holowaychuk 629 | Copyright (c) 2018-2021 Josh Junon 630 | 631 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 632 | and associated documentation files (the 'Software'), to deal in the Software without restriction, 633 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 634 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 635 | subject to the following conditions: 636 | 637 | The above copyright notice and this permission notice shall be included in all copies or substantial 638 | portions of the Software. 639 | 640 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 641 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 642 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 643 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 644 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 645 | 646 | 647 | 648 | decode-named-character-reference 649 | MIT 650 | (The MIT License) 651 | 652 | Copyright (c) 2021 Titus Wormer 653 | 654 | Permission is hereby granted, free of charge, to any person obtaining 655 | a copy of this software and associated documentation files (the 656 | 'Software'), to deal in the Software without restriction, including 657 | without limitation the rights to use, copy, modify, merge, publish, 658 | distribute, sublicense, and/or sell copies of the Software, and to 659 | permit persons to whom the Software is furnished to do so, subject to 660 | the following conditions: 661 | 662 | The above copyright notice and this permission notice shall be 663 | included in all copies or substantial portions of the Software. 664 | 665 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 666 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 667 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 668 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 669 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 670 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 671 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 672 | 673 | 674 | delayed-stream 675 | MIT 676 | Copyright (c) 2011 Debuggable Limited 677 | 678 | Permission is hereby granted, free of charge, to any person obtaining a copy 679 | of this software and associated documentation files (the "Software"), to deal 680 | in the Software without restriction, including without limitation the rights 681 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 682 | copies of the Software, and to permit persons to whom the Software is 683 | furnished to do so, subject to the following conditions: 684 | 685 | The above copyright notice and this permission notice shall be included in 686 | all copies or substantial portions of the Software. 687 | 688 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 689 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 690 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 691 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 692 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 693 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 694 | THE SOFTWARE. 695 | 696 | 697 | estree-util-is-identifier-name 698 | MIT 699 | (The MIT License) 700 | 701 | Copyright (c) 2020 Titus Wormer 702 | 703 | Permission is hereby granted, free of charge, to any person obtaining 704 | a copy of this software and associated documentation files (the 705 | 'Software'), to deal in the Software without restriction, including 706 | without limitation the rights to use, copy, modify, merge, publish, 707 | distribute, sublicense, and/or sell copies of the Software, and to 708 | permit persons to whom the Software is furnished to do so, subject to 709 | the following conditions: 710 | 711 | The above copyright notice and this permission notice shall be 712 | included in all copies or substantial portions of the Software. 713 | 714 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 715 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 716 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 717 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 718 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 719 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 720 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 721 | 722 | 723 | estree-util-visit 724 | MIT 725 | (The MIT License) 726 | 727 | Copyright (c) 2021 Titus Wormer 728 | 729 | Permission is hereby granted, free of charge, to any person obtaining 730 | a copy of this software and associated documentation files (the 731 | 'Software'), to deal in the Software without restriction, including 732 | without limitation the rights to use, copy, modify, merge, publish, 733 | distribute, sublicense, and/or sell copies of the Software, and to 734 | permit persons to whom the Software is furnished to do so, subject to 735 | the following conditions: 736 | 737 | The above copyright notice and this permission notice shall be 738 | included in all copies or substantial portions of the Software. 739 | 740 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 741 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 742 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 743 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 744 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 745 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 746 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 747 | 748 | 749 | follow-redirects 750 | MIT 751 | Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh 752 | 753 | Permission is hereby granted, free of charge, to any person obtaining a copy of 754 | this software and associated documentation files (the "Software"), to deal in 755 | the Software without restriction, including without limitation the rights to 756 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 757 | of the Software, and to permit persons to whom the Software is furnished to do 758 | so, subject to the following conditions: 759 | 760 | The above copyright notice and this permission notice shall be included in all 761 | copies or substantial portions of the Software. 762 | 763 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 764 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 765 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 766 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 767 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 768 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 769 | 770 | 771 | form-data 772 | MIT 773 | Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors 774 | 775 | Permission is hereby granted, free of charge, to any person obtaining a copy 776 | of this software and associated documentation files (the "Software"), to deal 777 | in the Software without restriction, including without limitation the rights 778 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 779 | copies of the Software, and to permit persons to whom the Software is 780 | furnished to do so, subject to the following conditions: 781 | 782 | The above copyright notice and this permission notice shall be included in 783 | all copies or substantial portions of the Software. 784 | 785 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 786 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 787 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 788 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 789 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 790 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 791 | THE SOFTWARE. 792 | 793 | 794 | github-slugger 795 | ISC 796 | Copyright (c) 2015, Dan Flettre 797 | 798 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 799 | 800 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 801 | 802 | 803 | has-flag 804 | MIT 805 | MIT License 806 | 807 | Copyright (c) Sindre Sorhus (sindresorhus.com) 808 | 809 | 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: 810 | 811 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 812 | 813 | 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. 814 | 815 | 816 | is-alphabetical 817 | MIT 818 | (The MIT License) 819 | 820 | Copyright (c) 2016 Titus Wormer 821 | 822 | Permission is hereby granted, free of charge, to any person obtaining 823 | a copy of this software and associated documentation files (the 824 | 'Software'), to deal in the Software without restriction, including 825 | without limitation the rights to use, copy, modify, merge, publish, 826 | distribute, sublicense, and/or sell copies of the Software, and to 827 | permit persons to whom the Software is furnished to do so, subject to 828 | the following conditions: 829 | 830 | The above copyright notice and this permission notice shall be 831 | included in all copies or substantial portions of the Software. 832 | 833 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 834 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 835 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 836 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 837 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 838 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 839 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 840 | 841 | 842 | is-alphanumerical 843 | MIT 844 | (The MIT License) 845 | 846 | Copyright (c) 2016 Titus Wormer 847 | 848 | Permission is hereby granted, free of charge, to any person obtaining 849 | a copy of this software and associated documentation files (the 850 | 'Software'), to deal in the Software without restriction, including 851 | without limitation the rights to use, copy, modify, merge, publish, 852 | distribute, sublicense, and/or sell copies of the Software, and to 853 | permit persons to whom the Software is furnished to do so, subject to 854 | the following conditions: 855 | 856 | The above copyright notice and this permission notice shall be 857 | included in all copies or substantial portions of the Software. 858 | 859 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 860 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 861 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 862 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 863 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 864 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 865 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 866 | 867 | 868 | is-decimal 869 | MIT 870 | (The MIT License) 871 | 872 | Copyright (c) 2016 Titus Wormer 873 | 874 | Permission is hereby granted, free of charge, to any person obtaining 875 | a copy of this software and associated documentation files (the 876 | 'Software'), to deal in the Software without restriction, including 877 | without limitation the rights to use, copy, modify, merge, publish, 878 | distribute, sublicense, and/or sell copies of the Software, and to 879 | permit persons to whom the Software is furnished to do so, subject to 880 | the following conditions: 881 | 882 | The above copyright notice and this permission notice shall be 883 | included in all copies or substantial portions of the Software. 884 | 885 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 886 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 887 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 888 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 889 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 890 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 891 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 892 | 893 | 894 | is-hexadecimal 895 | MIT 896 | (The MIT License) 897 | 898 | Copyright (c) 2016 Titus Wormer 899 | 900 | Permission is hereby granted, free of charge, to any person obtaining 901 | a copy of this software and associated documentation files (the 902 | 'Software'), to deal in the Software without restriction, including 903 | without limitation the rights to use, copy, modify, merge, publish, 904 | distribute, sublicense, and/or sell copies of the Software, and to 905 | permit persons to whom the Software is furnished to do so, subject to 906 | the following conditions: 907 | 908 | The above copyright notice and this permission notice shall be 909 | included in all copies or substantial portions of the Software. 910 | 911 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 912 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 913 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 914 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 915 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 916 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 917 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 918 | 919 | 920 | is-typedarray 921 | MIT 922 | This software is released under the MIT license: 923 | 924 | Permission is hereby granted, free of charge, to any person obtaining a copy of 925 | this software and associated documentation files (the "Software"), to deal in 926 | the Software without restriction, including without limitation the rights to 927 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 928 | the Software, and to permit persons to whom the Software is furnished to do so, 929 | subject to the following conditions: 930 | 931 | The above copyright notice and this permission notice shall be included in all 932 | copies or substantial portions of the Software. 933 | 934 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 935 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 936 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 937 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 938 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 939 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 940 | 941 | 942 | longest-streak 943 | MIT 944 | (The MIT License) 945 | 946 | Copyright (c) 2015 Titus Wormer 947 | 948 | Permission is hereby granted, free of charge, to any person obtaining 949 | a copy of this software and associated documentation files (the 950 | 'Software'), to deal in the Software without restriction, including 951 | without limitation the rights to use, copy, modify, merge, publish, 952 | distribute, sublicense, and/or sell copies of the Software, and to 953 | permit persons to whom the Software is furnished to do so, subject to 954 | the following conditions: 955 | 956 | The above copyright notice and this permission notice shall be 957 | included in all copies or substantial portions of the Software. 958 | 959 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 960 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 961 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 962 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 963 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 964 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 965 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 966 | 967 | 968 | mdast-util-from-markdown 969 | MIT 970 | (The MIT License) 971 | 972 | Copyright (c) 2020 Titus Wormer 973 | 974 | Permission is hereby granted, free of charge, to any person obtaining 975 | a copy of this software and associated documentation files (the 976 | 'Software'), to deal in the Software without restriction, including 977 | without limitation the rights to use, copy, modify, merge, publish, 978 | distribute, sublicense, and/or sell copies of the Software, and to 979 | permit persons to whom the Software is furnished to do so, subject to 980 | the following conditions: 981 | 982 | The above copyright notice and this permission notice shall be 983 | included in all copies or substantial portions of the Software. 984 | 985 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 986 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 987 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 988 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 989 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 990 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 991 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 992 | 993 | 994 | mdast-util-mdx 995 | MIT 996 | (The MIT License) 997 | 998 | Copyright (c) 2020 Titus Wormer 999 | 1000 | Permission is hereby granted, free of charge, to any person obtaining 1001 | a copy of this software and associated documentation files (the 1002 | 'Software'), to deal in the Software without restriction, including 1003 | without limitation the rights to use, copy, modify, merge, publish, 1004 | distribute, sublicense, and/or sell copies of the Software, and to 1005 | permit persons to whom the Software is furnished to do so, subject to 1006 | the following conditions: 1007 | 1008 | The above copyright notice and this permission notice shall be 1009 | included in all copies or substantial portions of the Software. 1010 | 1011 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1012 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1013 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1014 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1015 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1016 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1017 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1018 | 1019 | 1020 | mdast-util-mdx-expression 1021 | MIT 1022 | (The MIT License) 1023 | 1024 | Copyright (c) 2020 Titus Wormer 1025 | 1026 | Permission is hereby granted, free of charge, to any person obtaining 1027 | a copy of this software and associated documentation files (the 1028 | 'Software'), to deal in the Software without restriction, including 1029 | without limitation the rights to use, copy, modify, merge, publish, 1030 | distribute, sublicense, and/or sell copies of the Software, and to 1031 | permit persons to whom the Software is furnished to do so, subject to 1032 | the following conditions: 1033 | 1034 | The above copyright notice and this permission notice shall be 1035 | included in all copies or substantial portions of the Software. 1036 | 1037 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1038 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1039 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1040 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1041 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1042 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1043 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1044 | 1045 | 1046 | mdast-util-mdx-jsx 1047 | MIT 1048 | (The MIT License) 1049 | 1050 | Copyright (c) 2020 Titus Wormer 1051 | 1052 | Permission is hereby granted, free of charge, to any person obtaining 1053 | a copy of this software and associated documentation files (the 1054 | 'Software'), to deal in the Software without restriction, including 1055 | without limitation the rights to use, copy, modify, merge, publish, 1056 | distribute, sublicense, and/or sell copies of the Software, and to 1057 | permit persons to whom the Software is furnished to do so, subject to 1058 | the following conditions: 1059 | 1060 | The above copyright notice and this permission notice shall be 1061 | included in all copies or substantial portions of the Software. 1062 | 1063 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1064 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1065 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1066 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1067 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1068 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1069 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1070 | 1071 | 1072 | mdast-util-mdxjs-esm 1073 | MIT 1074 | (The MIT License) 1075 | 1076 | Copyright (c) 2020 Titus Wormer 1077 | 1078 | Permission is hereby granted, free of charge, to any person obtaining 1079 | a copy of this software and associated documentation files (the 1080 | 'Software'), to deal in the Software without restriction, including 1081 | without limitation the rights to use, copy, modify, merge, publish, 1082 | distribute, sublicense, and/or sell copies of the Software, and to 1083 | permit persons to whom the Software is furnished to do so, subject to 1084 | the following conditions: 1085 | 1086 | The above copyright notice and this permission notice shall be 1087 | included in all copies or substantial portions of the Software. 1088 | 1089 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1090 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1091 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1092 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1093 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1094 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1095 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1096 | 1097 | 1098 | mdast-util-phrasing 1099 | MIT 1100 | (The MIT License) 1101 | 1102 | Copyright (c) 2017 Titus Wormer 1103 | Copyright (c) 2017 Victor Felder 1104 | 1105 | Permission is hereby granted, free of charge, to any person obtaining 1106 | a copy of this software and associated documentation files (the 1107 | 'Software'), to deal in the Software without restriction, including 1108 | without limitation the rights to use, copy, modify, merge, publish, 1109 | distribute, sublicense, and/or sell copies of the Software, and to 1110 | permit persons to whom the Software is furnished to do so, subject to 1111 | the following conditions: 1112 | 1113 | The above copyright notice and this permission notice shall be 1114 | included in all copies or substantial portions of the Software. 1115 | 1116 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1117 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1118 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1119 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1120 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1121 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1122 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1123 | 1124 | 1125 | mdast-util-to-markdown 1126 | MIT 1127 | (The MIT License) 1128 | 1129 | Copyright (c) 2020 Titus Wormer 1130 | 1131 | Permission is hereby granted, free of charge, to any person obtaining 1132 | a copy of this software and associated documentation files (the 1133 | 'Software'), to deal in the Software without restriction, including 1134 | without limitation the rights to use, copy, modify, merge, publish, 1135 | distribute, sublicense, and/or sell copies of the Software, and to 1136 | permit persons to whom the Software is furnished to do so, subject to 1137 | the following conditions: 1138 | 1139 | The above copyright notice and this permission notice shall be 1140 | included in all copies or substantial portions of the Software. 1141 | 1142 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1143 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1144 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1145 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1146 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1147 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1148 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1149 | 1150 | 1151 | mdast-util-to-string 1152 | MIT 1153 | (The MIT License) 1154 | 1155 | Copyright (c) 2015 Titus Wormer 1156 | 1157 | Permission is hereby granted, free of charge, to any person obtaining 1158 | a copy of this software and associated documentation files (the 1159 | 'Software'), to deal in the Software without restriction, including 1160 | without limitation the rights to use, copy, modify, merge, publish, 1161 | distribute, sublicense, and/or sell copies of the Software, and to 1162 | permit persons to whom the Software is furnished to do so, subject to 1163 | the following conditions: 1164 | 1165 | The above copyright notice and this permission notice shall be 1166 | included in all copies or substantial portions of the Software. 1167 | 1168 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1169 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1170 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1171 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1172 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1173 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1174 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1175 | 1176 | 1177 | micromark 1178 | MIT 1179 | 1180 | micromark-core-commonmark 1181 | MIT 1182 | 1183 | micromark-extension-mdx-expression 1184 | MIT 1185 | 1186 | micromark-extension-mdx-jsx 1187 | MIT 1188 | (The MIT License) 1189 | 1190 | Copyright (c) 2020 Titus Wormer 1191 | 1192 | Permission is hereby granted, free of charge, to any person obtaining 1193 | a copy of this software and associated documentation files (the 1194 | 'Software'), to deal in the Software without restriction, including 1195 | without limitation the rights to use, copy, modify, merge, publish, 1196 | distribute, sublicense, and/or sell copies of the Software, and to 1197 | permit persons to whom the Software is furnished to do so, subject to 1198 | the following conditions: 1199 | 1200 | The above copyright notice and this permission notice shall be 1201 | included in all copies or substantial portions of the Software. 1202 | 1203 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1204 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1205 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1206 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1207 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1208 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1209 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1210 | 1211 | 1212 | micromark-extension-mdx-md 1213 | MIT 1214 | (The MIT License) 1215 | 1216 | Copyright (c) 2020 Titus Wormer 1217 | 1218 | Permission is hereby granted, free of charge, to any person obtaining 1219 | a copy of this software and associated documentation files (the 1220 | 'Software'), to deal in the Software without restriction, including 1221 | without limitation the rights to use, copy, modify, merge, publish, 1222 | distribute, sublicense, and/or sell copies of the Software, and to 1223 | permit persons to whom the Software is furnished to do so, subject to 1224 | the following conditions: 1225 | 1226 | The above copyright notice and this permission notice shall be 1227 | included in all copies or substantial portions of the Software. 1228 | 1229 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1230 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1231 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1232 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1233 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1234 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1235 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1236 | 1237 | 1238 | micromark-extension-mdxjs 1239 | MIT 1240 | (The MIT License) 1241 | 1242 | Copyright (c) 2020 Titus Wormer 1243 | 1244 | Permission is hereby granted, free of charge, to any person obtaining 1245 | a copy of this software and associated documentation files (the 1246 | 'Software'), to deal in the Software without restriction, including 1247 | without limitation the rights to use, copy, modify, merge, publish, 1248 | distribute, sublicense, and/or sell copies of the Software, and to 1249 | permit persons to whom the Software is furnished to do so, subject to 1250 | the following conditions: 1251 | 1252 | The above copyright notice and this permission notice shall be 1253 | included in all copies or substantial portions of the Software. 1254 | 1255 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1256 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1257 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1258 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1259 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1260 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1261 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1262 | 1263 | 1264 | micromark-extension-mdxjs-esm 1265 | MIT 1266 | (The MIT License) 1267 | 1268 | Copyright (c) 2020 Titus Wormer 1269 | 1270 | Permission is hereby granted, free of charge, to any person obtaining 1271 | a copy of this software and associated documentation files (the 1272 | 'Software'), to deal in the Software without restriction, including 1273 | without limitation the rights to use, copy, modify, merge, publish, 1274 | distribute, sublicense, and/or sell copies of the Software, and to 1275 | permit persons to whom the Software is furnished to do so, subject to 1276 | the following conditions: 1277 | 1278 | The above copyright notice and this permission notice shall be 1279 | included in all copies or substantial portions of the Software. 1280 | 1281 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1282 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1283 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1284 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1285 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1286 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1287 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1288 | 1289 | 1290 | micromark-factory-destination 1291 | MIT 1292 | 1293 | micromark-factory-label 1294 | MIT 1295 | 1296 | micromark-factory-mdx-expression 1297 | MIT 1298 | 1299 | micromark-factory-space 1300 | MIT 1301 | 1302 | micromark-factory-title 1303 | MIT 1304 | 1305 | micromark-factory-whitespace 1306 | MIT 1307 | 1308 | micromark-util-character 1309 | MIT 1310 | 1311 | micromark-util-chunked 1312 | MIT 1313 | 1314 | micromark-util-classify-character 1315 | MIT 1316 | 1317 | micromark-util-combine-extensions 1318 | MIT 1319 | 1320 | micromark-util-decode-numeric-character-reference 1321 | MIT 1322 | 1323 | micromark-util-decode-string 1324 | MIT 1325 | 1326 | micromark-util-events-to-acorn 1327 | MIT 1328 | 1329 | micromark-util-html-tag-name 1330 | MIT 1331 | 1332 | micromark-util-normalize-identifier 1333 | MIT 1334 | 1335 | micromark-util-resolve-all 1336 | MIT 1337 | 1338 | micromark-util-subtokenize 1339 | MIT 1340 | 1341 | mime-db 1342 | MIT 1343 | (The MIT License) 1344 | 1345 | Copyright (c) 2014 Jonathan Ong 1346 | Copyright (c) 2015-2022 Douglas Christopher Wilson 1347 | 1348 | Permission is hereby granted, free of charge, to any person obtaining 1349 | a copy of this software and associated documentation files (the 1350 | 'Software'), to deal in the Software without restriction, including 1351 | without limitation the rights to use, copy, modify, merge, publish, 1352 | distribute, sublicense, and/or sell copies of the Software, and to 1353 | permit persons to whom the Software is furnished to do so, subject to 1354 | the following conditions: 1355 | 1356 | The above copyright notice and this permission notice shall be 1357 | included in all copies or substantial portions of the Software. 1358 | 1359 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1360 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1361 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1362 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1363 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1364 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1365 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1366 | 1367 | 1368 | mime-types 1369 | MIT 1370 | (The MIT License) 1371 | 1372 | Copyright (c) 2014 Jonathan Ong 1373 | Copyright (c) 2015 Douglas Christopher Wilson 1374 | 1375 | Permission is hereby granted, free of charge, to any person obtaining 1376 | a copy of this software and associated documentation files (the 1377 | 'Software'), to deal in the Software without restriction, including 1378 | without limitation the rights to use, copy, modify, merge, publish, 1379 | distribute, sublicense, and/or sell copies of the Software, and to 1380 | permit persons to whom the Software is furnished to do so, subject to 1381 | the following conditions: 1382 | 1383 | The above copyright notice and this permission notice shall be 1384 | included in all copies or substantial portions of the Software. 1385 | 1386 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1387 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1388 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1389 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1390 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1391 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1392 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1393 | 1394 | 1395 | ms 1396 | MIT 1397 | The MIT License (MIT) 1398 | 1399 | Copyright (c) 2016 Zeit, Inc. 1400 | 1401 | Permission is hereby granted, free of charge, to any person obtaining a copy 1402 | of this software and associated documentation files (the "Software"), to deal 1403 | in the Software without restriction, including without limitation the rights 1404 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1405 | copies of the Software, and to permit persons to whom the Software is 1406 | furnished to do so, subject to the following conditions: 1407 | 1408 | The above copyright notice and this permission notice shall be included in all 1409 | copies or substantial portions of the Software. 1410 | 1411 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1412 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1413 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1414 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1415 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1416 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1417 | SOFTWARE. 1418 | 1419 | 1420 | node-fetch 1421 | MIT 1422 | The MIT License (MIT) 1423 | 1424 | Copyright (c) 2016 David Frank 1425 | 1426 | Permission is hereby granted, free of charge, to any person obtaining a copy 1427 | of this software and associated documentation files (the "Software"), to deal 1428 | in the Software without restriction, including without limitation the rights 1429 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1430 | copies of the Software, and to permit persons to whom the Software is 1431 | furnished to do so, subject to the following conditions: 1432 | 1433 | The above copyright notice and this permission notice shall be included in all 1434 | copies or substantial portions of the Software. 1435 | 1436 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1437 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1438 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1439 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1440 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1441 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1442 | SOFTWARE. 1443 | 1444 | 1445 | 1446 | node-gyp-build 1447 | MIT 1448 | The MIT License (MIT) 1449 | 1450 | Copyright (c) 2017 Mathias Buus 1451 | 1452 | Permission is hereby granted, free of charge, to any person obtaining a copy 1453 | of this software and associated documentation files (the "Software"), to deal 1454 | in the Software without restriction, including without limitation the rights 1455 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1456 | copies of the Software, and to permit persons to whom the Software is 1457 | furnished to do so, subject to the following conditions: 1458 | 1459 | The above copyright notice and this permission notice shall be included in 1460 | all copies or substantial portions of the Software. 1461 | 1462 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1463 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1464 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1465 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1466 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1467 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1468 | THE SOFTWARE. 1469 | 1470 | 1471 | openai 1472 | MIT 1473 | The MIT License 1474 | 1475 | Copyright (c) OpenAI (https://openai.com) 1476 | 1477 | Permission is hereby granted, free of charge, to any person obtaining a copy 1478 | of this software and associated documentation files (the "Software"), to deal 1479 | in the Software without restriction, including without limitation the rights 1480 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1481 | copies of the Software, and to permit persons to whom the Software is 1482 | furnished to do so, subject to the following conditions: 1483 | 1484 | The above copyright notice and this permission notice shall be included in 1485 | all copies or substantial portions of the Software. 1486 | 1487 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1488 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1489 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1490 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1491 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1492 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1493 | THE SOFTWARE. 1494 | 1495 | 1496 | parse-entities 1497 | MIT 1498 | (The MIT License) 1499 | 1500 | Copyright (c) 2015 Titus Wormer 1501 | 1502 | Permission is hereby granted, free of charge, to any person obtaining 1503 | a copy of this software and associated documentation files (the 1504 | 'Software'), to deal in the Software without restriction, including 1505 | without limitation the rights to use, copy, modify, merge, publish, 1506 | distribute, sublicense, and/or sell copies of the Software, and to 1507 | permit persons to whom the Software is furnished to do so, subject to 1508 | the following conditions: 1509 | 1510 | The above copyright notice and this permission notice shall be 1511 | included in all copies or substantial portions of the Software. 1512 | 1513 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1514 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1515 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1516 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1517 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1518 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1519 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1520 | 1521 | 1522 | supports-color 1523 | MIT 1524 | MIT License 1525 | 1526 | Copyright (c) Sindre Sorhus (sindresorhus.com) 1527 | 1528 | 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: 1529 | 1530 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1531 | 1532 | 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. 1533 | 1534 | 1535 | tr46 1536 | MIT 1537 | 1538 | tunnel 1539 | MIT 1540 | The MIT License (MIT) 1541 | 1542 | Copyright (c) 2012 Koichi Kobayashi 1543 | 1544 | Permission is hereby granted, free of charge, to any person obtaining a copy 1545 | of this software and associated documentation files (the "Software"), to deal 1546 | in the Software without restriction, including without limitation the rights 1547 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1548 | copies of the Software, and to permit persons to whom the Software is 1549 | furnished to do so, subject to the following conditions: 1550 | 1551 | The above copyright notice and this permission notice shall be included in 1552 | all copies or substantial portions of the Software. 1553 | 1554 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1555 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1556 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1557 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1558 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1559 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1560 | THE SOFTWARE. 1561 | 1562 | 1563 | typedarray-to-buffer 1564 | MIT 1565 | The MIT License (MIT) 1566 | 1567 | Copyright (c) Feross Aboukhadijeh 1568 | 1569 | Permission is hereby granted, free of charge, to any person obtaining a copy 1570 | of this software and associated documentation files (the "Software"), to deal 1571 | in the Software without restriction, including without limitation the rights 1572 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1573 | copies of the Software, and to permit persons to whom the Software is 1574 | furnished to do so, subject to the following conditions: 1575 | 1576 | The above copyright notice and this permission notice shall be included in 1577 | all copies or substantial portions of the Software. 1578 | 1579 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1580 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1581 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1582 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1583 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1584 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1585 | THE SOFTWARE. 1586 | 1587 | 1588 | unist-builder 1589 | MIT 1590 | The MIT License (MIT) 1591 | 1592 | Copyright (c) 2015 Eugene Sharygin 1593 | 1594 | Permission is hereby granted, free of charge, to any person obtaining a copy 1595 | of this software and associated documentation files (the "Software"), to deal 1596 | in the Software without restriction, including without limitation the rights 1597 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1598 | copies of the Software, and to permit persons to whom the Software is 1599 | furnished to do so, subject to the following conditions: 1600 | 1601 | The above copyright notice and this permission notice shall be included in all 1602 | copies or substantial portions of the Software. 1603 | 1604 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1605 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1606 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1607 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1608 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1609 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1610 | SOFTWARE. 1611 | 1612 | 1613 | unist-util-filter 1614 | MIT 1615 | The MIT License (MIT) 1616 | 1617 | Copyright (c) 2016 Eugene Sharygin 1618 | 1619 | Permission is hereby granted, free of charge, to any person obtaining a copy 1620 | of this software and associated documentation files (the "Software"), to deal 1621 | in the Software without restriction, including without limitation the rights 1622 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1623 | copies of the Software, and to permit persons to whom the Software is 1624 | furnished to do so, subject to the following conditions: 1625 | 1626 | The above copyright notice and this permission notice shall be included in all 1627 | copies or substantial portions of the Software. 1628 | 1629 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1630 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1631 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1632 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1633 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1634 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1635 | SOFTWARE. 1636 | 1637 | 1638 | unist-util-is 1639 | MIT 1640 | (The MIT license) 1641 | 1642 | Copyright (c) 2015 Titus Wormer 1643 | 1644 | Permission is hereby granted, free of charge, to any person obtaining 1645 | a copy of this software and associated documentation files (the 1646 | 'Software'), to deal in the Software without restriction, including 1647 | without limitation the rights to use, copy, modify, merge, publish, 1648 | distribute, sublicense, and/or sell copies of the Software, and to 1649 | permit persons to whom the Software is furnished to do so, subject to 1650 | the following conditions: 1651 | 1652 | The above copyright notice and this permission notice shall be 1653 | included in all copies or substantial portions of the Software. 1654 | 1655 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1656 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1657 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1658 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1659 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1660 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1661 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1662 | 1663 | 1664 | unist-util-position-from-estree 1665 | MIT 1666 | (The MIT License) 1667 | 1668 | Copyright (c) 2021 Titus Wormer 1669 | 1670 | Permission is hereby granted, free of charge, to any person obtaining 1671 | a copy of this software and associated documentation files (the 1672 | 'Software'), to deal in the Software without restriction, including 1673 | without limitation the rights to use, copy, modify, merge, publish, 1674 | distribute, sublicense, and/or sell copies of the Software, and to 1675 | permit persons to whom the Software is furnished to do so, subject to 1676 | the following conditions: 1677 | 1678 | The above copyright notice and this permission notice shall be 1679 | included in all copies or substantial portions of the Software. 1680 | 1681 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1682 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1683 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1684 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1685 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1686 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1687 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1688 | 1689 | 1690 | unist-util-stringify-position 1691 | MIT 1692 | (The MIT License) 1693 | 1694 | Copyright (c) 2016 Titus Wormer 1695 | 1696 | Permission is hereby granted, free of charge, to any person obtaining 1697 | a copy of this software and associated documentation files (the 1698 | 'Software'), to deal in the Software without restriction, including 1699 | without limitation the rights to use, copy, modify, merge, publish, 1700 | distribute, sublicense, and/or sell copies of the Software, and to 1701 | permit persons to whom the Software is furnished to do so, subject to 1702 | the following conditions: 1703 | 1704 | The above copyright notice and this permission notice shall be 1705 | included in all copies or substantial portions of the Software. 1706 | 1707 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1708 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1709 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1710 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1711 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1712 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1713 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1714 | 1715 | 1716 | unist-util-visit 1717 | MIT 1718 | (The MIT License) 1719 | 1720 | Copyright (c) 2015 Titus Wormer 1721 | 1722 | Permission is hereby granted, free of charge, to any person obtaining 1723 | a copy of this software and associated documentation files (the 1724 | 'Software'), to deal in the Software without restriction, including 1725 | without limitation the rights to use, copy, modify, merge, publish, 1726 | distribute, sublicense, and/or sell copies of the Software, and to 1727 | permit persons to whom the Software is furnished to do so, subject to 1728 | the following conditions: 1729 | 1730 | The above copyright notice and this permission notice shall be 1731 | included in all copies or substantial portions of the Software. 1732 | 1733 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1734 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1735 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1736 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1737 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1738 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1739 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1740 | 1741 | 1742 | unist-util-visit-parents 1743 | MIT 1744 | (The MIT License) 1745 | 1746 | Copyright (c) 2016 Titus Wormer 1747 | 1748 | Permission is hereby granted, free of charge, to any person obtaining 1749 | a copy of this software and associated documentation files (the 1750 | 'Software'), to deal in the Software without restriction, including 1751 | without limitation the rights to use, copy, modify, merge, publish, 1752 | distribute, sublicense, and/or sell copies of the Software, and to 1753 | permit persons to whom the Software is furnished to do so, subject to 1754 | the following conditions: 1755 | 1756 | The above copyright notice and this permission notice shall be 1757 | included in all copies or substantial portions of the Software. 1758 | 1759 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1760 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1761 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1762 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1763 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1764 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1765 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1766 | 1767 | 1768 | utf-8-validate 1769 | MIT 1770 | This project is licensed for use as follows: 1771 | 1772 | """ 1773 | Copyright (c) 2011 Einar Otto Stangvik (http://2x.io) 1774 | 1775 | Permission is hereby granted, free of charge, to any person obtaining a copy of 1776 | this software and associated documentation files (the "Software"), to deal in 1777 | the Software without restriction, including without limitation the rights to 1778 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 1779 | the Software, and to permit persons to whom the Software is furnished to do so, 1780 | subject to the following conditions: 1781 | 1782 | The above copyright notice and this permission notice shall be included in all 1783 | copies or substantial portions of the Software. 1784 | 1785 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1786 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 1787 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 1788 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 1789 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1790 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1791 | """ 1792 | 1793 | This license applies to parts originating from 1794 | https://www.cl.cam.ac.uk/~mgk25/ucs/utf8_check.c: 1795 | 1796 | """ 1797 | Markus Kuhn -- 2005-03-30 1798 | License: http://www.cl.cam.ac.uk/~mgk25/short-license.html 1799 | """ 1800 | 1801 | 1802 | uuid 1803 | MIT 1804 | The MIT License (MIT) 1805 | 1806 | Copyright (c) 2010-2020 Robert Kieffer and other contributors 1807 | 1808 | 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: 1809 | 1810 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 1811 | 1812 | 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. 1813 | 1814 | 1815 | vfile-message 1816 | MIT 1817 | (The MIT License) 1818 | 1819 | Copyright (c) 2017 Titus Wormer 1820 | 1821 | Permission is hereby granted, free of charge, to any person obtaining 1822 | a copy of this software and associated documentation files (the 1823 | 'Software'), to deal in the Software without restriction, including 1824 | without limitation the rights to use, copy, modify, merge, publish, 1825 | distribute, sublicense, and/or sell copies of the Software, and to 1826 | permit persons to whom the Software is furnished to do so, subject to 1827 | the following conditions: 1828 | 1829 | The above copyright notice and this permission notice shall be 1830 | included in all copies or substantial portions of the Software. 1831 | 1832 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 1833 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1834 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1835 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1836 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1837 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1838 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1839 | 1840 | 1841 | webidl-conversions 1842 | BSD-2-Clause 1843 | # The BSD 2-Clause License 1844 | 1845 | Copyright (c) 2014, Domenic Denicola 1846 | All rights reserved. 1847 | 1848 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1849 | 1850 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 1851 | 1852 | 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. 1853 | 1854 | 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. 1855 | 1856 | 1857 | websocket 1858 | Apache-2.0 1859 | 1860 | Apache License 1861 | Version 2.0, January 2004 1862 | http://www.apache.org/licenses/ 1863 | 1864 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1865 | 1866 | 1. Definitions. 1867 | 1868 | "License" shall mean the terms and conditions for use, reproduction, 1869 | and distribution as defined by Sections 1 through 9 of this document. 1870 | 1871 | "Licensor" shall mean the copyright owner or entity authorized by 1872 | the copyright owner that is granting the License. 1873 | 1874 | "Legal Entity" shall mean the union of the acting entity and all 1875 | other entities that control, are controlled by, or are under common 1876 | control with that entity. For the purposes of this definition, 1877 | "control" means (i) the power, direct or indirect, to cause the 1878 | direction or management of such entity, whether by contract or 1879 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 1880 | outstanding shares, or (iii) beneficial ownership of such entity. 1881 | 1882 | "You" (or "Your") shall mean an individual or Legal Entity 1883 | exercising permissions granted by this License. 1884 | 1885 | "Source" form shall mean the preferred form for making modifications, 1886 | including but not limited to software source code, documentation 1887 | source, and configuration files. 1888 | 1889 | "Object" form shall mean any form resulting from mechanical 1890 | transformation or translation of a Source form, including but 1891 | not limited to compiled object code, generated documentation, 1892 | and conversions to other media types. 1893 | 1894 | "Work" shall mean the work of authorship, whether in Source or 1895 | Object form, made available under the License, as indicated by a 1896 | copyright notice that is included in or attached to the work 1897 | (an example is provided in the Appendix below). 1898 | 1899 | "Derivative Works" shall mean any work, whether in Source or Object 1900 | form, that is based on (or derived from) the Work and for which the 1901 | editorial revisions, annotations, elaborations, or other modifications 1902 | represent, as a whole, an original work of authorship. For the purposes 1903 | of this License, Derivative Works shall not include works that remain 1904 | separable from, or merely link (or bind by name) to the interfaces of, 1905 | the Work and Derivative Works thereof. 1906 | 1907 | "Contribution" shall mean any work of authorship, including 1908 | the original version of the Work and any modifications or additions 1909 | to that Work or Derivative Works thereof, that is intentionally 1910 | submitted to Licensor for inclusion in the Work by the copyright owner 1911 | or by an individual or Legal Entity authorized to submit on behalf of 1912 | the copyright owner. For the purposes of this definition, "submitted" 1913 | means any form of electronic, verbal, or written communication sent 1914 | to the Licensor or its representatives, including but not limited to 1915 | communication on electronic mailing lists, source code control systems, 1916 | and issue tracking systems that are managed by, or on behalf of, the 1917 | Licensor for the purpose of discussing and improving the Work, but 1918 | excluding communication that is conspicuously marked or otherwise 1919 | designated in writing by the copyright owner as "Not a Contribution." 1920 | 1921 | "Contributor" shall mean Licensor and any individual or Legal Entity 1922 | on behalf of whom a Contribution has been received by Licensor and 1923 | subsequently incorporated within the Work. 1924 | 1925 | 2. Grant of Copyright License. Subject to the terms and conditions of 1926 | this License, each Contributor hereby grants to You a perpetual, 1927 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 1928 | copyright license to reproduce, prepare Derivative Works of, 1929 | publicly display, publicly perform, sublicense, and distribute the 1930 | Work and such Derivative Works in Source or Object form. 1931 | 1932 | 3. Grant of Patent License. Subject to the terms and conditions of 1933 | this License, each Contributor hereby grants to You a perpetual, 1934 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 1935 | (except as stated in this section) patent license to make, have made, 1936 | use, offer to sell, sell, import, and otherwise transfer the Work, 1937 | where such license applies only to those patent claims licensable 1938 | by such Contributor that are necessarily infringed by their 1939 | Contribution(s) alone or by combination of their Contribution(s) 1940 | with the Work to which such Contribution(s) was submitted. If You 1941 | institute patent litigation against any entity (including a 1942 | cross-claim or counterclaim in a lawsuit) alleging that the Work 1943 | or a Contribution incorporated within the Work constitutes direct 1944 | or contributory patent infringement, then any patent licenses 1945 | granted to You under this License for that Work shall terminate 1946 | as of the date such litigation is filed. 1947 | 1948 | 4. Redistribution. You may reproduce and distribute copies of the 1949 | Work or Derivative Works thereof in any medium, with or without 1950 | modifications, and in Source or Object form, provided that You 1951 | meet the following conditions: 1952 | 1953 | (a) You must give any other recipients of the Work or 1954 | Derivative Works a copy of this License; and 1955 | 1956 | (b) You must cause any modified files to carry prominent notices 1957 | stating that You changed the files; and 1958 | 1959 | (c) You must retain, in the Source form of any Derivative Works 1960 | that You distribute, all copyright, patent, trademark, and 1961 | attribution notices from the Source form of the Work, 1962 | excluding those notices that do not pertain to any part of 1963 | the Derivative Works; and 1964 | 1965 | (d) If the Work includes a "NOTICE" text file as part of its 1966 | distribution, then any Derivative Works that You distribute must 1967 | include a readable copy of the attribution notices contained 1968 | within such NOTICE file, excluding those notices that do not 1969 | pertain to any part of the Derivative Works, in at least one 1970 | of the following places: within a NOTICE text file distributed 1971 | as part of the Derivative Works; within the Source form or 1972 | documentation, if provided along with the Derivative Works; or, 1973 | within a display generated by the Derivative Works, if and 1974 | wherever such third-party notices normally appear. The contents 1975 | of the NOTICE file are for informational purposes only and 1976 | do not modify the License. You may add Your own attribution 1977 | notices within Derivative Works that You distribute, alongside 1978 | or as an addendum to the NOTICE text from the Work, provided 1979 | that such additional attribution notices cannot be construed 1980 | as modifying the License. 1981 | 1982 | You may add Your own copyright statement to Your modifications and 1983 | may provide additional or different license terms and conditions 1984 | for use, reproduction, or distribution of Your modifications, or 1985 | for any such Derivative Works as a whole, provided Your use, 1986 | reproduction, and distribution of the Work otherwise complies with 1987 | the conditions stated in this License. 1988 | 1989 | 5. Submission of Contributions. Unless You explicitly state otherwise, 1990 | any Contribution intentionally submitted for inclusion in the Work 1991 | by You to the Licensor shall be under the terms and conditions of 1992 | this License, without any additional terms or conditions. 1993 | Notwithstanding the above, nothing herein shall supersede or modify 1994 | the terms of any separate license agreement you may have executed 1995 | with Licensor regarding such Contributions. 1996 | 1997 | 6. Trademarks. This License does not grant permission to use the trade 1998 | names, trademarks, service marks, or product names of the Licensor, 1999 | except as required for reasonable and customary use in describing the 2000 | origin of the Work and reproducing the content of the NOTICE file. 2001 | 2002 | 7. Disclaimer of Warranty. Unless required by applicable law or 2003 | agreed to in writing, Licensor provides the Work (and each 2004 | Contributor provides its Contributions) on an "AS IS" BASIS, 2005 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 2006 | implied, including, without limitation, any warranties or conditions 2007 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 2008 | PARTICULAR PURPOSE. You are solely responsible for determining the 2009 | appropriateness of using or redistributing the Work and assume any 2010 | risks associated with Your exercise of permissions under this License. 2011 | 2012 | 8. Limitation of Liability. In no event and under no legal theory, 2013 | whether in tort (including negligence), contract, or otherwise, 2014 | unless required by applicable law (such as deliberate and grossly 2015 | negligent acts) or agreed to in writing, shall any Contributor be 2016 | liable to You for damages, including any direct, indirect, special, 2017 | incidental, or consequential damages of any character arising as a 2018 | result of this License or out of the use or inability to use the 2019 | Work (including but not limited to damages for loss of goodwill, 2020 | work stoppage, computer failure or malfunction, or any and all 2021 | other commercial damages or losses), even if such Contributor 2022 | has been advised of the possibility of such damages. 2023 | 2024 | 9. Accepting Warranty or Additional Liability. While redistributing 2025 | the Work or Derivative Works thereof, You may choose to offer, 2026 | and charge a fee for, acceptance of support, warranty, indemnity, 2027 | or other liability obligations and/or rights consistent with this 2028 | License. However, in accepting such obligations, You may act only 2029 | on Your own behalf and on Your sole responsibility, not on behalf 2030 | of any other Contributor, and only if You agree to indemnify, 2031 | defend, and hold each Contributor harmless for any liability 2032 | incurred by, or claims asserted against, such Contributor by reason 2033 | of your accepting any such warranty or additional liability. 2034 | 2035 | END OF TERMS AND CONDITIONS 2036 | 2037 | 2038 | whatwg-url 2039 | MIT 2040 | The MIT License (MIT) 2041 | 2042 | Copyright (c) 2015–2016 Sebastian Mayr 2043 | 2044 | Permission is hereby granted, free of charge, to any person obtaining a copy 2045 | of this software and associated documentation files (the "Software"), to deal 2046 | in the Software without restriction, including without limitation the rights 2047 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2048 | copies of the Software, and to permit persons to whom the Software is 2049 | furnished to do so, subject to the following conditions: 2050 | 2051 | The above copyright notice and this permission notice shall be included in 2052 | all copies or substantial portions of the Software. 2053 | 2054 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2055 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2056 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2057 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2058 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2059 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 2060 | THE SOFTWARE. 2061 | 2062 | 2063 | yaeti 2064 | MIT 2065 | The MIT License (MIT) 2066 | 2067 | Copyright (c) 2015 Iñaki Baz Castillo, 2068 | 2069 | Permission is hereby granted, free of charge, to any person obtaining a copy 2070 | of this software and associated documentation files (the "Software"), to deal 2071 | in the Software without restriction, including without limitation the rights 2072 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2073 | copies of the Software, and to permit persons to whom the Software is 2074 | furnished to do so, subject to the following conditions: 2075 | 2076 | The above copyright notice and this permission notice shall be included in 2077 | all copies or substantial portions of the Software. 2078 | 2079 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2080 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2081 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2082 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2083 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2084 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 2085 | THE SOFTWARE. 2086 | 2087 | 2088 | zwitch 2089 | MIT 2090 | (The MIT License) 2091 | 2092 | Copyright (c) 2016 Titus Wormer 2093 | 2094 | Permission is hereby granted, free of charge, to any person obtaining 2095 | a copy of this software and associated documentation files (the 2096 | 'Software'), to deal in the Software without restriction, including 2097 | without limitation the rights to use, copy, modify, merge, publish, 2098 | distribute, sublicense, and/or sell copies of the Software, and to 2099 | permit persons to whom the Software is furnished to do so, subject to 2100 | the following conditions: 2101 | 2102 | The above copyright notice and this permission notice shall be 2103 | included in all copies or substantial portions of the Software. 2104 | 2105 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 2106 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2107 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2108 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 2109 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2110 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2111 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2112 | -------------------------------------------------------------------------------- /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})(); -------------------------------------------------------------------------------- /docs/test.md: -------------------------------------------------------------------------------- 1 | # Test 2 | 3 | This is a test to ensure that the github action is working. 4 | 5 | ## Heading 2 6 | 7 | This is a section. 8 | 9 | ### Heading 3 10 | 11 | This is a subsection. -------------------------------------------------------------------------------- /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": "supabase-embeddings-generator", 3 | "version": "0.0.4", 4 | "private": true, 5 | "description": "A GitHub Action that converts your markdown files into embeddings and stores them in your Postgres/Supabase database, allowing you to perform vector similarity search inside your documentation and website.", 6 | "main": "src/main.ts", 7 | "scripts": { 8 | "format": "prettier --write '**/*.ts'", 9 | "format-check": "prettier --check '**/*.ts'", 10 | "lint": "eslint src/**/*.ts", 11 | "package": "ncc build --source-map --license licenses.txt", 12 | "test": "jest", 13 | "all": "npm run format && npm run package" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/supabase/supabase-vector-embeddings-github-action" 18 | }, 19 | "keywords": [ 20 | "actions", 21 | "node", 22 | "setup" 23 | ], 24 | "author": "", 25 | "license": "MIT", 26 | "dependencies": { 27 | "@actions/core": "^1.10.1", 28 | "@supabase/supabase-js": "^2.38.4", 29 | "github-slugger": "^2.0.0", 30 | "mdast": "^3.0.0", 31 | "mdast-util-from-markdown": "^1.3.0", 32 | "mdast-util-mdx": "^2.0.1", 33 | "mdast-util-to-markdown": "^1.5.0", 34 | "mdast-util-to-string": "^3.2.0", 35 | "micromark-extension-mdxjs": "^1.0.1", 36 | "openai": "^3.2.1", 37 | "unist-builder": "^3.0.1", 38 | "unist-util-filter": "^4.0.1", 39 | "uuid": "^9.0.1" 40 | }, 41 | "devDependencies": { 42 | "@types/estree": "^1.0.1", 43 | "@types/node": "^20.8.2", 44 | "@types/uuid": "^9.0.4", 45 | "@typescript-eslint/parser": "^5.62.0", 46 | "@vercel/ncc": "^0.36.1", 47 | "eslint": "^8.42.0", 48 | "eslint-plugin-github": "^4.10.1", 49 | "eslint-plugin-jest": "^27.2.2", 50 | "jest": "^29.6.4", 51 | "js-yaml": "^4.1.0", 52 | "prettier": "^2.8.8", 53 | "ts-jest": "^29.1.1", 54 | "typescript": "^5.2.2" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import {createClient} from '@supabase/supabase-js' 3 | import 'openai' 4 | import {Configuration, OpenAIApi} from 'openai' 5 | import {inspect} from 'util' 6 | import {v4 as uuidv4} from 'uuid' 7 | import {MarkdownSource} from './sources/markdown' 8 | import {walk} from './sources/util' 9 | 10 | async function generateEmbeddings({ 11 | shouldRefresh = false, 12 | supabaseUrl, 13 | supabaseServiceKey, 14 | openaiKey, 15 | docsRootPath 16 | }: { 17 | shouldRefresh?: boolean 18 | supabaseUrl: string 19 | supabaseServiceKey: string 20 | openaiKey: string 21 | docsRootPath: string 22 | }) { 23 | const supabaseClient = createClient(supabaseUrl, supabaseServiceKey, { 24 | db: {schema: 'docs'}, 25 | auth: { 26 | persistSession: false, 27 | autoRefreshToken: false 28 | } 29 | }) 30 | 31 | // Use this version to track which pages to purge 32 | // after the refresh 33 | const refreshVersion = uuidv4() 34 | 35 | const refreshDate = new Date() 36 | 37 | const ignoredFiles = ['pages/404.mdx'] 38 | const embeddingSources = (await walk(docsRootPath)) 39 | .filter(({path}) => /\.mdx?$/.test(path)) 40 | .filter(({path}) => !ignoredFiles.includes(path)) 41 | .map(entry => new MarkdownSource('markdown', entry.path)) 42 | 43 | console.log(`Discovered ${embeddingSources.length} pages`) 44 | 45 | if (!shouldRefresh) { 46 | console.log('Checking which pages are new or have changed') 47 | } else { 48 | console.log('Refresh flag set, re-generating all pages') 49 | } 50 | 51 | for (const embeddingSource of embeddingSources) { 52 | const {type, source, path, parentPath} = embeddingSource 53 | 54 | try { 55 | const {checksum, meta, sections} = await embeddingSource.load() 56 | 57 | // Check for existing page in DB and compare checksums 58 | const {error: fetchPageError, data: existingPage} = await supabaseClient 59 | .from('page') 60 | .select('id, path, checksum, parentPage:parent_page_id(id, path)') 61 | .filter('path', 'eq', path) 62 | .limit(1) 63 | .maybeSingle() 64 | 65 | if (fetchPageError) { 66 | throw fetchPageError 67 | } 68 | 69 | type Singular = T extends any[] ? undefined : T 70 | 71 | // We use checksum to determine if this page & its sections need to be regenerated 72 | if (!shouldRefresh && existingPage?.checksum === checksum) { 73 | const existingParentPage = existingPage?.parentPage as Singular< 74 | typeof existingPage.parentPage 75 | > 76 | 77 | // If parent page changed, update it 78 | if (existingParentPage?.path !== parentPath) { 79 | console.log( 80 | `[${path}] Parent page has changed. Updating to '${parentPath}'...` 81 | ) 82 | const {error: fetchParentPageError, data: parentPage} = 83 | await supabaseClient 84 | .from('page') 85 | .select() 86 | .filter('path', 'eq', parentPath) 87 | .limit(1) 88 | .maybeSingle() 89 | 90 | if (fetchParentPageError) { 91 | throw fetchParentPageError 92 | } 93 | 94 | const {error: updatePageError} = await supabaseClient 95 | .from('page') 96 | .update({parent_page_id: parentPage?.id}) 97 | .filter('id', 'eq', existingPage.id) 98 | 99 | if (updatePageError) { 100 | throw updatePageError 101 | } 102 | } 103 | 104 | // No content/embedding update required on this page 105 | // Update other meta info 106 | const {error: updatePageError} = await supabaseClient 107 | .from('page') 108 | .update({ 109 | type, 110 | source, 111 | meta, 112 | version: refreshVersion, 113 | last_refresh: refreshDate 114 | }) 115 | .filter('id', 'eq', existingPage.id) 116 | 117 | if (updatePageError) { 118 | throw updatePageError 119 | } 120 | 121 | continue 122 | } 123 | 124 | if (existingPage) { 125 | if (!shouldRefresh) { 126 | console.log( 127 | `[${path}] Docs have changed, removing old page sections and their embeddings` 128 | ) 129 | } else { 130 | console.log( 131 | `[${path}] Refresh flag set, removing old page sections and their embeddings` 132 | ) 133 | } 134 | 135 | const {error: deletePageSectionError} = await supabaseClient 136 | .from('page_section') 137 | .delete() 138 | .filter('page_id', 'eq', existingPage.id) 139 | 140 | if (deletePageSectionError) { 141 | throw deletePageSectionError 142 | } 143 | } 144 | 145 | const {error: fetchParentPageError, data: parentPage} = 146 | await supabaseClient 147 | .from('page') 148 | .select() 149 | .filter('path', 'eq', parentPath) 150 | .limit(1) 151 | .maybeSingle() 152 | 153 | if (fetchParentPageError) { 154 | throw fetchParentPageError 155 | } 156 | 157 | // Create/update page record. Intentionally clear checksum until we 158 | // have successfully generated all page sections. 159 | const {error: upsertPageError, data: page} = await supabaseClient 160 | .from('page') 161 | .upsert( 162 | { 163 | checksum: null, 164 | path, 165 | type, 166 | source, 167 | meta, 168 | parent_page_id: parentPage?.id, 169 | version: refreshVersion, 170 | last_refresh: refreshDate 171 | }, 172 | {onConflict: 'path'} 173 | ) 174 | .select() 175 | .limit(1) 176 | .single() 177 | 178 | if (upsertPageError) { 179 | throw upsertPageError 180 | } 181 | 182 | console.log( 183 | `[${path}] Adding ${sections.length} page sections (with embeddings)` 184 | ) 185 | for (const {slug, heading, content} of sections) { 186 | // OpenAI recommends replacing newlines with spaces for best results (specific to embeddings) 187 | const input = content.replace(/\n/g, ' ') 188 | 189 | try { 190 | const configuration = new Configuration({ 191 | apiKey: openaiKey 192 | }) 193 | const openai = new OpenAIApi(configuration) 194 | 195 | const embeddingResponse = await openai.createEmbedding({ 196 | model: 'text-embedding-ada-002', 197 | input 198 | }) 199 | 200 | if (embeddingResponse.status !== 200) { 201 | throw new Error(inspect(embeddingResponse.data, false, 2)) 202 | } 203 | 204 | const [responseData] = embeddingResponse.data.data 205 | 206 | const {error: insertPageSectionError, data: pageSection} = 207 | await supabaseClient 208 | .from('page_section') 209 | .insert({ 210 | page_id: page.id, 211 | slug, 212 | heading, 213 | content, 214 | token_count: embeddingResponse.data.usage.total_tokens, 215 | embedding: responseData.embedding 216 | }) 217 | .select() 218 | .limit(1) 219 | .single() 220 | 221 | if (insertPageSectionError) { 222 | throw insertPageSectionError 223 | } 224 | } catch (err) { 225 | // TODO: decide how to better handle failed embeddings 226 | console.error( 227 | `Failed to generate embeddings for '${path}' page section starting with '${input.slice( 228 | 0, 229 | 40 230 | )}...'` 231 | ) 232 | 233 | throw err 234 | } 235 | } 236 | 237 | // Set page checksum so that we know this page was stored successfully 238 | const {error: updatePageError} = await supabaseClient 239 | .from('page') 240 | .update({checksum}) 241 | .filter('id', 'eq', page.id) 242 | 243 | if (updatePageError) { 244 | throw updatePageError 245 | } 246 | } catch (err) { 247 | console.error( 248 | `Page '${path}' or one/multiple of its page sections failed to store properly. Page has been marked with null checksum to indicate that it needs to be re-generated.` 249 | ) 250 | console.error(err) 251 | } 252 | } 253 | 254 | console.log(`Removing old pages and their sections`) 255 | 256 | // Delete pages that have been removed (and their sections via cascade) 257 | const {error: deletePageError} = await supabaseClient 258 | .from('page') 259 | .delete() 260 | .filter('version', 'neq', refreshVersion) 261 | 262 | if (deletePageError) { 263 | throw deletePageError 264 | } 265 | 266 | console.log('Embedding generation complete') 267 | } 268 | 269 | async function run(): Promise { 270 | try { 271 | const supabaseUrl: string = core.getInput('supabase-url') 272 | const supabaseServiceKey: string = core.getInput( 273 | 'supabase-service-role-key' 274 | ) 275 | const openaiKey: string = core.getInput('openai-key') 276 | const docsRootPath: string = core.getInput('docs-root-path') 277 | await generateEmbeddings({ 278 | supabaseUrl, 279 | supabaseServiceKey, 280 | openaiKey, 281 | docsRootPath 282 | }) 283 | } catch (error) { 284 | if (error instanceof Error) core.setFailed(error.message) 285 | } 286 | } 287 | 288 | run() 289 | -------------------------------------------------------------------------------- /src/sources/base.ts: -------------------------------------------------------------------------------- 1 | export type Json = Record< 2 | string, 3 | string | number | boolean | null | Json[] | {[key: string]: Json} 4 | > 5 | 6 | export type Section = { 7 | content: string 8 | heading?: string 9 | slug?: string 10 | } 11 | 12 | export abstract class BaseSource { 13 | checksum?: string 14 | meta?: Json 15 | sections?: Section[] 16 | 17 | constructor( 18 | public source: string, 19 | public path: string, 20 | public parentPath?: string 21 | ) {} 22 | 23 | abstract load(): Promise<{checksum: string; meta?: Json; sections: Section[]}> 24 | } 25 | -------------------------------------------------------------------------------- /src/sources/markdown.ts: -------------------------------------------------------------------------------- 1 | import {createHash} from 'crypto' 2 | import {ObjectExpression} from 'estree' 3 | import {readFile} from 'fs/promises' 4 | import GithubSlugger from 'github-slugger' 5 | import {Content, Root} from 'mdast' 6 | import {fromMarkdown} from 'mdast-util-from-markdown' 7 | import {MdxjsEsm, mdxFromMarkdown} from 'mdast-util-mdx' 8 | import {toMarkdown} from 'mdast-util-to-markdown' 9 | import {toString} from 'mdast-util-to-string' 10 | import {mdxjs} from 'micromark-extension-mdxjs' 11 | import {u} from 'unist-builder' 12 | import {filter} from 'unist-util-filter' 13 | import {BaseSource, Json, Section} from './base' 14 | 15 | /** 16 | * Extracts ES literals from an `estree` `ObjectExpression` 17 | * into a plain JavaScript object. 18 | */ 19 | export function getObjectFromExpression(node: ObjectExpression) { 20 | return node.properties.reduce< 21 | Record 22 | >((object, property) => { 23 | if (property.type !== 'Property') { 24 | return object 25 | } 26 | 27 | const key = 28 | (property.key.type === 'Identifier' && property.key.name) || undefined 29 | const value = 30 | (property.value.type === 'Literal' && property.value.value) || undefined 31 | 32 | if (!key) { 33 | return object 34 | } 35 | 36 | return { 37 | ...object, 38 | [key]: value 39 | } 40 | }, {}) 41 | } 42 | 43 | /** 44 | * Extracts the `meta` ESM export from the MDX file. 45 | * 46 | * This info is akin to frontmatter. 47 | */ 48 | export function extractMetaExport(mdxTree: Root) { 49 | const metaExportNode = mdxTree.children.find((node): node is MdxjsEsm => { 50 | return ( 51 | node.type === 'mdxjsEsm' && 52 | node.data?.estree?.body[0]?.type === 'ExportNamedDeclaration' && 53 | node.data.estree.body[0].declaration?.type === 'VariableDeclaration' && 54 | node.data.estree.body[0].declaration.declarations[0]?.id.type === 55 | 'Identifier' && 56 | node.data.estree.body[0].declaration.declarations[0].id.name === 'meta' 57 | ) 58 | }) 59 | 60 | if (!metaExportNode) { 61 | return undefined 62 | } 63 | 64 | const objectExpression = 65 | (metaExportNode.data?.estree?.body[0]?.type === 'ExportNamedDeclaration' && 66 | metaExportNode.data.estree.body[0].declaration?.type === 67 | 'VariableDeclaration' && 68 | metaExportNode.data.estree.body[0].declaration.declarations[0]?.id 69 | .type === 'Identifier' && 70 | metaExportNode.data.estree.body[0].declaration.declarations[0].id.name === 71 | 'meta' && 72 | metaExportNode.data.estree.body[0].declaration.declarations[0].init 73 | ?.type === 'ObjectExpression' && 74 | metaExportNode.data.estree.body[0].declaration.declarations[0].init) || 75 | undefined 76 | 77 | if (!objectExpression) { 78 | return undefined 79 | } 80 | 81 | return getObjectFromExpression(objectExpression) 82 | } 83 | 84 | /** 85 | * Splits a `mdast` tree into multiple trees based on 86 | * a predicate function. Will include the splitting node 87 | * at the beginning of each tree. 88 | * 89 | * Useful to split a markdown file into smaller sections. 90 | */ 91 | export function splitTreeBy(tree: Root, predicate: (node: Content) => boolean) { 92 | return tree.children.reduce((trees, node) => { 93 | const [lastTree] = trees.slice(-1) 94 | 95 | if (!lastTree || predicate(node)) { 96 | const tree: Root = u('root', [node]) 97 | return trees.concat(tree) 98 | } 99 | 100 | lastTree.children.push(node) 101 | return trees 102 | }, []) 103 | } 104 | 105 | /** 106 | * Parses a markdown heading which can optionally 107 | * contain a custom anchor in the format: 108 | * 109 | * ```markdown 110 | * ### My Heading [#my-custom-anchor] 111 | * ``` 112 | */ 113 | export function parseHeading(heading: string): { 114 | heading: string 115 | customAnchor?: string 116 | } { 117 | const match = heading.match(/(.*) *\[#(.*)\]/) 118 | if (match) { 119 | const [, heading, customAnchor] = match 120 | return {heading, customAnchor} 121 | } 122 | return {heading} 123 | } 124 | 125 | /** 126 | * Processes MDX content for search indexing. 127 | * It extracts metadata, strips it of all JSX, 128 | * and splits it into sub-sections based on criteria. 129 | */ 130 | export function processMdxForSearch(content: string): ProcessedMdx { 131 | const checksum = createHash('sha256').update(content).digest('base64') 132 | 133 | const mdxTree = fromMarkdown(content, { 134 | extensions: [mdxjs()], 135 | mdastExtensions: [mdxFromMarkdown()] 136 | }) 137 | 138 | const meta = extractMetaExport(mdxTree) 139 | 140 | const serializableMeta: Json = meta && JSON.parse(JSON.stringify(meta)) 141 | 142 | // Remove all MDX elements from markdown 143 | const mdTree = filter( 144 | mdxTree, 145 | node => 146 | ![ 147 | 'mdxjsEsm', 148 | 'mdxJsxFlowElement', 149 | 'mdxJsxTextElement', 150 | 'mdxFlowExpression', 151 | 'mdxTextExpression' 152 | ].includes(node.type) 153 | ) 154 | 155 | if (!mdTree) { 156 | return { 157 | checksum, 158 | meta: serializableMeta, 159 | sections: [] 160 | } 161 | } 162 | 163 | const sectionTrees = splitTreeBy(mdTree, node => node.type === 'heading') 164 | 165 | const slugger = new GithubSlugger() 166 | 167 | const sections = sectionTrees.map(tree => { 168 | const [firstNode] = tree.children 169 | const content = toMarkdown(tree) 170 | 171 | const rawHeading: string | undefined = 172 | firstNode.type === 'heading' ? toString(firstNode) : undefined 173 | 174 | if (!rawHeading) { 175 | return {content} 176 | } 177 | 178 | const {heading, customAnchor} = parseHeading(rawHeading) 179 | 180 | const slug = slugger.slug(customAnchor ?? heading) 181 | 182 | return { 183 | content, 184 | heading, 185 | slug 186 | } 187 | }) 188 | 189 | return { 190 | checksum, 191 | meta: serializableMeta, 192 | sections 193 | } 194 | } 195 | 196 | export type ProcessedMdx = { 197 | checksum: string 198 | meta: Json 199 | sections: Section[] 200 | } 201 | 202 | export class MarkdownSource extends BaseSource { 203 | type = 'markdown' as const 204 | 205 | constructor( 206 | source: string, 207 | public filePath: string, 208 | public parentFilePath?: string 209 | ) { 210 | const path = filePath.replace(/^pages/, '').replace(/\.mdx?$/, '') 211 | const parentPath = parentFilePath 212 | ?.replace(/^pages/, '') 213 | .replace(/\.mdx?$/, '') 214 | 215 | super(source, path, parentPath) 216 | } 217 | 218 | async load() { 219 | const contents = await readFile(this.filePath, 'utf8') 220 | 221 | const {checksum, meta, sections} = processMdxForSearch(contents) 222 | 223 | this.checksum = checksum 224 | this.meta = meta 225 | this.sections = sections 226 | 227 | return { 228 | checksum, 229 | meta, 230 | sections 231 | } 232 | } 233 | } 234 | -------------------------------------------------------------------------------- /src/sources/util.ts: -------------------------------------------------------------------------------- 1 | import {readdir, stat} from 'fs/promises' 2 | import {basename, dirname, join} from 'path' 3 | 4 | export type WalkEntry = { 5 | path: string 6 | parentPath?: string 7 | } 8 | 9 | export async function walk( 10 | dir: string, 11 | parentPath?: string 12 | ): Promise { 13 | const immediateFiles = await readdir(dir) 14 | 15 | const recursiveFiles = await Promise.all( 16 | immediateFiles.map(async file => { 17 | const path = join(dir, file) 18 | const stats = await stat(path) 19 | if (stats.isDirectory()) { 20 | // Keep track of document hierarchy (if this dir has corresponding doc file) 21 | const docPath = `${basename(path)}.mdx` 22 | 23 | return walk( 24 | path, 25 | immediateFiles.includes(docPath) 26 | ? join(dirname(path), docPath) 27 | : parentPath 28 | ) 29 | } else if (stats.isFile()) { 30 | return [ 31 | { 32 | path: path, 33 | parentPath 34 | } 35 | ] 36 | } else { 37 | return [] 38 | } 39 | }) 40 | ) 41 | 42 | const flattenedFiles = recursiveFiles.reduce( 43 | (all, folderContents) => all.concat(folderContents), 44 | [] 45 | ) 46 | 47 | return flattenedFiles.sort((a, b) => a.path.localeCompare(b.path)) 48 | } 49 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "moduleResolution": "node", 5 | "incremental": true, 6 | "noImplicitAny": false, 7 | "esModuleInterop": true, 8 | "resolveJsonModule": true, 9 | "baseUrl": ".", 10 | "paths": { 11 | "~/*": ["./*"] 12 | } 13 | }, 14 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 15 | "exclude": ["node_modules"] 16 | } 17 | --------------------------------------------------------------------------------