├── .gitignore
├── .vscode
├── launch.json
└── settings.json
├── GeminiPluginDescription.png
├── README.md
├── ThumbnailPythonScriptDeck.png
├── com.nicoohagedorn.pythonscriptdeck.sdPlugin
├── imgs
│ ├── actions
│ │ ├── counter
│ │ │ ├── icon.png
│ │ │ ├── icon@2x.png
│ │ │ ├── key.png
│ │ │ └── key@2x.png
│ │ ├── fileCheck.png
│ │ ├── gemini_icons
│ │ │ ├── pyFileLoaded.jpg
│ │ │ ├── pyFileLoaded.png
│ │ │ ├── pyNofileFound.jpg
│ │ │ ├── pyNofileFound.png
│ │ │ ├── pyVirtEnvActive.jpg
│ │ │ └── pyVirtEnvActive.png
│ │ ├── pyFilecheck.png
│ │ ├── pyFilecheckFailed.png
│ │ ├── pyServiceIcon.png
│ │ ├── pyServiceIconFail.png
│ │ ├── pyServiceRunning.png
│ │ ├── pyServiceStopped.png
│ │ └── python_new
│ │ │ └── pyFile-check.jpg
│ └── plugin
│ │ ├── category-icon.png
│ │ ├── category-icon@2x.png
│ │ ├── marketplace.png
│ │ ├── marketplace@2x.png
│ │ ├── python.png
│ │ └── python_color.png
├── manifest.json
└── ui
│ ├── python-script.html
│ └── python-service.html
├── com.nicoohagedorn.pythonscriptdeck.streamDeckPlugin
├── package-lock.json
├── package.json
├── pyIcons.pptx
├── rollup.config.mjs
├── src
├── ScriptA.py
├── actions
│ ├── python-script.ts
│ └── python-service.ts
├── automation.py
├── false.png
├── plugin.ts
├── python-bg-service.ts
├── script.py
├── test.py
└── true.png
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Node.js
2 | node_modules/
3 |
4 | # Stream Deck files
5 | *.sdPlugin/bin
6 | *.sdPlugin/logs
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Attach to Plugin",
9 | "type": "node",
10 | "request": "attach",
11 | "processId": "${command:PickProcess}",
12 | "outFiles": [
13 | "${workspaceFolder}/bin/**/*.js"
14 | ],
15 | "resolveSourceMapLocations": [
16 | "${workspaceFolder}/**"
17 | ]
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | /* JSON schemas */
3 | "json.schemas": [
4 | {
5 | "fileMatch": [
6 | "**/manifest.json"
7 | ],
8 | "url": "https://schemas.elgato.com/streamdeck/plugins/manifest.json"
9 | },
10 | {
11 | "fileMatch": [
12 | "**/layouts/*.json"
13 | ],
14 | "url": "https://schemas.elgato.com/streamdeck/plugins/layout.json"
15 | }
16 | ]
17 | }
--------------------------------------------------------------------------------
/GeminiPluginDescription.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/GeminiPluginDescription.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | With this Plugin you can run python scripts from your Stream Deck.
2 |
3 | You can also change the appearance of the key based on the return value your Script is providing.
4 | At the moment this is limited to two values and an image according to the return value
5 |
--------------------------------------------------------------------------------
/ThumbnailPythonScriptDeck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/ThumbnailPythonScriptDeck.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/icon.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/icon@2x.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/key.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/key@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/counter/key@2x.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/fileCheck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/fileCheck.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyFileLoaded.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyFileLoaded.jpg
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyFileLoaded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyFileLoaded.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyNofileFound.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyNofileFound.jpg
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyNofileFound.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyNofileFound.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyVirtEnvActive.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyVirtEnvActive.jpg
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyVirtEnvActive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/gemini_icons/pyVirtEnvActive.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyFilecheck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyFilecheck.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyFilecheckFailed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyFilecheckFailed.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceIcon.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceIconFail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceIconFail.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceRunning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceRunning.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceStopped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/pyServiceStopped.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/python_new/pyFile-check.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/actions/python_new/pyFile-check.jpg
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/category-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/category-icon.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/category-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/category-icon@2x.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/marketplace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/marketplace.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/marketplace@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/marketplace@2x.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/python.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/python_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.sdPlugin/imgs/plugin/python_color.png
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "PythonScriptDeck",
3 | "Version": "0.5.0.2",
4 | "Author": "nicoohagedorn",
5 | "Actions": [
6 | {
7 | "Name": "Run Script",
8 | "UUID": "com.nicoohagedorn.pythonscriptdeck.script",
9 | "Icon": "imgs/plugin/python",
10 | "Tooltip": "execute a python script via a key press",
11 | "PropertyInspectorPath": "ui/python-script.html",
12 | "Controllers": [
13 | "Keypad"
14 | ],
15 | "States": [
16 | {
17 | "Image": "imgs/actions/gemini_icons/pyNoFileFound",
18 | "TitleAlignment": "bottom"
19 | }
20 | ]
21 | },
22 | {
23 | "Name": "Run Service",
24 | "UUID": "com.nicoohagedorn.pythonscriptdeck.service",
25 | "Icon": "imgs/plugin/python",
26 | "Tooltip": "execute a python script based on a set timer",
27 | "PropertyInspectorPath": "ui/python-service.html",
28 | "Controllers": [
29 | "Keypad"
30 | ],
31 | "States": [
32 | {
33 | "Name": "Running",
34 | "Image": "imgs/actions/pyServiceRunning",
35 | "TitleAlignment": "bottom"
36 | },
37 | {
38 | "Name": "Stopped",
39 | "Image": "imgs/actions/pyServiceStopped",
40 | "TitleAlignment": "bottom"
41 | }
42 | ]
43 | }
44 | ],
45 | "Category": "Python Script Deck",
46 | "CategoryIcon": "imgs/plugin/python",
47 | "CodePath": "bin/plugin.js",
48 | "Description": "This Plugin allows you to execute Python scripts and display the results on a StreamDeck Key",
49 | "Icon": "imgs/plugin/marketplace",
50 | "URL": "https://youtu.be/thXQx5Xv6x4",
51 | "SDKVersion": 2,
52 | "Software": {
53 | "MinimumVersion": "6.5"
54 | },
55 | "OS": [
56 | {
57 | "Platform": "mac",
58 | "MinimumVersion": "13.0"
59 | },
60 | {
61 | "Platform": "windows",
62 | "MinimumVersion": "10"
63 | }
64 | ],
65 | "Nodejs": {
66 | "Version": "20",
67 | "Debug": "enabled"
68 | },
69 | "UUID": "com.nicoohagedorn.pythonscriptdeck"
70 | }
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/ui/python-script.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Run Python Script
6 |
7 |
8 |
69 |
70 |
71 |
72 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | Example Python Script
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.sdPlugin/ui/python-service.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Run Python Service
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
30 |
31 |
32 |
37 |
38 |
39 |
40 |
41 |
42 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/com.nicoohagedorn.pythonscriptdeck.streamDeckPlugin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/com.nicoohagedorn.pythonscriptdeck.streamDeckPlugin
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pythonscriptdeck",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "@elgato/streamdeck": "^0.3.0",
9 | "re": "^0.1.4",
10 | "regex": "^6.0.1"
11 | },
12 | "devDependencies": {
13 | "@elgato/cli": "^0.3.2",
14 | "@rollup/plugin-commonjs": "^25.0.5",
15 | "@rollup/plugin-node-resolve": "^15.2.2",
16 | "@rollup/plugin-terser": "^0.4.4",
17 | "@rollup/plugin-typescript": "^11.1.5",
18 | "@tsconfig/node20": "^20.1.2",
19 | "@types/node": "20.8.10",
20 | "rollup": "^4.0.2",
21 | "tslib": "^2.6.2",
22 | "typescript": "^5.2.2"
23 | }
24 | },
25 | "node_modules/@elgato/cli": {
26 | "version": "0.3.2",
27 | "resolved": "https://registry.npmjs.org/@elgato/cli/-/cli-0.3.2.tgz",
28 | "integrity": "sha512-kU3aV8cQcVG2GAPqvalGmd9saFunJdzxI9iD/AQ2M6G+RF5TzUWugbd9j1DBYQUKDhASdm0jaeck6y4+b9/HwA==",
29 | "dev": true,
30 | "license": "MIT",
31 | "dependencies": {
32 | "@elgato/schemas": "^0.3.5",
33 | "@humanwhocodes/momoa": "^3.0.0",
34 | "@zip.js/zip.js": "^2.7.34",
35 | "ajv": "^8.12.0",
36 | "chalk": "^5.3.0",
37 | "commander": "^11.0.0",
38 | "ejs": "^3.1.10",
39 | "find-process": "^1.4.7",
40 | "ignore": "^5.3.1",
41 | "inquirer": "^9.2.11",
42 | "is-interactive": "^2.0.0",
43 | "lodash": "^4.17.21",
44 | "log-symbols": "^5.1.0",
45 | "rage-edit": "^1.2.0",
46 | "semver": "^7.6.0",
47 | "tar": "^7.0.1"
48 | },
49 | "bin": {
50 | "sd": "bin/streamdeck.mjs",
51 | "streamdeck": "bin/streamdeck.mjs"
52 | },
53 | "engines": {
54 | "node": "^20.1.0"
55 | }
56 | },
57 | "node_modules/@elgato/schemas": {
58 | "version": "0.3.9",
59 | "resolved": "https://registry.npmjs.org/@elgato/schemas/-/schemas-0.3.9.tgz",
60 | "integrity": "sha512-ewenHAUFXC2+fLc2TrLHeDqMb5hTXC0ZPrZNm7jIaFEObYGyHMLR8hk7VOLM71Ua+x7SD5mBVpPyM49Uivf91g==",
61 | "dev": true,
62 | "license": "MIT"
63 | },
64 | "node_modules/@elgato/streamdeck": {
65 | "version": "0.3.0",
66 | "resolved": "https://registry.npmjs.org/@elgato/streamdeck/-/streamdeck-0.3.0.tgz",
67 | "integrity": "sha512-vdcFahvcpsffIu3b+vKtJshnWTUVXzURujmb/A5b00PKuXzgeuoinO7wcGgjsi2DBq9ciqV/0mKFU/FHiWXKtQ==",
68 | "license": "MIT",
69 | "dependencies": {
70 | "ws": "^8.14.2"
71 | },
72 | "engines": {
73 | "node": "^20.5.1"
74 | }
75 | },
76 | "node_modules/@humanwhocodes/momoa": {
77 | "version": "3.3.6",
78 | "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-3.3.6.tgz",
79 | "integrity": "sha512-7/sAGm3YsT6xG1bDkTSHvOpQB+cR4I2InfMVw110nuOCrxZvOQHgRqBMxSoTeUQrk9RS4OU9Aw2MBMZVJgLZMg==",
80 | "dev": true,
81 | "license": "Apache-2.0",
82 | "engines": {
83 | "node": ">=18"
84 | }
85 | },
86 | "node_modules/@inquirer/figures": {
87 | "version": "1.0.10",
88 | "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz",
89 | "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==",
90 | "dev": true,
91 | "license": "MIT",
92 | "engines": {
93 | "node": ">=18"
94 | }
95 | },
96 | "node_modules/@isaacs/cliui": {
97 | "version": "8.0.2",
98 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
99 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
100 | "dev": true,
101 | "license": "ISC",
102 | "dependencies": {
103 | "string-width": "^5.1.2",
104 | "string-width-cjs": "npm:string-width@^4.2.0",
105 | "strip-ansi": "^7.0.1",
106 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
107 | "wrap-ansi": "^8.1.0",
108 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
109 | },
110 | "engines": {
111 | "node": ">=12"
112 | }
113 | },
114 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
115 | "version": "6.1.0",
116 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
117 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
118 | "dev": true,
119 | "license": "MIT",
120 | "engines": {
121 | "node": ">=12"
122 | },
123 | "funding": {
124 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
125 | }
126 | },
127 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
128 | "version": "6.2.1",
129 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
130 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
131 | "dev": true,
132 | "license": "MIT",
133 | "engines": {
134 | "node": ">=12"
135 | },
136 | "funding": {
137 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
138 | }
139 | },
140 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
141 | "version": "9.2.2",
142 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
143 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
144 | "dev": true,
145 | "license": "MIT"
146 | },
147 | "node_modules/@isaacs/cliui/node_modules/string-width": {
148 | "version": "5.1.2",
149 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
150 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
151 | "dev": true,
152 | "license": "MIT",
153 | "dependencies": {
154 | "eastasianwidth": "^0.2.0",
155 | "emoji-regex": "^9.2.2",
156 | "strip-ansi": "^7.0.1"
157 | },
158 | "engines": {
159 | "node": ">=12"
160 | },
161 | "funding": {
162 | "url": "https://github.com/sponsors/sindresorhus"
163 | }
164 | },
165 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
166 | "version": "7.1.0",
167 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
168 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
169 | "dev": true,
170 | "license": "MIT",
171 | "dependencies": {
172 | "ansi-regex": "^6.0.1"
173 | },
174 | "engines": {
175 | "node": ">=12"
176 | },
177 | "funding": {
178 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
179 | }
180 | },
181 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
182 | "version": "8.1.0",
183 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
184 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
185 | "dev": true,
186 | "license": "MIT",
187 | "dependencies": {
188 | "ansi-styles": "^6.1.0",
189 | "string-width": "^5.0.1",
190 | "strip-ansi": "^7.0.1"
191 | },
192 | "engines": {
193 | "node": ">=12"
194 | },
195 | "funding": {
196 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
197 | }
198 | },
199 | "node_modules/@isaacs/fs-minipass": {
200 | "version": "4.0.1",
201 | "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
202 | "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
203 | "dev": true,
204 | "license": "ISC",
205 | "dependencies": {
206 | "minipass": "^7.0.4"
207 | },
208 | "engines": {
209 | "node": ">=18.0.0"
210 | }
211 | },
212 | "node_modules/@jridgewell/gen-mapping": {
213 | "version": "0.3.8",
214 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
215 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
216 | "dev": true,
217 | "license": "MIT",
218 | "dependencies": {
219 | "@jridgewell/set-array": "^1.2.1",
220 | "@jridgewell/sourcemap-codec": "^1.4.10",
221 | "@jridgewell/trace-mapping": "^0.3.24"
222 | },
223 | "engines": {
224 | "node": ">=6.0.0"
225 | }
226 | },
227 | "node_modules/@jridgewell/resolve-uri": {
228 | "version": "3.1.2",
229 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
230 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
231 | "dev": true,
232 | "license": "MIT",
233 | "engines": {
234 | "node": ">=6.0.0"
235 | }
236 | },
237 | "node_modules/@jridgewell/set-array": {
238 | "version": "1.2.1",
239 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
240 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
241 | "dev": true,
242 | "license": "MIT",
243 | "engines": {
244 | "node": ">=6.0.0"
245 | }
246 | },
247 | "node_modules/@jridgewell/source-map": {
248 | "version": "0.3.6",
249 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
250 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
251 | "dev": true,
252 | "license": "MIT",
253 | "dependencies": {
254 | "@jridgewell/gen-mapping": "^0.3.5",
255 | "@jridgewell/trace-mapping": "^0.3.25"
256 | }
257 | },
258 | "node_modules/@jridgewell/sourcemap-codec": {
259 | "version": "1.5.0",
260 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
261 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
262 | "dev": true,
263 | "license": "MIT"
264 | },
265 | "node_modules/@jridgewell/trace-mapping": {
266 | "version": "0.3.25",
267 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
268 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
269 | "dev": true,
270 | "license": "MIT",
271 | "dependencies": {
272 | "@jridgewell/resolve-uri": "^3.1.0",
273 | "@jridgewell/sourcemap-codec": "^1.4.14"
274 | }
275 | },
276 | "node_modules/@pkgjs/parseargs": {
277 | "version": "0.11.0",
278 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
279 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
280 | "dev": true,
281 | "license": "MIT",
282 | "optional": true,
283 | "engines": {
284 | "node": ">=14"
285 | }
286 | },
287 | "node_modules/@rollup/plugin-commonjs": {
288 | "version": "25.0.8",
289 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
290 | "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
291 | "dev": true,
292 | "license": "MIT",
293 | "dependencies": {
294 | "@rollup/pluginutils": "^5.0.1",
295 | "commondir": "^1.0.1",
296 | "estree-walker": "^2.0.2",
297 | "glob": "^8.0.3",
298 | "is-reference": "1.2.1",
299 | "magic-string": "^0.30.3"
300 | },
301 | "engines": {
302 | "node": ">=14.0.0"
303 | },
304 | "peerDependencies": {
305 | "rollup": "^2.68.0||^3.0.0||^4.0.0"
306 | },
307 | "peerDependenciesMeta": {
308 | "rollup": {
309 | "optional": true
310 | }
311 | }
312 | },
313 | "node_modules/@rollup/plugin-node-resolve": {
314 | "version": "15.3.1",
315 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
316 | "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
317 | "dev": true,
318 | "license": "MIT",
319 | "dependencies": {
320 | "@rollup/pluginutils": "^5.0.1",
321 | "@types/resolve": "1.20.2",
322 | "deepmerge": "^4.2.2",
323 | "is-module": "^1.0.0",
324 | "resolve": "^1.22.1"
325 | },
326 | "engines": {
327 | "node": ">=14.0.0"
328 | },
329 | "peerDependencies": {
330 | "rollup": "^2.78.0||^3.0.0||^4.0.0"
331 | },
332 | "peerDependenciesMeta": {
333 | "rollup": {
334 | "optional": true
335 | }
336 | }
337 | },
338 | "node_modules/@rollup/plugin-terser": {
339 | "version": "0.4.4",
340 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
341 | "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
342 | "dev": true,
343 | "license": "MIT",
344 | "dependencies": {
345 | "serialize-javascript": "^6.0.1",
346 | "smob": "^1.0.0",
347 | "terser": "^5.17.4"
348 | },
349 | "engines": {
350 | "node": ">=14.0.0"
351 | },
352 | "peerDependencies": {
353 | "rollup": "^2.0.0||^3.0.0||^4.0.0"
354 | },
355 | "peerDependenciesMeta": {
356 | "rollup": {
357 | "optional": true
358 | }
359 | }
360 | },
361 | "node_modules/@rollup/plugin-typescript": {
362 | "version": "11.1.6",
363 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz",
364 | "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==",
365 | "dev": true,
366 | "license": "MIT",
367 | "dependencies": {
368 | "@rollup/pluginutils": "^5.1.0",
369 | "resolve": "^1.22.1"
370 | },
371 | "engines": {
372 | "node": ">=14.0.0"
373 | },
374 | "peerDependencies": {
375 | "rollup": "^2.14.0||^3.0.0||^4.0.0",
376 | "tslib": "*",
377 | "typescript": ">=3.7.0"
378 | },
379 | "peerDependenciesMeta": {
380 | "rollup": {
381 | "optional": true
382 | },
383 | "tslib": {
384 | "optional": true
385 | }
386 | }
387 | },
388 | "node_modules/@rollup/pluginutils": {
389 | "version": "5.1.4",
390 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
391 | "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
392 | "dev": true,
393 | "license": "MIT",
394 | "dependencies": {
395 | "@types/estree": "^1.0.0",
396 | "estree-walker": "^2.0.2",
397 | "picomatch": "^4.0.2"
398 | },
399 | "engines": {
400 | "node": ">=14.0.0"
401 | },
402 | "peerDependencies": {
403 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
404 | },
405 | "peerDependenciesMeta": {
406 | "rollup": {
407 | "optional": true
408 | }
409 | }
410 | },
411 | "node_modules/@rollup/rollup-android-arm-eabi": {
412 | "version": "4.34.6",
413 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.6.tgz",
414 | "integrity": "sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==",
415 | "cpu": [
416 | "arm"
417 | ],
418 | "dev": true,
419 | "license": "MIT",
420 | "optional": true,
421 | "os": [
422 | "android"
423 | ]
424 | },
425 | "node_modules/@rollup/rollup-android-arm64": {
426 | "version": "4.34.6",
427 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.6.tgz",
428 | "integrity": "sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==",
429 | "cpu": [
430 | "arm64"
431 | ],
432 | "dev": true,
433 | "license": "MIT",
434 | "optional": true,
435 | "os": [
436 | "android"
437 | ]
438 | },
439 | "node_modules/@rollup/rollup-darwin-arm64": {
440 | "version": "4.34.6",
441 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.6.tgz",
442 | "integrity": "sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==",
443 | "cpu": [
444 | "arm64"
445 | ],
446 | "dev": true,
447 | "license": "MIT",
448 | "optional": true,
449 | "os": [
450 | "darwin"
451 | ]
452 | },
453 | "node_modules/@rollup/rollup-darwin-x64": {
454 | "version": "4.34.6",
455 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.6.tgz",
456 | "integrity": "sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==",
457 | "cpu": [
458 | "x64"
459 | ],
460 | "dev": true,
461 | "license": "MIT",
462 | "optional": true,
463 | "os": [
464 | "darwin"
465 | ]
466 | },
467 | "node_modules/@rollup/rollup-freebsd-arm64": {
468 | "version": "4.34.6",
469 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.6.tgz",
470 | "integrity": "sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==",
471 | "cpu": [
472 | "arm64"
473 | ],
474 | "dev": true,
475 | "license": "MIT",
476 | "optional": true,
477 | "os": [
478 | "freebsd"
479 | ]
480 | },
481 | "node_modules/@rollup/rollup-freebsd-x64": {
482 | "version": "4.34.6",
483 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.6.tgz",
484 | "integrity": "sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==",
485 | "cpu": [
486 | "x64"
487 | ],
488 | "dev": true,
489 | "license": "MIT",
490 | "optional": true,
491 | "os": [
492 | "freebsd"
493 | ]
494 | },
495 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
496 | "version": "4.34.6",
497 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.6.tgz",
498 | "integrity": "sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==",
499 | "cpu": [
500 | "arm"
501 | ],
502 | "dev": true,
503 | "license": "MIT",
504 | "optional": true,
505 | "os": [
506 | "linux"
507 | ]
508 | },
509 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
510 | "version": "4.34.6",
511 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.6.tgz",
512 | "integrity": "sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==",
513 | "cpu": [
514 | "arm"
515 | ],
516 | "dev": true,
517 | "license": "MIT",
518 | "optional": true,
519 | "os": [
520 | "linux"
521 | ]
522 | },
523 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
524 | "version": "4.34.6",
525 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.6.tgz",
526 | "integrity": "sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==",
527 | "cpu": [
528 | "arm64"
529 | ],
530 | "dev": true,
531 | "license": "MIT",
532 | "optional": true,
533 | "os": [
534 | "linux"
535 | ]
536 | },
537 | "node_modules/@rollup/rollup-linux-arm64-musl": {
538 | "version": "4.34.6",
539 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.6.tgz",
540 | "integrity": "sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==",
541 | "cpu": [
542 | "arm64"
543 | ],
544 | "dev": true,
545 | "license": "MIT",
546 | "optional": true,
547 | "os": [
548 | "linux"
549 | ]
550 | },
551 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
552 | "version": "4.34.6",
553 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.6.tgz",
554 | "integrity": "sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==",
555 | "cpu": [
556 | "loong64"
557 | ],
558 | "dev": true,
559 | "license": "MIT",
560 | "optional": true,
561 | "os": [
562 | "linux"
563 | ]
564 | },
565 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
566 | "version": "4.34.6",
567 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.6.tgz",
568 | "integrity": "sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==",
569 | "cpu": [
570 | "ppc64"
571 | ],
572 | "dev": true,
573 | "license": "MIT",
574 | "optional": true,
575 | "os": [
576 | "linux"
577 | ]
578 | },
579 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
580 | "version": "4.34.6",
581 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.6.tgz",
582 | "integrity": "sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==",
583 | "cpu": [
584 | "riscv64"
585 | ],
586 | "dev": true,
587 | "license": "MIT",
588 | "optional": true,
589 | "os": [
590 | "linux"
591 | ]
592 | },
593 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
594 | "version": "4.34.6",
595 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.6.tgz",
596 | "integrity": "sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==",
597 | "cpu": [
598 | "s390x"
599 | ],
600 | "dev": true,
601 | "license": "MIT",
602 | "optional": true,
603 | "os": [
604 | "linux"
605 | ]
606 | },
607 | "node_modules/@rollup/rollup-linux-x64-gnu": {
608 | "version": "4.34.6",
609 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.6.tgz",
610 | "integrity": "sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==",
611 | "cpu": [
612 | "x64"
613 | ],
614 | "dev": true,
615 | "license": "MIT",
616 | "optional": true,
617 | "os": [
618 | "linux"
619 | ]
620 | },
621 | "node_modules/@rollup/rollup-linux-x64-musl": {
622 | "version": "4.34.6",
623 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.6.tgz",
624 | "integrity": "sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==",
625 | "cpu": [
626 | "x64"
627 | ],
628 | "dev": true,
629 | "license": "MIT",
630 | "optional": true,
631 | "os": [
632 | "linux"
633 | ]
634 | },
635 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
636 | "version": "4.34.6",
637 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.6.tgz",
638 | "integrity": "sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==",
639 | "cpu": [
640 | "arm64"
641 | ],
642 | "dev": true,
643 | "license": "MIT",
644 | "optional": true,
645 | "os": [
646 | "win32"
647 | ]
648 | },
649 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
650 | "version": "4.34.6",
651 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.6.tgz",
652 | "integrity": "sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==",
653 | "cpu": [
654 | "ia32"
655 | ],
656 | "dev": true,
657 | "license": "MIT",
658 | "optional": true,
659 | "os": [
660 | "win32"
661 | ]
662 | },
663 | "node_modules/@rollup/rollup-win32-x64-msvc": {
664 | "version": "4.34.6",
665 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.6.tgz",
666 | "integrity": "sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==",
667 | "cpu": [
668 | "x64"
669 | ],
670 | "dev": true,
671 | "license": "MIT",
672 | "optional": true,
673 | "os": [
674 | "win32"
675 | ]
676 | },
677 | "node_modules/@tsconfig/node20": {
678 | "version": "20.1.4",
679 | "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz",
680 | "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==",
681 | "dev": true,
682 | "license": "MIT"
683 | },
684 | "node_modules/@types/estree": {
685 | "version": "1.0.6",
686 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
687 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
688 | "dev": true,
689 | "license": "MIT"
690 | },
691 | "node_modules/@types/node": {
692 | "version": "20.8.10",
693 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz",
694 | "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==",
695 | "dev": true,
696 | "license": "MIT",
697 | "dependencies": {
698 | "undici-types": "~5.26.4"
699 | }
700 | },
701 | "node_modules/@types/resolve": {
702 | "version": "1.20.2",
703 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
704 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
705 | "dev": true,
706 | "license": "MIT"
707 | },
708 | "node_modules/@zip.js/zip.js": {
709 | "version": "2.7.57",
710 | "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.57.tgz",
711 | "integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==",
712 | "dev": true,
713 | "license": "BSD-3-Clause",
714 | "engines": {
715 | "bun": ">=0.7.0",
716 | "deno": ">=1.0.0",
717 | "node": ">=16.5.0"
718 | }
719 | },
720 | "node_modules/acorn": {
721 | "version": "8.14.0",
722 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
723 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
724 | "dev": true,
725 | "license": "MIT",
726 | "bin": {
727 | "acorn": "bin/acorn"
728 | },
729 | "engines": {
730 | "node": ">=0.4.0"
731 | }
732 | },
733 | "node_modules/ajv": {
734 | "version": "8.17.1",
735 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
736 | "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
737 | "dev": true,
738 | "license": "MIT",
739 | "dependencies": {
740 | "fast-deep-equal": "^3.1.3",
741 | "fast-uri": "^3.0.1",
742 | "json-schema-traverse": "^1.0.0",
743 | "require-from-string": "^2.0.2"
744 | },
745 | "funding": {
746 | "type": "github",
747 | "url": "https://github.com/sponsors/epoberezkin"
748 | }
749 | },
750 | "node_modules/ansi-escapes": {
751 | "version": "4.3.2",
752 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
753 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
754 | "dev": true,
755 | "license": "MIT",
756 | "dependencies": {
757 | "type-fest": "^0.21.3"
758 | },
759 | "engines": {
760 | "node": ">=8"
761 | },
762 | "funding": {
763 | "url": "https://github.com/sponsors/sindresorhus"
764 | }
765 | },
766 | "node_modules/ansi-regex": {
767 | "version": "5.0.1",
768 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
769 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
770 | "dev": true,
771 | "license": "MIT",
772 | "engines": {
773 | "node": ">=8"
774 | }
775 | },
776 | "node_modules/ansi-styles": {
777 | "version": "4.3.0",
778 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
779 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
780 | "dev": true,
781 | "license": "MIT",
782 | "dependencies": {
783 | "color-convert": "^2.0.1"
784 | },
785 | "engines": {
786 | "node": ">=8"
787 | },
788 | "funding": {
789 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
790 | }
791 | },
792 | "node_modules/async": {
793 | "version": "3.2.6",
794 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
795 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
796 | "dev": true,
797 | "license": "MIT"
798 | },
799 | "node_modules/balanced-match": {
800 | "version": "1.0.2",
801 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
802 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
803 | "dev": true,
804 | "license": "MIT"
805 | },
806 | "node_modules/base64-js": {
807 | "version": "1.5.1",
808 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
809 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
810 | "dev": true,
811 | "funding": [
812 | {
813 | "type": "github",
814 | "url": "https://github.com/sponsors/feross"
815 | },
816 | {
817 | "type": "patreon",
818 | "url": "https://www.patreon.com/feross"
819 | },
820 | {
821 | "type": "consulting",
822 | "url": "https://feross.org/support"
823 | }
824 | ],
825 | "license": "MIT"
826 | },
827 | "node_modules/bl": {
828 | "version": "4.1.0",
829 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
830 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
831 | "dev": true,
832 | "license": "MIT",
833 | "dependencies": {
834 | "buffer": "^5.5.0",
835 | "inherits": "^2.0.4",
836 | "readable-stream": "^3.4.0"
837 | }
838 | },
839 | "node_modules/brace-expansion": {
840 | "version": "2.0.1",
841 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
842 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
843 | "dev": true,
844 | "license": "MIT",
845 | "dependencies": {
846 | "balanced-match": "^1.0.0"
847 | }
848 | },
849 | "node_modules/buffer": {
850 | "version": "5.7.1",
851 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
852 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
853 | "dev": true,
854 | "funding": [
855 | {
856 | "type": "github",
857 | "url": "https://github.com/sponsors/feross"
858 | },
859 | {
860 | "type": "patreon",
861 | "url": "https://www.patreon.com/feross"
862 | },
863 | {
864 | "type": "consulting",
865 | "url": "https://feross.org/support"
866 | }
867 | ],
868 | "license": "MIT",
869 | "dependencies": {
870 | "base64-js": "^1.3.1",
871 | "ieee754": "^1.1.13"
872 | }
873 | },
874 | "node_modules/buffer-from": {
875 | "version": "1.1.2",
876 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
877 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
878 | "dev": true,
879 | "license": "MIT"
880 | },
881 | "node_modules/chalk": {
882 | "version": "5.4.1",
883 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
884 | "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
885 | "dev": true,
886 | "license": "MIT",
887 | "engines": {
888 | "node": "^12.17.0 || ^14.13 || >=16.0.0"
889 | },
890 | "funding": {
891 | "url": "https://github.com/chalk/chalk?sponsor=1"
892 | }
893 | },
894 | "node_modules/chardet": {
895 | "version": "0.7.0",
896 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
897 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
898 | "dev": true,
899 | "license": "MIT"
900 | },
901 | "node_modules/chownr": {
902 | "version": "3.0.0",
903 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
904 | "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
905 | "dev": true,
906 | "license": "BlueOak-1.0.0",
907 | "engines": {
908 | "node": ">=18"
909 | }
910 | },
911 | "node_modules/cli-cursor": {
912 | "version": "3.1.0",
913 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
914 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
915 | "dev": true,
916 | "license": "MIT",
917 | "dependencies": {
918 | "restore-cursor": "^3.1.0"
919 | },
920 | "engines": {
921 | "node": ">=8"
922 | }
923 | },
924 | "node_modules/cli-spinners": {
925 | "version": "2.9.2",
926 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
927 | "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
928 | "dev": true,
929 | "license": "MIT",
930 | "engines": {
931 | "node": ">=6"
932 | },
933 | "funding": {
934 | "url": "https://github.com/sponsors/sindresorhus"
935 | }
936 | },
937 | "node_modules/cli-width": {
938 | "version": "4.1.0",
939 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
940 | "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
941 | "dev": true,
942 | "license": "ISC",
943 | "engines": {
944 | "node": ">= 12"
945 | }
946 | },
947 | "node_modules/clone": {
948 | "version": "1.0.4",
949 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
950 | "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
951 | "dev": true,
952 | "license": "MIT",
953 | "engines": {
954 | "node": ">=0.8"
955 | }
956 | },
957 | "node_modules/color-convert": {
958 | "version": "2.0.1",
959 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
960 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
961 | "dev": true,
962 | "license": "MIT",
963 | "dependencies": {
964 | "color-name": "~1.1.4"
965 | },
966 | "engines": {
967 | "node": ">=7.0.0"
968 | }
969 | },
970 | "node_modules/color-name": {
971 | "version": "1.1.4",
972 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
973 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
974 | "dev": true,
975 | "license": "MIT"
976 | },
977 | "node_modules/commander": {
978 | "version": "11.1.0",
979 | "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
980 | "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
981 | "dev": true,
982 | "license": "MIT",
983 | "engines": {
984 | "node": ">=16"
985 | }
986 | },
987 | "node_modules/commondir": {
988 | "version": "1.0.1",
989 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
990 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
991 | "dev": true,
992 | "license": "MIT"
993 | },
994 | "node_modules/concat-map": {
995 | "version": "0.0.1",
996 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
997 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
998 | "dev": true,
999 | "license": "MIT"
1000 | },
1001 | "node_modules/cross-spawn": {
1002 | "version": "7.0.6",
1003 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1004 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1005 | "dev": true,
1006 | "license": "MIT",
1007 | "dependencies": {
1008 | "path-key": "^3.1.0",
1009 | "shebang-command": "^2.0.0",
1010 | "which": "^2.0.1"
1011 | },
1012 | "engines": {
1013 | "node": ">= 8"
1014 | }
1015 | },
1016 | "node_modules/deepmerge": {
1017 | "version": "4.3.1",
1018 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
1019 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
1020 | "dev": true,
1021 | "license": "MIT",
1022 | "engines": {
1023 | "node": ">=0.10.0"
1024 | }
1025 | },
1026 | "node_modules/defaults": {
1027 | "version": "1.0.4",
1028 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
1029 | "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
1030 | "dev": true,
1031 | "license": "MIT",
1032 | "dependencies": {
1033 | "clone": "^1.0.2"
1034 | },
1035 | "funding": {
1036 | "url": "https://github.com/sponsors/sindresorhus"
1037 | }
1038 | },
1039 | "node_modules/eastasianwidth": {
1040 | "version": "0.2.0",
1041 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1042 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1043 | "dev": true,
1044 | "license": "MIT"
1045 | },
1046 | "node_modules/ejs": {
1047 | "version": "3.1.10",
1048 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
1049 | "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
1050 | "dev": true,
1051 | "license": "Apache-2.0",
1052 | "dependencies": {
1053 | "jake": "^10.8.5"
1054 | },
1055 | "bin": {
1056 | "ejs": "bin/cli.js"
1057 | },
1058 | "engines": {
1059 | "node": ">=0.10.0"
1060 | }
1061 | },
1062 | "node_modules/emoji-regex": {
1063 | "version": "8.0.0",
1064 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1065 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1066 | "dev": true,
1067 | "license": "MIT"
1068 | },
1069 | "node_modules/estree-walker": {
1070 | "version": "2.0.2",
1071 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1072 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1073 | "dev": true,
1074 | "license": "MIT"
1075 | },
1076 | "node_modules/external-editor": {
1077 | "version": "3.1.0",
1078 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
1079 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
1080 | "dev": true,
1081 | "license": "MIT",
1082 | "dependencies": {
1083 | "chardet": "^0.7.0",
1084 | "iconv-lite": "^0.4.24",
1085 | "tmp": "^0.0.33"
1086 | },
1087 | "engines": {
1088 | "node": ">=4"
1089 | }
1090 | },
1091 | "node_modules/fast-deep-equal": {
1092 | "version": "3.1.3",
1093 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1094 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1095 | "dev": true,
1096 | "license": "MIT"
1097 | },
1098 | "node_modules/fast-uri": {
1099 | "version": "3.0.6",
1100 | "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
1101 | "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
1102 | "dev": true,
1103 | "funding": [
1104 | {
1105 | "type": "github",
1106 | "url": "https://github.com/sponsors/fastify"
1107 | },
1108 | {
1109 | "type": "opencollective",
1110 | "url": "https://opencollective.com/fastify"
1111 | }
1112 | ],
1113 | "license": "BSD-3-Clause"
1114 | },
1115 | "node_modules/filelist": {
1116 | "version": "1.0.4",
1117 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
1118 | "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
1119 | "dev": true,
1120 | "license": "Apache-2.0",
1121 | "dependencies": {
1122 | "minimatch": "^5.0.1"
1123 | }
1124 | },
1125 | "node_modules/find-process": {
1126 | "version": "1.4.10",
1127 | "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.10.tgz",
1128 | "integrity": "sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg==",
1129 | "dev": true,
1130 | "license": "MIT",
1131 | "dependencies": {
1132 | "chalk": "~4.1.2",
1133 | "commander": "^12.1.0",
1134 | "loglevel": "^1.9.2"
1135 | },
1136 | "bin": {
1137 | "find-process": "bin/find-process.js"
1138 | }
1139 | },
1140 | "node_modules/find-process/node_modules/chalk": {
1141 | "version": "4.1.2",
1142 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1143 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1144 | "dev": true,
1145 | "license": "MIT",
1146 | "dependencies": {
1147 | "ansi-styles": "^4.1.0",
1148 | "supports-color": "^7.1.0"
1149 | },
1150 | "engines": {
1151 | "node": ">=10"
1152 | },
1153 | "funding": {
1154 | "url": "https://github.com/chalk/chalk?sponsor=1"
1155 | }
1156 | },
1157 | "node_modules/find-process/node_modules/commander": {
1158 | "version": "12.1.0",
1159 | "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
1160 | "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
1161 | "dev": true,
1162 | "license": "MIT",
1163 | "engines": {
1164 | "node": ">=18"
1165 | }
1166 | },
1167 | "node_modules/foreground-child": {
1168 | "version": "3.3.0",
1169 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1170 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1171 | "dev": true,
1172 | "license": "ISC",
1173 | "dependencies": {
1174 | "cross-spawn": "^7.0.0",
1175 | "signal-exit": "^4.0.1"
1176 | },
1177 | "engines": {
1178 | "node": ">=14"
1179 | },
1180 | "funding": {
1181 | "url": "https://github.com/sponsors/isaacs"
1182 | }
1183 | },
1184 | "node_modules/foreground-child/node_modules/signal-exit": {
1185 | "version": "4.1.0",
1186 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1187 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1188 | "dev": true,
1189 | "license": "ISC",
1190 | "engines": {
1191 | "node": ">=14"
1192 | },
1193 | "funding": {
1194 | "url": "https://github.com/sponsors/isaacs"
1195 | }
1196 | },
1197 | "node_modules/fs.realpath": {
1198 | "version": "1.0.0",
1199 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1200 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1201 | "dev": true,
1202 | "license": "ISC"
1203 | },
1204 | "node_modules/fsevents": {
1205 | "version": "2.3.3",
1206 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1207 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1208 | "dev": true,
1209 | "hasInstallScript": true,
1210 | "license": "MIT",
1211 | "optional": true,
1212 | "os": [
1213 | "darwin"
1214 | ],
1215 | "engines": {
1216 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1217 | }
1218 | },
1219 | "node_modules/function-bind": {
1220 | "version": "1.1.2",
1221 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1222 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1223 | "dev": true,
1224 | "license": "MIT",
1225 | "funding": {
1226 | "url": "https://github.com/sponsors/ljharb"
1227 | }
1228 | },
1229 | "node_modules/glob": {
1230 | "version": "8.1.0",
1231 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
1232 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
1233 | "deprecated": "Glob versions prior to v9 are no longer supported",
1234 | "dev": true,
1235 | "license": "ISC",
1236 | "dependencies": {
1237 | "fs.realpath": "^1.0.0",
1238 | "inflight": "^1.0.4",
1239 | "inherits": "2",
1240 | "minimatch": "^5.0.1",
1241 | "once": "^1.3.0"
1242 | },
1243 | "engines": {
1244 | "node": ">=12"
1245 | },
1246 | "funding": {
1247 | "url": "https://github.com/sponsors/isaacs"
1248 | }
1249 | },
1250 | "node_modules/has-flag": {
1251 | "version": "4.0.0",
1252 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1253 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1254 | "dev": true,
1255 | "license": "MIT",
1256 | "engines": {
1257 | "node": ">=8"
1258 | }
1259 | },
1260 | "node_modules/hasown": {
1261 | "version": "2.0.2",
1262 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1263 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1264 | "dev": true,
1265 | "license": "MIT",
1266 | "dependencies": {
1267 | "function-bind": "^1.1.2"
1268 | },
1269 | "engines": {
1270 | "node": ">= 0.4"
1271 | }
1272 | },
1273 | "node_modules/iconv-lite": {
1274 | "version": "0.4.24",
1275 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1276 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1277 | "dev": true,
1278 | "license": "MIT",
1279 | "dependencies": {
1280 | "safer-buffer": ">= 2.1.2 < 3"
1281 | },
1282 | "engines": {
1283 | "node": ">=0.10.0"
1284 | }
1285 | },
1286 | "node_modules/ieee754": {
1287 | "version": "1.2.1",
1288 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1289 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
1290 | "dev": true,
1291 | "funding": [
1292 | {
1293 | "type": "github",
1294 | "url": "https://github.com/sponsors/feross"
1295 | },
1296 | {
1297 | "type": "patreon",
1298 | "url": "https://www.patreon.com/feross"
1299 | },
1300 | {
1301 | "type": "consulting",
1302 | "url": "https://feross.org/support"
1303 | }
1304 | ],
1305 | "license": "BSD-3-Clause"
1306 | },
1307 | "node_modules/ignore": {
1308 | "version": "5.3.2",
1309 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
1310 | "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
1311 | "dev": true,
1312 | "license": "MIT",
1313 | "engines": {
1314 | "node": ">= 4"
1315 | }
1316 | },
1317 | "node_modules/inflight": {
1318 | "version": "1.0.6",
1319 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1320 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1321 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
1322 | "dev": true,
1323 | "license": "ISC",
1324 | "dependencies": {
1325 | "once": "^1.3.0",
1326 | "wrappy": "1"
1327 | }
1328 | },
1329 | "node_modules/inherits": {
1330 | "version": "2.0.4",
1331 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1332 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1333 | "dev": true,
1334 | "license": "ISC"
1335 | },
1336 | "node_modules/inquirer": {
1337 | "version": "9.3.7",
1338 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.7.tgz",
1339 | "integrity": "sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w==",
1340 | "dev": true,
1341 | "license": "MIT",
1342 | "dependencies": {
1343 | "@inquirer/figures": "^1.0.3",
1344 | "ansi-escapes": "^4.3.2",
1345 | "cli-width": "^4.1.0",
1346 | "external-editor": "^3.1.0",
1347 | "mute-stream": "1.0.0",
1348 | "ora": "^5.4.1",
1349 | "run-async": "^3.0.0",
1350 | "rxjs": "^7.8.1",
1351 | "string-width": "^4.2.3",
1352 | "strip-ansi": "^6.0.1",
1353 | "wrap-ansi": "^6.2.0",
1354 | "yoctocolors-cjs": "^2.1.2"
1355 | },
1356 | "engines": {
1357 | "node": ">=18"
1358 | }
1359 | },
1360 | "node_modules/is-core-module": {
1361 | "version": "2.16.1",
1362 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
1363 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
1364 | "dev": true,
1365 | "license": "MIT",
1366 | "dependencies": {
1367 | "hasown": "^2.0.2"
1368 | },
1369 | "engines": {
1370 | "node": ">= 0.4"
1371 | },
1372 | "funding": {
1373 | "url": "https://github.com/sponsors/ljharb"
1374 | }
1375 | },
1376 | "node_modules/is-fullwidth-code-point": {
1377 | "version": "3.0.0",
1378 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1379 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1380 | "dev": true,
1381 | "license": "MIT",
1382 | "engines": {
1383 | "node": ">=8"
1384 | }
1385 | },
1386 | "node_modules/is-interactive": {
1387 | "version": "2.0.0",
1388 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
1389 | "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
1390 | "dev": true,
1391 | "license": "MIT",
1392 | "engines": {
1393 | "node": ">=12"
1394 | },
1395 | "funding": {
1396 | "url": "https://github.com/sponsors/sindresorhus"
1397 | }
1398 | },
1399 | "node_modules/is-module": {
1400 | "version": "1.0.0",
1401 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1402 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
1403 | "dev": true,
1404 | "license": "MIT"
1405 | },
1406 | "node_modules/is-reference": {
1407 | "version": "1.2.1",
1408 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
1409 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
1410 | "dev": true,
1411 | "license": "MIT",
1412 | "dependencies": {
1413 | "@types/estree": "*"
1414 | }
1415 | },
1416 | "node_modules/is-unicode-supported": {
1417 | "version": "1.3.0",
1418 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
1419 | "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
1420 | "dev": true,
1421 | "license": "MIT",
1422 | "engines": {
1423 | "node": ">=12"
1424 | },
1425 | "funding": {
1426 | "url": "https://github.com/sponsors/sindresorhus"
1427 | }
1428 | },
1429 | "node_modules/isexe": {
1430 | "version": "2.0.0",
1431 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1432 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1433 | "dev": true,
1434 | "license": "ISC"
1435 | },
1436 | "node_modules/jackspeak": {
1437 | "version": "3.4.3",
1438 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1439 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1440 | "dev": true,
1441 | "license": "BlueOak-1.0.0",
1442 | "dependencies": {
1443 | "@isaacs/cliui": "^8.0.2"
1444 | },
1445 | "funding": {
1446 | "url": "https://github.com/sponsors/isaacs"
1447 | },
1448 | "optionalDependencies": {
1449 | "@pkgjs/parseargs": "^0.11.0"
1450 | }
1451 | },
1452 | "node_modules/jake": {
1453 | "version": "10.9.2",
1454 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
1455 | "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
1456 | "dev": true,
1457 | "license": "Apache-2.0",
1458 | "dependencies": {
1459 | "async": "^3.2.3",
1460 | "chalk": "^4.0.2",
1461 | "filelist": "^1.0.4",
1462 | "minimatch": "^3.1.2"
1463 | },
1464 | "bin": {
1465 | "jake": "bin/cli.js"
1466 | },
1467 | "engines": {
1468 | "node": ">=10"
1469 | }
1470 | },
1471 | "node_modules/jake/node_modules/brace-expansion": {
1472 | "version": "1.1.11",
1473 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1474 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1475 | "dev": true,
1476 | "license": "MIT",
1477 | "dependencies": {
1478 | "balanced-match": "^1.0.0",
1479 | "concat-map": "0.0.1"
1480 | }
1481 | },
1482 | "node_modules/jake/node_modules/chalk": {
1483 | "version": "4.1.2",
1484 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1485 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1486 | "dev": true,
1487 | "license": "MIT",
1488 | "dependencies": {
1489 | "ansi-styles": "^4.1.0",
1490 | "supports-color": "^7.1.0"
1491 | },
1492 | "engines": {
1493 | "node": ">=10"
1494 | },
1495 | "funding": {
1496 | "url": "https://github.com/chalk/chalk?sponsor=1"
1497 | }
1498 | },
1499 | "node_modules/jake/node_modules/minimatch": {
1500 | "version": "3.1.2",
1501 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1502 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1503 | "dev": true,
1504 | "license": "ISC",
1505 | "dependencies": {
1506 | "brace-expansion": "^1.1.7"
1507 | },
1508 | "engines": {
1509 | "node": "*"
1510 | }
1511 | },
1512 | "node_modules/json-schema-traverse": {
1513 | "version": "1.0.0",
1514 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
1515 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
1516 | "dev": true,
1517 | "license": "MIT"
1518 | },
1519 | "node_modules/lodash": {
1520 | "version": "4.17.21",
1521 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1522 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1523 | "dev": true,
1524 | "license": "MIT"
1525 | },
1526 | "node_modules/log-symbols": {
1527 | "version": "5.1.0",
1528 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
1529 | "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
1530 | "dev": true,
1531 | "license": "MIT",
1532 | "dependencies": {
1533 | "chalk": "^5.0.0",
1534 | "is-unicode-supported": "^1.1.0"
1535 | },
1536 | "engines": {
1537 | "node": ">=12"
1538 | },
1539 | "funding": {
1540 | "url": "https://github.com/sponsors/sindresorhus"
1541 | }
1542 | },
1543 | "node_modules/loglevel": {
1544 | "version": "1.9.2",
1545 | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
1546 | "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
1547 | "dev": true,
1548 | "license": "MIT",
1549 | "engines": {
1550 | "node": ">= 0.6.0"
1551 | },
1552 | "funding": {
1553 | "type": "tidelift",
1554 | "url": "https://tidelift.com/funding/github/npm/loglevel"
1555 | }
1556 | },
1557 | "node_modules/lru-cache": {
1558 | "version": "10.4.3",
1559 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1560 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
1561 | "dev": true,
1562 | "license": "ISC"
1563 | },
1564 | "node_modules/magic-string": {
1565 | "version": "0.30.17",
1566 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
1567 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
1568 | "dev": true,
1569 | "license": "MIT",
1570 | "dependencies": {
1571 | "@jridgewell/sourcemap-codec": "^1.5.0"
1572 | }
1573 | },
1574 | "node_modules/mimic-fn": {
1575 | "version": "2.1.0",
1576 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1577 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1578 | "dev": true,
1579 | "license": "MIT",
1580 | "engines": {
1581 | "node": ">=6"
1582 | }
1583 | },
1584 | "node_modules/minimatch": {
1585 | "version": "5.1.6",
1586 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
1587 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
1588 | "dev": true,
1589 | "license": "ISC",
1590 | "dependencies": {
1591 | "brace-expansion": "^2.0.1"
1592 | },
1593 | "engines": {
1594 | "node": ">=10"
1595 | }
1596 | },
1597 | "node_modules/minipass": {
1598 | "version": "7.1.2",
1599 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1600 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1601 | "dev": true,
1602 | "license": "ISC",
1603 | "engines": {
1604 | "node": ">=16 || 14 >=14.17"
1605 | }
1606 | },
1607 | "node_modules/minizlib": {
1608 | "version": "3.0.1",
1609 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz",
1610 | "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==",
1611 | "dev": true,
1612 | "license": "MIT",
1613 | "dependencies": {
1614 | "minipass": "^7.0.4",
1615 | "rimraf": "^5.0.5"
1616 | },
1617 | "engines": {
1618 | "node": ">= 18"
1619 | }
1620 | },
1621 | "node_modules/mkdirp": {
1622 | "version": "3.0.1",
1623 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
1624 | "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
1625 | "dev": true,
1626 | "license": "MIT",
1627 | "bin": {
1628 | "mkdirp": "dist/cjs/src/bin.js"
1629 | },
1630 | "engines": {
1631 | "node": ">=10"
1632 | },
1633 | "funding": {
1634 | "url": "https://github.com/sponsors/isaacs"
1635 | }
1636 | },
1637 | "node_modules/mute-stream": {
1638 | "version": "1.0.0",
1639 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
1640 | "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
1641 | "dev": true,
1642 | "license": "ISC",
1643 | "engines": {
1644 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
1645 | }
1646 | },
1647 | "node_modules/once": {
1648 | "version": "1.4.0",
1649 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1650 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1651 | "dev": true,
1652 | "license": "ISC",
1653 | "dependencies": {
1654 | "wrappy": "1"
1655 | }
1656 | },
1657 | "node_modules/onetime": {
1658 | "version": "5.1.2",
1659 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1660 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1661 | "dev": true,
1662 | "license": "MIT",
1663 | "dependencies": {
1664 | "mimic-fn": "^2.1.0"
1665 | },
1666 | "engines": {
1667 | "node": ">=6"
1668 | },
1669 | "funding": {
1670 | "url": "https://github.com/sponsors/sindresorhus"
1671 | }
1672 | },
1673 | "node_modules/ora": {
1674 | "version": "5.4.1",
1675 | "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
1676 | "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
1677 | "dev": true,
1678 | "license": "MIT",
1679 | "dependencies": {
1680 | "bl": "^4.1.0",
1681 | "chalk": "^4.1.0",
1682 | "cli-cursor": "^3.1.0",
1683 | "cli-spinners": "^2.5.0",
1684 | "is-interactive": "^1.0.0",
1685 | "is-unicode-supported": "^0.1.0",
1686 | "log-symbols": "^4.1.0",
1687 | "strip-ansi": "^6.0.0",
1688 | "wcwidth": "^1.0.1"
1689 | },
1690 | "engines": {
1691 | "node": ">=10"
1692 | },
1693 | "funding": {
1694 | "url": "https://github.com/sponsors/sindresorhus"
1695 | }
1696 | },
1697 | "node_modules/ora/node_modules/chalk": {
1698 | "version": "4.1.2",
1699 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1700 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1701 | "dev": true,
1702 | "license": "MIT",
1703 | "dependencies": {
1704 | "ansi-styles": "^4.1.0",
1705 | "supports-color": "^7.1.0"
1706 | },
1707 | "engines": {
1708 | "node": ">=10"
1709 | },
1710 | "funding": {
1711 | "url": "https://github.com/chalk/chalk?sponsor=1"
1712 | }
1713 | },
1714 | "node_modules/ora/node_modules/is-interactive": {
1715 | "version": "1.0.0",
1716 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
1717 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
1718 | "dev": true,
1719 | "license": "MIT",
1720 | "engines": {
1721 | "node": ">=8"
1722 | }
1723 | },
1724 | "node_modules/ora/node_modules/is-unicode-supported": {
1725 | "version": "0.1.0",
1726 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
1727 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
1728 | "dev": true,
1729 | "license": "MIT",
1730 | "engines": {
1731 | "node": ">=10"
1732 | },
1733 | "funding": {
1734 | "url": "https://github.com/sponsors/sindresorhus"
1735 | }
1736 | },
1737 | "node_modules/ora/node_modules/log-symbols": {
1738 | "version": "4.1.0",
1739 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
1740 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
1741 | "dev": true,
1742 | "license": "MIT",
1743 | "dependencies": {
1744 | "chalk": "^4.1.0",
1745 | "is-unicode-supported": "^0.1.0"
1746 | },
1747 | "engines": {
1748 | "node": ">=10"
1749 | },
1750 | "funding": {
1751 | "url": "https://github.com/sponsors/sindresorhus"
1752 | }
1753 | },
1754 | "node_modules/os-tmpdir": {
1755 | "version": "1.0.2",
1756 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1757 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
1758 | "dev": true,
1759 | "license": "MIT",
1760 | "engines": {
1761 | "node": ">=0.10.0"
1762 | }
1763 | },
1764 | "node_modules/package-json-from-dist": {
1765 | "version": "1.0.1",
1766 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1767 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
1768 | "dev": true,
1769 | "license": "BlueOak-1.0.0"
1770 | },
1771 | "node_modules/path-key": {
1772 | "version": "3.1.1",
1773 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1774 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1775 | "dev": true,
1776 | "license": "MIT",
1777 | "engines": {
1778 | "node": ">=8"
1779 | }
1780 | },
1781 | "node_modules/path-parse": {
1782 | "version": "1.0.7",
1783 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1784 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1785 | "dev": true,
1786 | "license": "MIT"
1787 | },
1788 | "node_modules/path-scurry": {
1789 | "version": "1.11.1",
1790 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1791 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1792 | "dev": true,
1793 | "license": "BlueOak-1.0.0",
1794 | "dependencies": {
1795 | "lru-cache": "^10.2.0",
1796 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1797 | },
1798 | "engines": {
1799 | "node": ">=16 || 14 >=14.18"
1800 | },
1801 | "funding": {
1802 | "url": "https://github.com/sponsors/isaacs"
1803 | }
1804 | },
1805 | "node_modules/picomatch": {
1806 | "version": "4.0.2",
1807 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
1808 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
1809 | "dev": true,
1810 | "license": "MIT",
1811 | "engines": {
1812 | "node": ">=12"
1813 | },
1814 | "funding": {
1815 | "url": "https://github.com/sponsors/jonschlinkert"
1816 | }
1817 | },
1818 | "node_modules/rage-edit": {
1819 | "version": "1.2.0",
1820 | "resolved": "https://registry.npmjs.org/rage-edit/-/rage-edit-1.2.0.tgz",
1821 | "integrity": "sha512-0RspBRc2s6We4g7hRCvT5mu7YPEnfjvQK8Tt354a2uUNJCMC7MKLvo/1mLvHUCQ/zbP6siQyp5VRZN7UCpMFZg==",
1822 | "dev": true,
1823 | "license": "MIT"
1824 | },
1825 | "node_modules/randombytes": {
1826 | "version": "2.1.0",
1827 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1828 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1829 | "dev": true,
1830 | "license": "MIT",
1831 | "dependencies": {
1832 | "safe-buffer": "^5.1.0"
1833 | }
1834 | },
1835 | "node_modules/re": {
1836 | "version": "0.1.4",
1837 | "resolved": "https://registry.npmjs.org/re/-/re-0.1.4.tgz",
1838 | "integrity": "sha512-nnRiW20Jr9hv7Aw3OXd7vIYoq2+26T+QZYJBlC/HMSerJxFOn6AUCKDDB/JKxk5O8dO9wmPQ6qyhQbzIv/JtFw==",
1839 | "license": "MIT",
1840 | "engines": {
1841 | "node": ">=0.6"
1842 | }
1843 | },
1844 | "node_modules/readable-stream": {
1845 | "version": "3.6.2",
1846 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
1847 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
1848 | "dev": true,
1849 | "license": "MIT",
1850 | "dependencies": {
1851 | "inherits": "^2.0.3",
1852 | "string_decoder": "^1.1.1",
1853 | "util-deprecate": "^1.0.1"
1854 | },
1855 | "engines": {
1856 | "node": ">= 6"
1857 | }
1858 | },
1859 | "node_modules/regex": {
1860 | "version": "6.0.1",
1861 | "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz",
1862 | "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==",
1863 | "license": "MIT",
1864 | "dependencies": {
1865 | "regex-utilities": "^2.3.0"
1866 | }
1867 | },
1868 | "node_modules/regex-utilities": {
1869 | "version": "2.3.0",
1870 | "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
1871 | "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
1872 | "license": "MIT"
1873 | },
1874 | "node_modules/require-from-string": {
1875 | "version": "2.0.2",
1876 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
1877 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
1878 | "dev": true,
1879 | "license": "MIT",
1880 | "engines": {
1881 | "node": ">=0.10.0"
1882 | }
1883 | },
1884 | "node_modules/resolve": {
1885 | "version": "1.22.10",
1886 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
1887 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
1888 | "dev": true,
1889 | "license": "MIT",
1890 | "dependencies": {
1891 | "is-core-module": "^2.16.0",
1892 | "path-parse": "^1.0.7",
1893 | "supports-preserve-symlinks-flag": "^1.0.0"
1894 | },
1895 | "bin": {
1896 | "resolve": "bin/resolve"
1897 | },
1898 | "engines": {
1899 | "node": ">= 0.4"
1900 | },
1901 | "funding": {
1902 | "url": "https://github.com/sponsors/ljharb"
1903 | }
1904 | },
1905 | "node_modules/restore-cursor": {
1906 | "version": "3.1.0",
1907 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
1908 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
1909 | "dev": true,
1910 | "license": "MIT",
1911 | "dependencies": {
1912 | "onetime": "^5.1.0",
1913 | "signal-exit": "^3.0.2"
1914 | },
1915 | "engines": {
1916 | "node": ">=8"
1917 | }
1918 | },
1919 | "node_modules/rimraf": {
1920 | "version": "5.0.10",
1921 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
1922 | "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
1923 | "dev": true,
1924 | "license": "ISC",
1925 | "dependencies": {
1926 | "glob": "^10.3.7"
1927 | },
1928 | "bin": {
1929 | "rimraf": "dist/esm/bin.mjs"
1930 | },
1931 | "funding": {
1932 | "url": "https://github.com/sponsors/isaacs"
1933 | }
1934 | },
1935 | "node_modules/rimraf/node_modules/glob": {
1936 | "version": "10.4.5",
1937 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1938 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1939 | "dev": true,
1940 | "license": "ISC",
1941 | "dependencies": {
1942 | "foreground-child": "^3.1.0",
1943 | "jackspeak": "^3.1.2",
1944 | "minimatch": "^9.0.4",
1945 | "minipass": "^7.1.2",
1946 | "package-json-from-dist": "^1.0.0",
1947 | "path-scurry": "^1.11.1"
1948 | },
1949 | "bin": {
1950 | "glob": "dist/esm/bin.mjs"
1951 | },
1952 | "funding": {
1953 | "url": "https://github.com/sponsors/isaacs"
1954 | }
1955 | },
1956 | "node_modules/rimraf/node_modules/minimatch": {
1957 | "version": "9.0.5",
1958 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1959 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1960 | "dev": true,
1961 | "license": "ISC",
1962 | "dependencies": {
1963 | "brace-expansion": "^2.0.1"
1964 | },
1965 | "engines": {
1966 | "node": ">=16 || 14 >=14.17"
1967 | },
1968 | "funding": {
1969 | "url": "https://github.com/sponsors/isaacs"
1970 | }
1971 | },
1972 | "node_modules/rollup": {
1973 | "version": "4.34.6",
1974 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.6.tgz",
1975 | "integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==",
1976 | "dev": true,
1977 | "license": "MIT",
1978 | "dependencies": {
1979 | "@types/estree": "1.0.6"
1980 | },
1981 | "bin": {
1982 | "rollup": "dist/bin/rollup"
1983 | },
1984 | "engines": {
1985 | "node": ">=18.0.0",
1986 | "npm": ">=8.0.0"
1987 | },
1988 | "optionalDependencies": {
1989 | "@rollup/rollup-android-arm-eabi": "4.34.6",
1990 | "@rollup/rollup-android-arm64": "4.34.6",
1991 | "@rollup/rollup-darwin-arm64": "4.34.6",
1992 | "@rollup/rollup-darwin-x64": "4.34.6",
1993 | "@rollup/rollup-freebsd-arm64": "4.34.6",
1994 | "@rollup/rollup-freebsd-x64": "4.34.6",
1995 | "@rollup/rollup-linux-arm-gnueabihf": "4.34.6",
1996 | "@rollup/rollup-linux-arm-musleabihf": "4.34.6",
1997 | "@rollup/rollup-linux-arm64-gnu": "4.34.6",
1998 | "@rollup/rollup-linux-arm64-musl": "4.34.6",
1999 | "@rollup/rollup-linux-loongarch64-gnu": "4.34.6",
2000 | "@rollup/rollup-linux-powerpc64le-gnu": "4.34.6",
2001 | "@rollup/rollup-linux-riscv64-gnu": "4.34.6",
2002 | "@rollup/rollup-linux-s390x-gnu": "4.34.6",
2003 | "@rollup/rollup-linux-x64-gnu": "4.34.6",
2004 | "@rollup/rollup-linux-x64-musl": "4.34.6",
2005 | "@rollup/rollup-win32-arm64-msvc": "4.34.6",
2006 | "@rollup/rollup-win32-ia32-msvc": "4.34.6",
2007 | "@rollup/rollup-win32-x64-msvc": "4.34.6",
2008 | "fsevents": "~2.3.2"
2009 | }
2010 | },
2011 | "node_modules/run-async": {
2012 | "version": "3.0.0",
2013 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
2014 | "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
2015 | "dev": true,
2016 | "license": "MIT",
2017 | "engines": {
2018 | "node": ">=0.12.0"
2019 | }
2020 | },
2021 | "node_modules/rxjs": {
2022 | "version": "7.8.1",
2023 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
2024 | "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
2025 | "dev": true,
2026 | "license": "Apache-2.0",
2027 | "dependencies": {
2028 | "tslib": "^2.1.0"
2029 | }
2030 | },
2031 | "node_modules/safe-buffer": {
2032 | "version": "5.2.1",
2033 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2034 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2035 | "dev": true,
2036 | "funding": [
2037 | {
2038 | "type": "github",
2039 | "url": "https://github.com/sponsors/feross"
2040 | },
2041 | {
2042 | "type": "patreon",
2043 | "url": "https://www.patreon.com/feross"
2044 | },
2045 | {
2046 | "type": "consulting",
2047 | "url": "https://feross.org/support"
2048 | }
2049 | ],
2050 | "license": "MIT"
2051 | },
2052 | "node_modules/safer-buffer": {
2053 | "version": "2.1.2",
2054 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2055 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2056 | "dev": true,
2057 | "license": "MIT"
2058 | },
2059 | "node_modules/semver": {
2060 | "version": "7.7.1",
2061 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
2062 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
2063 | "dev": true,
2064 | "license": "ISC",
2065 | "bin": {
2066 | "semver": "bin/semver.js"
2067 | },
2068 | "engines": {
2069 | "node": ">=10"
2070 | }
2071 | },
2072 | "node_modules/serialize-javascript": {
2073 | "version": "6.0.2",
2074 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
2075 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
2076 | "dev": true,
2077 | "license": "BSD-3-Clause",
2078 | "dependencies": {
2079 | "randombytes": "^2.1.0"
2080 | }
2081 | },
2082 | "node_modules/shebang-command": {
2083 | "version": "2.0.0",
2084 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2085 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2086 | "dev": true,
2087 | "license": "MIT",
2088 | "dependencies": {
2089 | "shebang-regex": "^3.0.0"
2090 | },
2091 | "engines": {
2092 | "node": ">=8"
2093 | }
2094 | },
2095 | "node_modules/shebang-regex": {
2096 | "version": "3.0.0",
2097 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2098 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2099 | "dev": true,
2100 | "license": "MIT",
2101 | "engines": {
2102 | "node": ">=8"
2103 | }
2104 | },
2105 | "node_modules/signal-exit": {
2106 | "version": "3.0.7",
2107 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
2108 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
2109 | "dev": true,
2110 | "license": "ISC"
2111 | },
2112 | "node_modules/smob": {
2113 | "version": "1.5.0",
2114 | "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
2115 | "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
2116 | "dev": true,
2117 | "license": "MIT"
2118 | },
2119 | "node_modules/source-map": {
2120 | "version": "0.6.1",
2121 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2122 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2123 | "dev": true,
2124 | "license": "BSD-3-Clause",
2125 | "engines": {
2126 | "node": ">=0.10.0"
2127 | }
2128 | },
2129 | "node_modules/source-map-support": {
2130 | "version": "0.5.21",
2131 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
2132 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
2133 | "dev": true,
2134 | "license": "MIT",
2135 | "dependencies": {
2136 | "buffer-from": "^1.0.0",
2137 | "source-map": "^0.6.0"
2138 | }
2139 | },
2140 | "node_modules/string_decoder": {
2141 | "version": "1.3.0",
2142 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
2143 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
2144 | "dev": true,
2145 | "license": "MIT",
2146 | "dependencies": {
2147 | "safe-buffer": "~5.2.0"
2148 | }
2149 | },
2150 | "node_modules/string-width": {
2151 | "version": "4.2.3",
2152 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2153 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2154 | "dev": true,
2155 | "license": "MIT",
2156 | "dependencies": {
2157 | "emoji-regex": "^8.0.0",
2158 | "is-fullwidth-code-point": "^3.0.0",
2159 | "strip-ansi": "^6.0.1"
2160 | },
2161 | "engines": {
2162 | "node": ">=8"
2163 | }
2164 | },
2165 | "node_modules/string-width-cjs": {
2166 | "name": "string-width",
2167 | "version": "4.2.3",
2168 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2169 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2170 | "dev": true,
2171 | "license": "MIT",
2172 | "dependencies": {
2173 | "emoji-regex": "^8.0.0",
2174 | "is-fullwidth-code-point": "^3.0.0",
2175 | "strip-ansi": "^6.0.1"
2176 | },
2177 | "engines": {
2178 | "node": ">=8"
2179 | }
2180 | },
2181 | "node_modules/strip-ansi": {
2182 | "version": "6.0.1",
2183 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2184 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2185 | "dev": true,
2186 | "license": "MIT",
2187 | "dependencies": {
2188 | "ansi-regex": "^5.0.1"
2189 | },
2190 | "engines": {
2191 | "node": ">=8"
2192 | }
2193 | },
2194 | "node_modules/strip-ansi-cjs": {
2195 | "name": "strip-ansi",
2196 | "version": "6.0.1",
2197 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2198 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2199 | "dev": true,
2200 | "license": "MIT",
2201 | "dependencies": {
2202 | "ansi-regex": "^5.0.1"
2203 | },
2204 | "engines": {
2205 | "node": ">=8"
2206 | }
2207 | },
2208 | "node_modules/supports-color": {
2209 | "version": "7.2.0",
2210 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2211 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2212 | "dev": true,
2213 | "license": "MIT",
2214 | "dependencies": {
2215 | "has-flag": "^4.0.0"
2216 | },
2217 | "engines": {
2218 | "node": ">=8"
2219 | }
2220 | },
2221 | "node_modules/supports-preserve-symlinks-flag": {
2222 | "version": "1.0.0",
2223 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2224 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2225 | "dev": true,
2226 | "license": "MIT",
2227 | "engines": {
2228 | "node": ">= 0.4"
2229 | },
2230 | "funding": {
2231 | "url": "https://github.com/sponsors/ljharb"
2232 | }
2233 | },
2234 | "node_modules/tar": {
2235 | "version": "7.4.3",
2236 | "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
2237 | "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
2238 | "dev": true,
2239 | "license": "ISC",
2240 | "dependencies": {
2241 | "@isaacs/fs-minipass": "^4.0.0",
2242 | "chownr": "^3.0.0",
2243 | "minipass": "^7.1.2",
2244 | "minizlib": "^3.0.1",
2245 | "mkdirp": "^3.0.1",
2246 | "yallist": "^5.0.0"
2247 | },
2248 | "engines": {
2249 | "node": ">=18"
2250 | }
2251 | },
2252 | "node_modules/terser": {
2253 | "version": "5.39.0",
2254 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz",
2255 | "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
2256 | "dev": true,
2257 | "license": "BSD-2-Clause",
2258 | "dependencies": {
2259 | "@jridgewell/source-map": "^0.3.3",
2260 | "acorn": "^8.8.2",
2261 | "commander": "^2.20.0",
2262 | "source-map-support": "~0.5.20"
2263 | },
2264 | "bin": {
2265 | "terser": "bin/terser"
2266 | },
2267 | "engines": {
2268 | "node": ">=10"
2269 | }
2270 | },
2271 | "node_modules/terser/node_modules/commander": {
2272 | "version": "2.20.3",
2273 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
2274 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
2275 | "dev": true,
2276 | "license": "MIT"
2277 | },
2278 | "node_modules/tmp": {
2279 | "version": "0.0.33",
2280 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2281 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2282 | "dev": true,
2283 | "license": "MIT",
2284 | "dependencies": {
2285 | "os-tmpdir": "~1.0.2"
2286 | },
2287 | "engines": {
2288 | "node": ">=0.6.0"
2289 | }
2290 | },
2291 | "node_modules/tslib": {
2292 | "version": "2.8.1",
2293 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2294 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2295 | "dev": true,
2296 | "license": "0BSD"
2297 | },
2298 | "node_modules/type-fest": {
2299 | "version": "0.21.3",
2300 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
2301 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
2302 | "dev": true,
2303 | "license": "(MIT OR CC0-1.0)",
2304 | "engines": {
2305 | "node": ">=10"
2306 | },
2307 | "funding": {
2308 | "url": "https://github.com/sponsors/sindresorhus"
2309 | }
2310 | },
2311 | "node_modules/typescript": {
2312 | "version": "5.7.3",
2313 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
2314 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
2315 | "dev": true,
2316 | "license": "Apache-2.0",
2317 | "bin": {
2318 | "tsc": "bin/tsc",
2319 | "tsserver": "bin/tsserver"
2320 | },
2321 | "engines": {
2322 | "node": ">=14.17"
2323 | }
2324 | },
2325 | "node_modules/undici-types": {
2326 | "version": "5.26.5",
2327 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
2328 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
2329 | "dev": true,
2330 | "license": "MIT"
2331 | },
2332 | "node_modules/util-deprecate": {
2333 | "version": "1.0.2",
2334 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2335 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2336 | "dev": true,
2337 | "license": "MIT"
2338 | },
2339 | "node_modules/wcwidth": {
2340 | "version": "1.0.1",
2341 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
2342 | "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
2343 | "dev": true,
2344 | "license": "MIT",
2345 | "dependencies": {
2346 | "defaults": "^1.0.3"
2347 | }
2348 | },
2349 | "node_modules/which": {
2350 | "version": "2.0.2",
2351 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2352 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2353 | "dev": true,
2354 | "license": "ISC",
2355 | "dependencies": {
2356 | "isexe": "^2.0.0"
2357 | },
2358 | "bin": {
2359 | "node-which": "bin/node-which"
2360 | },
2361 | "engines": {
2362 | "node": ">= 8"
2363 | }
2364 | },
2365 | "node_modules/wrap-ansi": {
2366 | "version": "6.2.0",
2367 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
2368 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
2369 | "dev": true,
2370 | "license": "MIT",
2371 | "dependencies": {
2372 | "ansi-styles": "^4.0.0",
2373 | "string-width": "^4.1.0",
2374 | "strip-ansi": "^6.0.0"
2375 | },
2376 | "engines": {
2377 | "node": ">=8"
2378 | }
2379 | },
2380 | "node_modules/wrap-ansi-cjs": {
2381 | "name": "wrap-ansi",
2382 | "version": "7.0.0",
2383 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2384 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2385 | "dev": true,
2386 | "license": "MIT",
2387 | "dependencies": {
2388 | "ansi-styles": "^4.0.0",
2389 | "string-width": "^4.1.0",
2390 | "strip-ansi": "^6.0.0"
2391 | },
2392 | "engines": {
2393 | "node": ">=10"
2394 | },
2395 | "funding": {
2396 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2397 | }
2398 | },
2399 | "node_modules/wrappy": {
2400 | "version": "1.0.2",
2401 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2402 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2403 | "dev": true,
2404 | "license": "ISC"
2405 | },
2406 | "node_modules/ws": {
2407 | "version": "8.18.0",
2408 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
2409 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
2410 | "license": "MIT",
2411 | "engines": {
2412 | "node": ">=10.0.0"
2413 | },
2414 | "peerDependencies": {
2415 | "bufferutil": "^4.0.1",
2416 | "utf-8-validate": ">=5.0.2"
2417 | },
2418 | "peerDependenciesMeta": {
2419 | "bufferutil": {
2420 | "optional": true
2421 | },
2422 | "utf-8-validate": {
2423 | "optional": true
2424 | }
2425 | }
2426 | },
2427 | "node_modules/yallist": {
2428 | "version": "5.0.0",
2429 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
2430 | "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
2431 | "dev": true,
2432 | "license": "BlueOak-1.0.0",
2433 | "engines": {
2434 | "node": ">=18"
2435 | }
2436 | },
2437 | "node_modules/yoctocolors-cjs": {
2438 | "version": "2.1.2",
2439 | "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
2440 | "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
2441 | "dev": true,
2442 | "license": "MIT",
2443 | "engines": {
2444 | "node": ">=18"
2445 | },
2446 | "funding": {
2447 | "url": "https://github.com/sponsors/sindresorhus"
2448 | }
2449 | }
2450 | }
2451 | }
2452 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "build": "rollup -c",
4 | "watch": "rollup -c -w --watch.onEnd=\"streamdeck restart com.nicoohagedorn.pythonscriptdeck\""
5 | },
6 | "type": "module",
7 | "devDependencies": {
8 | "@elgato/cli": "^0.3.2",
9 | "@rollup/plugin-commonjs": "^25.0.5",
10 | "@rollup/plugin-node-resolve": "^15.2.2",
11 | "@rollup/plugin-terser": "^0.4.4",
12 | "@rollup/plugin-typescript": "^11.1.5",
13 | "@tsconfig/node20": "^20.1.2",
14 | "@types/node": "20.8.10",
15 | "rollup": "^4.0.2",
16 | "tslib": "^2.6.2",
17 | "typescript": "^5.2.2"
18 | },
19 | "dependencies": {
20 | "@elgato/streamdeck": "^0.3.0",
21 | "re": "^0.1.4",
22 | "regex": "^6.0.1"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/pyIcons.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/pyIcons.pptx
--------------------------------------------------------------------------------
/rollup.config.mjs:
--------------------------------------------------------------------------------
1 | import commonjs from "@rollup/plugin-commonjs";
2 | import nodeResolve from "@rollup/plugin-node-resolve";
3 | import terser from "@rollup/plugin-terser";
4 | import typescript from "@rollup/plugin-typescript";
5 | import path from "node:path";
6 | import url from "node:url";
7 |
8 | const isWatching = !!process.env.ROLLUP_WATCH;
9 | const sdPlugin = "com.nicoohagedorn.pythonscriptdeck.sdPlugin";
10 |
11 | /**
12 | * @type {import('rollup').RollupOptions}
13 | */
14 | const config = {
15 | input: "src/plugin.ts",
16 | output: {
17 | file: `${sdPlugin}/bin/plugin.js`,
18 | sourcemap: isWatching,
19 | sourcemapPathTransform: (relativeSourcePath, sourcemapPath) => {
20 | return url.pathToFileURL(path.resolve(path.dirname(sourcemapPath), relativeSourcePath)).href;
21 | }
22 | },
23 | plugins: [
24 | {
25 | name: "watch-externals",
26 | buildStart: function () {
27 | this.addWatchFile(`${sdPlugin}/manifest.json`);
28 | },
29 | },
30 | typescript({
31 | mapRoot: isWatching ? "./" : undefined
32 | }),
33 | nodeResolve({
34 | browser: false,
35 | exportConditions: ["node"],
36 | preferBuiltins: true
37 | }),
38 | commonjs(),
39 | !isWatching && terser(),
40 | {
41 | name: "emit-module-package-file",
42 | generateBundle() {
43 | this.emitFile({ fileName: "package.json", source: `{ "type": "module" }`, type: "asset" });
44 | }
45 | }
46 | ]
47 | };
48 |
49 | export default config;
50 |
--------------------------------------------------------------------------------
/src/ScriptA.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | def random_bool():
4 | return random.choice(["abc", "edf"])
5 |
6 | if __name__ == "__main__":
7 | print(random_bool())
8 |
--------------------------------------------------------------------------------
/src/actions/python-script.ts:
--------------------------------------------------------------------------------
1 | import streamDeck, { action, DidReceiveSettingsEvent, KeyDownEvent, SingletonAction, WillAppearEvent } from "@elgato/streamdeck";
2 | import { ChildProcess, spawn } from "child_process";
3 |
4 |
5 |
6 | /**
7 | * Error mapping for python errors
8 | */
9 | const pythonErrorMap: { [key: string]: string } = {
10 | "SyntaxError": "Python\nSyntax\nError",
11 | "NameError": "Python\nName\nError",
12 | "TypeError": "Python\nType\nError",
13 | "ValueError": "Python\nValue\nError",
14 | "ZeroDivisionError": "Python\nZeroDiv\nError",
15 | "IndexError": "Python\nIndex\nError",
16 | "KeyError": "Python\nKey\nError",
17 | "AttributeError": "Python\nAttribute\nError",
18 | "ImportError": "Python\nImport\nError",
19 | "No such file or directory": "Python\nFile\nError",
20 | "ModuleNotFoundError": "Python\nModule\nError",
21 | "RuntimeError": "Python\nRuntime\nError",
22 | "MemoryError": "Python\nMemory\nError",
23 | "OverflowError": "Python\nOverflow\nError",
24 | "SystemError": "Python\nSystem\nError",
25 | "Microsoft Store": "Python\nnot found\nError",
26 |
27 | };
28 |
29 | @action({ UUID: "com.nicoohagedorn.pythonscriptdeck.script" })
30 | export class PythonScript extends SingletonAction {
31 | /**
32 | * The {@link SingletonAction.onWillAppear} event is useful for setting the visual representation of an action when it becomes visible. This could be due to the Stream Deck first
33 | * starting up, or the user navigating between pages / folders etc.. There is also an inverse of this event in the form of {@link streamDeck.client.onWillDisappear}. In this example,
34 | * we're setting the title to the "count" that is incremented in {@link PythonScript.onKeyDown}.
35 | */
36 | onWillAppear(ev: WillAppearEvent): void | Promise {
37 | const settings = ev.payload.settings;
38 | if (settings.path) {
39 | if (settings.path.search(".py")) {
40 | ev.action.setImage("imgs/actions/gemini_icons/pyFileLoaded.png")
41 | var venvname = "";
42 | if (settings.useVenv && settings.venvPath) {
43 | streamDeck.logger.info(settings.venvPath);
44 | venvname = settings.venvPath.substring(0, settings.venvPath.lastIndexOf("/"));
45 | streamDeck.logger.info(venvname);
46 | venvname = venvname.substring(venvname.lastIndexOf("/") + 1, venvname.length) + "\n";
47 | streamDeck.logger.info(venvname);
48 | venvname = `venv:\n ${venvname}`
49 |
50 | }
51 | ev.action.setTitle(`${venvname}${this.getFileNameFromPath(settings.path)}`);
52 | }
53 | }
54 |
55 | }
56 |
57 | onDidReceiveSettings(ev: DidReceiveSettingsEvent): Promise | void {
58 | const settings = ev.payload.settings;
59 | if (settings.path) {
60 | if (settings.path.search(".py")) {
61 |
62 | var venvname = "";
63 | if (settings.useVenv && settings.venvPath) {
64 | streamDeck.logger.info(settings.venvPath);
65 | venvname = settings.venvPath.substring(0, settings.venvPath.lastIndexOf("/"));
66 | streamDeck.logger.info(venvname);
67 | venvname = venvname.substring(venvname.lastIndexOf("/") + 1, venvname.length) + "\n";
68 | streamDeck.logger.info(venvname);
69 | venvname = `venv:\n ${venvname}`
70 | ev.action.setImage("imgs/actions/gemini_icons/pyVirtEnvActive.png")
71 | }else {
72 | ev.action.setImage("imgs/actions/gemini_icons/pyFileLoaded.png")
73 | }
74 | ev.action.setTitle(`${venvname}${this.getFileNameFromPath(settings.path)}`);
75 | }
76 | }
77 | }
78 |
79 | /**
80 | * Listens for the {@link SingletonAction.onKeyDown} event which is emitted by Stream Deck when an action is pressed. Stream Deck provides various events for tracking interaction
81 | * with devices including key down/up, dial rotations, and device connectivity, etc. When triggered, {@link ev} object contains information about the event including any payloads
82 | * and action information where applicable. In this example, our action will display a counter that increments by one each press. We track the current count on the action's persisted
83 | * settings using `setSettings` and `getSettings`.
84 | */
85 | async onKeyDown(ev: KeyDownEvent): Promise {
86 | // Update the count from the settings.
87 | const settings = ev.payload.settings;
88 | const { path } = settings;
89 | let pythonProcess: ChildProcess | undefined;
90 | if (path) {
91 | streamDeck.logger.info(`path to script is: ${path}`)
92 | pythonProcess = this.createChildProcess(settings.useVenv, settings.venvPath, path);
93 |
94 | if (pythonProcess != undefined && pythonProcess.stdout != null) {
95 | streamDeck.logger.info(`start reading output`);
96 | pythonProcess.stdout.on('data', (data: { toString: () => string; }) => {
97 | streamDeck.logger.info(`stdout: ${data}`);
98 | if (settings.displayValues) { ev.action.setTitle(data.toString().trim()); }
99 | if (settings.image1 && (data.toString().trim() == (settings.value1 ?? ""))) {
100 | ev.action.setImage(settings.image1)
101 | }
102 | if (settings.image2 && (data.toString().trim() == (settings.value2 ?? ""))) {
103 | ev.action.setImage(settings.image2)
104 |
105 | }else(
106 | ev.action.setImage("imgs/actions/gemini_icons/pyFileLoaded.png")
107 | )
108 | });
109 |
110 | pythonProcess.stderr!.on('data', (data: { toString: () => string; }) => {
111 | const errorString = data.toString().trim().replace(RegExp('/(?:\r\n|\r|\n)/g'), ' ');
112 | streamDeck.logger.error(`stderr: ${errorString}`);
113 | ev.action.setImage("imgs/actions/pyFilecheckFailed.png");
114 | let errorTitle = "python\nother\nissue";
115 | for (const key in pythonErrorMap) {
116 | if (errorString.search(key) > -1) {
117 | errorTitle = pythonErrorMap[key];
118 | break;
119 | }
120 | }
121 | if (errorTitle == "python\nother\nissue"){
122 | streamDeck.logger.error(errorString);
123 | }
124 | ev.action.setTitle(errorTitle);
125 | ev.action.showAlert();
126 |
127 | });
128 |
129 | pythonProcess.on('close', (code: any) => {
130 | streamDeck.logger.info(`child process exited with code ${code}`);
131 | });
132 | }
133 | }
134 |
135 |
136 | }
137 |
138 | createChildProcess(useVenv: boolean, venvPath: string | undefined, path: string) {
139 | let pythonProcess: ChildProcess | undefined;
140 | if (useVenv && venvPath) {
141 |
142 | streamDeck.logger.info(`Use Virtual Environment: ${venvPath}`)
143 | pythonProcess = spawn("cmd.exe", ["/c", `call ${venvPath.substring(0, venvPath.lastIndexOf("/"))}/Scripts/activate.bat && python ${path}`]);
144 |
145 | }
146 | else {
147 | streamDeck.logger.info(`Use Python: ${path}`)
148 | pythonProcess = spawn(`cmd.exe`, [`/c ${path}`]);
149 | /*
150 | if (pythonProcess.connected == false) {
151 | streamDeck.logger.debug("python not found, trying python3")
152 | pythonProcess = spawn("cmd.exe", ["/c", `python3 ${path}`]);
153 | }*/
154 | }
155 | return pythonProcess;
156 | }
157 |
158 | getFileNameFromPath(path: string): string {
159 | var fileName = "";
160 | fileName = path.substring(path.lastIndexOf("/") + 1);
161 | return fileName;
162 | }
163 |
164 |
165 | }
166 |
167 | /**
168 | * Settings for {@link PythonScript}.
169 | */
170 | export type PythonScriptSettings = {
171 | path?: string;
172 | value1?: string;
173 | image1?: string;
174 | value2?: string;
175 | image2?: string;
176 | displayValues: boolean;
177 | useVenv: boolean;
178 | venvPath?: string;
179 |
180 | };
181 |
--------------------------------------------------------------------------------
/src/actions/python-service.ts:
--------------------------------------------------------------------------------
1 | import streamDeck, { action, DidReceiveSettingsEvent, KeyDownEvent, SingletonAction, WillAppearEvent, WillDisappearEvent } from "@elgato/streamdeck";
2 | import { ChildProcess, spawn } from "child_process";
3 | import { pyBGService } from "../python-bg-service";
4 |
5 |
6 | @action({ UUID: "com.nicoohagedorn.pythonscriptdeck.service" })
7 | export class PythonService extends SingletonAction {
8 | /**
9 | * The {@link SingletonAction.onWillAppear} event is useful for setting the visual representation of an action when it becomes visible. This could be due to the Stream Deck first
10 | * starting up, or the user navigating between pages / folders etc.. There is also an inverse of this event in the form of {@link streamDeck.client.onWillDisappear}. In this example,
11 | * we're setting the title to the "count" that is incremented in {@link PythonScript.onKeyDown}.
12 | */
13 | onWillAppear(ev: WillAppearEvent): void | Promise {
14 | const settings = ev.payload.settings;
15 | if (settings.path) {
16 | if (settings.path.search(".py")) {
17 | ev.action.setImage("imgs/actions/pyServiceIcon.png")
18 | var venvname = "";
19 | if (settings.useVenv && settings.venvPath) {
20 | streamDeck.logger.info(settings.venvPath);
21 | venvname = settings.venvPath.substring(0, settings.venvPath.lastIndexOf("/"));
22 | streamDeck.logger.info(venvname);
23 | venvname = venvname.substring(venvname.lastIndexOf("/") + 1, venvname.length) + "\n";
24 | streamDeck.logger.info(venvname);
25 | venvname = `venv:\n ${venvname}`
26 |
27 | }
28 | ev.action.setTitle(`${venvname}${this.getFileNameFromPath(settings.path)}`);
29 | }
30 | }
31 | if(this.checkSettingsComplete(settings)){
32 | pyBGService.registerAction(ev);
33 | }
34 |
35 |
36 | }
37 |
38 | onDidReceiveSettings(ev: DidReceiveSettingsEvent): Promise | void {
39 | const settings = ev.payload.settings;
40 | if (settings.path) {
41 | if (settings.path.search(".py")) {
42 | ev.action.setImage("imgs/actions/pyServiceIcon.png")
43 | var venvname = "";
44 | if (settings.useVenv && settings.venvPath) {
45 | streamDeck.logger.info(settings.venvPath);
46 | venvname = settings.venvPath.substring(0, settings.venvPath.lastIndexOf("/"));
47 | streamDeck.logger.info(venvname);
48 | venvname = venvname.substring(venvname.lastIndexOf("/") + 1, venvname.length) + "\n";
49 | streamDeck.logger.info(venvname);
50 | venvname = `venv:\n ${venvname}`
51 |
52 | }
53 | ev.action.setTitle(`${venvname}${this.getFileNameFromPath(settings.path)}`);
54 | }
55 | }
56 | pyBGService.registerAction(ev);
57 | }
58 |
59 | onWillDisappear(ev: WillDisappearEvent): Promise | void {
60 | streamDeck.logger.info("onWillDisappear - unregister Action");
61 | pyBGService.unregisterAction(ev);
62 | }
63 |
64 |
65 | /**
66 | * Listens for the {@link SingletonAction.onKeyDown} event which is emitted by Stream Deck when an action is pressed. Stream Deck provides various events for tracking interaction
67 | * with devices including key down/up, dial rotations, and device connectivity, etc. When triggered, {@link ev} object contains information about the event including any payloads
68 | * and action information where applicable. In this example, our action will display a counter that increments by one each press. We track the current count on the action's persisted
69 | * settings using `setSettings` and `getSettings`.
70 | */
71 | async onKeyDown(ev: KeyDownEvent): Promise {
72 | // Update the count from the settings.
73 | //TODO - enable start and stop the running of this script
74 | pyBGService.getState() == 1 ? pyBGService.start(ev) : pyBGService.stop(ev);
75 |
76 | }
77 |
78 |
79 | getFileNameFromPath(path: string): string{
80 | var fileName = "";
81 | fileName = path.substring(path.lastIndexOf("/") + 1);
82 | return fileName;
83 | }
84 |
85 | checkSettingsComplete(settings: PythonServiceSettings): boolean {
86 | var check = false;
87 | if (settings.path && settings.interval) {
88 | streamDeck.logger.info("settings complete");
89 | check = true;
90 | }
91 | return check;
92 | }
93 | }
94 |
95 | /**
96 | * Settings for {@link PythonScript}.
97 | */
98 | export type PythonServiceSettings = {
99 | path?: string;
100 | value1?: string;
101 | image1?: string;
102 | value2?: string;
103 | image2?: string;
104 | displayValues: boolean;
105 | useVenv: boolean;
106 | venvPath?: string;
107 | interval: number;
108 | id: string;
109 |
110 | };
111 |
--------------------------------------------------------------------------------
/src/automation.py:
--------------------------------------------------------------------------------
1 | import random
2 | import time
3 |
4 | def random_bool():
5 | start = time.time()
6 | i = 0
7 | while time.time()- start < 30:
8 | print (i)
9 | i = i + 1
10 | time.sleep(1)
11 |
12 |
13 | if __name__ == "__main__":
14 | print(random_bool())
15 |
--------------------------------------------------------------------------------
/src/false.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/src/false.png
--------------------------------------------------------------------------------
/src/plugin.ts:
--------------------------------------------------------------------------------
1 | import streamDeck, { LogLevel } from "@elgato/streamdeck";
2 |
3 | import { PythonScript } from "./actions/python-script";
4 | import { PythonService } from "./actions/python-service";
5 | import { pyBGService } from "./python-bg-service";
6 |
7 | // We can enable "trace" logging so that all messages between the Stream Deck, and the plugin are recorded. When storing sensitive information
8 | streamDeck.logger.setLevel(LogLevel.TRACE);
9 |
10 | // Register the increment action.
11 | streamDeck.actions.registerAction(new PythonScript());
12 | streamDeck.actions.registerAction(new PythonService());
13 |
14 | // Finally, connect to the Stream Deck.
15 | streamDeck.connect();
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/python-bg-service.ts:
--------------------------------------------------------------------------------
1 | import streamDeck, { DidReceiveSettingsEvent, KeyDownEvent, WillAppearEvent, WillDisappearEvent } from '@elgato/streamdeck';
2 | import { PythonServiceSettings } from './actions/python-service';
3 | import { ChildProcess, spawn } from 'child_process';
4 | import * as os from 'os';
5 |
6 | /**
7 | * Error mapping for python errors
8 | */
9 | const pythonErrorMap: { [key: string]: string } = {
10 | "SyntaxError": "Python\nSyntax\nError",
11 | "NameError": "Python\nName\nError",
12 | "TypeError": "Python\nType\nError",
13 | "ValueError": "Python\nValue\nError",
14 | "ZeroDivisionError": "Python\nZeroDiv\nError",
15 | "IndexError": "Python\nIndex\nError",
16 | "KeyError": "Python\nKey\nError",
17 | "AttributeError": "Python\nAttribute\nError",
18 | "ImportError": "Python\nImport\nError",
19 | "No such file or directory": "Python\nFile\nError",
20 | "ModuleNotFoundError": "Python\nModule\nError",
21 | "RuntimeError": "Python\nRuntime\nError",
22 | "MemoryError": "Python\nMemory\nError",
23 | "OverflowError": "Python\nOverflow\nError",
24 | "SystemError": "Python\nSystem\nError",
25 | "Microsoft Store": "Python\nnot found\nError",
26 |
27 | };
28 | enum ServiceState {
29 | running,
30 | stopped
31 | }
32 |
33 |
34 | class PythonBackgroundService {
35 |
36 | trackedActions: any[] = [];
37 | state = ServiceState.stopped;
38 |
39 |
40 | registerAction(ev: WillAppearEvent | DidReceiveSettingsEvent) {
41 |
42 | var duplicate = false;
43 | streamDeck.logger.info("checking if action is already tracked");
44 | var newtrackedAction = {
45 | "id": ev.action.id, "ev": ev, "timerId": undefined
46 | }
47 |
48 | for (let i = 0; i < this.trackedActions.length; i++) {
49 | if (this.trackedActions[i] == ev.action.id) {
50 | duplicate = true;
51 | streamDeck.logger.info("action already tracked - updating action");
52 | clearInterval(this.trackedActions[i].timerId);
53 | this.trackedActions[this.trackedActions.indexOf(this.trackedActions[i])] = newtrackedAction;
54 | break;
55 | }
56 | }
57 |
58 | if (duplicate == false) {
59 | this.trackedActions.push(newtrackedAction)
60 | }
61 | }
62 |
63 | unregisterAction(ev: WillDisappearEvent) {
64 | for (let i = 0; i < this.trackedActions.length; i++) {
65 | if (this.trackedActions[i] == ev.action.id) {
66 | streamDeck.logger.info(`stopping execution of the action ${ev.action.manifestId}, id: ${ev.action.id}`);
67 | clearInterval(this.trackedActions[i].timerId);
68 | }
69 | }
70 | }
71 |
72 | start(ev: KeyDownEvent) {
73 | streamDeck.logger.info("starting Background Service")
74 | for (let i = 0; i < this.trackedActions.length; i++) {
75 | this.trackedActions[i].timerId = this.createTimer(this.trackedActions[i].ev);
76 | }
77 | this.state = ServiceState.running;
78 | ev.action.setImage("imgs/actions/pyServiceRunning.png");
79 | }
80 |
81 | stop(ev: KeyDownEvent) {
82 | streamDeck.logger.info("stopping Background Service")
83 | for (let i = 0; i < this.trackedActions.length; i++) {
84 | if (this.trackedActions[i].timerId == undefined) {
85 | continue;
86 | } else {
87 | clearInterval(this.trackedActions[i].timerId);
88 | this.trackedActions[i].timerId = undefined;
89 | }
90 |
91 |
92 | }
93 | this.state = ServiceState.stopped;
94 | streamDeck.logger.info(`stopping execution of the action ${ev.action.manifestId}, id: ${ev.action.id}`)
95 | ev.action.setImage("imgs/actions/pyServiceStopped.png");
96 | }
97 |
98 | getState = () => {
99 | return this.state;
100 | }
101 |
102 |
103 |
104 | executeAction(ev: WillAppearEvent | DidReceiveSettingsEvent | KeyDownEvent) {
105 | const settings = ev.payload.settings;
106 | const { path } = settings;
107 | let pythonProcess: ChildProcess | undefined;
108 | if (path) {
109 | streamDeck.logger.debug(`path to script is: ${path}`)
110 | pythonProcess = this.createChildProcess(settings.useVenv, settings.venvPath, path);
111 |
112 | if (pythonProcess != undefined && pythonProcess.stdout != null) {
113 | streamDeck.logger.debug(`start reading output`);
114 | pythonProcess.stdout.on('data', (data: { toString: () => string; }) => {
115 | streamDeck.logger.info(`stdout: ${data}`);
116 | if (settings.displayValues) { ev.action.setTitle(data.toString().trim()); }
117 | if (settings.image1 && (data.toString().trim() == (settings.value1 ?? ""))) {
118 | ev.action.setImage(settings.image1)
119 | }
120 | else if (settings.image2 && (data.toString().trim() == (settings.value2 ?? ""))) {
121 | ev.action.setImage(settings.image2)
122 |
123 | } else (
124 | ev.action.setImage("imgs/actions/pyServiceIcon.png")
125 | )
126 | });
127 |
128 | pythonProcess.stderr!.on('data', (data: { toString: () => string; }) => {
129 | const errorString = data.toString().trim().replace(RegExp('/(?:\r\n|\r|\n)/g'), ' ');
130 | streamDeck.logger.error(`stderr: ${errorString}`);
131 | ev.action.setImage("imgs/actions/pyServiceIconFail.png");
132 | let errorTitle = "python\nother\nissue";
133 | for (const key in pythonErrorMap) {
134 | if (errorString.search(key) > -1) {
135 | errorTitle = pythonErrorMap[key];
136 | break;
137 | }
138 | }
139 | if (errorTitle == "python\nother\nissue") {
140 | streamDeck.logger.error(errorString);
141 | }
142 | ev.action.setTitle(errorTitle);
143 | ev.action.showAlert();
144 |
145 | });
146 |
147 | pythonProcess.on('close', (code: any) => {
148 | streamDeck.logger.debug(`child process exited with code ${code}`);
149 | });
150 | }
151 | }
152 |
153 | }
154 | createChildProcess(useVenv: boolean, venvPath: string | undefined, path: string) {
155 | let pythonProcess: ChildProcess | undefined;
156 | const isWindows = os.platform() === "win32";
157 |
158 | if (useVenv && venvPath) {
159 | if (isWindows) {
160 | // Windows - use .bat activation
161 | pythonProcess = spawn("cmd.exe", ["/c", `call ${venvPath}/Scripts/activate.bat && python ${path}`]);
162 | } else {
163 | // macOS/Linux - use source and run in bash
164 | pythonProcess = spawn("bash", ["-c", `source "${venvPath}/bin/activate" && python3 "${path}"`]);
165 | }
166 | } else {
167 | if (isWindows) {
168 | pythonProcess = spawn("cmd.exe", ["/c", `python ${path}`]);
169 | } else {
170 | pythonProcess = spawn("python3", [path]);
171 | }
172 | }
173 |
174 | return pythonProcess;
175 | }
176 |
177 | getFileNameFromPath(path: string): string {
178 | var fileName = "";
179 | fileName = path.substring(path.lastIndexOf("/") + 1);
180 | return fileName;
181 | }
182 |
183 | createTimer(ev: WillAppearEvent | DidReceiveSettingsEvent | KeyDownEvent) {
184 | const interval = ev.payload.settings.interval ?? 10
185 | return setInterval(() => {
186 | streamDeck.logger.info(`timer triggered after ${ev.payload.settings.interval}s for action ${ev.action.manifestId}, id: ${ev.action.id}`)
187 | this.executeAction(ev);
188 | }, interval * 1000)
189 |
190 | }
191 |
192 |
193 | }
194 |
195 | export var pyBGService = new PythonBackgroundService();
196 |
--------------------------------------------------------------------------------
/src/script.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | def random_bool():
4 | return random.choice(["abc", "edf"])
5 |
6 | if __name__ == "__main__":
7 | print(random_bool())
8 |
--------------------------------------------------------------------------------
/src/test.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | #A function that will return either True or False randomly
4 | #Replace this with your code and return your desired values
5 | def random_bool():
6 | return random.choice([True, False])
7 |
8 | #excute the function and print the return value
9 | #the plugin will then parse the return value and react
10 | if __name__ == "__main__":
11 | print(random_bool())
12 |
--------------------------------------------------------------------------------
/src/true.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/9h03n1x/pythonscriptdeck/b65c040bedd225d0a261eb8a7dc2cb2724efa8c3/src/true.png
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node20/tsconfig.json",
3 | "compilerOptions": {
4 | "customConditions": [
5 | "node"
6 | ],
7 | "module": "ES2022",
8 | "moduleResolution": "Bundler"
9 | },
10 | "include": [
11 | "src/**/*.ts"
12 | ],
13 | "exclude": [
14 | "node_modules"
15 | ]
16 | }
--------------------------------------------------------------------------------