From 1bc144f44ef4585e18f42a0a53a600a6c7bc0fa6 Mon Sep 17 00:00:00 2001 From: Daniel LaCosse <3759828+daniellacosse@users.noreply.github.com> Date: Wed, 26 Feb 2025 15:56:53 -0500 Subject: [PATCH] almost done --- package-lock.json | 1788 ++++++++++++++++- src/sdk/README.md | 50 + src/sdk/example/index.html | 12 + src/sdk/example/src/server-details.ts | 53 + src/sdk/example/src/vite-env.d.ts | 1 + src/sdk/example/tsconfig.json | 25 + .../library/generated}/client.gen.ts | 0 .../client => sdk/library/generated}/index.ts | 0 .../library/generated}/sdk.gen.ts | 0 .../library/generated}/types.gen.ts | 0 src/sdk/library/index.ts | 11 + src/sdk/package.json | 16 + src/sdk/screenshots/intellisense.png | Bin 0 -> 30860 bytes src/sdk/screenshots/results.png | Bin 0 -> 91946 bytes src/shadowbox/server/main.ts | 11 +- 15 files changed, 1921 insertions(+), 46 deletions(-) create mode 100644 src/sdk/README.md create mode 100644 src/sdk/example/index.html create mode 100644 src/sdk/example/src/server-details.ts create mode 100644 src/sdk/example/src/vite-env.d.ts create mode 100644 src/sdk/example/tsconfig.json rename src/{shadowbox/server/client => sdk/library/generated}/client.gen.ts (100%) rename src/{shadowbox/server/client => sdk/library/generated}/index.ts (100%) rename src/{shadowbox/server/client => sdk/library/generated}/sdk.gen.ts (100%) rename src/{shadowbox/server/client => sdk/library/generated}/types.gen.ts (100%) create mode 100644 src/sdk/library/index.ts create mode 100644 src/sdk/package.json create mode 100644 src/sdk/screenshots/intellisense.png create mode 100644 src/sdk/screenshots/results.png diff --git a/package-lock.json b/package-lock.json index bcd24e0e..8a62969b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,6 +74,406 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -711,6 +1111,19 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==" + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, "node_modules/@mdn/browser-compat-data": { "version": "4.2.1", "dev": true, @@ -992,6 +1405,253 @@ "node": ">=14" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@socket.io/base64-arraybuffer": { "version": "1.0.2", "dev": true, @@ -1068,9 +1728,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "node_modules/@types/express": { @@ -1212,6 +1872,11 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "node_modules/@types/yauzl": { "version": "2.9.2", "dev": true, @@ -2221,6 +2886,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/caller-callsite": { "version": "2.0.0", "dev": true, @@ -2737,12 +3414,30 @@ "node": ">=0.8" } }, - "node_modules/define-properties": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -2842,6 +3537,19 @@ "node": ">=0.10" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3037,12 +3745,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -3068,6 +3803,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/escalade": { "version": "3.1.1", "dev": true, @@ -4146,9 +4921,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -4299,17 +5074,40 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "license": "MIT", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "6.0.0", "dev": true, @@ -4449,6 +5247,17 @@ "node": ">=10" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4493,6 +5302,7 @@ }, "node_modules/has": { "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -4531,9 +5341,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -4542,11 +5352,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4560,6 +5371,17 @@ "dev": true, "license": "MIT" }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hpack.js": { "version": "2.1.6", "license": "MIT", @@ -5682,6 +6504,34 @@ "node": ">=4" } }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -5836,6 +6686,14 @@ "node": ">=10" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "license": "MIT", @@ -6049,6 +6907,24 @@ "license": "MIT", "optional": true }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, @@ -6505,16 +7381,16 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7492,6 +8368,58 @@ "dev": true, "license": "MIT" }, + "node_modules/rollup": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/run-async": { "version": "2.4.1", "dev": true, @@ -7605,6 +8533,10 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/sdk": { + "resolved": "src/sdk", + "link": true + }, "node_modules/select-hose": { "version": "2.0.0", "license": "MIT" @@ -7870,6 +8802,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -8616,6 +9557,14 @@ "through": "^2.3.8" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/unique-string": { "version": "2.0.0", "dev": true, @@ -9159,6 +10108,159 @@ "@types/express": "^4.17.12" } }, + "src/sdk": { + "version": "0.0.0", + "dependencies": { + "lit": "^3.2.1" + }, + "devDependencies": { + "typescript": "~5.7.2", + "vite": "^6.2.0" + } + }, + "src/sdk/node_modules/@types/node": { + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "src/sdk/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "src/sdk/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "src/sdk/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "src/sdk/node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "src/sdk/node_modules/vite": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, "src/sentry_webhook": { "version": "0.1.0", "license": "Apache", @@ -9396,6 +10498,181 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "dev": true, + "optional": true + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -9850,6 +11127,19 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==" + }, + "@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, "@mdn/browser-compat-data": { "version": "4.2.1", "dev": true @@ -9998,6 +11288,139 @@ "dev": true, "optional": true }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "dev": true, + "optional": true + }, "@socket.io/base64-arraybuffer": { "version": "1.0.2", "dev": true @@ -10060,9 +11483,9 @@ } }, "@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "@types/express": { @@ -10188,6 +11611,11 @@ "version": "0.2.2", "dev": true }, + "@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "@types/yauzl": { "version": "2.9.2", "dev": true, @@ -10870,6 +12298,15 @@ "get-intrinsic": "^1.0.2" } }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, "caller-callsite": { "version": "2.0.0", "dev": true, @@ -11207,12 +12644,24 @@ } } }, - "define-properties": { + "define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -11282,6 +12731,16 @@ "nan": "^2.14.0" } }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -11423,12 +12882,30 @@ "unbox-primitive": "^1.0.2" } }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-module-lexer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -11447,6 +12924,39 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "escalade": { "version": "3.1.1", "dev": true @@ -12200,9 +13710,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true }, "foreground-child": { @@ -12291,11 +13801,29 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, "get-stdin": { @@ -12389,6 +13917,11 @@ "node-forge": "^1.3.1" } }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -12426,6 +13959,7 @@ }, "has": { "version": "1.0.3", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -12450,21 +13984,31 @@ } }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hash-stream-validation": { "version": "0.2.4", "dev": true }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hpack.js": { "version": "2.1.6", "requires": { @@ -13212,6 +14756,34 @@ } } }, + "lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "requires": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -13322,6 +14894,11 @@ "yallist": "^4.0.0" } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "media-typer": { "version": "0.3.0" }, @@ -13464,6 +15041,12 @@ "version": "2.15.0", "optional": true }, + "nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "dev": true @@ -13798,9 +15381,9 @@ "dev": true }, "path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "requires": { "lru-cache": "^10.2.0", @@ -14442,6 +16025,44 @@ "version": "1.3.0", "dev": true }, + "rollup": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@types/estree": "1.0.6", + "fsevents": "~2.3.2" + }, + "dependencies": { + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + } + } + }, "run-async": { "version": "2.4.1", "dev": true @@ -14513,6 +16134,69 @@ "ajv-keywords": "^3.5.2" } }, + "sdk": { + "version": "file:src/sdk", + "requires": { + "lit": "^3.2.1", + "typescript": "~5.7.2", + "vite": "^6.2.0" + }, + "dependencies": { + "@types/node": { + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "undici-types": "~6.20.0" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "requires": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true + }, + "vite": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "dev": true, + "requires": { + "esbuild": "^0.25.0", + "fsevents": "~2.3.3", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + } + } + } + }, "select-hose": { "version": "2.0.0" }, @@ -14776,6 +16460,12 @@ "version": "0.6.1", "dev": true }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -15307,6 +16997,14 @@ "through": "^2.3.8" } }, + "undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "optional": true, + "peer": true + }, "unique-string": { "version": "2.0.0", "dev": true, diff --git a/src/sdk/README.md b/src/sdk/README.md new file mode 100644 index 00000000..aff5092b --- /dev/null +++ b/src/sdk/README.md @@ -0,0 +1,50 @@ +# Manager SDK Prototype + +This is a prototype of a Manager SDK for the Outline Server. + +It uses `ngrok` to allow the user to access the Management API from the browser. + +It uses the `lit` library to create a web component that displays the server details. + +It also uses `@hey-api/openapi-ts` to generate a TypeScript library from the Outline Server API definition. + +## Setup + +Get a`NGROK_TOKEN` from https://dashboard.ngrok.com/get-started/your-authtoken and a `NGROK_DOMAIN` from https://dashboard.ngrok.com/domains. + +```sh +export NGROK_TOKEN=... +export NGROK_DOMAIN=... + +# Start the local outline server +task shadowbox:start & + +# Start the web app demo +npm run example --workspace sdk +``` + +Result: + +results + +## Library Generation + +Generated library from `src/shadowbox/server/api.yml` with `@hey-api/openapi-ts`: + +```bash +# run in project root +npx @hey-api/openapi-ts \ + -i src/shadowbox/server/api.yml \ + -o src/sdk/library/generated \ + -c @hey-api/client-fetch +``` + +Intellisense example: + +intellisense + +## TODOs + +- [ ] Why does Prometheus continuously crash (had to comment it out) +- [ ] Generate Library on API change +- [ ] ... diff --git a/src/sdk/example/index.html b/src/sdk/example/index.html new file mode 100644 index 00000000..2c9bfcff --- /dev/null +++ b/src/sdk/example/index.html @@ -0,0 +1,12 @@ + + + + + + Manager SDK Demo + + + + + + diff --git a/src/sdk/example/src/server-details.ts b/src/sdk/example/src/server-details.ts new file mode 100644 index 00000000..6d1baad2 --- /dev/null +++ b/src/sdk/example/src/server-details.ts @@ -0,0 +1,53 @@ +import { LitElement, html, css } from 'lit' +import { customElement, state, property } from 'lit/decorators.js'; + +import makeLibrary, { type Server } from '../../library'; + +@customElement('server-details') +export class MainPage extends LitElement { + @property({ type: String }) url: string; + + @state() server?: Server; + + constructor(url: string) { + super(); + this.url = url; + } + + get client() { + return makeLibrary(this.url); + } + + static styles = css` + :host { + font-family: system-ui; + } + + dt { + font-weight: bold; + } + `; + + async connectedCallback() { + super.connectedCallback(); + + const { data } = await this.client.getServer(); + + this.server = data; + } + + render() { + if (!this.server) { + return html`Loading...`; + } + + return html` +
+ ${Object.entries(this.server).map(([key, value]) => html` +
${key}
+
${value}
+ `)} +
+ `; + } +} diff --git a/src/sdk/example/src/vite-env.d.ts b/src/sdk/example/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/src/sdk/example/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/sdk/example/tsconfig.json b/src/sdk/example/tsconfig.json new file mode 100644 index 00000000..cdb96f37 --- /dev/null +++ b/src/sdk/example/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "experimentalDecorators": true, + "useDefineForClassFields": false, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/src/shadowbox/server/client/client.gen.ts b/src/sdk/library/generated/client.gen.ts similarity index 100% rename from src/shadowbox/server/client/client.gen.ts rename to src/sdk/library/generated/client.gen.ts diff --git a/src/shadowbox/server/client/index.ts b/src/sdk/library/generated/index.ts similarity index 100% rename from src/shadowbox/server/client/index.ts rename to src/sdk/library/generated/index.ts diff --git a/src/shadowbox/server/client/sdk.gen.ts b/src/sdk/library/generated/sdk.gen.ts similarity index 100% rename from src/shadowbox/server/client/sdk.gen.ts rename to src/sdk/library/generated/sdk.gen.ts diff --git a/src/shadowbox/server/client/types.gen.ts b/src/sdk/library/generated/types.gen.ts similarity index 100% rename from src/shadowbox/server/client/types.gen.ts rename to src/sdk/library/generated/types.gen.ts diff --git a/src/sdk/library/index.ts b/src/sdk/library/index.ts new file mode 100644 index 00000000..7368192c --- /dev/null +++ b/src/sdk/library/index.ts @@ -0,0 +1,11 @@ +import { client } from './generated/client.gen'; + +import * as generated from './generated'; + +export type * from './generated'; + +export default (baseUrl: string) => { + client.setConfig({ baseUrl, headers: { "ngrok-skip-browser-warning": "69420" } }); + + return generated; +} \ No newline at end of file diff --git a/src/sdk/package.json b/src/sdk/package.json new file mode 100644 index 00000000..36b6e572 --- /dev/null +++ b/src/sdk/package.json @@ -0,0 +1,16 @@ +{ + "name": "sdk", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "example": "VITE_SERVER_DETAIL_URL=https://${NGROK_DOMAIN}/TestApiPrefix vite example" + }, + "dependencies": { + "lit": "^3.2.1" + }, + "devDependencies": { + "typescript": "~5.7.2", + "vite": "^6.2.0" + } +} diff --git a/src/sdk/screenshots/intellisense.png b/src/sdk/screenshots/intellisense.png new file mode 100644 index 0000000000000000000000000000000000000000..b07a9b1bb645326972b376b4c9b8fe4db87dc310 GIT binary patch literal 30860 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 qK@Y0cwg7Rg_wB#QijVL61RJb4o3hu^pK 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 )KvDL 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 literal 0 HcmV?d00001 diff --git a/src/shadowbox/server/main.ts b/src/shadowbox/server/main.ts index 4beed17c..f815581f 100644 --- a/src/shadowbox/server/main.ts +++ b/src/shadowbox/server/main.ts @@ -283,17 +283,26 @@ process.on('unhandledRejection', (error: Error) => { main() .then(async () => { + if (!process.env.NGROK_TOKEN || !process.env.NGROK_DOMAIN) { + return; + } + process.env.SSL_CERT_FILE = process.env.SB_CERTIFICATE_FILE; process.env.SSL_KEY_FILE = process.env.SB_PRIVATE_KEY_FILE; const listener = await ngrok.forward({ domain: process.env.NGROK_DOMAIN, + // ipv6 loopback address doesn't work addr: `https://127.0.0.1:${process.env.SB_API_PORT || 8081}`, authtoken_from_env: true, verify_upstream_tls: false, + response_header_add: [ + 'Allow-Access-Control-Origin: *', + 'Access-Control-Allow-Headers: *' + ], }); - console.log(`Listening to the Manager API on ${listener.url()}`); + console.log(`Listening to the Manager API on '${listener.url()}'`); }) .catch((error) => { logging.error(error.stack);