├── .gitattributes
├── .github
├── dependabot.yml
└── workflows
│ ├── check-dist.yml
│ └── test.yml
├── .gitignore
├── .idea
├── .gitignore
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── github_action_appetize.iml
├── inspectionProfiles
│ └── Project_Default.xml
├── misc.xml
├── modules.xml
└── vcs.xml
├── .prettierignore
├── .prettierrc.json
├── CODEOWNERS
├── LICENSE
├── README.md
├── __tests__
└── main.test.ts
├── action.yml
├── dist
├── index.js
├── index.js.map
├── licenses.txt
└── sourcemap-register.js
├── eslint.config.mjs
├── jest.config.js
├── package-lock.json
├── package.json
├── src
├── appetize.ts
├── main.ts
└── optionalformdata.ts
├── test
├── app.apk
└── app.zip
├── tsconfig.base.json
├── tsconfig.eslint.json
└── tsconfig.json
/.gitattributes:
--------------------------------------------------------------------------------
1 | dist/** -diff linguist-generated=true
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: github-actions
4 | directory: /
5 | schedule:
6 | interval: daily
7 |
8 | - package-ecosystem: npm
9 | directory: /
10 | schedule:
11 | interval: daily
12 |
--------------------------------------------------------------------------------
/.github/workflows/check-dist.yml:
--------------------------------------------------------------------------------
1 | # `dist/index.js` is a special file in Actions.
2 | # When you reference an action with `uses:` in a workflow,
3 | # `index.js` is the code that will run.
4 | # For our project, we generate this file through a build process from other source files.
5 | # We need to make sure the checked-in `index.js` actually matches what we expect it to be.
6 | name: Check dist/
7 |
8 | on:
9 | push:
10 | branches:
11 | - main
12 | paths-ignore:
13 | - '**.md'
14 | pull_request:
15 | paths-ignore:
16 | - '**.md'
17 | workflow_dispatch:
18 |
19 | jobs:
20 | check-dist:
21 | runs-on: ubuntu-latest
22 |
23 | steps:
24 | - uses: actions/checkout@v4
25 |
26 | - name: Set Node.js 16.x
27 | uses: actions/setup-node@v4.3.0
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 build
37 | npm run package
38 |
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 from expected, upload the expected version as an artifact
49 | - uses: actions/upload-artifact@v4
50 | if: ${{ failure() && steps.diff.conclusion == 'failure' }}
51 | with:
52 | name: dist
53 | path: dist/
54 |
--------------------------------------------------------------------------------
/.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 | workflow_dispatch:
9 |
10 | jobs:
11 | build: # make sure build/ci work properly
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 | - run: |
16 | npm install
17 | - run: |
18 | npm run all
19 | test: # make sure the action works
20 | runs-on: ubuntu-latest
21 | steps:
22 | - uses: actions/checkout@v4
23 |
24 | - name: Upload with File
25 | uses: ./
26 | with:
27 | apiHost: 'https://test-api.appetize.io'
28 | apiToken: ${{ secrets.APPETIZE_API_TOKEN }}
29 | publicKey: ${{ secrets.APPETIZE_PUBLIC_KEY }}
30 | appFile: test/app.apk
31 | platform: 'android'
32 | note: 'For Appetize Github Action Testing'
33 | fileType: 'apk'
34 | timeout: 120
35 | disabled: false
36 | disableHome: true
37 | useLastFrame: true
38 | buttonText: "Github Action App Start"
39 | postSessionButtonText: "Restart Github Action App"
40 | launchUrl: "https://appetize.io"
41 |
--------------------------------------------------------------------------------
/.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/**/*
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/github_action_appetize.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.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 | * @actions/actions-runtime
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2018 GitHub, Inc. and contributors
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Appetize Github Action
2 |
3 | [](https://github.com/appetizeio/github-action-appetize/actions/workflows/test.yml)
4 | [](https://github.com/appetizeio/github-action-appetize/actions/workflows/check-dist.yml)
5 |
6 | ## 📄 Description
7 |
8 | GitHub Action to facilitate interaction with Appetize's API. This action can be used to upload an Android .apk or iOS .app to Appetize.
9 |
10 | ## :arrow_right: Inputs
11 |
12 | | Name | Description | Required | Default |
13 | |-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------|-------------------------------------|
14 | | apiHost | Alternative Appetize API host | :white_check_mark: | https://api.appetize.io |
15 | | apiToken | Appetize API token for your account | :white_check_mark: | |
16 | | publicKey | The publicKey of the app to be updated; If no value is provided a new app will be created | | |
17 | | platform | The platform targeted by the build, either `android` or `ios` | :white_check_mark: | |
18 | | appFile | The local path to the app file to upload, either this or `appURL` must be provided | | |
19 | | appUrl | The URL to the app file to upload, either this or `appFile` must be provided | | |
20 | | fileType | The file type of the app file that will be uploaded; Must be `zip`, `tar.gz` or `apk` | | `zip` for iOS and `apk` for Android |
21 | | note | A note for your own purposes that will appear on the management dashboard. | | |
22 | | timeout | The number of seconds to wait until automatically ending the session due to user inactivity. Must be `30`, `60`, `120`, `180`, `300`, `600`, `1800`, `3600`, or `7200` | | `120` |
23 | | disabled | Whether or not streaming is disabled for this app. | | |
24 | | disableHome | Whether or not the home button is disabled for this app. | | |
25 | | useLastFrame | Whether or not the last image on the screen is shown after the session for the app ends. | | |
26 | | buttonText | Customize the message prompting the user to start the session | | `Tap to Play` |
27 | | postSessionButtonText | Customize the message prompting the user to restart the session | | `Tap to Play` |
28 | | launchUrl | Specify a deeplink to bring your users to a specific location when your app is launched. | | |
29 |
30 | ## :arrow_left: Outputs
31 | | Name | Description |
32 | |-----------|--------------------------------------------|
33 | | publicKey | The publicKey of the app that was uploaded |
34 |
35 | ## :tractor: Example Usage
36 |
37 | ### Upload a new iOS app
38 |
39 | ```yaml
40 | - name: Upload to Appetize
41 | uses: appetizeio/github-action-appetize@v1.0.5
42 | with:
43 | apiToken: ${{ secrets.APPETIZE_API_TOKEN }}
44 | appFile: test/app.zip
45 | platform: 'ios'
46 | ```
47 |
48 | ### Upload an existing Android app
49 |
50 | ```yaml
51 | - name: Upload to Appetize
52 | uses: appetizeio/github-action-appetize@v1.0.5
53 | with:
54 | apiToken: ${{ secrets.APPETIZE_API_TOKEN }}
55 | publicKey: ${{ secrets.APPETIZE_PUBLIC_KEY }}
56 | appFile: test/app.apk
57 | platform: 'android'
58 | ```
59 |
60 | ## 🛠 Developer Setup
61 |
62 | ### Install the dependencies
63 |
64 | ```bash
65 | npm install
66 | ```
67 |
68 | ### Build the typescript and package it for distribution
69 |
70 | ```bash
71 | npm run build && npm run package
72 | ```
73 |
74 | ### Publish to a distribution branch
75 |
76 | Actions are run from GitHub repos, so we will check in the packed dist folder.
77 |
78 | Then run `package` (this uses [ncc](https://github.com/vercel/ncc) under the hood):
79 | ```bash
80 | npm run package
81 | ```
82 | and push the results:
83 | ```bash
84 | git add dist
85 | git commit -a -m "prod dependencies"
86 | git push origin releases/{version}
87 | ```
88 |
89 | The action is now published! 🎉
90 |
--------------------------------------------------------------------------------
/__tests__/main.test.ts:
--------------------------------------------------------------------------------
1 | import {expect, test, beforeAll, describe} from '@jest/globals'
2 | import {getInputs} from '../src/appetize'
3 |
4 | const inputData = {
5 | apiHost: 'apiHost',
6 | apiToken: 'apiToken',
7 | publicKey: 'publicKey',
8 | platform: 'android',
9 | appFile: 'fileLocation',
10 | appUrl: 'urlLocation',
11 | fileType: 'apk',
12 | note: 'note',
13 | timeout: '120',
14 | disabled: 'false',
15 | disableHome: 'true',
16 | useLastFrame: 'false',
17 | buttonText: 'string',
18 | postSessionButtonText: 'string',
19 | launchUrl: 'string'
20 | }
21 |
22 | describe('Validate inputs', () => {
23 | beforeAll(() => {
24 | for (const [key, value] of Object.entries(inputData)) {
25 | setInput(key, value)
26 | }
27 | })
28 |
29 | test('apiHost', () => {
30 | expect(getInputs().apiHost).toBe(inputData.apiHost)
31 | })
32 |
33 | test('apiKey', () => {
34 | expect(getInputs().apiToken).toBe(inputData.apiToken)
35 | })
36 |
37 | test('publicKey', () => {
38 | expect(getInputs().publicKey).toBe(inputData.publicKey)
39 | })
40 |
41 | test('platform', () => {
42 | expect(getInputs().platform).toBe(inputData.platform)
43 | })
44 |
45 | test('appFile', () => {
46 | expect(getInputs().appFile).toBe(inputData.appFile)
47 | })
48 |
49 | test('appUrl', () => {
50 | expect(getInputs().appUrl).toBe(inputData.appUrl)
51 | })
52 |
53 | test('fileType', () => {
54 | expect(getInputs().fileType).toBe(inputData.fileType)
55 | })
56 |
57 | test('note', () => {
58 | expect(getInputs().note).toBe(inputData.note)
59 | })
60 |
61 | test('timeout', () => {
62 | expect(getInputs().timeout).toBe(Number(inputData.timeout))
63 | })
64 |
65 | test('disabled', () => {
66 | expect(getInputs().disabled).toBe(Boolean(inputData.disabled))
67 | })
68 |
69 | test('disableHome', () => {
70 | expect(getInputs().disableHome).toBe(Boolean(inputData.disableHome))
71 | })
72 |
73 | test('useLastFrame', () => {
74 | expect(getInputs().useLastFrame).toBe(Boolean(inputData.useLastFrame))
75 | })
76 |
77 | test('buttonText', () => {
78 | expect(getInputs().buttonText).toBe(inputData.buttonText)
79 | })
80 |
81 | test('postSessionButtonText', () => {
82 | expect(getInputs().postSessionButtonText).toBe(
83 | inputData.postSessionButtonText
84 | )
85 | })
86 |
87 | test('launchUrl', () => {
88 | expect(getInputs().launchUrl).toBe(inputData.launchUrl)
89 | })
90 | })
91 |
92 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
93 | const setInput = (name: string, value: any) => {
94 | process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] = value
95 | }
96 |
--------------------------------------------------------------------------------
/action.yml:
--------------------------------------------------------------------------------
1 | name: 'Appetize Github Action'
2 | description: 'Github Action to facilitate interaction with the Appetize API'
3 | author: 'Appetize'
4 | branding:
5 | icon: 'chevron-up'
6 | color: 'gray-dark'
7 | inputs:
8 | apiHost:
9 | description: 'Alternative Appetize API host'
10 | required: false
11 | default: 'https://api.appetize.io'
12 | apiToken:
13 | description: 'Appetize API token'
14 | required: true
15 | publicKey:
16 | description: 'The publicKey of the app to be updated; If no value is provided a new app will be created'
17 | required: false
18 | platform:
19 | description: 'The platform targeted by the build, either ios or android'
20 | required: true
21 | appFile:
22 | description: 'The local path to the app file to upload; either this or appUrl must be provided'
23 | required: false
24 | appUrl:
25 | description: 'The URL to the app file to upload; either this or appFile must be provided'
26 | required: false
27 | fileType:
28 | description: 'The file type of the app file that will be uploaded; Must be zip, tar.gz or apk. Default is zip for iOS and apk for Android'
29 | required: false
30 | note:
31 | description: 'A note for your own purposes that will appear on the management dashboard.'
32 | required: false
33 | timeout:
34 | description: 'The number of seconds to wait until automatically ending the session due to user inactivity. Must be 30, 60, 120, 180, 300, 600, 1800, 3600, or 7200'
35 | required: false
36 | default: '120'
37 | disabled:
38 | description: 'Whether or not streaming is disabled for this app.'
39 | required: false
40 | disableHome:
41 | description: 'Whether or not the home button is disabled for this app.'
42 | required: false
43 | useLastFrame:
44 | description: 'Whether or not the last image on the screen is shown after the session for the app ends.'
45 | required: false
46 | buttonText:
47 | description: 'Customize the message prompting the user to start the session, default is "Tap to play"'
48 | required: false
49 | postSessionButtonText:
50 | description: 'Customize the message prompting the user to restart the session, default is "Tap to play"'
51 | required: false
52 | launchUrl:
53 | description: 'Specify a deeplink to bring your users to a specific location when your app is launched.'
54 | required: false
55 | outputs:
56 | publicKey:
57 | description: 'The public key of the app that was created or updated'
58 | runs:
59 | using: 'node16'
60 | main: 'dist/index.js'
61 |
--------------------------------------------------------------------------------
/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/exec
14 | MIT
15 | The MIT License (MIT)
16 |
17 | Copyright 2019 GitHub
18 |
19 | 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:
20 |
21 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
22 |
23 | 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.
24 |
25 | @actions/http-client
26 | MIT
27 | Actions Http Client for Node.js
28 |
29 | Copyright (c) GitHub, Inc.
30 |
31 | All rights reserved.
32 |
33 | MIT License
34 |
35 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
36 | associated documentation files (the "Software"), to deal in the Software without restriction,
37 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
38 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
39 | subject to the following conditions:
40 |
41 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
42 |
43 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
44 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
45 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
46 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
47 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
48 |
49 |
50 | @actions/io
51 | MIT
52 | The MIT License (MIT)
53 |
54 | Copyright 2019 GitHub
55 |
56 | 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:
57 |
58 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
59 |
60 | 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.
61 |
62 | @fastify/busboy
63 | MIT
64 | Copyright Brian White. All rights reserved.
65 |
66 | Permission is hereby granted, free of charge, to any person obtaining a copy
67 | of this software and associated documentation files (the "Software"), to
68 | deal in the Software without restriction, including without limitation the
69 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
70 | sell copies of the Software, and to permit persons to whom the Software is
71 | furnished to do so, subject to the following conditions:
72 |
73 | The above copyright notice and this permission notice shall be included in
74 | all copies or substantial portions of the Software.
75 |
76 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
77 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
78 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
79 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
80 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
81 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
82 | IN THE SOFTWARE.
83 |
84 | asynckit
85 | MIT
86 | The MIT License (MIT)
87 |
88 | Copyright (c) 2016 Alex Indigo
89 |
90 | Permission is hereby granted, free of charge, to any person obtaining a copy
91 | of this software and associated documentation files (the "Software"), to deal
92 | in the Software without restriction, including without limitation the rights
93 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
94 | copies of the Software, and to permit persons to whom the Software is
95 | furnished to do so, subject to the following conditions:
96 |
97 | The above copyright notice and this permission notice shall be included in all
98 | copies or substantial portions of the Software.
99 |
100 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
101 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
102 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
103 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
104 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
105 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
106 | SOFTWARE.
107 |
108 |
109 | axios
110 | MIT
111 | # Copyright (c) 2014-present Matt Zabriskie & Collaborators
112 |
113 | 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:
114 |
115 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
116 |
117 | 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.
118 |
119 |
120 | call-bind-apply-helpers
121 | MIT
122 | MIT License
123 |
124 | Copyright (c) 2024 Jordan Harband
125 |
126 | Permission is hereby granted, free of charge, to any person obtaining a copy
127 | of this software and associated documentation files (the "Software"), to deal
128 | in the Software without restriction, including without limitation the rights
129 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
130 | copies of the Software, and to permit persons to whom the Software is
131 | furnished to do so, subject to the following conditions:
132 |
133 | The above copyright notice and this permission notice shall be included in all
134 | copies or substantial portions of the Software.
135 |
136 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
137 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
138 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
139 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
140 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
141 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
142 | SOFTWARE.
143 |
144 |
145 | combined-stream
146 | MIT
147 | Copyright (c) 2011 Debuggable Limited
148 |
149 | Permission is hereby granted, free of charge, to any person obtaining a copy
150 | of this software and associated documentation files (the "Software"), to deal
151 | in the Software without restriction, including without limitation the rights
152 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
153 | copies of the Software, and to permit persons to whom the Software is
154 | furnished to do so, subject to the following conditions:
155 |
156 | The above copyright notice and this permission notice shall be included in
157 | all copies or substantial portions of the Software.
158 |
159 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
160 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
161 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
162 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
163 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
164 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
165 | THE SOFTWARE.
166 |
167 |
168 | debug
169 | MIT
170 | (The MIT License)
171 |
172 | Copyright (c) 2014-2017 TJ Holowaychuk
173 | Copyright (c) 2018-2021 Josh Junon
174 |
175 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software
176 | and associated documentation files (the 'Software'), to deal in the Software without restriction,
177 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
178 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
179 | subject to the following conditions:
180 |
181 | The above copyright notice and this permission notice shall be included in all copies or substantial
182 | portions of the Software.
183 |
184 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
185 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
186 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
187 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
188 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
189 |
190 |
191 |
192 | delayed-stream
193 | MIT
194 | Copyright (c) 2011 Debuggable Limited
195 |
196 | Permission is hereby granted, free of charge, to any person obtaining a copy
197 | of this software and associated documentation files (the "Software"), to deal
198 | in the Software without restriction, including without limitation the rights
199 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
200 | copies of the Software, and to permit persons to whom the Software is
201 | furnished to do so, subject to the following conditions:
202 |
203 | The above copyright notice and this permission notice shall be included in
204 | all copies or substantial portions of the Software.
205 |
206 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
207 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
208 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
209 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
210 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
211 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
212 | THE SOFTWARE.
213 |
214 |
215 | dunder-proto
216 | MIT
217 | MIT License
218 |
219 | Copyright (c) 2024 ECMAScript Shims
220 |
221 | Permission is hereby granted, free of charge, to any person obtaining a copy
222 | of this software and associated documentation files (the "Software"), to deal
223 | in the Software without restriction, including without limitation the rights
224 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
225 | copies of the Software, and to permit persons to whom the Software is
226 | furnished to do so, subject to the following conditions:
227 |
228 | The above copyright notice and this permission notice shall be included in all
229 | copies or substantial portions of the Software.
230 |
231 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
232 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
233 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
234 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
235 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
236 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
237 | SOFTWARE.
238 |
239 |
240 | es-define-property
241 | MIT
242 | MIT License
243 |
244 | Copyright (c) 2024 Jordan Harband
245 |
246 | Permission is hereby granted, free of charge, to any person obtaining a copy
247 | of this software and associated documentation files (the "Software"), to deal
248 | in the Software without restriction, including without limitation the rights
249 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
250 | copies of the Software, and to permit persons to whom the Software is
251 | furnished to do so, subject to the following conditions:
252 |
253 | The above copyright notice and this permission notice shall be included in all
254 | copies or substantial portions of the Software.
255 |
256 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
257 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
258 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
259 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
260 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
261 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
262 | SOFTWARE.
263 |
264 |
265 | es-errors
266 | MIT
267 | MIT License
268 |
269 | Copyright (c) 2024 Jordan Harband
270 |
271 | Permission is hereby granted, free of charge, to any person obtaining a copy
272 | of this software and associated documentation files (the "Software"), to deal
273 | in the Software without restriction, including without limitation the rights
274 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
275 | copies of the Software, and to permit persons to whom the Software is
276 | furnished to do so, subject to the following conditions:
277 |
278 | The above copyright notice and this permission notice shall be included in all
279 | copies or substantial portions of the Software.
280 |
281 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
282 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
283 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
284 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
285 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
286 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
287 | SOFTWARE.
288 |
289 |
290 | es-object-atoms
291 | MIT
292 | MIT License
293 |
294 | Copyright (c) 2024 Jordan Harband
295 |
296 | Permission is hereby granted, free of charge, to any person obtaining a copy
297 | of this software and associated documentation files (the "Software"), to deal
298 | in the Software without restriction, including without limitation the rights
299 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
300 | copies of the Software, and to permit persons to whom the Software is
301 | furnished to do so, subject to the following conditions:
302 |
303 | The above copyright notice and this permission notice shall be included in all
304 | copies or substantial portions of the Software.
305 |
306 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
307 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
308 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
309 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
310 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
311 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
312 | SOFTWARE.
313 |
314 |
315 | es-set-tostringtag
316 | MIT
317 | MIT License
318 |
319 | Copyright (c) 2022 ECMAScript Shims
320 |
321 | Permission is hereby granted, free of charge, to any person obtaining a copy
322 | of this software and associated documentation files (the "Software"), to deal
323 | in the Software without restriction, including without limitation the rights
324 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
325 | copies of the Software, and to permit persons to whom the Software is
326 | furnished to do so, subject to the following conditions:
327 |
328 | The above copyright notice and this permission notice shall be included in all
329 | copies or substantial portions of the Software.
330 |
331 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
332 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
333 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
334 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
335 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
336 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
337 | SOFTWARE.
338 |
339 |
340 | follow-redirects
341 | MIT
342 | Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh
343 |
344 | Permission is hereby granted, free of charge, to any person obtaining a copy of
345 | this software and associated documentation files (the "Software"), to deal in
346 | the Software without restriction, including without limitation the rights to
347 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
348 | of the Software, and to permit persons to whom the Software is furnished to do
349 | so, subject to the following conditions:
350 |
351 | The above copyright notice and this permission notice shall be included in all
352 | copies or substantial portions of the Software.
353 |
354 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
355 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
356 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
357 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
358 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
359 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
360 |
361 |
362 | form-data
363 | MIT
364 | Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors
365 |
366 | Permission is hereby granted, free of charge, to any person obtaining a copy
367 | of this software and associated documentation files (the "Software"), to deal
368 | in the Software without restriction, including without limitation the rights
369 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
370 | copies of the Software, and to permit persons to whom the Software is
371 | furnished to do so, subject to the following conditions:
372 |
373 | The above copyright notice and this permission notice shall be included in
374 | all copies or substantial portions of the Software.
375 |
376 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
377 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
378 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
379 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
380 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
381 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
382 | THE SOFTWARE.
383 |
384 |
385 | function-bind
386 | MIT
387 | Copyright (c) 2013 Raynos.
388 |
389 | Permission is hereby granted, free of charge, to any person obtaining a copy
390 | of this software and associated documentation files (the "Software"), to deal
391 | in the Software without restriction, including without limitation the rights
392 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
393 | copies of the Software, and to permit persons to whom the Software is
394 | furnished to do so, subject to the following conditions:
395 |
396 | The above copyright notice and this permission notice shall be included in
397 | all copies or substantial portions of the Software.
398 |
399 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
400 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
401 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
402 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
403 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
404 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
405 | THE SOFTWARE.
406 |
407 |
408 |
409 | get-intrinsic
410 | MIT
411 | MIT License
412 |
413 | Copyright (c) 2020 Jordan Harband
414 |
415 | Permission is hereby granted, free of charge, to any person obtaining a copy
416 | of this software and associated documentation files (the "Software"), to deal
417 | in the Software without restriction, including without limitation the rights
418 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
419 | copies of the Software, and to permit persons to whom the Software is
420 | furnished to do so, subject to the following conditions:
421 |
422 | The above copyright notice and this permission notice shall be included in all
423 | copies or substantial portions of the Software.
424 |
425 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
426 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
427 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
428 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
429 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
430 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
431 | SOFTWARE.
432 |
433 |
434 | get-proto
435 | MIT
436 | MIT License
437 |
438 | Copyright (c) 2025 Jordan Harband
439 |
440 | Permission is hereby granted, free of charge, to any person obtaining a copy
441 | of this software and associated documentation files (the "Software"), to deal
442 | in the Software without restriction, including without limitation the rights
443 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
444 | copies of the Software, and to permit persons to whom the Software is
445 | furnished to do so, subject to the following conditions:
446 |
447 | The above copyright notice and this permission notice shall be included in all
448 | copies or substantial portions of the Software.
449 |
450 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
451 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
452 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
453 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
454 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
455 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
456 | SOFTWARE.
457 |
458 |
459 | gopd
460 | MIT
461 | MIT License
462 |
463 | Copyright (c) 2022 Jordan Harband
464 |
465 | Permission is hereby granted, free of charge, to any person obtaining a copy
466 | of this software and associated documentation files (the "Software"), to deal
467 | in the Software without restriction, including without limitation the rights
468 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
469 | copies of the Software, and to permit persons to whom the Software is
470 | furnished to do so, subject to the following conditions:
471 |
472 | The above copyright notice and this permission notice shall be included in all
473 | copies or substantial portions of the Software.
474 |
475 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
476 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
477 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
478 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
479 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
480 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
481 | SOFTWARE.
482 |
483 |
484 | has-flag
485 | MIT
486 | MIT License
487 |
488 | Copyright (c) Sindre Sorhus (sindresorhus.com)
489 |
490 | 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:
491 |
492 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
493 |
494 | 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.
495 |
496 |
497 | has-symbols
498 | MIT
499 | MIT License
500 |
501 | Copyright (c) 2016 Jordan Harband
502 |
503 | Permission is hereby granted, free of charge, to any person obtaining a copy
504 | of this software and associated documentation files (the "Software"), to deal
505 | in the Software without restriction, including without limitation the rights
506 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
507 | copies of the Software, and to permit persons to whom the Software is
508 | furnished to do so, subject to the following conditions:
509 |
510 | The above copyright notice and this permission notice shall be included in all
511 | copies or substantial portions of the Software.
512 |
513 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
514 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
515 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
516 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
517 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
518 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
519 | SOFTWARE.
520 |
521 |
522 | has-tostringtag
523 | MIT
524 | MIT License
525 |
526 | Copyright (c) 2021 Inspect JS
527 |
528 | Permission is hereby granted, free of charge, to any person obtaining a copy
529 | of this software and associated documentation files (the "Software"), to deal
530 | in the Software without restriction, including without limitation the rights
531 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
532 | copies of the Software, and to permit persons to whom the Software is
533 | furnished to do so, subject to the following conditions:
534 |
535 | The above copyright notice and this permission notice shall be included in all
536 | copies or substantial portions of the Software.
537 |
538 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
539 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
540 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
541 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
542 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
543 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
544 | SOFTWARE.
545 |
546 |
547 | hasown
548 | MIT
549 | MIT License
550 |
551 | Copyright (c) Jordan Harband and contributors
552 |
553 | Permission is hereby granted, free of charge, to any person obtaining a copy
554 | of this software and associated documentation files (the "Software"), to deal
555 | in the Software without restriction, including without limitation the rights
556 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
557 | copies of the Software, and to permit persons to whom the Software is
558 | furnished to do so, subject to the following conditions:
559 |
560 | The above copyright notice and this permission notice shall be included in all
561 | copies or substantial portions of the Software.
562 |
563 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
564 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
565 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
566 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
567 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
568 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
569 | SOFTWARE.
570 |
571 |
572 | math-intrinsics
573 | MIT
574 | MIT License
575 |
576 | Copyright (c) 2024 ECMAScript Shims
577 |
578 | Permission is hereby granted, free of charge, to any person obtaining a copy
579 | of this software and associated documentation files (the "Software"), to deal
580 | in the Software without restriction, including without limitation the rights
581 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
582 | copies of the Software, and to permit persons to whom the Software is
583 | furnished to do so, subject to the following conditions:
584 |
585 | The above copyright notice and this permission notice shall be included in all
586 | copies or substantial portions of the Software.
587 |
588 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
589 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
590 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
591 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
592 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
593 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
594 | SOFTWARE.
595 |
596 |
597 | mime-db
598 | MIT
599 | (The MIT License)
600 |
601 | Copyright (c) 2014 Jonathan Ong
602 | Copyright (c) 2015-2022 Douglas Christopher Wilson
603 |
604 | Permission is hereby granted, free of charge, to any person obtaining
605 | a copy of this software and associated documentation files (the
606 | 'Software'), to deal in the Software without restriction, including
607 | without limitation the rights to use, copy, modify, merge, publish,
608 | distribute, sublicense, and/or sell copies of the Software, and to
609 | permit persons to whom the Software is furnished to do so, subject to
610 | the following conditions:
611 |
612 | The above copyright notice and this permission notice shall be
613 | included in all copies or substantial portions of the Software.
614 |
615 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
616 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
617 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
618 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
619 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
620 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
621 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
622 |
623 |
624 | mime-types
625 | MIT
626 | (The MIT License)
627 |
628 | Copyright (c) 2014 Jonathan Ong
629 | Copyright (c) 2015 Douglas Christopher Wilson
630 |
631 | Permission is hereby granted, free of charge, to any person obtaining
632 | a copy of this software and associated documentation files (the
633 | 'Software'), to deal in the Software without restriction, including
634 | without limitation the rights to use, copy, modify, merge, publish,
635 | distribute, sublicense, and/or sell copies of the Software, and to
636 | permit persons to whom the Software is furnished to do so, subject to
637 | the following conditions:
638 |
639 | The above copyright notice and this permission notice shall be
640 | included in all copies or substantial portions of the Software.
641 |
642 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
643 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
644 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
645 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
646 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
647 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
648 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
649 |
650 |
651 | ms
652 | MIT
653 | The MIT License (MIT)
654 |
655 | Copyright (c) 2020 Vercel, Inc.
656 |
657 | Permission is hereby granted, free of charge, to any person obtaining a copy
658 | of this software and associated documentation files (the "Software"), to deal
659 | in the Software without restriction, including without limitation the rights
660 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
661 | copies of the Software, and to permit persons to whom the Software is
662 | furnished to do so, subject to the following conditions:
663 |
664 | The above copyright notice and this permission notice shall be included in all
665 | copies or substantial portions of the Software.
666 |
667 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
668 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
669 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
670 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
671 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
672 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
673 | SOFTWARE.
674 |
675 |
676 | proxy-from-env
677 | MIT
678 | The MIT License
679 |
680 | Copyright (C) 2016-2018 Rob Wu
681 |
682 | Permission is hereby granted, free of charge, to any person obtaining a copy of
683 | this software and associated documentation files (the "Software"), to deal in
684 | the Software without restriction, including without limitation the rights to
685 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
686 | of the Software, and to permit persons to whom the Software is furnished to do
687 | so, subject to the following conditions:
688 |
689 | The above copyright notice and this permission notice shall be included in all
690 | copies or substantial portions of the Software.
691 |
692 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
693 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
694 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
695 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
696 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
697 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
698 |
699 |
700 | supports-color
701 | MIT
702 | MIT License
703 |
704 | Copyright (c) Sindre Sorhus (sindresorhus.com)
705 |
706 | 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:
707 |
708 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
709 |
710 | 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.
711 |
712 |
713 | tunnel
714 | MIT
715 | The MIT License (MIT)
716 |
717 | Copyright (c) 2012 Koichi Kobayashi
718 |
719 | Permission is hereby granted, free of charge, to any person obtaining a copy
720 | of this software and associated documentation files (the "Software"), to deal
721 | in the Software without restriction, including without limitation the rights
722 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
723 | copies of the Software, and to permit persons to whom the Software is
724 | furnished to do so, subject to the following conditions:
725 |
726 | The above copyright notice and this permission notice shall be included in
727 | all copies or substantial portions of the Software.
728 |
729 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
730 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
731 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
732 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
733 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
734 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
735 | THE SOFTWARE.
736 |
737 |
738 | undici
739 | MIT
740 | MIT License
741 |
742 | Copyright (c) Matteo Collina and Undici contributors
743 |
744 | Permission is hereby granted, free of charge, to any person obtaining a copy
745 | of this software and associated documentation files (the "Software"), to deal
746 | in the Software without restriction, including without limitation the rights
747 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
748 | copies of the Software, and to permit persons to whom the Software is
749 | furnished to do so, subject to the following conditions:
750 |
751 | The above copyright notice and this permission notice shall be included in all
752 | copies or substantial portions of the Software.
753 |
754 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
755 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
756 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
757 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
758 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
759 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
760 | SOFTWARE.
761 |
--------------------------------------------------------------------------------
/dist/sourcemap-register.js:
--------------------------------------------------------------------------------
1 | (()=>{var e={296:e=>{var r=Object.prototype.toString;var n=typeof Buffer!=="undefined"&&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},599:(e,r,n)=>{e=n.nmd(e);var t=n(927).SourceMapConsumer;var o=n(928);var i;try{i=n(896);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(296);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 d=[];var h=[];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=d.slice(0);var _=h.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){d.length=0}d.unshift(r.retrieveFile)}if(r.retrieveSourceMap){if(r.overrideRetrieveSourceMap){h.length=0}h.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(){d.length=0;h.length=0;d=S.slice(0);h=_.slice(0);v=handlerExec(h);m=handlerExec(d)}},517:(e,r,n)=>{var t=n(297);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(158);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}},24:(e,r,n)=>{var t=n(297);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.P=MappingList},299:(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(297);var i=n(197);var a=n(517).C;var u=n(818);var s=n(299).g;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"){h.push(v)}}}s(m,o.compareByGeneratedPositionsDeflated);this.__generatedMappings=m;s(h,o.compareByOriginalPositions);this.__originalMappings=h};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(818);var o=n(297);var i=n(517).C;var a=n(24).P;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 d=0,h=g.length;d0){if(!o.compareByGeneratedPositionsInflated(c,g[d-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.x=SourceMapGenerator},565:(e,r,n)=>{var t;var o=n(163).x;var i=n(297);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},927:(e,r,n)=>{n(163).x;r.SourceMapConsumer=n(684).SourceMapConsumer;n(565)},896:e=>{"use strict";e.exports=require("fs")},928: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__(599).install();module.exports=n})();
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import {fixupPluginRules} from '@eslint/compat'
2 | import {FlatCompat} from '@eslint/eslintrc'
3 | import js from '@eslint/js'
4 | import typescriptEslint from '@typescript-eslint/eslint-plugin'
5 | import tsParser from '@typescript-eslint/parser'
6 | import _import from 'eslint-plugin-import'
7 | import jest from 'eslint-plugin-jest'
8 | import prettier from 'eslint-plugin-prettier'
9 | import globals from 'globals'
10 | import path from 'node:path'
11 | import {fileURLToPath} from 'node:url'
12 |
13 | const __filename = fileURLToPath(import.meta.url)
14 | const __dirname = path.dirname(__filename)
15 | const compat = new FlatCompat({
16 | baseDirectory: __dirname,
17 | recommendedConfig: js.configs.recommended,
18 | allConfig: js.configs.all
19 | })
20 |
21 | export default [
22 | {
23 | ignores: ['**/dist', '**/lib', '**/node_modules', 'jest.config.js']
24 | },
25 | ...compat.extends(
26 | 'eslint:recommended',
27 | 'plugin:@typescript-eslint/eslint-recommended',
28 | 'plugin:@typescript-eslint/recommended',
29 | 'plugin:jest/recommended',
30 | 'plugin:prettier/recommended'
31 | ),
32 | {
33 | plugins: {
34 | import: fixupPluginRules(_import),
35 | jest,
36 | prettier,
37 | '@typescript-eslint': typescriptEslint
38 | },
39 |
40 | languageOptions: {
41 | globals: {
42 | ...globals.node,
43 | ...globals.jest,
44 | Atomics: 'readonly',
45 | SharedArrayBuffer: 'readonly'
46 | },
47 |
48 | parser: tsParser,
49 | ecmaVersion: 2023,
50 | sourceType: 'module',
51 |
52 | parserOptions: {
53 | project: ['tsconfig.eslint.json'],
54 | tsconfigRootDir: '.'
55 | }
56 | },
57 |
58 | settings: {
59 | 'import/resolver': {
60 | typescript: {
61 | alwaysTryTypes: true,
62 | project: 'tsconfig.eslint.json'
63 | }
64 | }
65 | },
66 |
67 | rules: {
68 | camelcase: 'off',
69 | 'eslint-comments/no-use': 'off',
70 | 'eslint-comments/no-unused-disable': 'off',
71 | 'i18n-text/no-en': 'off',
72 | 'import/no-namespace': 'off',
73 | 'no-console': 'off',
74 | 'no-shadow': 'off',
75 | 'no-unused-vars': 'off',
76 | 'prettier/prettier': 'error'
77 | }
78 | }
79 | ]
80 |
--------------------------------------------------------------------------------
/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": "appetize-github-action",
3 | "version": "1.0.0",
4 | "private": true,
5 | "description": "Github Action to facilitate interaction with the Appetize API",
6 | "main": "lib/main.js",
7 | "scripts": {
8 | "build": "tsc",
9 | "format": "prettier --write '**/*.ts'",
10 | "format-check": "prettier --check '**/*.ts'",
11 | "lint": "npx eslint .",
12 | "package": "ncc build --source-map --license licenses.txt",
13 | "test": "jest",
14 | "all": "npm run build && npm run format && npm run lint && npm run package && npm test"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/appetizeio/github-action-appetize.git"
19 | },
20 | "keywords": [
21 | "actions",
22 | "node",
23 | "setup",
24 | "appetize"
25 | ],
26 | "author": "Appetize",
27 | "license": "MIT",
28 | "dependencies": {
29 | "@actions/core": "^1.10.1",
30 | "axios": "^1.7.7"
31 | },
32 | "devDependencies": {
33 | "@eslint/compat": "^1.2.7",
34 | "@types/node": "^22.9.0",
35 | "@typescript-eslint/eslint-plugin": "^8.28.0",
36 | "@typescript-eslint/parser": "^8.28.0",
37 | "@vercel/ncc": "^0.38.3",
38 | "eslint": "^9.23.0",
39 | "eslint-config-prettier": "^10.0.2",
40 | "eslint-import-resolver-typescript": "^4.3.1",
41 | "eslint-plugin-import": "^2.31.0",
42 | "eslint-plugin-jest": "^28.11.0",
43 | "eslint-plugin-prettier": "^5.2.5",
44 | "jest": "^29.7.0",
45 | "js-yaml": "^4.1.0",
46 | "prettier": "^3.5.3",
47 | "prettier-eslint": "^16.3.0",
48 | "ts-jest": "^29.2.5",
49 | "typescript": "^5.8.2"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/appetize.ts:
--------------------------------------------------------------------------------
1 | import * as core from '@actions/core'
2 | import FormData from 'form-data'
3 | import {createReadStream} from 'fs'
4 | import axios from 'axios'
5 | import {OptionalFormData} from './optionalformdata'
6 |
7 | const apiVersion = 'v1'
8 |
9 | const inputs: InputData = getInputs()
10 |
11 | /**
12 | * The data that is passed to the action. Exported to allow for easy testing.
13 | */
14 | export function getInputs(): InputData {
15 | return {
16 | apiHost: core.getInput('apiHost'),
17 | apiToken: core.getInput('apiToken'),
18 | publicKey: core.getInput('publicKey'),
19 | platform: core.getInput('platform'),
20 | appFile: core.getInput('appFile'),
21 | appUrl: core.getInput('appUrl'),
22 | fileType: core.getInput('fileType'),
23 | note: core.getInput('note'),
24 | timeout: Number(core.getInput('timeout')),
25 | disabled: Boolean(core.getInput('disabled')),
26 | disableHome: Boolean(core.getInput('disableHome')),
27 | useLastFrame: Boolean(core.getInput('useLastFrame')),
28 | buttonText: core.getInput('buttonText'),
29 | postSessionButtonText: core.getInput('postSessionButtonText'),
30 | launchUrl: core.getInput('launchUrl')
31 | }
32 | }
33 |
34 | /**
35 | * Uploads a build to Appetize.
36 | * If a [publicKey] is specified, an existing app will be updated, otherwise a new app will be created.
37 | * @returns The public key of the uploaded build.
38 | * @throws An error if neither [appFile] nor [appUrl] are specified.
39 | */
40 | export const uploadBuild = async (): Promise => {
41 | validateInputData(inputs)
42 | const [data, headers] = dataAndHeaders()
43 | core.info(`Uploading build to ${url()}`)
44 | core.info('Attached build info:')
45 | core.info(`${JSON.stringify(inputs)}`)
46 | const response = await axios.post(url(), data, {
47 | auth: {
48 | username: inputs.apiToken,
49 | password: ''
50 | },
51 | headers,
52 | maxContentLength: Infinity,
53 | maxBodyLength: Infinity
54 | })
55 | return response.data
56 | }
57 |
58 | /**
59 | * Retrieves the data and headers for the given inputs.
60 | * @returns The data and headers for the request.
61 | * @throws An error if neither [appFile] nor [appUrl] are specified.
62 | */
63 | const dataAndHeaders = (): [
64 | data: FormData | UrlData,
65 | headers: FormData.Headers | undefined
66 | ] => {
67 | if (inputs.appFile) {
68 | const data = fileData()
69 | return [data, data.getHeaders()]
70 | } else if (inputs.appUrl) {
71 | return [urlData(), undefined]
72 | } else {
73 | throw new Error('Either appFile or appUrl must be specified')
74 | }
75 | }
76 |
77 | /**
78 | * Validates that all inputs are valid.
79 | * @throws An error if any input is invalid with the reason.
80 | */
81 | const validateInputData = (input: InputData): void => {
82 | //Platform valid types
83 | if (input.platform !== 'ios' && input.platform !== 'android') {
84 | throw new Error('Platform must be either ios or android')
85 | }
86 | //AppFile or AppUrl required
87 | if (!input.appFile && !input.appUrl) {
88 | throw new Error('Either appFile or appUrl must be specified')
89 | }
90 | //FileType valid types
91 | if (
92 | input.fileType &&
93 | input.fileType !== 'apk' &&
94 | input.fileType !== 'zip' &&
95 | input.fileType !== 'tar.gz'
96 | ) {
97 | throw new Error('FileType must be either apk, zip, or tar.gz')
98 | }
99 | //Timeout must be a valid number
100 | if (
101 | input.timeout &&
102 | input.timeout !== 30 &&
103 | input.timeout !== 60 &&
104 | input.timeout !== 120 &&
105 | input.timeout !== 180 &&
106 | input.timeout !== 300 &&
107 | input.timeout !== 600 &&
108 | input.timeout !== 1800 &&
109 | input.timeout !== 3600 &&
110 | input.timeout !== 7200
111 | ) {
112 | throw new Error(
113 | 'Timeout must be either 30, 60, 120, 180, 300, 600, 1800, 3600, or 7200'
114 | )
115 | }
116 | }
117 |
118 | /**
119 | * Creates the URL for the request.
120 | */
121 | const url = (): string => {
122 | const baseUrl = `${inputs.apiHost}/${apiVersion}/apps/`
123 | if (inputs.publicKey) {
124 | return baseUrl + inputs.publicKey
125 | }
126 | return baseUrl
127 | }
128 |
129 | /**
130 | * Creates a FormData object for uploading a local file.
131 | */
132 | const fileData = (): FormData => {
133 | const form = new OptionalFormData()
134 | form.append('file', createReadStream(inputs.appFile))
135 | form.append('platform', inputs.platform)
136 | form.appendOptional('fileType', inputs.fileType)
137 | form.appendOptional('note', inputs.note)
138 | form.appendOptional('timeout', String(inputs.timeout))
139 | form.appendOptional('disabled', String(inputs.disabled))
140 | form.appendOptional('disableHome', String(inputs.disableHome))
141 | form.appendOptional('useLastFrame', String(inputs.useLastFrame))
142 | form.appendOptional('buttonText', inputs.buttonText)
143 | form.appendOptional('postSessionButtonText', inputs.postSessionButtonText)
144 | form.appendOptional('launchUrl', inputs.launchUrl)
145 | return form
146 | }
147 |
148 | /**
149 | * Creates a UrlData object for uploading a remote file.
150 | */
151 | const urlData = (): UrlData => {
152 | return {
153 | url: inputs.appUrl,
154 | platform: inputs.platform,
155 | fileType: inputs.fileType,
156 | note: inputs.note,
157 | timeout: inputs.timeout,
158 | disabled: inputs.disabled,
159 | disableHome: inputs.disableHome,
160 | useLastFrame: inputs.useLastFrame,
161 | buttonText: inputs.buttonText,
162 | postSessionButtonText: inputs.postSessionButtonText,
163 | launchUrl: inputs.launchUrl
164 | }
165 | }
166 |
167 | interface UrlData {
168 | url: string
169 | platform: string
170 | fileType: string
171 | note: string
172 | timeout: number
173 | disabled: boolean
174 | disableHome: boolean
175 | useLastFrame: boolean
176 | buttonText: string
177 | postSessionButtonText: string
178 | launchUrl: string
179 | }
180 |
181 | interface InputData {
182 | apiHost: string
183 | apiToken: string
184 | publicKey: string
185 | platform: string
186 | appFile: string
187 | appUrl: string
188 | fileType: string
189 | note: string
190 | timeout: number
191 | disabled: boolean
192 | disableHome: boolean
193 | useLastFrame: boolean
194 | buttonText: string
195 | postSessionButtonText: string
196 | launchUrl: string
197 | }
198 |
199 | interface OutputData {
200 | publicKey: string
201 | }
202 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import * as core from '@actions/core'
2 | import {uploadBuild} from './appetize'
3 |
4 | async function run(): Promise {
5 | try {
6 | const result = await uploadBuild()
7 | core.setOutput('publicKey', result.publicKey)
8 | } catch (error) {
9 | if (error instanceof Error) core.setFailed(error.message)
10 | }
11 | }
12 |
13 | run()
14 |
--------------------------------------------------------------------------------
/src/optionalformdata.ts:
--------------------------------------------------------------------------------
1 | import FormData from 'form-data'
2 |
3 | export class OptionalFormData extends FormData {
4 | appendOptional(key: string, value: unknown): void {
5 | if (value) {
6 | this.append(key, value)
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/test/app.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/appetizeio/github-action-appetize/ad90cd939d77bd5234ee5354ef7780e0bf4b7eaa/test/app.apk
--------------------------------------------------------------------------------
/test/app.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/appetizeio/github-action-appetize/ad90cd939d77bd5234ee5354ef7780e0bf4b7eaa/test/app.zip
--------------------------------------------------------------------------------
/tsconfig.base.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "allowSyntheticDefaultImports": true, // Allow import React from 'react' instead of import * as React from 'react'
5 | "declaration": false,
6 | "declarationMap": false,
7 | "forceConsistentCasingInFileNames": true,
8 | "lib": ["ES2022"],
9 | "target": "ES2022",
10 | "module": "NodeNext",
11 | "moduleResolution": "NodeNext",
12 | "noImplicitAny": true,
13 | "noUnusedLocals": true,
14 | "noUnusedParameters": false,
15 | "esModuleInterop": true,
16 | "pretty": true,
17 | "resolveJsonModule": true,
18 | "strict": true,
19 | "strictNullChecks": true,
20 | }
21 | }
--------------------------------------------------------------------------------
/tsconfig.eslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./tsconfig.base.json",
4 | "compilerOptions": {
5 | "allowJs": true,
6 | "noEmit": true
7 | },
8 | "exclude": ["lib", "node_modules", "dist"],
9 | "include": [
10 | "__tests__",
11 | "src",
12 | "eslint.config.mjs",
13 | "jest.config.js",
14 | ]
15 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./tsconfig.base.json",
4 | "compilerOptions": {
5 | "module": "NodeNext",
6 | "moduleResolution": "NodeNext",
7 | "outDir": "./lib", /* Redirect output structure to the directory. */
8 | "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
9 | },
10 | "exclude": [
11 | "node_modules",
12 | "__tests__",
13 | "lib",
14 | "dist"
15 | ],
16 | "include": [
17 | "src",
18 | ]
19 | }
--------------------------------------------------------------------------------