diff --git a/changelog.md b/changelog.md index b30e877..aaf778b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,14 @@ # Changelog +## 2026-01-12 - 3.37.0 - feat(elements) +add eco-provider-frame and dataprovider interfaces; improve virtual keyboard interactions; add demos, exports and bump dev dependencies + +- Add new eco-provider-frame web component (iframe-based provider protocol) with messaging API (sendData, requestData, ping) and events for provider-ready, features-changed, provider-response, provider-error +- Introduce comprehensive dataprovider TypeScript interfaces (ts_web/elements/interfaces/dataprovider.ts) describing messages, payloads, provider state and store schema +- Improve virtual keyboard and launcher interactions: add tabindex, preventDefault on mousedown, stopPropagation on pointer handlers, remove key focus outline to fix touch/mouse behavior +- Add demos and new exports for provider-frame, browser and scan views/components (demo files and index exports) +- Update build/dev config: add npmextra.json tsbundle config and bump dependencies: @design.estate/dees-catalog -> ^3.34.1, @git.zone/tsbuild -> ^4.1.0, @git.zone/tsbundle -> ^2.8.1, @types/node -> ^25.0.6 + ## 2026-01-12 - 3.36.1 - fix() no changes diff --git a/npmextra.json b/npmextra.json index 8fd5008..716ac0c 100644 --- a/npmextra.json +++ b/npmextra.json @@ -1,4 +1,14 @@ { + "@git.zone/tsbundle": { + "bundles": [ + { + "from": "ts_web/index.ts", + "to": "dist_bundle/bundle.js", + "bundler": "esbuild", + "production": true + } + ] + }, "@git.zone/cli": { "projectType": "wcc", "module": { diff --git a/package.json b/package.json index 6a9aa21..9d8575d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "author": "Lossless GmbH", "license": "MIT", "dependencies": { - "@design.estate/dees-catalog": "^3.33.0", + "@design.estate/dees-catalog": "^3.34.1", "@design.estate/dees-domtools": "^2.3.7", "@design.estate/dees-element": "^2.1.5", "@push.rocks/smartpromise": "^4.2.3", @@ -23,12 +23,12 @@ }, "devDependencies": { "@design.estate/dees-wcctools": "^3.7.1", - "@git.zone/tsbuild": "^4.0.2", - "@git.zone/tsbundle": "^2.6.3", + "@git.zone/tsbuild": "^4.1.0", + "@git.zone/tsbundle": "^2.8.1", "@git.zone/tstest": "^3.1.4", "@git.zone/tswatch": "^2.3.13", "@push.rocks/projectinfo": "^5.0.2", - "@types/node": "^25.0.3" + "@types/node": "^25.0.6" }, "files": [ "ts/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b6bf74..5f77391 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@design.estate/dees-catalog': - specifier: ^3.33.0 - version: 3.33.0(@tiptap/pm@2.27.1) + specifier: ^3.34.1 + version: 3.34.1(@tiptap/pm@2.27.2) '@design.estate/dees-domtools': specifier: ^2.3.7 version: 2.3.7 @@ -28,23 +28,23 @@ importers: specifier: ^3.7.1 version: 3.7.1 '@git.zone/tsbuild': - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.1.0 + version: 4.1.0 '@git.zone/tsbundle': - specifier: ^2.6.3 - version: 2.6.3 + specifier: ^2.8.1 + version: 2.8.1 '@git.zone/tstest': specifier: ^3.1.4 version: 3.1.4(@push.rocks/smartserve@1.4.0)(socks@2.8.7)(typescript@5.9.3) '@git.zone/tswatch': specifier: ^2.3.13 - version: 2.3.13(@tiptap/pm@2.27.1) + version: 2.3.13(@tiptap/pm@2.27.2) '@push.rocks/projectinfo': specifier: ^5.0.2 version: 5.0.2 '@types/node': - specifier: ^25.0.3 - version: 25.0.3 + specifier: ^25.0.6 + version: 25.0.6 packages: @@ -103,114 +103,230 @@ packages: resolution: {integrity: sha512-Y3ww3yd1wzmS2r3qgH3jg4MxCTdeNrae2J1BmdV+IW/2R2gFWJva5U5GbS6KUSUxanJBRG7gd8uOIi1b0EMOng==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-s3@3.966.0': + resolution: {integrity: sha512-IckVv+A6irQyXTiJrNpfi63ZtPuk6/Iu70TnMq2DTRFK/4bD2bOvqL1IHZ2WGmZMoeWd5LI8Fn6pIwdK6g4QJQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.946.0': resolution: {integrity: sha512-kGAs5iIVyUz4p6TX3pzG5q3cNxXnVpC4pwRC6DCSaSv9ozyPjc2d74FsK4fZ+J+ejtvCdJk72uiuQtWJc86Wuw==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.966.0': + resolution: {integrity: sha512-hQZDQgqRJclALDo9wK+bb5O+VpO8JcjImp52w9KPSz9XveNRgE9AYfklRJd8qT2Bwhxe6IbnqYEino2wqUMA1w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.946.0': resolution: {integrity: sha512-u2BkbLLVbMFrEiXrko2+S6ih5sUZPlbVyRPtXOqMHlCyzr70sE8kIiD6ba223rQeIFPcYfW/wHc6k4ihW2xxVg==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.966.0': + resolution: {integrity: sha512-QaRVBHD1prdrFXIeFAY/1w4b4S0EFyo/ytzU+rCklEjMRT7DKGXGoHXTWLGz+HD7ovlS5u+9cf8a/LeSOEMzww==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/crc64-nvme@3.965.0': + resolution: {integrity: sha512-9FbIyJ/Zz1AdEIrb0+Pn7wRi+F/0Y566ooepg0hDyHUzRV3ZXKjOlu3wJH3YwTz2UkdwQmldfUos2yDJps7RyA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.946.0': resolution: {integrity: sha512-P4l+K6wX1tf8LmWUvZofdQ+BgCNyk6Tb9u1H10npvqpuCD+dCM4pXIBq3PQcv/juUBOvLGGREo+Govuh3lfD0Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.966.0': + resolution: {integrity: sha512-sxVKc9PY0SH7jgN/8WxhbKQ7MWDIgaJv1AoAKJkhJ+GM5r09G5Vb2Vl8ALYpsy+r8b+iYpq5dGJj8k2VqxoQMg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.946.0': resolution: {integrity: sha512-/zeOJ6E7dGZQ/l2k7KytEoPJX0APIhwt0A79hPf/bUpMF4dDs2P6JmchDrotk0a0Y/MIdNF8sBQ/MEOPnBiYoQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.966.0': + resolution: {integrity: sha512-VTJDP1jOibVtc5pn5TNE12rhqOO/n10IjkoJi8fFp9BMfmh3iqo70Ppvphz/Pe/R9LcK5Z3h0Z4EB9IXDR6kag==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.946.0': resolution: {integrity: sha512-Pdgcra3RivWj/TuZmfFaHbqsvvgnSKO0CxlRUMMr0PgBiCnUhyl+zBktdNOeGsOPH2fUzQpYhcUjYUgVSdcSDQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.966.0': + resolution: {integrity: sha512-4oQKkYMCUx0mffKuH8LQag1M4Fo5daKVmsLAnjrIqKh91xmCrcWlAFNMgeEYvI1Yy125XeNSaFMfir6oNc2ODA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-login@3.946.0': resolution: {integrity: sha512-5iqLNc15u2Zx+7jOdQkIbP62N7n2031tw5hkmIG0DLnozhnk64osOh2CliiOE9x3c4P9Pf4frAwgyy9GzNTk2g==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-login@3.966.0': + resolution: {integrity: sha512-wD1KlqLyh23Xfns/ZAPxebwXixoJJCuDbeJHFrLDpP4D4h3vA2S8nSFgBSFR15q9FhgRfHleClycf6g5K4Ww6w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.946.0': resolution: {integrity: sha512-I7URUqnBPng1a5y81OImxrwERysZqMBREG6svhhGeZgxmqcpAZ8z5ywILeQXdEOCuuES8phUp/ojzxFjPXp/eA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.966.0': + resolution: {integrity: sha512-7QCOERGddMw7QbjE+LSAFgwOBpPv4px2ty0GCK7ZiPJGsni2EYmM4TtYnQb9u1WNHmHqIPWMbZR0pKDbyRyHlQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.946.0': resolution: {integrity: sha512-GtGHX7OGqIeVQ3DlVm5RRF43Qmf3S1+PLJv9svrdvAhAdy2bUb044FdXXqrtSsIfpzTKlHgQUiRo5MWLd35Ntw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.966.0': + resolution: {integrity: sha512-q5kCo+xHXisNbbPAh/DiCd+LZX4wdby77t7GLk0b2U0/mrel4lgy6o79CApe+0emakpOS1nPZS7voXA7vGPz4w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.946.0': resolution: {integrity: sha512-LeGSSt2V5iwYey1ENGY75RmoDP3bA2iE/py8QBKW8EDA8hn74XBLkprhrK5iccOvU3UGWY8WrEKFAFGNjJOL9g==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.966.0': + resolution: {integrity: sha512-Rv5aEfbpqsQZzxpX2x+FbSyVFOE3Dngome+exNA8jGzc00rrMZEUnm3J3yAsLp/I2l7wnTfI0r2zMe+T9/nZAQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.946.0': resolution: {integrity: sha512-ocBCvjWfkbjxElBI1QUxOnHldsNhoU0uOICFvuRDAZAoxvypJHN3m5BJkqb7gqorBbcv3LRgmBdEnWXOAvq+7Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.966.0': + resolution: {integrity: sha512-Yv1lc9iic9xg3ywMmIAeXN1YwuvfcClLVdiF2y71LqUgIOupW8B8my84XJr6pmOQuKzZa++c2znNhC9lGsbKyw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.936.0': resolution: {integrity: sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.966.0': + resolution: {integrity: sha512-KMPZ7gtFXErd9pMpXJMBwFlxxlGIaIQrUBfj3ea7rlrNtoVHnSI4qsoldLq5l9/Ho64KoCiICH4+qXjze8JTDQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-expect-continue@3.936.0': resolution: {integrity: sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-expect-continue@3.965.0': + resolution: {integrity: sha512-UBxVytsmhEmFwkBnt+aV0eAJ7uc+ouNokCqMBrQ7Oc5A77qhlcHfOgXIKz2SxqsiYTsDq+a0lWFM/XpyRWraqA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.946.0': resolution: {integrity: sha512-HJA7RIWsnxcChyZ1hNF/3JICkYCqDonxoeG8FkrmLRBknZ8WVdJiPD420/UwrWaa5F2MuTDA92jxk77rI09h1w==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.966.0': + resolution: {integrity: sha512-0/ofXeceTH/flKhg4EGGYr4cDtaLVkR/2RI05J/hxrHIls+iM6j8++GO0TocxmZYK+8B+7XKSaV9LU26nboTUQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.936.0': resolution: {integrity: sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.965.0': + resolution: {integrity: sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-location-constraint@3.936.0': resolution: {integrity: sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-location-constraint@3.965.0': + resolution: {integrity: sha512-07T1rwAarQs33mVg5U28AsSdLB5JUXu9yBTBmspFGajKVsEahIyntf53j9mAXF1N2KR0bNdP0J4A0kst4t43UQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.936.0': resolution: {integrity: sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.965.0': + resolution: {integrity: sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.936.0': resolution: {integrity: sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.965.0': + resolution: {integrity: sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.946.0': resolution: {integrity: sha512-0UTFmFd8PX2k/jLu/DBmR+mmLQWAtUGHYps9Rjx3dcXNwaMLaa/39NoV3qn7Dwzfpqc6JZlZzBk+NDOCJIHW9g==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.966.0': + resolution: {integrity: sha512-9N9zncsY5ydDCRatKdrPZcdCwNWt7TdHmqgwQM52PuA5gs1HXWwLLNDy/51H+9RTHi7v6oly+x9utJ/qypCh2g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-ssec@3.936.0': resolution: {integrity: sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-ssec@3.965.0': + resolution: {integrity: sha512-dke++CTw26y+a2D1DdVuZ4+2TkgItdx6TeuE0zOl4lsqXGvTBUG4eaIZalt7ZOAW5ys2pbDOk1bPuh4opoD3pQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.946.0': resolution: {integrity: sha512-7QcljCraeaWQNuqmOoAyZs8KpZcuhPiqdeeKoRd397jVGNRehLFsZbIMOvwaluUDFY11oMyXOkQEERe1Zo2fCw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.966.0': + resolution: {integrity: sha512-MvGoy0vhMluVpSB5GaGJbYLqwbZfZjwEZhneDHdPhgCgQqmCtugnYIIjpUw7kKqWGsmaMQmNEgSFf1zYYmwOyg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.946.0': resolution: {integrity: sha512-rjAtEguukeW8mlyEQMQI56vxFoyWlaNwowmz1p1rav948SUjtrzjHAp4TOQWhibb7AR7BUTHBCgIcyCRjBEf4g==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.966.0': + resolution: {integrity: sha512-FRzAWwLNoKiaEWbYhnpnfartIdOgiaBLnPcd3uG1Io+vvxQUeRPhQIy4EfKnT3AuA+g7gzSCjMG2JKoJOplDtQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.936.0': resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.965.0': + resolution: {integrity: sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.946.0': resolution: {integrity: sha512-61FZ685lKiJuQ06g6U7K3PL9EwKCxNm51wNlxyKV57nnl1GrLD0NC8O3/hDNkCQLNBArT9y3IXl2H7TtIxP8Jg==} engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.966.0': + resolution: {integrity: sha512-VNSpyfKtDiBg/nPwSXDvnjISaDE9mI8zhOK3C4/obqh8lK1V6j04xDlwyIWbbIM0f6VgV1FVixlghtJB79eBqA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.946.0': resolution: {integrity: sha512-a5c+rM6CUPX2ExmUZ3DlbLlS5rQr4tbdoGcgBsjnAHiYx8MuMNAI+8M7wfjF13i2yvUQj5WEIddvLpayfEZj9g==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.966.0': + resolution: {integrity: sha512-8k5cBTicTGYJHhKaweO4gL4fud1KDnLS5fByT6/Xbiu59AxYM4E/h3ds+3jxDMnniCE3gIWpEnyfM9khtmw2lA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.936.0': resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.965.0': + resolution: {integrity: sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-arn-parser@3.893.0': resolution: {integrity: sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-arn-parser@3.966.0': + resolution: {integrity: sha512-WcCLdKBK2nHhtOPE8du5XjOXaOToxGF3Ge8rgK2jaRpjkzjS0/mO+Jp2H4+25hOne3sP2twBu5BrvD9KoXQ5LQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.936.0': resolution: {integrity: sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.965.0': + resolution: {integrity: sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-locate-window@3.893.0': resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} engines: {node: '>=18.0.0'} @@ -218,6 +334,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.936.0': resolution: {integrity: sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==} + '@aws-sdk/util-user-agent-browser@3.965.0': + resolution: {integrity: sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ==} + '@aws-sdk/util-user-agent-node@3.946.0': resolution: {integrity: sha512-a2UwwvzbK5AxHKUBupfg4s7VnkqRAHjYsuezHnKCniczmT4HZfP1NnfwwvLKEH8qaTrwenxjKSfq4UWmWkvG+Q==} engines: {node: '>=18.0.0'} @@ -227,14 +346,31 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.966.0': + resolution: {integrity: sha512-vPPe8V0GLj+jVS5EqFz2NUBgWH35favqxliUOvhp8xBdNRkEjiZm5TqitVtFlxS4RrLY3HOndrWbrP5ejbwl1Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/xml-builder@3.930.0': resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} engines: {node: '>=18.0.0'} + '@aws-sdk/xml-builder@3.965.0': + resolution: {integrity: sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g==} + engines: {node: '>=18.0.0'} + '@aws/lambda-invoke-store@0.2.2': resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} engines: {node: '>=18.0.0'} + '@aws/lambda-invoke-store@0.2.3': + resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -250,6 +386,9 @@ packages: '@borewit/text-codec@0.1.1': resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} + '@borewit/text-codec@0.2.1': + resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} + '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} @@ -259,8 +398,8 @@ packages: '@configvault.io/interfaces@1.0.17': resolution: {integrity: sha512-bEcCUR2VBDJsTin8HQh8Uw/mlYl2v8A3jMIaQ+MTB9Hrqd6CZL2dL7iJdWyFl/3EIX+LDxWFR+Oq7liIq7w+1Q==} - '@design.estate/dees-catalog@3.33.0': - resolution: {integrity: sha512-dDtlJ/2IdUWRLqyCADCzFjDvptklQd5/2MskjqNSVfXjFm96qzyMIuMWCL+wLieIzgIB5xzXyTtaSBUZNCfd5g==} + '@design.estate/dees-catalog@3.34.1': + resolution: {integrity: sha512-jm/ZPoLgBHicIlrGPTiCynztFEemJGHweiz+GQK9FppFfjCCC47AOHI4ZjIhrNibfyPXGfqfFWr7DI0zCOl1gw==} '@design.estate/dees-comms@1.0.30': resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==} @@ -459,12 +598,12 @@ packages: resolution: {integrity: sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==} engines: {node: '>=6'} - '@git.zone/tsbuild@4.0.2': - resolution: {integrity: sha512-LcRlFnDbcUe53Pdoob585iXq9TAT90TyEaYl/wml/etFoPeBX+oQLm6GryejUPXrUP7i1opyTonadkQN1OyXOA==} + '@git.zone/tsbuild@4.1.0': + resolution: {integrity: sha512-IGNUlbQuUvblPFNQLoldS8d81mzHgUelZ8DGP31XxVkPledwEFNOmJXugcwYTqqriSq9U0nchBtKbX8ogQlkoA==} hasBin: true - '@git.zone/tsbundle@2.6.3': - resolution: {integrity: sha512-YD1qMYA/4eOuF57V0ccR+xo6ww1+QOYFA2K5gBPFBDNh9VdfvWxxDhOUybja8lT9PVMoli8PHG5WA5tKJkdXIQ==} + '@git.zone/tsbundle@2.8.1': + resolution: {integrity: sha512-K4HzZmJ3wrR+sO5sZwcVcSEHxJiLj71bv7J6GRmGoex8sXj6T2QrpkeCshsnbMan8OCuwOKtzyVrBDXt36chHw==} hasBin: true '@git.zone/tspublish@1.11.0': @@ -487,6 +626,62 @@ packages: resolution: {integrity: sha512-mfOoUlIw8VBiJYPrl5RZfMzkXC/z7gbSpi2ecycrj/gRWLq2CMV+Q+0G+JPjeOmuNFgg0skEIzkVFzVYFP6URw==} engines: {node: '>=18.0.0'} + '@inquirer/checkbox@3.0.1': + resolution: {integrity: sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==} + engines: {node: '>=18'} + + '@inquirer/confirm@4.0.1': + resolution: {integrity: sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==} + engines: {node: '>=18'} + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/editor@3.0.1': + resolution: {integrity: sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==} + engines: {node: '>=18'} + + '@inquirer/expand@3.0.1': + resolution: {integrity: sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@3.0.1': + resolution: {integrity: sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==} + engines: {node: '>=18'} + + '@inquirer/number@2.0.1': + resolution: {integrity: sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==} + engines: {node: '>=18'} + + '@inquirer/password@3.0.1': + resolution: {integrity: sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==} + engines: {node: '>=18'} + + '@inquirer/prompts@6.0.1': + resolution: {integrity: sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==} + engines: {node: '>=18'} + + '@inquirer/rawlist@3.0.1': + resolution: {integrity: sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==} + engines: {node: '>=18'} + + '@inquirer/search@2.0.1': + resolution: {integrity: sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==} + engines: {node: '>=18'} + + '@inquirer/select@3.0.1': + resolution: {integrity: sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -532,68 +727,74 @@ packages: '@mongodb-js/saslprep@1.3.2': resolution: {integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==} - '@napi-rs/canvas-android-arm64@0.1.84': - resolution: {integrity: sha512-pdvuqvj3qtwVryqgpAGornJLV6Ezpk39V6wT4JCnRVGy8I3Tk1au8qOalFGrx/r0Ig87hWslysPpHBxVpBMIww==} + '@napi-rs/canvas-android-arm64@0.1.88': + resolution: {integrity: sha512-KEaClPnZuVxJ8smUWjV1wWFkByBO/D+vy4lN+Dm5DFH514oqwukxKGeck9xcKJhaWJGjfruGmYGiwRe//+/zQQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/canvas-darwin-arm64@0.1.84': - resolution: {integrity: sha512-A8IND3Hnv0R6abc6qCcCaOCujTLMmGxtucMTZ5vbQUrEN/scxi378MyTLtyWg+MRr6bwQJ6v/orqMS9datIcww==} + '@napi-rs/canvas-darwin-arm64@0.1.88': + resolution: {integrity: sha512-Xgywz0dDxOKSgx3eZnK85WgGMmGrQEW7ZLA/E7raZdlEE+xXCozobgqz2ZvYigpB6DJFYkqnwHjqCOTSDGlFdg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.84': - resolution: {integrity: sha512-AUW45lJhYWwnA74LaNeqhvqYKK/2hNnBBBl03KRdqeCD4tKneUSrxUqIv8d22CBweOvrAASyKN3W87WO2zEr/A==} + '@napi-rs/canvas-darwin-x64@0.1.88': + resolution: {integrity: sha512-Yz4wSCIQOUgNucgk+8NFtQxQxZV5NO8VKRl9ePKE6XoNyNVC8JDqtvhh3b3TPqKK8W5p2EQpAr1rjjm0mfBxdg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.84': - resolution: {integrity: sha512-8zs5ZqOrdgs4FioTxSBrkl/wHZB56bJNBqaIsfPL4ZkEQCinOkrFF7xIcXiHiKp93J3wUtbIzeVrhTIaWwqk+A==} + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.88': + resolution: {integrity: sha512-9gQM2SlTo76hYhxHi2XxWTAqpTOb+JtxMPEIr+H5nAhHhyEtNmTSDRtz93SP7mGd2G3Ojf2oF5tP9OdgtgXyKg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.84': - resolution: {integrity: sha512-i204vtowOglJUpbAFWU5mqsJgH0lVpNk/Ml4mQtB4Lndd86oF+Otr6Mr5KQnZHqYGhlSIKiU2SYnUbhO28zGQA==} + '@napi-rs/canvas-linux-arm64-gnu@0.1.88': + resolution: {integrity: sha512-7qgaOBMXuVRk9Fzztzr3BchQKXDxGbY+nwsovD3I/Sx81e+sX0ReEDYHTItNb0Je4NHbAl7D0MKyd4SvUc04sg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-arm64-musl@0.1.84': - resolution: {integrity: sha512-VyZq0EEw+OILnWk7G3ZgLLPaz1ERaPP++jLjeyLMbFOF+Tr4zHzWKiKDsEV/cT7btLPZbVoR3VX+T9/QubnURQ==} + '@napi-rs/canvas-linux-arm64-musl@0.1.88': + resolution: {integrity: sha512-kYyNrUsHLkoGHBc77u4Unh067GrfiCUMbGHC2+OTxbeWfZkPt2o32UOQkhnSswKd9Fko/wSqqGkY956bIUzruA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.84': - resolution: {integrity: sha512-PSMTh8DiThvLRsbtc/a065I/ceZk17EXAATv9uNvHgkgo7wdEfTh2C3aveNkBMGByVO3tvnvD5v/YFtZL07cIg==} + '@napi-rs/canvas-linux-riscv64-gnu@0.1.88': + resolution: {integrity: sha512-HVuH7QgzB0yavYdNZDRyAsn/ejoXB0hn8twwFnOqUbCCdkV+REna7RXjSR7+PdfW0qMQ2YYWsLvVBT5iL/mGpw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/canvas-linux-x64-gnu@0.1.84': - resolution: {integrity: sha512-N1GY3noO1oqgEo3rYQIwY44kfM11vA0lDbN0orTOHfCSUZTUyiYCY0nZ197QMahZBm1aR/vYgsWpV74MMMDuNA==} + '@napi-rs/canvas-linux-x64-gnu@0.1.88': + resolution: {integrity: sha512-hvcvKIcPEQrvvJtJnwD35B3qk6umFJ8dFIr8bSymfrSMem0EQsfn1ztys8ETIFndTwdNWJKWluvxztA41ivsEw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-linux-x64-musl@0.1.84': - resolution: {integrity: sha512-vUZmua6ADqTWyHyei81aXIt9wp0yjeNwTH0KdhdeoBb6azHmFR8uKTukZMXfLCC3bnsW0t4lW7K78KNMknmtjg==} + '@napi-rs/canvas-linux-x64-musl@0.1.88': + resolution: {integrity: sha512-eSMpGYY2xnZSQ6UxYJ6plDboxq4KeJ4zT5HaVkUnbObNN6DlbJe0Mclh3wifAmquXfrlgTZt6zhHsUgz++AK6g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-win32-x64-msvc@0.1.84': - resolution: {integrity: sha512-YSs8ncurc1xzegUMNnQUTYrdrAuaXdPMOa+iYYyAxydOtg0ppV386hyYMsy00Yip1NlTgLCseRG4sHSnjQx6og==} + '@napi-rs/canvas-win32-arm64-msvc@0.1.88': + resolution: {integrity: sha512-qcIFfEgHrchyYqRrxsCeTQgpJZ/GqHiqPcU/Fvw/ARVlQeDX1VyFH+X+0gCR2tca6UJrq96vnW+5o7buCq+erA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/canvas-win32-x64-msvc@0.1.88': + resolution: {integrity: sha512-ROVqbfS4QyZxYkqmaIBBpbz/BQvAR+05FXM5PAtTYVc0uyY8Y4BHJSMdGAaMf6TdIVRsQsiq+FG/dH9XhvWCFQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/canvas@0.1.84': - resolution: {integrity: sha512-88FTNFs4uuiFKP0tUrPsEXhpe9dg7za9ILZJE08pGdUveMIDeana1zwfVkqRHJDPJFAmGY3dXmJ99dzsy57YnA==} + '@napi-rs/canvas@0.1.88': + resolution: {integrity: sha512-/p08f93LEbsL5mDZFQ3DBxcPv/I4QG9EDYRRq1WNlCOXVfAHBTHMSVMwxlqG/AtnSfUr9+vgfN7MKiyDo0+Weg==} engines: {node: '>= 10'} '@napi-rs/wasm-runtime@1.0.7': @@ -721,6 +922,9 @@ packages: '@push.rocks/smartcli@4.0.19': resolution: {integrity: sha512-s1jZSgDZWi/az26AY4TJ2HPuG1qZzGC5R9fKWaECLmwnSpk6y9JXL5dnJAUohcdu50kdXCWEcRmLfYxOt81vEA==} + '@push.rocks/smartcli@4.0.20': + resolution: {integrity: sha512-gCo4ItvsPj8WoVAJw/6vkuoGA5FtIoACux2ktcCeH0nrFe7/xGR6waJ1aZcYAi7QN4gi52TlsgwuKz7BzXqhmQ==} + '@push.rocks/smartclickhouse@2.0.17': resolution: {integrity: sha512-IYO8Obor/Ruam2KQ2B/+5uQ+rL0exU5KZoSgOc3jkkrfjn+zZenN2xoV8lVqavAtxZVfG7MfxFrcv6I7I9ZMmA==} @@ -787,6 +991,9 @@ packages: '@push.rocks/smarti18n@1.0.4': resolution: {integrity: sha512-bHIi9Iuzp2cbux9q79ZK5jOQYPsYJ9zDDS4p/xEPQH31gr0mcFRosLSQb1kvDQDVmUhI0ADlQMqr2ui9zEXQHA==} + '@push.rocks/smartinteract@2.0.16': + resolution: {integrity: sha512-eltvVRRUKBKd77DSFA4DPY2g4V4teZLNe8A93CDy/WglglYcUjxMoLY/b0DFTWCWKYT+yjk6Fe6p0FRrvX9Yvg==} + '@push.rocks/smartjson@5.2.0': resolution: {integrity: sha512-710e8UwovRfPgUtaBHcd6unaODUjV5fjxtGcGCqtaTcmvOV6VpasdVfT66xMDzQmWH2E9ZfHDJeso9HdDQzNQA==} @@ -1137,6 +1344,10 @@ packages: resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} engines: {node: '>=18.0.0'} + '@smithy/abort-controller@4.2.7': + resolution: {integrity: sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==} + engines: {node: '>=18.0.0'} + '@smithy/chunked-blob-reader-native@4.2.1': resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} engines: {node: '>=18.0.0'} @@ -1149,54 +1360,106 @@ packages: resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==} engines: {node: '>=18.0.0'} + '@smithy/config-resolver@4.4.5': + resolution: {integrity: sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==} + engines: {node: '>=18.0.0'} + '@smithy/core@3.18.7': resolution: {integrity: sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==} engines: {node: '>=18.0.0'} + '@smithy/core@3.20.2': + resolution: {integrity: sha512-nc99TseyTwL1bg+T21cyEA5oItNy1XN4aUeyOlXJnvyRW5VSK1oRKRoSM/Iq0KFPuqZMxjBemSZHZCOZbSyBMw==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.2.5': resolution: {integrity: sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==} engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.2.7': + resolution: {integrity: sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@4.2.5': resolution: {integrity: sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==} engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@4.2.7': + resolution: {integrity: sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-browser@4.2.5': resolution: {integrity: sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==} engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-browser@4.2.7': + resolution: {integrity: sha512-ujzPk8seYoDBmABDE5YqlhQZAXLOrtxtJLrbhHMKjBoG5b4dK4i6/mEU+6/7yXIAkqOO8sJ6YxZl+h0QQ1IJ7g==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-config-resolver@4.3.5': resolution: {integrity: sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==} engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-config-resolver@4.3.7': + resolution: {integrity: sha512-x7BtAiIPSaNaWuzm24Q/mtSkv+BrISO/fmheiJ39PKRNH3RmH2Hph/bUKSOBOBC9unqfIYDhKTHwpyZycLGPVQ==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-node@4.2.5': resolution: {integrity: sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==} engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-node@4.2.7': + resolution: {integrity: sha512-roySCtHC5+pQq5lK4be1fZ/WR6s/AxnPaLfCODIPArtN2du8s5Ot4mKVK3pPtijL/L654ws592JHJ1PbZFF6+A==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-universal@4.2.5': resolution: {integrity: sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==} engines: {node: '>=18.0.0'} + '@smithy/eventstream-serde-universal@4.2.7': + resolution: {integrity: sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g==} + engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.3.6': resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.3.8': + resolution: {integrity: sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg==} + engines: {node: '>=18.0.0'} + '@smithy/hash-blob-browser@4.2.6': resolution: {integrity: sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==} engines: {node: '>=18.0.0'} + '@smithy/hash-blob-browser@4.2.8': + resolution: {integrity: sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.5': resolution: {integrity: sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==} engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.7': + resolution: {integrity: sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==} + engines: {node: '>=18.0.0'} + '@smithy/hash-stream-node@4.2.5': resolution: {integrity: sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==} engines: {node: '>=18.0.0'} + '@smithy/hash-stream-node@4.2.7': + resolution: {integrity: sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ==} + engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@4.2.5': resolution: {integrity: sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==} engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@4.2.7': + resolution: {integrity: sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==} + engines: {node: '>=18.0.0'} + '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} @@ -1209,66 +1472,134 @@ packages: resolution: {integrity: sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==} engines: {node: '>=18.0.0'} + '@smithy/md5-js@4.2.7': + resolution: {integrity: sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@4.2.5': resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==} engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@4.2.7': + resolution: {integrity: sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.3.14': resolution: {integrity: sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==} engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.4.3': + resolution: {integrity: sha512-Zb8R35hjBhp1oFhiaAZ9QhClpPHdEDmNDC2UrrB2fqV0oNDUUPH12ovZHB5xi/Rd+pg/BJHOR1q+SfsieSKPQg==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.4.14': resolution: {integrity: sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==} engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.4.19': + resolution: {integrity: sha512-QtisFIjIw2tjMm/ESatjWFVIQb5Xd093z8xhxq/SijLg7Mgo2C2wod47Ib/AHpBLFhwYXPzd7Hp2+JVXfeZyMQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.2.6': resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.2.8': + resolution: {integrity: sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@4.2.5': resolution: {integrity: sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==} engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@4.2.7': + resolution: {integrity: sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==} + engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@4.3.5': resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==} engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@4.3.7': + resolution: {integrity: sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw==} + engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.4.5': resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.4.7': + resolution: {integrity: sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.5': resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==} engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.7': + resolution: {integrity: sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==} + engines: {node: '>=18.0.0'} + '@smithy/protocol-http@5.3.5': resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==} engines: {node: '>=18.0.0'} + '@smithy/protocol-http@5.3.7': + resolution: {integrity: sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.2.5': resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.2.7': + resolution: {integrity: sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.2.5': resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.2.7': + resolution: {integrity: sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==} + engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.2.5': resolution: {integrity: sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==} engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.2.7': + resolution: {integrity: sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA==} + engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.4.0': resolution: {integrity: sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==} engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.4.2': + resolution: {integrity: sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg==} + engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.3.5': resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.3.7': + resolution: {integrity: sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.10.4': + resolution: {integrity: sha512-rHig+BWjhjlHlah67ryaW9DECYixiJo5pQCTEwsJyarRBAwHMMC3iYz5MXXAHXe64ZAMn1NhTUSTFIu1T6n6jg==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.9.10': resolution: {integrity: sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==} engines: {node: '>=18.0.0'} + '@smithy/types@4.11.0': + resolution: {integrity: sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.9.0': resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==} engines: {node: '>=18.0.0'} @@ -1277,6 +1608,10 @@ packages: resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.7': + resolution: {integrity: sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==} + engines: {node: '>=18.0.0'} + '@smithy/util-base64@4.3.0': resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} engines: {node: '>=18.0.0'} @@ -1305,14 +1640,26 @@ packages: resolution: {integrity: sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.3.18': + resolution: {integrity: sha512-Ao1oLH37YmLyHnKdteMp6l4KMCGBeZEAN68YYe00KAaKFijFELDbRQRm3CNplz7bez1HifuBV0l5uR6eVJLhIg==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.2.16': resolution: {integrity: sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.2.21': + resolution: {integrity: sha512-e21ASJDirE96kKXZLcYcnn4Zt0WGOvMYc1P8EK0gQeQ3I8PbJWqBKx9AUr/YeFpDkpYwEu1RsPe4UXk2+QL7IA==} + engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.2.5': resolution: {integrity: sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==} engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.2.7': + resolution: {integrity: sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==} + engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@4.2.0': resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} @@ -1321,14 +1668,26 @@ packages: resolution: {integrity: sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==} engines: {node: '>=18.0.0'} + '@smithy/util-middleware@4.2.7': + resolution: {integrity: sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w==} + engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.2.5': resolution: {integrity: sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==} engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.2.7': + resolution: {integrity: sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==} + engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.6': resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.8': + resolution: {integrity: sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.2.0': resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} @@ -1345,6 +1704,10 @@ packages: resolution: {integrity: sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==} engines: {node: '>=18.0.0'} + '@smithy/util-waiter@4.2.7': + resolution: {integrity: sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==} + engines: {node: '>=18.0.0'} + '@smithy/uuid@1.1.0': resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} engines: {node: '>=18.0.0'} @@ -1401,137 +1764,137 @@ packages: '@tempfix/webcontainer__api@1.6.1': resolution: {integrity: sha512-Hgn3cwy0vPzjrVBqeVnY0jNZLaOCW7d+dxBe7Jv9YGHAjJ8udUMS+KbTywSv5paAfld3A/RN/iolmMzOwZxLTA==} - '@tiptap/core@2.27.1': - resolution: {integrity: sha512-nkerkl8syHj44ZzAB7oA2GPmmZINKBKCa79FuNvmGJrJ4qyZwlkDzszud23YteFZEytbc87kVd/fP76ROS6sLg==} + '@tiptap/core@2.27.2': + resolution: {integrity: sha512-ABL1N6eoxzDzC1bYvkMbvyexHacszsKdVPYqhl5GwHLOvpZcv9VE9QaKwDILTyz5voCA0lGcAAXZp+qnXOk5lQ==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.27.1': - resolution: {integrity: sha512-QrUX3muElDrNjKM3nqCSAtm3H3pT33c6ON8kwRiQboOAjT/9D57Cs7XEVY7r6rMaJPeKztrRUrNVF9w/w/6B0A==} + '@tiptap/extension-blockquote@2.27.2': + resolution: {integrity: sha512-oIGZgiAeA4tG3YxbTDfrmENL4/CIwGuP3THtHsNhwRqwsl9SfMk58Ucopi2GXTQSdYXpRJ0ahE6nPqB5D6j/Zw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.27.1': - resolution: {integrity: sha512-g4l4p892x/r7mhea8syp3fNYODxsDrimgouQ+q4DKXIgQmm5+uNhyuEPexP3I8TFNXqQ4DlMNFoM9yCqk97etQ==} + '@tiptap/extension-bold@2.27.2': + resolution: {integrity: sha512-bR7J5IwjCGQ0s3CIxyMvOCnMFMzIvsc5OVZKscTN5UkXzFsaY6muUAIqtKxayBUucjtUskm5qZowJITCeCb1/A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bullet-list@2.27.1': - resolution: {integrity: sha512-5FmnfXkJ76wN4EbJNzBhAlmQxho8yEMIJLchTGmXdsD/n/tsyVVtewnQYaIOj/Z7naaGySTGDmjVtLgTuQ+Sxw==} + '@tiptap/extension-bullet-list@2.27.2': + resolution: {integrity: sha512-gmFuKi97u5f8uFc/GQs+zmezjiulZmFiDYTh3trVoLRoc2SAHOjGEB7qxdx7dsqmMN7gwiAWAEVurLKIi1lnnw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-code-block@2.27.1': - resolution: {integrity: sha512-wCI5VIOfSAdkenCWFvh4m8FFCJ51EOK+CUmOC/PWUjyo2Dgn8QC8HMi015q8XF7886T0KvYVVoqxmxJSUDAYNg==} + '@tiptap/extension-code-block@2.27.2': + resolution: {integrity: sha512-KgvdQHS4jXr79aU3wZOGBIZYYl9vCB7uDEuRFV4so2rYrfmiYMw3T8bTnlNEEGe4RUeAms1i4fdwwvQp9nR1Dw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.27.1': - resolution: {integrity: sha512-i65wUGJevzBTIIUBHBc1ggVa27bgemvGl/tY1/89fEuS/0Xmre+OQjw8rCtSLevoHSiYYLgLRlvjtUSUhE4kgg==} + '@tiptap/extension-code@2.27.2': + resolution: {integrity: sha512-7X9AgwqiIGXoZX7uvdHQsGsjILnN/JaEVtqfXZnPECzKGaWHeK/Ao4sYvIIIffsyZJA8k5DC7ny2/0sAgr2TuA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-document@2.27.1': - resolution: {integrity: sha512-NtJzJY7Q/6XWjpOm5OXKrnEaofrcc1XOTYlo/SaTwl8k2bZo918Vl0IDBWhPVDsUN7kx767uHwbtuQZ+9I82hA==} + '@tiptap/extension-document@2.27.2': + resolution: {integrity: sha512-CFhAYsPnyYnosDC4639sCJnBUnYH4Cat9qH5NZWHVvdgtDwu8GZgZn2eSzaKSYXWH1vJ9DSlCK+7UyC3SNXIBA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.27.1': - resolution: {integrity: sha512-3MBQRGHHZ0by3OT0CWbLKS7J3PH9PpobrXjmIR7kr0nde7+bHqxXiVNuuIf501oKU9rnEUSedipSHkLYGkmfsA==} + '@tiptap/extension-dropcursor@2.27.2': + resolution: {integrity: sha512-oEu/OrktNoQXq1x29NnH/GOIzQZm8ieTQl3FK27nxfBPA89cNoH4mFEUmBL5/OFIENIjiYG3qWpg6voIqzswNw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.27.1': - resolution: {integrity: sha512-A9e1jr+jGhDWzNSXtIO6PYVYhf5j/udjbZwMja+wCE/3KvZU9V3IrnGKz1xNW+2Q2BDOe1QO7j5uVL9ElR6nTA==} + '@tiptap/extension-gapcursor@2.27.2': + resolution: {integrity: sha512-/c9VF1HBxj+AP54XGVgCmD9bEGYc5w5OofYCFQgM7l7PB1J00A4vOke0oPkHJnqnOOyPlFaxO/7N6l3XwFcnKA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.27.1': - resolution: {integrity: sha512-W4hHa4Io6QCTwpyTlN6UAvqMIQ7t56kIUByZhyY9EWrg/+JpbfpxE1kXFLPB4ZGgwBknFOw+e4bJ1j3oAbTJFw==} + '@tiptap/extension-hard-break@2.27.2': + resolution: {integrity: sha512-kSRVGKlCYK6AGR0h8xRkk0WOFGXHIIndod3GKgWU49APuIGDiXd8sziXsSlniUsWmqgDmDXcNnSzPcV7AQ8YNg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.27.1': - resolution: {integrity: sha512-6xoC7igZlW1EmnQ5WVH9IL7P1nCQb3bBUaIDLvk7LbweEogcTUECI4Xg1vxMOVmj9tlDe1I4BsgfcKpB5KEsZw==} + '@tiptap/extension-heading@2.27.2': + resolution: {integrity: sha512-iM3yeRWuuQR/IRQ1djwNooJGfn9Jts9zF43qZIUf+U2NY8IlvdNsk2wTOdBgh6E0CamrStPxYGuln3ZS4fuglw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.27.1': - resolution: {integrity: sha512-K8PHC9gegSAt0wzSlsd4aUpoEyIJYOmVVeyniHr1P1mIblW1KYEDbRGbDlrLALTyUEfMcBhdIm8zrB9X2Nihvg==} + '@tiptap/extension-history@2.27.2': + resolution: {integrity: sha512-+hSyqERoFNTWPiZx4/FCyZ/0eFqB9fuMdTB4AC/q9iwu3RNWAQtlsJg5230bf/qmyO6bZxRUc0k8p4hrV6ybAw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.27.1': - resolution: {integrity: sha512-WxXWGEEsqDmGIF2o9av+3r9Qje4CKrqrpeQY6aRO5bxvWX9AabQCfasepayBok6uwtvNzh3Xpsn9zbbSk09dNA==} + '@tiptap/extension-horizontal-rule@2.27.2': + resolution: {integrity: sha512-WGWUSgX+jCsbtf9Y9OCUUgRZYuwjVoieW5n6mAUohJ9/6gc6sGIOrUpBShf+HHo6WD+gtQjRd+PssmX3NPWMpg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-italic@2.27.1': - resolution: {integrity: sha512-rcm0GyniWW0UhcNI9+1eIK64GqWQLyIIrWGINslvqSUoBc+WkfocLvv4CMpRkzKlfsAxwVIBuH2eLxHKDtAREA==} + '@tiptap/extension-italic@2.27.2': + resolution: {integrity: sha512-1OFsw2SZqfaqx5Fa5v90iNlPRcqyt+lVSjBwTDzuPxTPFY4Q0mL89mKgkq2gVHYNCiaRkXvFLDxaSvBWbmthgg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.27.1': - resolution: {integrity: sha512-cCwWPZsnVh9MXnGOqSIRXPPuUixRDK8eMN2TvqwbxUBb1TU7b/HtNvfMU4tAOqAuMRJ0aJkFuf3eB0Gi8LVb1g==} + '@tiptap/extension-link@2.27.2': + resolution: {integrity: sha512-bnP61qkr0Kj9Cgnop1hxn2zbOCBzNtmawxr92bVTOE31fJv6FhtCnQiD6tuPQVGMYhcmAj7eihtvuEMFfqEPcQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.27.1': - resolution: {integrity: sha512-dtsxvtzxfwOJP6dKGf0vb2MJAoDF2NxoiWzpq0XTvo7NGGYUHfuHjX07Zp0dYqb4seaDXjwsi5BIQUOp3+WMFQ==} + '@tiptap/extension-list-item@2.27.2': + resolution: {integrity: sha512-eJNee7IEGXMnmygM5SdMGDC8m/lMWmwNGf9fPCK6xk0NxuQRgmZHL6uApKcdH6gyNcRPHCqvTTkhEP7pbny/fg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.27.1': - resolution: {integrity: sha512-U1/sWxc2TciozQsZjH35temyidYUjvroHj3PUPzPyh19w2fwKh1NSbFybWuoYs6jS3XnMSwnM2vF52tOwvfEmA==} + '@tiptap/extension-ordered-list@2.27.2': + resolution: {integrity: sha512-M7A4tLGJcLPYdLC4CI2Gwl8LOrENQW59u3cMVa+KkwG1hzSJyPsbDpa1DI6oXPC2WtYiTf22zrbq3gVvH+KA2w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-paragraph@2.27.1': - resolution: {integrity: sha512-R3QdrHcUdFAsdsn2UAIvhY0yWyHjqGyP/Rv8RRdN0OyFiTKtwTPqreKMHKJOflgX4sMJl/OpHTpNG1Kaf7Lo2A==} + '@tiptap/extension-paragraph@2.27.2': + resolution: {integrity: sha512-elYVn2wHJJ+zB9LESENWOAfI4TNT0jqEN34sMA/hCtA4im1ZG2DdLHwkHIshj/c4H0dzQhmsS/YmNC5Vbqab/A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.27.1': - resolution: {integrity: sha512-S9I//K8KPgfFTC5I5lorClzXk0g4lrAv9y5qHzHO5EOWt7AFl0YTg2oN8NKSIBK4bHRnPIrjJJKv+dDFnUp5jQ==} + '@tiptap/extension-strike@2.27.2': + resolution: {integrity: sha512-HHIjhafLhS2lHgfAsCwC1okqMsQzR4/mkGDm4M583Yftyjri1TNA7lzhzXWRFWiiMfJxKtdjHjUAQaHuteRTZw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-align@2.27.1': - resolution: {integrity: sha512-D7dLPk7y5mDn9ZNANQ4K2gCq4vy+Emm5AdeWOGzNeqJsYrBotiQYXd9rb1QYjdup2kzAoKduMTUXV92ujo5cEg==} + '@tiptap/extension-text-align@2.27.2': + resolution: {integrity: sha512-0Pyks6Hu+Q/+9+5/osoSv0SP6jIerdWMYbi13aaZLsJoj3lBj5WNaE11JtAwSFN5sx0IbqhDSlp1zkvRnzgZ8g==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.27.1': - resolution: {integrity: sha512-NagQ9qLk0Ril83gfrk+C65SvTqPjL3WVnLF2arsEVnCrxcx3uDOvdJW67f/K5HEwEHsoqJ4Zq9Irco/koXrOXA==} + '@tiptap/extension-text-style@2.27.2': + resolution: {integrity: sha512-Omk+uxjJLyEY69KStpCw5fA9asvV+MGcAX2HOxyISDFoLaL49TMrNjhGAuz09P1L1b0KGXo4ml7Q3v/Lfy4WPA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.27.1': - resolution: {integrity: sha512-a4GCT+GZ9tUwl82F4CEum9/+WsuW0/De9Be/NqrMmi7eNfAwbUTbLCTFU0gEvv25WMHCoUzaeNk/qGmzeVPJ1Q==} + '@tiptap/extension-text@2.27.2': + resolution: {integrity: sha512-Xk7nYcigljAY0GO9hAQpZ65ZCxqOqaAlTPDFcKerXmlkQZP/8ndx95OgUb1Xf63kmPOh3xypurGS2is3v0MXSA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-typography@2.27.1': - resolution: {integrity: sha512-jAZU5IuWH9CtZlolQ1gRhV+bT75s19SXjadQwkk18gMMiapcaIVVTxUDWY6ycv9ge4cjRoaP3lqBviW3cGqhOA==} + '@tiptap/extension-typography@2.27.2': + resolution: {integrity: sha512-NSyqDa8PlAZoVRfTWQuxueTZ6ftOD72EV7UKVpftf3C+Heme727mvwl1YHMnagOlqVoxBhFOrl9CnSs/q5uayQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.27.1': - resolution: {integrity: sha512-fPTmfJFAQWg1O/os1pYSPVdtvly6eW/w5sDofG7pre+bdQUN+8s1cZYelSuj/ltNVioRaB2Ws7tvNgnHL0aAJQ==} + '@tiptap/extension-underline@2.27.2': + resolution: {integrity: sha512-gPOsbAcw1S07ezpAISwoO8f0RxpjcSH7VsHEFDVuXm4ODE32nhvSinvHQjv2icRLOXev+bnA7oIBu7Oy859gWQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.27.1': - resolution: {integrity: sha512-ijKo3+kIjALthYsnBmkRXAuw2Tswd9gd7BUR5OMfIcjGp8v576vKxOxrRfuYiUM78GPt//P0sVc1WV82H5N0PQ==} + '@tiptap/pm@2.27.2': + resolution: {integrity: sha512-kaEg7BfiJPDQMKbjVIzEPO3wlcA+pZb2tlcK9gPrdDnEFaec2QTF1sXz2ak2IIb2curvnIrQ4yrfHgLlVA72wA==} - '@tiptap/starter-kit@2.27.1': - resolution: {integrity: sha512-uQQlP0Nmn9eq19qm8YoOeloEfmcGbPpB1cujq54Q6nPgxaBozR7rE7tXbFTinxRW2+Hr7XyNWhpjB7DMNkdU2Q==} + '@tiptap/starter-kit@2.27.2': + resolution: {integrity: sha512-bb0gJvPoDuyRUQ/iuN52j1//EtWWttw+RXAv1uJxfR0uKf8X7uAqzaOOgwjknoCIDC97+1YHwpGdnRjpDkOBxw==} '@tokenizer/inflate@0.4.1': resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} @@ -1636,11 +1999,17 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@25.0.3': - resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} + '@types/node@22.19.5': + resolution: {integrity: sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==} + + '@types/node@25.0.6': + resolution: {integrity: sha512-NNu0sjyNxpoiW3YuVFfNz7mxSQ+S4X2G28uqg2s+CzoqoQjLPsWSbsFFyztIAqt2vb8kfEAsJNepMGPTxFDx3Q==} '@types/ping@0.4.4': resolution: {integrity: sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==} @@ -1699,6 +2068,9 @@ packages: '@types/which@3.0.4': resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -1735,6 +2107,10 @@ packages: resolution: {integrity: sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=} engines: {node: '>=0.10.0'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1922,6 +2298,9 @@ packages: character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -1939,6 +2318,10 @@ packages: resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=} engines: {node: '>=4'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2227,6 +2610,10 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2278,8 +2665,8 @@ packages: resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} engines: {node: '>=18'} - file-type@21.1.1: - resolution: {integrity: sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg==} + file-type@21.3.0: + resolution: {integrity: sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==} engines: {node: '>=20'} finalhandler@2.1.1: @@ -2481,6 +2868,10 @@ packages: ibantools@4.5.1: resolution: {integrity: sha512-DfKQpLlFq9yEUIEnFuCJzss3XavD7iHZTU5PyqXiAJ+rmaMp+NFP3hboumHKuK8nZjuOJg93WemTzcQ5b9jOZA==} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} @@ -2501,6 +2892,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + inquirer@11.1.0: + resolution: {integrity: sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==} + engines: {node: '>=18'} + ip-address@10.1.0: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} @@ -2961,6 +3356,10 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + nanoid@4.0.2: resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} engines: {node: ^14 || ^16 || >=18} @@ -2993,8 +3392,8 @@ packages: resolution: {integrity: sha512-ff4jKqMI8Xl50/4Mms/9jPobzAV/UK+kXG2XJ/7AqOmxIx8mqfqTIHYxuAnEgJ2AQeBbLnlbmZ5+38Y9A0w/YA==} engines: {node: '>=12'} - normalize-url@8.1.0: - resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} engines: {node: '>=14.16'} object-assign@4.1.1: @@ -3030,6 +3429,10 @@ packages: orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + os-tmpdir@1.0.2: + resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} + engines: {node: '>=0.10.0'} + p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -3209,8 +3612,8 @@ packages: prosemirror-state@1.4.4: resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} - prosemirror-tables@1.8.3: - resolution: {integrity: sha512-wbqCR/RlRPRe41a4LFtmhKElzBEfBTdtAYWNIGHM6X2e24NN/MTNUKyXjjphfAfdQce37Kh/5yf765mLPYDe7Q==} + prosemirror-tables@1.8.5: + resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} prosemirror-trailing-node@3.0.0: resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} @@ -3372,6 +3775,10 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -3567,6 +3974,10 @@ packages: tiny-worker@2.3.0: resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -3575,6 +3986,10 @@ packages: resolution: {integrity: sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==} engines: {node: '>=14.16'} + token-types@6.1.2: + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} + engines: {node: '>=14.16'} + tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -3610,6 +4025,10 @@ packages: turndown@7.2.2: resolution: {integrity: sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -3642,6 +4061,9 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -3726,6 +4148,10 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3801,6 +4227,10 @@ packages: resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} engines: {node: '>=12'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -3873,13 +4303,13 @@ snapshots: - utf-8-validate - vue - '@api.global/typedserver@7.11.1(@tiptap/pm@2.27.1)': + '@api.global/typedserver@7.11.1(@tiptap/pm@2.27.2)': dependencies: '@api.global/typedrequest': 3.2.5 '@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedsocket': 4.1.0(@push.rocks/smartserve@1.4.0) '@cloudflare/workers-types': 4.20251211.0 - '@design.estate/dees-catalog': 3.33.0(@tiptap/pm@2.27.1) + '@design.estate/dees-catalog': 3.34.1(@tiptap/pm@2.27.2) '@design.estate/dees-comms': 1.0.30 '@push.rocks/lik': 6.2.2 '@push.rocks/smartdelay': 3.0.5 @@ -4059,6 +4489,66 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-s3@3.966.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.966.0 + '@aws-sdk/credential-provider-node': 3.966.0 + '@aws-sdk/middleware-bucket-endpoint': 3.966.0 + '@aws-sdk/middleware-expect-continue': 3.965.0 + '@aws-sdk/middleware-flexible-checksums': 3.966.0 + '@aws-sdk/middleware-host-header': 3.965.0 + '@aws-sdk/middleware-location-constraint': 3.965.0 + '@aws-sdk/middleware-logger': 3.965.0 + '@aws-sdk/middleware-recursion-detection': 3.965.0 + '@aws-sdk/middleware-sdk-s3': 3.966.0 + '@aws-sdk/middleware-ssec': 3.965.0 + '@aws-sdk/middleware-user-agent': 3.966.0 + '@aws-sdk/region-config-resolver': 3.965.0 + '@aws-sdk/signature-v4-multi-region': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-endpoints': 3.965.0 + '@aws-sdk/util-user-agent-browser': 3.965.0 + '@aws-sdk/util-user-agent-node': 3.966.0 + '@smithy/config-resolver': 4.4.5 + '@smithy/core': 3.20.2 + '@smithy/eventstream-serde-browser': 4.2.7 + '@smithy/eventstream-serde-config-resolver': 4.3.7 + '@smithy/eventstream-serde-node': 4.2.7 + '@smithy/fetch-http-handler': 5.3.8 + '@smithy/hash-blob-browser': 4.2.8 + '@smithy/hash-node': 4.2.7 + '@smithy/hash-stream-node': 4.2.7 + '@smithy/invalid-dependency': 4.2.7 + '@smithy/md5-js': 4.2.7 + '@smithy/middleware-content-length': 4.2.7 + '@smithy/middleware-endpoint': 4.4.3 + '@smithy/middleware-retry': 4.4.19 + '@smithy/middleware-serde': 4.2.8 + '@smithy/middleware-stack': 4.2.7 + '@smithy/node-config-provider': 4.3.7 + '@smithy/node-http-handler': 4.4.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.18 + '@smithy/util-defaults-mode-node': 4.2.21 + '@smithy/util-endpoints': 3.2.7 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-retry': 4.2.7 + '@smithy/util-stream': 4.5.8 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.7 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.946.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -4102,6 +4592,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.966.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.966.0 + '@aws-sdk/middleware-host-header': 3.965.0 + '@aws-sdk/middleware-logger': 3.965.0 + '@aws-sdk/middleware-recursion-detection': 3.965.0 + '@aws-sdk/middleware-user-agent': 3.966.0 + '@aws-sdk/region-config-resolver': 3.965.0 + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-endpoints': 3.965.0 + '@aws-sdk/util-user-agent-browser': 3.965.0 + '@aws-sdk/util-user-agent-node': 3.966.0 + '@smithy/config-resolver': 4.4.5 + '@smithy/core': 3.20.2 + '@smithy/fetch-http-handler': 5.3.8 + '@smithy/hash-node': 4.2.7 + '@smithy/invalid-dependency': 4.2.7 + '@smithy/middleware-content-length': 4.2.7 + '@smithy/middleware-endpoint': 4.4.3 + '@smithy/middleware-retry': 4.4.19 + '@smithy/middleware-serde': 4.2.8 + '@smithy/middleware-stack': 4.2.7 + '@smithy/node-config-provider': 4.3.7 + '@smithy/node-http-handler': 4.4.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.18 + '@smithy/util-defaults-mode-node': 4.2.21 + '@smithy/util-endpoints': 3.2.7 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-retry': 4.2.7 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.946.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4118,6 +4651,27 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/core@3.966.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@aws-sdk/xml-builder': 3.965.0 + '@smithy/core': 3.20.2 + '@smithy/node-config-provider': 4.3.7 + '@smithy/property-provider': 4.2.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/signature-v4': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/crc64-nvme@3.965.0': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4126,6 +4680,14 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4139,6 +4701,19 @@ snapshots: '@smithy/util-stream': 4.5.6 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/fetch-http-handler': 5.3.8 + '@smithy/node-http-handler': 4.4.7 + '@smithy/property-provider': 4.2.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/util-stream': 4.5.8 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4158,6 +4733,25 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/credential-provider-env': 3.966.0 + '@aws-sdk/credential-provider-http': 3.966.0 + '@aws-sdk/credential-provider-login': 3.966.0 + '@aws-sdk/credential-provider-process': 3.966.0 + '@aws-sdk/credential-provider-sso': 3.966.0 + '@aws-sdk/credential-provider-web-identity': 3.966.0 + '@aws-sdk/nested-clients': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/credential-provider-imds': 4.2.7 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-login@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4171,6 +4765,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-login@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/nested-clients': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.946.0': dependencies: '@aws-sdk/credential-provider-env': 3.946.0 @@ -4188,6 +4795,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.966.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.966.0 + '@aws-sdk/credential-provider-http': 3.966.0 + '@aws-sdk/credential-provider-ini': 3.966.0 + '@aws-sdk/credential-provider-process': 3.966.0 + '@aws-sdk/credential-provider-sso': 3.966.0 + '@aws-sdk/credential-provider-web-identity': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/credential-provider-imds': 4.2.7 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4197,6 +4821,15 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.946.0': dependencies: '@aws-sdk/client-sso': 3.946.0 @@ -4210,6 +4843,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.966.0': + dependencies: + '@aws-sdk/client-sso': 3.966.0 + '@aws-sdk/core': 3.966.0 + '@aws-sdk/token-providers': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4222,6 +4868,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/nested-clients': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/middleware-bucket-endpoint@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4232,6 +4890,16 @@ snapshots: '@smithy/util-config-provider': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-bucket-endpoint@3.966.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-arn-parser': 3.966.0 + '@smithy/node-config-provider': 4.3.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-config-provider': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-expect-continue@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4239,6 +4907,13 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-expect-continue@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-flexible-checksums@3.946.0': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -4255,6 +4930,23 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-flexible-checksums@3.966.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.966.0 + '@aws-sdk/crc64-nvme': 3.965.0 + '@aws-sdk/types': 3.965.0 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/node-config-provider': 4.3.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-stream': 4.5.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4262,18 +4954,37 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4282,6 +4993,14 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@aws/lambda-invoke-store': 0.2.3 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4299,12 +5018,35 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-arn-parser': 3.966.0 + '@smithy/core': 3.20.2 + '@smithy/node-config-provider': 4.3.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/signature-v4': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-stream': 4.5.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-ssec@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-ssec@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4315,6 +5057,16 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-endpoints': 3.965.0 + '@smithy/core': 3.20.2 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.946.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -4358,6 +5110,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.966.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.966.0 + '@aws-sdk/middleware-host-header': 3.965.0 + '@aws-sdk/middleware-logger': 3.965.0 + '@aws-sdk/middleware-recursion-detection': 3.965.0 + '@aws-sdk/middleware-user-agent': 3.966.0 + '@aws-sdk/region-config-resolver': 3.965.0 + '@aws-sdk/types': 3.965.0 + '@aws-sdk/util-endpoints': 3.965.0 + '@aws-sdk/util-user-agent-browser': 3.965.0 + '@aws-sdk/util-user-agent-node': 3.966.0 + '@smithy/config-resolver': 4.4.5 + '@smithy/core': 3.20.2 + '@smithy/fetch-http-handler': 5.3.8 + '@smithy/hash-node': 4.2.7 + '@smithy/invalid-dependency': 4.2.7 + '@smithy/middleware-content-length': 4.2.7 + '@smithy/middleware-endpoint': 4.4.3 + '@smithy/middleware-retry': 4.4.19 + '@smithy/middleware-serde': 4.2.8 + '@smithy/middleware-stack': 4.2.7 + '@smithy/node-config-provider': 4.3.7 + '@smithy/node-http-handler': 4.4.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.18 + '@smithy/util-defaults-mode-node': 4.2.21 + '@smithy/util-endpoints': 3.2.7 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-retry': 4.2.7 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4366,6 +5161,14 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/config-resolver': 4.4.5 + '@smithy/node-config-provider': 4.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.946.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.946.0 @@ -4375,6 +5178,15 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.966.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/protocol-http': 5.3.7 + '@smithy/signature-v4': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.946.0': dependencies: '@aws-sdk/core': 3.946.0 @@ -4387,15 +5199,36 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.966.0': + dependencies: + '@aws-sdk/core': 3.966.0 + '@aws-sdk/nested-clients': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.936.0': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/types@3.965.0': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.893.0': dependencies: tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.966.0': + dependencies: + tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -4404,6 +5237,14 @@ snapshots: '@smithy/util-endpoints': 3.2.5 tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + '@smithy/util-endpoints': 3.2.7 + tslib: 2.8.1 + '@aws-sdk/util-locate-window@3.893.0': dependencies: tslib: 2.8.1 @@ -4415,6 +5256,13 @@ snapshots: bowser: 2.13.1 tslib: 2.8.1 + '@aws-sdk/util-user-agent-browser@3.965.0': + dependencies: + '@aws-sdk/types': 3.965.0 + '@smithy/types': 4.11.0 + bowser: 2.13.1 + tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.946.0': dependencies: '@aws-sdk/middleware-user-agent': 3.946.0 @@ -4423,14 +5271,30 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.966.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.966.0 + '@aws-sdk/types': 3.965.0 + '@smithy/node-config-provider': 4.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.930.0': dependencies: '@smithy/types': 4.9.0 fast-xml-parser: 5.2.5 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.965.0': + dependencies: + '@smithy/types': 4.11.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.2': {} + '@aws/lambda-invoke-store@0.2.3': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -4443,6 +5307,8 @@ snapshots: '@borewit/text-codec@0.1.1': {} + '@borewit/text-codec@0.2.1': {} + '@cfworker/json-schema@4.1.1': {} '@cloudflare/workers-types@4.20251211.0': {} @@ -4451,10 +5317,11 @@ snapshots: dependencies: '@api.global/typedrequest-interfaces': 3.0.19 - '@design.estate/dees-catalog@3.33.0(@tiptap/pm@2.27.1)': + '@design.estate/dees-catalog@3.34.1(@tiptap/pm@2.27.2)': dependencies: '@design.estate/dees-domtools': 2.3.7 '@design.estate/dees-element': 2.1.5 + '@design.estate/dees-wcctools': 3.7.1 '@fortawesome/fontawesome-svg-core': 7.1.0 '@fortawesome/free-brands-svg-icons': 7.1.0 '@fortawesome/free-regular-svg-icons': 7.1.0 @@ -4463,12 +5330,12 @@ snapshots: '@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartstring': 4.1.0 '@tempfix/webcontainer__api': 1.6.1 - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/extension-link': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-text-align': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-typography': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-underline': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/starter-kit': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/extension-link': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-text-align': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-typography': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-underline': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/starter-kit': 2.27.2 '@tsclass/tsclass': 9.3.0 apexcharts: 5.3.6 highlight.js: 11.11.1 @@ -4654,11 +5521,11 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 7.1.0 - '@git.zone/tsbuild@4.0.2': + '@git.zone/tsbuild@4.1.0': dependencies: '@git.zone/tspublish': 1.11.0 '@push.rocks/early': 4.0.4 - '@push.rocks/smartcli': 4.0.19 + '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 '@push.rocks/smartfs': 1.3.1 @@ -4675,12 +5542,14 @@ snapshots: - supports-color - vue - '@git.zone/tsbundle@2.6.3': + '@git.zone/tsbundle@2.8.1': dependencies: '@push.rocks/early': 4.0.4 - '@push.rocks/smartcli': 4.0.19 + '@push.rocks/npmextra': 5.3.3 + '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfs': 1.2.0 + '@push.rocks/smartfs': 1.3.1 + '@push.rocks/smartinteract': 2.0.16 '@push.rocks/smartlog': 3.1.10 '@push.rocks/smartlog-destination-local': 9.0.2 '@push.rocks/smartpath': 6.0.0 @@ -4693,14 +5562,17 @@ snapshots: rolldown: 1.0.0-beta.52 typescript: 5.9.3 transitivePeerDependencies: + - '@nuxt/kit' - '@swc/helpers' + - react - supports-color + - vue '@git.zone/tspublish@1.11.0': dependencies: '@push.rocks/consolecolor': 2.0.3 '@push.rocks/npmextra': 5.3.3 - '@push.rocks/smartcli': 4.0.19 + '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 13.1.2 '@push.rocks/smartfs': 1.3.1 @@ -4727,7 +5599,7 @@ snapshots: '@git.zone/tstest@3.1.4(@push.rocks/smartserve@1.4.0)(socks@2.8.7)(typescript@5.9.3)': dependencies: '@api.global/typedserver': 3.0.80(@push.rocks/smartserve@1.4.0) - '@git.zone/tsbundle': 2.6.3 + '@git.zone/tsbundle': 2.8.1 '@git.zone/tsrun': 2.0.0 '@push.rocks/consolecolor': 2.0.3 '@push.rocks/qenv': 6.1.3 @@ -4773,10 +5645,10 @@ snapshots: - utf-8-validate - vue - '@git.zone/tswatch@2.3.13(@tiptap/pm@2.27.1)': + '@git.zone/tswatch@2.3.13(@tiptap/pm@2.27.2)': dependencies: - '@api.global/typedserver': 7.11.1(@tiptap/pm@2.27.1) - '@git.zone/tsbundle': 2.6.3 + '@api.global/typedserver': 7.11.1(@tiptap/pm@2.27.2) + '@git.zone/tsbundle': 2.8.1 '@git.zone/tsrun': 2.0.0 '@push.rocks/early': 4.0.4 '@push.rocks/lik': 6.2.2 @@ -4802,6 +5674,102 @@ snapshots: dependencies: happy-dom: 15.11.7 + '@inquirer/checkbox@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 2.0.0 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.3 + + '@inquirer/confirm@4.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.15 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.19.5 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + + '@inquirer/editor@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + external-editor: 3.1.0 + + '@inquirer/expand@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + yoctocolors-cjs: 2.1.3 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + + '@inquirer/number@2.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + + '@inquirer/password@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + ansi-escapes: 4.3.2 + + '@inquirer/prompts@6.0.1': + dependencies: + '@inquirer/checkbox': 3.0.1 + '@inquirer/confirm': 4.0.1 + '@inquirer/editor': 3.0.1 + '@inquirer/expand': 3.0.1 + '@inquirer/input': 3.0.1 + '@inquirer/number': 2.0.1 + '@inquirer/password': 3.0.1 + '@inquirer/rawlist': 3.0.1 + '@inquirer/search': 2.0.1 + '@inquirer/select': 3.0.1 + + '@inquirer/rawlist@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 2.0.0 + yoctocolors-cjs: 2.1.3 + + '@inquirer/search@2.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 2.0.0 + yoctocolors-cjs: 2.1.3 + + '@inquirer/select@3.0.1': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 2.0.0 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.3 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -4856,48 +5824,52 @@ snapshots: dependencies: sparse-bitfield: 3.0.3 - '@napi-rs/canvas-android-arm64@0.1.84': + '@napi-rs/canvas-android-arm64@0.1.88': optional: true - '@napi-rs/canvas-darwin-arm64@0.1.84': + '@napi-rs/canvas-darwin-arm64@0.1.88': optional: true - '@napi-rs/canvas-darwin-x64@0.1.84': + '@napi-rs/canvas-darwin-x64@0.1.88': optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.84': + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.88': optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.84': + '@napi-rs/canvas-linux-arm64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.84': + '@napi-rs/canvas-linux-arm64-musl@0.1.88': optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.84': + '@napi-rs/canvas-linux-riscv64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.84': + '@napi-rs/canvas-linux-x64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.84': + '@napi-rs/canvas-linux-x64-musl@0.1.88': optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.84': + '@napi-rs/canvas-win32-arm64-msvc@0.1.88': optional: true - '@napi-rs/canvas@0.1.84': + '@napi-rs/canvas-win32-x64-msvc@0.1.88': + optional: true + + '@napi-rs/canvas@0.1.88': optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.84 - '@napi-rs/canvas-darwin-arm64': 0.1.84 - '@napi-rs/canvas-darwin-x64': 0.1.84 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.84 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.84 - '@napi-rs/canvas-linux-arm64-musl': 0.1.84 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.84 - '@napi-rs/canvas-linux-x64-gnu': 0.1.84 - '@napi-rs/canvas-linux-x64-musl': 0.1.84 - '@napi-rs/canvas-win32-x64-msvc': 0.1.84 + '@napi-rs/canvas-android-arm64': 0.1.88 + '@napi-rs/canvas-darwin-arm64': 0.1.88 + '@napi-rs/canvas-darwin-x64': 0.1.88 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.88 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.88 + '@napi-rs/canvas-linux-arm64-musl': 0.1.88 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.88 + '@napi-rs/canvas-linux-x64-gnu': 0.1.88 + '@napi-rs/canvas-linux-x64-musl': 0.1.88 + '@napi-rs/canvas-win32-arm64-msvc': 0.1.88 + '@napi-rs/canvas-win32-x64-msvc': 0.1.88 optional: true '@napi-rs/wasm-runtime@1.0.7': @@ -5156,7 +6128,7 @@ snapshots: '@push.rocks/smarturl': 3.1.0 '@types/tar-stream': 3.1.4 fflate: 0.8.2 - file-type: 21.1.1 + file-type: 21.3.0 tar-stream: 3.1.7 transitivePeerDependencies: - bare-abort-controller @@ -5180,7 +6152,7 @@ snapshots: '@push.rocks/smartbucket@3.3.10': dependencies: - '@aws-sdk/client-s3': 3.946.0 + '@aws-sdk/client-s3': 3.966.0 '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpromise': 4.2.3 @@ -5236,6 +6208,15 @@ snapshots: '@push.rocks/smartrx': 3.0.10 yargs-parser: 22.0.0 + '@push.rocks/smartcli@4.0.20': + dependencies: + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartlog': 3.1.10 + '@push.rocks/smartobject': 1.0.12 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + yargs-parser: 22.0.0 + '@push.rocks/smartclickhouse@2.0.17': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -5434,6 +6415,13 @@ snapshots: '@push.rocks/smarti18n@1.0.4': {} + '@push.rocks/smartinteract@2.0.16': + dependencies: + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartobject': 1.0.12 + '@push.rocks/smartpromise': 4.2.3 + inquirer: 11.1.0 + '@push.rocks/smartjson@5.2.0': dependencies: '@push.rocks/smartenv': 5.0.13 @@ -6017,6 +7005,11 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/abort-controller@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/chunked-blob-reader-native@4.2.1': dependencies: '@smithy/util-base64': 4.3.0 @@ -6035,6 +7028,15 @@ snapshots: '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 + '@smithy/config-resolver@4.4.5': + dependencies: + '@smithy/node-config-provider': 4.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.7 + '@smithy/util-middleware': 4.2.7 + tslib: 2.8.1 + '@smithy/core@3.18.7': dependencies: '@smithy/middleware-serde': 4.2.6 @@ -6048,6 +7050,19 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 + '@smithy/core@3.20.2': + dependencies: + '@smithy/middleware-serde': 4.2.8 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-stream': 4.5.8 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/credential-provider-imds@4.2.5': dependencies: '@smithy/node-config-provider': 4.3.5 @@ -6056,6 +7071,14 @@ snapshots: '@smithy/url-parser': 4.2.5 tslib: 2.8.1 + '@smithy/credential-provider-imds@4.2.7': + dependencies: + '@smithy/node-config-provider': 4.3.7 + '@smithy/property-provider': 4.2.7 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + tslib: 2.8.1 + '@smithy/eventstream-codec@4.2.5': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -6063,29 +7086,59 @@ snapshots: '@smithy/util-hex-encoding': 4.2.0 tslib: 2.8.1 + '@smithy/eventstream-codec@4.2.7': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.11.0 + '@smithy/util-hex-encoding': 4.2.0 + tslib: 2.8.1 + '@smithy/eventstream-serde-browser@4.2.5': dependencies: '@smithy/eventstream-serde-universal': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/eventstream-serde-browser@4.2.7': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/eventstream-serde-config-resolver@4.3.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/eventstream-serde-config-resolver@4.3.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/eventstream-serde-node@4.2.5': dependencies: '@smithy/eventstream-serde-universal': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/eventstream-serde-node@4.2.7': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/eventstream-serde-universal@4.2.5': dependencies: '@smithy/eventstream-codec': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/eventstream-serde-universal@4.2.7': + dependencies: + '@smithy/eventstream-codec': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/fetch-http-handler@5.3.6': dependencies: '@smithy/protocol-http': 5.3.5 @@ -6094,6 +7147,14 @@ snapshots: '@smithy/util-base64': 4.3.0 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.3.8': + dependencies: + '@smithy/protocol-http': 5.3.7 + '@smithy/querystring-builder': 4.2.7 + '@smithy/types': 4.11.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + '@smithy/hash-blob-browser@4.2.6': dependencies: '@smithy/chunked-blob-reader': 5.2.0 @@ -6101,6 +7162,13 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/hash-blob-browser@4.2.8': + dependencies: + '@smithy/chunked-blob-reader': 5.2.0 + '@smithy/chunked-blob-reader-native': 4.2.1 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/hash-node@4.2.5': dependencies: '@smithy/types': 4.9.0 @@ -6108,17 +7176,35 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/hash-node@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/hash-stream-node@4.2.5': dependencies: '@smithy/types': 4.9.0 '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/hash-stream-node@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/invalid-dependency@4.2.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/invalid-dependency@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 @@ -6133,12 +7219,24 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/md5-js@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/middleware-content-length@4.2.5': dependencies: '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/middleware-content-length@4.2.7': + dependencies: + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/middleware-endpoint@4.3.14': dependencies: '@smithy/core': 3.18.7 @@ -6150,6 +7248,17 @@ snapshots: '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 + '@smithy/middleware-endpoint@4.4.3': + dependencies: + '@smithy/core': 3.20.2 + '@smithy/middleware-serde': 4.2.8 + '@smithy/node-config-provider': 4.3.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + '@smithy/url-parser': 4.2.7 + '@smithy/util-middleware': 4.2.7 + tslib: 2.8.1 + '@smithy/middleware-retry@4.4.14': dependencies: '@smithy/node-config-provider': 4.3.5 @@ -6162,17 +7271,40 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 + '@smithy/middleware-retry@4.4.19': + dependencies: + '@smithy/node-config-provider': 4.3.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/service-error-classification': 4.2.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-retry': 4.2.7 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/middleware-serde@4.2.6': dependencies: '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/middleware-serde@4.2.8': + dependencies: + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/middleware-stack@4.2.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/middleware-stack@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/node-config-provider@4.3.5': dependencies: '@smithy/property-provider': 4.2.5 @@ -6180,6 +7312,13 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/node-config-provider@4.3.7': + dependencies: + '@smithy/property-provider': 4.2.7 + '@smithy/shared-ini-file-loader': 4.4.2 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/node-http-handler@4.4.5': dependencies: '@smithy/abort-controller': 4.2.5 @@ -6188,36 +7327,74 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/node-http-handler@4.4.7': + dependencies: + '@smithy/abort-controller': 4.2.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/querystring-builder': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/property-provider@4.2.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/property-provider@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/protocol-http@5.3.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/protocol-http@5.3.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/querystring-builder@4.2.5': dependencies: '@smithy/types': 4.9.0 '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 + '@smithy/querystring-builder@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.8.1 + '@smithy/querystring-parser@4.2.5': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/querystring-parser@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/service-error-classification@4.2.5': dependencies: '@smithy/types': 4.9.0 + '@smithy/service-error-classification@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + '@smithy/shared-ini-file-loader@4.4.0': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/shared-ini-file-loader@4.4.2': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/signature-v4@5.3.5': dependencies: '@smithy/is-array-buffer': 4.2.0 @@ -6229,6 +7406,27 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/signature-v4@5.3.7': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.10.4': + dependencies: + '@smithy/core': 3.20.2 + '@smithy/middleware-endpoint': 4.4.3 + '@smithy/middleware-stack': 4.2.7 + '@smithy/protocol-http': 5.3.7 + '@smithy/types': 4.11.0 + '@smithy/util-stream': 4.5.8 + tslib: 2.8.1 + '@smithy/smithy-client@4.9.10': dependencies: '@smithy/core': 3.18.7 @@ -6239,6 +7437,10 @@ snapshots: '@smithy/util-stream': 4.5.6 tslib: 2.8.1 + '@smithy/types@4.11.0': + dependencies: + tslib: 2.8.1 + '@smithy/types@4.9.0': dependencies: tslib: 2.8.1 @@ -6249,6 +7451,12 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/url-parser@4.2.7': + dependencies: + '@smithy/querystring-parser': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-base64@4.3.0': dependencies: '@smithy/util-buffer-from': 4.2.0 @@ -6284,6 +7492,13 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.3.18': + dependencies: + '@smithy/property-provider': 4.2.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.2.16': dependencies: '@smithy/config-resolver': 4.4.3 @@ -6294,12 +7509,28 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.2.21': + dependencies: + '@smithy/config-resolver': 4.4.5 + '@smithy/credential-provider-imds': 4.2.7 + '@smithy/node-config-provider': 4.3.7 + '@smithy/property-provider': 4.2.7 + '@smithy/smithy-client': 4.10.4 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-endpoints@3.2.5': dependencies: '@smithy/node-config-provider': 4.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-endpoints@3.2.7': + dependencies: + '@smithy/node-config-provider': 4.3.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-hex-encoding@4.2.0': dependencies: tslib: 2.8.1 @@ -6309,12 +7540,23 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-middleware@4.2.7': + dependencies: + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-retry@4.2.5': dependencies: '@smithy/service-error-classification': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-retry@4.2.7': + dependencies: + '@smithy/service-error-classification': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/util-stream@4.5.6': dependencies: '@smithy/fetch-http-handler': 5.3.6 @@ -6326,6 +7568,17 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/util-stream@4.5.8': + dependencies: + '@smithy/fetch-http-handler': 5.3.8 + '@smithy/node-http-handler': 4.4.7 + '@smithy/types': 4.11.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 @@ -6346,6 +7599,12 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@smithy/util-waiter@4.2.7': + dependencies: + '@smithy/abort-controller': 4.2.7 + '@smithy/types': 4.11.0 + tslib: 2.8.1 + '@smithy/uuid@1.1.0': dependencies: tslib: 2.8.1 @@ -6381,110 +7640,110 @@ snapshots: '@tempfix/webcontainer__api@1.6.1': {} - '@tiptap/core@2.27.1(@tiptap/pm@2.27.1)': + '@tiptap/core@2.27.2(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/pm': 2.27.1 + '@tiptap/pm': 2.27.2 - '@tiptap/extension-blockquote@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-blockquote@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-bold@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-bold@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-bullet-list@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-bullet-list@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-code-block@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-code-block@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 - '@tiptap/extension-code@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-code@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-document@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-document@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-dropcursor@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-dropcursor@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 - '@tiptap/extension-gapcursor@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-gapcursor@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 - '@tiptap/extension-hard-break@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-hard-break@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-heading@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-heading@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-history@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-history@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 - '@tiptap/extension-horizontal-rule@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-horizontal-rule@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 - '@tiptap/extension-italic@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-italic@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-link@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)': + '@tiptap/extension-link@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2)': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/pm': 2.27.2 linkifyjs: 4.3.2 - '@tiptap/extension-list-item@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-list-item@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-ordered-list@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-ordered-list@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-paragraph@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-paragraph@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-strike@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-strike@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-text-align@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-text-align@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-text-style@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-text-style@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-text@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-text@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-typography@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-typography@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/extension-underline@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))': + '@tiptap/extension-underline@2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) - '@tiptap/pm@2.27.1': + '@tiptap/pm@2.27.2': dependencies: prosemirror-changeset: 2.3.1 prosemirror-collab: 1.3.1 @@ -6500,39 +7759,39 @@ snapshots: prosemirror-schema-basic: 1.2.4 prosemirror-schema-list: 1.5.1 prosemirror-state: 1.4.4 - prosemirror-tables: 1.8.3 + prosemirror-tables: 1.8.5 prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4) prosemirror-transform: 1.10.5 prosemirror-view: 1.41.4 - '@tiptap/starter-kit@2.27.1': + '@tiptap/starter-kit@2.27.2': dependencies: - '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1) - '@tiptap/extension-blockquote': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-bold': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-bullet-list': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-code': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-code-block': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-document': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-dropcursor': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-gapcursor': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-hard-break': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-heading': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-history': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-horizontal-rule': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1) - '@tiptap/extension-italic': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-list-item': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-ordered-list': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-paragraph': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-strike': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-text': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/extension-text-style': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)) - '@tiptap/pm': 2.27.1 + '@tiptap/core': 2.27.2(@tiptap/pm@2.27.2) + '@tiptap/extension-blockquote': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-bold': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-bullet-list': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-code': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-code-block': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-document': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-dropcursor': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-gapcursor': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-hard-break': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-heading': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-history': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-horizontal-rule': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2))(@tiptap/pm@2.27.2) + '@tiptap/extension-italic': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-list-item': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-ordered-list': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-paragraph': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-strike': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-text': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/extension-text-style': 2.27.2(@tiptap/core@2.27.2(@tiptap/pm@2.27.2)) + '@tiptap/pm': 2.27.2 '@tokenizer/inflate@0.4.1': dependencies: debug: 4.4.3 - token-types: 6.1.1 + token-types: 6.1.2 transitivePeerDependencies: - supports-color @@ -6555,27 +7814,27 @@ snapshots: '@types/bn.js@5.2.0': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/buffer-json@2.0.3': {} '@types/clean-css@4.2.11': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 source-map: 0.6.1 '@types/connect@3.4.38': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/cors@2.8.19': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/debug@4.1.12': dependencies: @@ -6583,7 +7842,7 @@ snapshots: '@types/dns-packet@5.6.5': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/elliptic@6.4.18': dependencies: @@ -6591,7 +7850,7 @@ snapshots: '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -6604,17 +7863,17 @@ snapshots: '@types/from2@2.3.6': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/hast@3.0.4': dependencies: @@ -6636,7 +7895,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/linkify-it@5.0.0': {} @@ -6657,11 +7916,19 @@ snapshots: '@types/ms@2.1.0': {} + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 25.0.6 + '@types/node-forge@1.3.14': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 - '@types/node@25.0.3': + '@types/node@22.19.5': + dependencies: + undici-types: 6.21.0 + + '@types/node@25.0.6': dependencies: undici-types: 7.16.0 @@ -6679,22 +7946,22 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/symbol-tree@3.2.5': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/through2@2.0.41': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/trusted-types@2.0.7': {} @@ -6716,13 +7983,15 @@ snapshots: '@types/which@3.0.4': {} + '@types/wrap-ansi@3.0.0': {} + '@types/ws@8.18.1': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.0.3 + '@types/node': 25.0.6 optional: true '@ungap/structured-clone@1.3.0': {} @@ -6757,6 +8026,10 @@ snapshots: ansi-256-colors@1.1.0: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -6913,7 +8186,7 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.1.0 + normalize-url: 8.1.1 responselike: 3.0.0 call-bind-apply-helpers@1.0.2: @@ -6950,6 +8223,8 @@ snapshots: character-entities@2.0.2: {} + chardet@0.7.0: {} + chokidar@5.0.0: dependencies: readdirp: 5.0.0 @@ -6966,6 +8241,8 @@ snapshots: clean-stack@1.3.0: {} + cli-width@4.1.0: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7146,7 +8423,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.19 - '@types/node': 25.0.3 + '@types/node': 25.0.6 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -7284,6 +8561,12 @@ snapshots: extend@3.0.2: {} + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + extract-zip@2.0.1: dependencies: debug: 4.4.3 @@ -7337,11 +8620,11 @@ snapshots: token-types: 6.1.1 uint8array-extras: 1.5.0 - file-type@21.1.1: + file-type@21.3.0: dependencies: '@tokenizer/inflate': 0.4.1 strtok3: 10.3.4 - token-types: 6.1.1 + token-types: 6.1.2 uint8array-extras: 1.5.0 transitivePeerDependencies: - supports-color @@ -7612,6 +8895,10 @@ snapshots: ibantools@4.5.1: {} + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 @@ -7632,6 +8919,17 @@ snapshots: ini@1.3.8: {} + inquirer@11.1.0: + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/prompts': 6.0.1 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + ansi-escapes: 4.3.2 + mute-stream: 1.0.0 + run-async: 3.0.0 + rxjs: 7.8.2 + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} @@ -8257,6 +9555,8 @@ snapshots: ms@2.1.3: {} + mute-stream@1.0.0: {} + nanoid@4.0.2: {} negotiator@0.6.3: {} @@ -8281,7 +9581,7 @@ snapshots: dependencies: replace-buffer: 1.2.1 - normalize-url@8.1.0: {} + normalize-url@8.1.1: {} object-assign@4.1.1: {} @@ -8309,6 +9609,8 @@ snapshots: orderedmap@2.1.1: {} + os-tmpdir@1.0.2: {} + p-cancelable@3.0.0: {} p-finally@1.0.0: {} @@ -8409,7 +9711,7 @@ snapshots: pdfjs-dist@4.10.38: optionalDependencies: - '@napi-rs/canvas': 0.1.84 + '@napi-rs/canvas': 0.1.88 peek-readable@5.4.2: {} @@ -8512,7 +9814,7 @@ snapshots: prosemirror-transform: 1.10.5 prosemirror-view: 1.41.4 - prosemirror-tables@1.8.3: + prosemirror-tables@1.8.5: dependencies: prosemirror-keymap: 1.2.3 prosemirror-model: 1.25.4 @@ -8762,6 +10064,8 @@ snapshots: transitivePeerDependencies: - supports-color + run-async@3.0.0: {} + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -9038,6 +10342,10 @@ snapshots: dependencies: esm: 3.2.25 + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + toidentifier@1.0.1: {} token-types@6.1.1: @@ -9046,6 +10354,12 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 + token-types@6.1.2: + dependencies: + '@borewit/text-codec': 0.2.1 + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -9077,6 +10391,8 @@ snapshots: dependencies: '@mixmark-io/domino': 2.2.0 + type-fest@0.21.3: {} + type-fest@2.19.0: {} type-fest@4.41.0: {} @@ -9097,6 +10413,8 @@ snapshots: uint8array-extras@1.5.0: {} + undici-types@6.21.0: {} + undici-types@7.16.0: {} unified@11.0.5: @@ -9182,6 +10500,12 @@ snapshots: dependencies: isexe: 3.1.1 + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -9236,6 +10560,8 @@ snapshots: buffer-crc32: 0.2.13 pend: 1.2.0 + yoctocolors-cjs@2.1.3: {} + zod@3.25.76: {} zwitch@2.0.4: {} diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 1fd0059..b4dc90a 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@ecobridge.xyz/catalog', - version: '3.36.1', + version: '3.37.0', description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.' } diff --git a/ts_web/elements/00group-applauncher/eco-applauncher-keyboard/eco-applauncher-keyboard.ts b/ts_web/elements/00group-applauncher/eco-applauncher-keyboard/eco-applauncher-keyboard.ts index 5561050..14a1c2d 100644 --- a/ts_web/elements/00group-applauncher/eco-applauncher-keyboard/eco-applauncher-keyboard.ts +++ b/ts_web/elements/00group-applauncher/eco-applauncher-keyboard/eco-applauncher-keyboard.ts @@ -211,6 +211,10 @@ export class EcoApplauncherKeyboard extends DeesElement { background: ${cssManager.bdTheme('hsl(220 15% 92%)', 'hsl(240 5% 28%)')}; } + .key:focus { + outline: none; + } + .key.special { background: ${cssManager.bdTheme('hsl(220 10% 88%)', 'hsl(240 5% 16%)')}; font-size: 16px; @@ -375,10 +379,12 @@ export class EcoApplauncherKeyboard extends DeesElement { return html`
this.handlePointerDown(e, config)} @pointerup=${(e: PointerEvent) => this.handlePointerUp(e, config)} @pointerleave=${(e: PointerEvent) => this.handlePointerLeave(e, config)} @pointermove=${(e: PointerEvent) => this.handlePointerMove(e, config)} + @mousedown=${(e: MouseEvent) => e.preventDefault()} > ${displayValue}
@@ -418,6 +424,7 @@ export class EcoApplauncherKeyboard extends DeesElement { private handlePointerDown(e: PointerEvent, config: IKeyConfig): void { e.preventDefault(); + e.stopPropagation(); const target = e.currentTarget as HTMLElement; target.setPointerCapture(e.pointerId); @@ -483,6 +490,7 @@ export class EcoApplauncherKeyboard extends DeesElement { private handlePointerUp(e: PointerEvent, config: IKeyConfig): void { e.preventDefault(); + e.stopPropagation(); this.clearLongPressTimer(); this.keyPreview = null; diff --git a/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts index 46beda1..08f5fb9 100644 --- a/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts +++ b/ts_web/elements/00group-applauncher/eco-applauncher/eco-applauncher.ts @@ -644,7 +644,11 @@ export class EcoApplauncher extends DeesElement {
${this.mode === 'login' ? '' : this.renderTopBar()} ${this.renderMainContent()} -
+
e.preventDefault()} + > e.preventDefault()} >
diff --git a/ts_web/elements/eco-provider-frame/eco-provider-frame.demo.ts b/ts_web/elements/eco-provider-frame/eco-provider-frame.demo.ts new file mode 100644 index 0000000..d767a72 --- /dev/null +++ b/ts_web/elements/eco-provider-frame/eco-provider-frame.demo.ts @@ -0,0 +1,46 @@ +import { html } from '@design.estate/dees-element'; + +export const demo = () => html` + +
+
+ The provider frame loads external web apps that implement the ecobridge provider protocol. + In this demo, no provider URL is set, so it shows the loading state. +
+
+ console.log('Provider ready:', e.detail)} + @provider-features-changed=${(e: CustomEvent) => console.log('Features changed:', e.detail)} + @provider-response=${(e: CustomEvent) => console.log('Response:', e.detail)} + @provider-error=${(e: CustomEvent) => console.log('Error:', e.detail)} + > +
+
+`; diff --git a/ts_web/elements/eco-provider-frame/eco-provider-frame.ts b/ts_web/elements/eco-provider-frame/eco-provider-frame.ts new file mode 100644 index 0000000..3188670 --- /dev/null +++ b/ts_web/elements/eco-provider-frame/eco-provider-frame.ts @@ -0,0 +1,502 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, + state, + query, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import type { + IDataProvider, + IProviderMessage, + IEcobridgeMessage, + IProviderReadyPayload, + IProviderResponsePayload, + IProviderDataOfferPayload, + IFeatureChangeRequest, + TProviderFeature, + TProviderStatus, + ISendDataPayload, + IRequestDataPayload, +} from '../interfaces/dataprovider.js'; +import { demo } from './eco-provider-frame.demo.js'; + +// Ensure components are registered +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-provider-frame': EcoProviderFrame; + } +} + +@customElement('eco-provider-frame') +export class EcoProviderFrame extends DeesElement { + public static demo = demo; + public static demoGroup = 'Elements'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + position: relative; + } + + .provider-frame-container { + width: 100%; + height: 100%; + position: relative; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 8%)')}; + border-radius: 8px; + overflow: hidden; + } + + iframe { + width: 100%; + height: 100%; + border: none; + } + + .loading-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 16px; + background: ${cssManager.bdTheme('rgba(255,255,255,0.9)', 'rgba(0,0,0,0.8)')}; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 60%)')}; + z-index: 10; + } + + .loading-overlay dees-icon { + animation: spin 1s linear infinite; + } + + @keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } + } + + .error-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 16px; + background: ${cssManager.bdTheme('rgba(255,255,255,0.95)', 'rgba(0,0,0,0.9)')}; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 70%)')}; + z-index: 10; + padding: 32px; + text-align: center; + } + + .error-overlay .error-icon { + color: hsl(0 72% 50%); + } + + .error-title { + font-size: 16px; + font-weight: 600; + color: hsl(0 72% 50%); + } + + .error-message { + font-size: 14px; + max-width: 400px; + line-height: 1.5; + } + + .retry-button { + margin-top: 8px; + padding: 10px 20px; + font-size: 14px; + font-weight: 500; + background: hsl(217 91% 60%); + color: white; + border: none; + border-radius: 6px; + cursor: pointer; + transition: background 0.15s ease; + } + + .retry-button:hover { + background: hsl(217 91% 55%); + } + + .disconnected-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 12px; + background: ${cssManager.bdTheme('rgba(255,255,255,0.95)', 'rgba(0,0,0,0.9)')}; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + z-index: 10; + } + `, + ]; + + @property({ type: String }) + accessor providerId = ''; + + @property({ type: String }) + accessor providerUrl = ''; + + @property({ type: String }) + accessor providerName = ''; + + @property({ type: Array }) + accessor confirmedFeatures: TProviderFeature[] = []; + + @property({ type: Boolean }) + accessor sandboxed = true; + + @state() + accessor status: TProviderStatus = 'loading'; + + @state() + accessor error: string | null = null; + + @state() + accessor currentFeatures: TProviderFeature[] = []; + + @query('iframe') + accessor iframe: HTMLIFrameElement | null; + + private messageHandler: ((e: MessageEvent) => void) | null = null; + private pendingRequests: Map void; + reject: (error: Error) => void; + timeout: ReturnType; + }> = new Map(); + + async connectedCallback(): Promise { + await super.connectedCallback(); + this.setupMessageListener(); + } + + async disconnectedCallback(): Promise { + await super.disconnectedCallback(); + this.cleanupMessageListener(); + this.clearPendingRequests(); + } + + private setupMessageListener(): void { + this.messageHandler = (event: MessageEvent) => { + this.handleProviderMessage(event); + }; + window.addEventListener('message', this.messageHandler); + } + + private cleanupMessageListener(): void { + if (this.messageHandler) { + window.removeEventListener('message', this.messageHandler); + this.messageHandler = null; + } + } + + private clearPendingRequests(): void { + for (const [requestId, pending] of this.pendingRequests) { + clearTimeout(pending.timeout); + pending.reject(new Error('Provider disconnected')); + } + this.pendingRequests.clear(); + } + + public render(): TemplateResult { + return html` +
+ ${this.providerUrl ? html` + + ` : ''} + ${this.renderOverlay()} +
+ `; + } + + private renderOverlay(): TemplateResult | null { + switch (this.status) { + case 'loading': + return html` +
+ + Loading provider... +
+ `; + case 'error': + return html` +
+ + Connection Error + ${this.error || 'Failed to connect to provider'} + +
+ `; + case 'disconnected': + return html` +
+ + Provider disconnected +
+ `; + default: + return null; + } + } + + private handleIframeLoad(): void { + // Start waiting for provider-ready message + // If not received within timeout, show error + setTimeout(() => { + if (this.status === 'loading') { + this.status = 'error'; + this.error = 'Provider did not respond. Make sure it implements the ecobridge provider protocol.'; + } + }, 10000); // 10 second timeout for provider to declare ready + } + + private handleIframeError(): void { + this.status = 'error'; + this.error = 'Failed to load provider URL'; + } + + private handleProviderMessage(event: MessageEvent): void { + // Verify origin matches provider URL + if (!this.providerUrl) return; + + try { + const providerOrigin = new URL(this.providerUrl).origin; + if (event.origin !== providerOrigin) return; + } catch { + return; + } + + const message = event.data as IProviderMessage; + if (!message || typeof message.type !== 'string') return; + + // Only accept messages from this provider + if (message.providerId && message.providerId !== this.providerId) return; + + switch (message.type) { + case 'provider-ready': + this.handleProviderReady(message.payload as IProviderReadyPayload); + break; + case 'provider-features': + this.handleFeaturesUpdate(message.payload as { features: TProviderFeature[] }); + break; + case 'provider-response': + this.handleProviderResponse(message.requestId!, message.payload as IProviderResponsePayload); + break; + case 'provider-error': + this.handleProviderError(message.payload as { error: string }); + break; + case 'data-offer': + this.handleDataOffer(message.payload as IProviderDataOfferPayload); + break; + } + } + + private handleProviderReady(payload: IProviderReadyPayload): void { + this.currentFeatures = payload.features || []; + + // Check for feature changes + if (this.confirmedFeatures.length > 0) { + const added = this.currentFeatures.filter(f => !this.confirmedFeatures.includes(f)); + const removed = this.confirmedFeatures.filter(f => !this.currentFeatures.includes(f)); + + if (added.length > 0 || removed.length > 0) { + const request: IFeatureChangeRequest = { + providerId: this.providerId, + providerName: payload.name || this.providerName, + addedFeatures: added, + removedFeatures: removed, + currentFeatures: this.currentFeatures, + }; + + this.dispatchEvent(new CustomEvent('provider-features-changed', { + detail: { request }, + bubbles: true, + composed: true, + })); + } + } + + this.status = 'connected'; + + const provider: IDataProvider = { + id: this.providerId, + name: payload.name || this.providerName, + url: this.providerUrl, + features: this.currentFeatures, + confirmedFeatures: this.confirmedFeatures, + icon: payload.icon, + lastSeen: new Date(), + status: 'connected', + enabled: true, + }; + + this.dispatchEvent(new CustomEvent('provider-ready', { + detail: { provider }, + bubbles: true, + composed: true, + })); + } + + private handleFeaturesUpdate(payload: { features: TProviderFeature[] }): void { + const previousFeatures = [...this.currentFeatures]; + this.currentFeatures = payload.features || []; + + const added = this.currentFeatures.filter(f => !previousFeatures.includes(f)); + const removed = previousFeatures.filter(f => !this.currentFeatures.includes(f)); + + if (added.length > 0 || removed.length > 0) { + const request: IFeatureChangeRequest = { + providerId: this.providerId, + providerName: this.providerName, + addedFeatures: added, + removedFeatures: removed, + currentFeatures: this.currentFeatures, + }; + + this.dispatchEvent(new CustomEvent('provider-features-changed', { + detail: { request }, + bubbles: true, + composed: true, + })); + } + } + + private handleProviderResponse(requestId: string, response: IProviderResponsePayload): void { + const pending = this.pendingRequests.get(requestId); + if (pending) { + clearTimeout(pending.timeout); + this.pendingRequests.delete(requestId); + pending.resolve(response); + } + + this.dispatchEvent(new CustomEvent('provider-response', { + detail: { requestId, response }, + bubbles: true, + composed: true, + })); + } + + private handleProviderError(payload: { error: string }): void { + this.dispatchEvent(new CustomEvent('provider-error', { + detail: { error: payload.error }, + bubbles: true, + composed: true, + })); + } + + private handleDataOffer(offer: IProviderDataOfferPayload): void { + this.dispatchEvent(new CustomEvent('provider-data-offer', { + detail: { offer }, + bubbles: true, + composed: true, + })); + } + + // Public API + public retry(): void { + this.status = 'loading'; + this.error = null; + if (this.iframe) { + this.iframe.src = this.providerUrl; + } + } + + public sendMessage(message: IEcobridgeMessage): void { + if (!this.iframe?.contentWindow) { + console.warn('Cannot send message: iframe not ready'); + return; + } + + try { + const origin = new URL(this.providerUrl).origin; + this.iframe.contentWindow.postMessage(message, origin); + } catch (e) { + console.error('Failed to send message to provider:', e); + } + } + + public async sendData(data: ISendDataPayload, timeoutMs = 30000): Promise { + const requestId = crypto.randomUUID(); + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + this.pendingRequests.delete(requestId); + reject(new Error('Request timeout')); + }, timeoutMs); + + this.pendingRequests.set(requestId, { resolve, reject, timeout }); + + this.sendMessage({ + type: 'send-data', + requestId, + payload: data, + }); + }); + } + + public async requestData(request: IRequestDataPayload, timeoutMs = 30000): Promise { + const requestId = crypto.randomUUID(); + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + this.pendingRequests.delete(requestId); + reject(new Error('Request timeout')); + }, timeoutMs); + + this.pendingRequests.set(requestId, { resolve, reject, timeout }); + + this.sendMessage({ + type: 'request-data', + requestId, + payload: request, + }); + }); + } + + public ping(): void { + this.sendMessage({ + type: 'ping', + requestId: crypto.randomUUID(), + }); + } + + public hasFeature(feature: TProviderFeature): boolean { + return this.confirmedFeatures.includes(feature); + } + + public getStatus(): TProviderStatus { + return this.status; + } +} diff --git a/ts_web/elements/eco-provider-frame/index.ts b/ts_web/elements/eco-provider-frame/index.ts new file mode 100644 index 0000000..46eacc6 --- /dev/null +++ b/ts_web/elements/eco-provider-frame/index.ts @@ -0,0 +1 @@ +export * from './eco-provider-frame.js'; diff --git a/ts_web/elements/index.ts b/ts_web/elements/index.ts index 7964ef4..43b438a 100644 --- a/ts_web/elements/index.ts +++ b/ts_web/elements/index.ts @@ -6,3 +6,4 @@ export * from './00group-applauncher/index.js'; // Standalone Components export * from './eco-screensaver/index.js'; +export * from './eco-provider-frame/index.js'; diff --git a/ts_web/elements/interfaces/dataprovider.ts b/ts_web/elements/interfaces/dataprovider.ts new file mode 100644 index 0000000..8d73000 --- /dev/null +++ b/ts_web/elements/interfaces/dataprovider.ts @@ -0,0 +1,158 @@ +/** + * Data Provider System Interfaces + * + * Data providers are external web apps that can be registered to provide + * or receive data from ecobridge applications. They communicate via + * postMessage API in sandboxed iframes. + */ + +// Provider feature types - what capabilities a provider can offer +export type TProviderFeature = + | 'scan-destination' // Can receive scanned documents + | 'media-source' // Can provide media URLs for playback + | 'document-storage' // Can store/retrieve documents + | 'print-destination'; // Can receive print jobs + +// Provider connection status +export type TProviderStatus = 'connected' | 'disconnected' | 'loading' | 'error'; + +/** + * Data Provider configuration and state + */ +export interface IDataProvider { + id: string; + name: string; + url: string; + features: TProviderFeature[]; // Features declared by provider + confirmedFeatures: TProviderFeature[]; // Features user has approved + icon?: string; // Base64 data URL or icon URL + lastSeen: Date; + status: TProviderStatus; + enabled: boolean; +} + +/** + * Provider registration payload (sent by provider on ready) + */ +export interface IProviderRegistration { + name: string; + features: TProviderFeature[]; + icon?: string; + version?: string; +} + +/** + * Message types from Provider to Ecobridge + */ +export type TProviderToEcobridgeMessageType = + | 'provider-ready' // Provider loaded and declaring features + | 'provider-features' // Provider updating its features + | 'provider-response' // Response to an ecobridge request + | 'provider-error' // Error occurred in provider + | 'data-offer'; // Provider offering data (e.g., media URL) + +/** + * Message from Provider to Ecobridge + */ +export interface IProviderMessage { + type: TProviderToEcobridgeMessageType; + providerId: string; + requestId?: string; // For responses to specific requests + payload: unknown; +} + +/** + * Provider ready message payload + */ +export interface IProviderReadyPayload { + name: string; + features: TProviderFeature[]; + icon?: string; + version?: string; +} + +/** + * Provider response payload + */ +export interface IProviderResponsePayload { + success: boolean; + data?: unknown; + error?: string; +} + +/** + * Provider data offer payload (e.g., for media-source) + */ +export interface IProviderDataOfferPayload { + type: 'media-url' | 'document' | 'file-list'; + data: unknown; + metadata?: Record; +} + +/** + * Message types from Ecobridge to Provider + */ +export type TEcobridgeToProviderMessageType = + | 'request-features' // Ask provider to declare features + | 'send-data' // Send data to provider (e.g., scan) + | 'request-data' // Request data from provider (e.g., media URL) + | 'ping'; // Health check + +/** + * Message from Ecobridge to Provider + */ +export interface IEcobridgeMessage { + type: TEcobridgeToProviderMessageType; + requestId: string; + payload?: unknown; +} + +/** + * Send data payload (e.g., sending scan to provider) + */ +export interface ISendDataPayload { + dataType: 'scan' | 'document' | 'print-job'; + data: string; // Base64 encoded data + format: string; // File format (pdf, jpeg, etc.) + filename?: string; + metadata?: Record; +} + +/** + * Request data payload (e.g., requesting media from provider) + */ +export interface IRequestDataPayload { + dataType: 'media-url' | 'document' | 'file-list'; + filter?: Record; +} + +/** + * Feature change event - when provider's features differ from confirmed + */ +export interface IFeatureChangeRequest { + providerId: string; + providerName: string; + addedFeatures: TProviderFeature[]; + removedFeatures: TProviderFeature[]; + currentFeatures: TProviderFeature[]; +} + +/** + * Provider store schema for persistence + */ +export interface IProviderStore { + providers: IDataProvider[]; + lastUpdated: Date; +} + +/** + * Events dispatched by eco-provider-frame + */ +export interface IProviderFrameEvents { + 'provider-ready': CustomEvent<{ provider: IDataProvider }>; + 'provider-features-changed': CustomEvent<{ request: IFeatureChangeRequest }>; + 'provider-response': CustomEvent<{ requestId: string; response: IProviderResponsePayload }>; + 'provider-data-offer': CustomEvent<{ offer: IProviderDataOfferPayload }>; + 'provider-error': CustomEvent<{ error: string }>; + 'provider-disconnected': CustomEvent<{ providerId: string }>; +} diff --git a/ts_web/elements/interfaces/index.ts b/ts_web/elements/interfaces/index.ts index f857640..a808335 100644 --- a/ts_web/elements/interfaces/index.ts +++ b/ts_web/elements/interfaces/index.ts @@ -3,3 +3,4 @@ export * from './appbarmenuitem.js'; export * from './menugroup.js'; export * from './appconfig.js'; export * from './secondarymenu.js'; +export * from './dataprovider.js'; diff --git a/ts_web/views/eco-view-browser/eco-view-browser.demo.ts b/ts_web/views/eco-view-browser/eco-view-browser.demo.ts new file mode 100644 index 0000000..748b67d --- /dev/null +++ b/ts_web/views/eco-view-browser/eco-view-browser.demo.ts @@ -0,0 +1,34 @@ +import { html } from '@design.estate/dees-element'; + +export const demo = () => html` + +
+ console.log('Navigate:', e.detail)} + @bookmark-add=${(e: CustomEvent) => console.log('Bookmark add:', e.detail)} + @bookmark-remove=${(e: CustomEvent) => console.log('Bookmark remove:', e.detail)} + @browser-back=${() => console.log('Browser back')} + @browser-forward=${() => console.log('Browser forward')} + @browser-refresh=${() => console.log('Browser refresh')} + @browser-stop=${() => console.log('Browser stop')} + @new-tab=${() => console.log('New tab')} + @open-devtools=${() => console.log('Open devtools')} + > +
+`; diff --git a/ts_web/views/eco-view-browser/eco-view-browser.ts b/ts_web/views/eco-view-browser/eco-view-browser.ts new file mode 100644 index 0000000..1237e3a --- /dev/null +++ b/ts_web/views/eco-view-browser/eco-view-browser.ts @@ -0,0 +1,959 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, + state, +} from '@design.estate/dees-element'; +import { DeesIcon } from '@design.estate/dees-catalog'; +import { demo } from './eco-view-browser.demo.js'; + +// Ensure components are registered +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-view-browser': EcoViewBrowser; + } +} + +// Types +export interface IBookmark { + id: string; + title: string; + url: string; + favicon?: string; + createdAt: Date; +} + +export interface IBrowserState { + url: string; + title: string; + canGoBack: boolean; + canGoForward: boolean; + isLoading: boolean; +} + +export type TBrowserPanel = 'browser' | 'bookmarks'; + +@customElement('eco-view-browser') +export class EcoViewBrowser extends DeesElement { + public static demo = demo; + public static demoGroup = 'Views'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 8%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + } + + .browser-container { + display: flex; + flex-direction: column; + height: 100%; + } + + .toolbar { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + background: ${cssManager.bdTheme('#f5f5f7', 'hsl(240 6% 10%)')}; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 15%)')}; + } + + .nav-buttons { + display: flex; + gap: 4px; + } + + .nav-button { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: 6px; + background: transparent; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 70%)')}; + cursor: pointer; + transition: all 0.15s ease; + } + + .nav-button:hover:not(:disabled) { + background: ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .nav-button:disabled { + opacity: 0.4; + cursor: not-allowed; + } + + .nav-button.loading dees-icon { + animation: spin 1s linear infinite; + } + + @keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } + } + + .url-container { + flex: 1; + display: flex; + align-items: center; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 8px; + padding: 0 12px; + height: 36px; + transition: border-color 0.15s ease; + } + + .url-container:focus-within { + border-color: hsl(217 91% 60%); + } + + .url-icon { + margin-right: 8px; + opacity: 0.5; + } + + .url-input { + flex: 1; + border: none; + background: transparent; + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 95%)')}; + outline: none; + } + + .url-input::placeholder { + color: ${cssManager.bdTheme('hsl(0 0% 60%)', 'hsl(0 0% 50%)')}; + } + + .bookmark-button { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: 6px; + background: transparent; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + cursor: pointer; + transition: all 0.15s ease; + } + + .bookmark-button:hover { + background: ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + } + + .bookmark-button.bookmarked { + color: hsl(45 93% 47%); + } + + .bookmark-button.bookmarked:hover { + color: hsl(45 93% 40%); + } + + .menu-button { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: 6px; + background: transparent; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + cursor: pointer; + transition: all 0.15s ease; + } + + .menu-button:hover { + background: ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + } + + .webview-container { + flex: 1; + position: relative; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 5%)')}; + overflow: hidden; + } + + .webview-wrapper { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + } + + webview { + width: 100%; + height: 100%; + border: none; + display: flex; + } + + .placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 50%)')}; + gap: 16px; + } + + .placeholder dees-icon { + opacity: 0.3; + } + + .placeholder-text { + font-size: 14px; + } + + .placeholder-hint { + font-size: 12px; + opacity: 0.7; + } + + .bookmarks-bar { + display: flex; + align-items: center; + gap: 4px; + padding: 4px 12px; + background: ${cssManager.bdTheme('#fafafa', 'hsl(240 6% 9%)')}; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 13%)')}; + overflow-x: auto; + } + + .bookmarks-bar::-webkit-scrollbar { + height: 4px; + } + + .bookmarks-bar::-webkit-scrollbar-track { + background: transparent; + } + + .bookmarks-bar::-webkit-scrollbar-thumb { + background: ${cssManager.bdTheme('hsl(0 0% 80%)', 'hsl(240 5% 25%)')}; + border-radius: 2px; + } + + .bookmark-chip { + display: flex; + align-items: center; + gap: 6px; + padding: 6px 10px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 20%)')}; + border-radius: 6px; + font-size: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + cursor: pointer; + white-space: nowrap; + transition: all 0.15s ease; + } + + .bookmark-chip:hover { + background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(240 5% 18%)')}; + border-color: ${cssManager.bdTheme('hsl(0 0% 80%)', 'hsl(240 5% 25%)')}; + } + + .bookmark-chip .favicon { + width: 14px; + height: 14px; + border-radius: 2px; + } + + .dropdown-menu { + position: absolute; + top: 100%; + right: 0; + margin-top: 4px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 25%)')}; + border-radius: 8px; + box-shadow: 0 4px 16px ${cssManager.bdTheme('rgba(0,0,0,0.1)', 'rgba(0,0,0,0.3)')}; + min-width: 180px; + z-index: 100; + overflow: hidden; + } + + .dropdown-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 14px; + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + cursor: pointer; + transition: background 0.1s ease; + } + + .dropdown-item:hover { + background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(240 5% 20%)')}; + } + + .dropdown-item.destructive { + color: hsl(0 72% 50%); + } + + .dropdown-item.destructive:hover { + background: hsl(0 72% 95%); + } + + .dropdown-divider { + height: 1px; + background: ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 20%)')}; + margin: 4px 0; + } + + .menu-container { + position: relative; + } + + /* Bookmarks panel styles */ + .bookmarks-panel { + padding: 32px 48px; + overflow-y: auto; + height: 100%; + } + + .panel-header { + margin-bottom: 24px; + } + + .panel-title { + font-size: 28px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + margin: 0 0 8px 0; + } + + .panel-description { + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + margin: 0; + } + + .bookmarks-list { + display: flex; + flex-direction: column; + gap: 8px; + } + + .bookmark-item { + display: flex; + align-items: center; + gap: 12px; + padding: 12px 16px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 12%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + border-radius: 8px; + cursor: pointer; + transition: all 0.15s ease; + } + + .bookmark-item:hover { + border-color: hsl(217 91% 60%); + transform: translateX(2px); + } + + .bookmark-item .favicon { + width: 20px; + height: 20px; + border-radius: 4px; + flex-shrink: 0; + } + + .bookmark-info { + flex: 1; + min-width: 0; + } + + .bookmark-title { + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .bookmark-url { + font-size: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .bookmark-delete { + opacity: 0; + transition: opacity 0.15s ease; + } + + .bookmark-item:hover .bookmark-delete { + opacity: 1; + } + + .bookmark-delete-btn { + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + border: none; + border-radius: 4px; + background: transparent; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + cursor: pointer; + } + + .bookmark-delete-btn:hover { + background: hsl(0 72% 95%); + color: hsl(0 72% 50%); + } + + .empty-state { + text-align: center; + padding: 60px 20px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + } + + .empty-state dees-icon { + margin-bottom: 16px; + opacity: 0.4; + } + + .empty-state p { + font-size: 14px; + margin: 0; + } + + .loading-bar { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, + hsl(217 91% 60%) 0%, + hsl(217 91% 70%) 50%, + hsl(217 91% 60%) 100% + ); + background-size: 200% 100%; + animation: loading 1.5s linear infinite; + } + + @keyframes loading { + 0% { background-position: 200% 0; } + 100% { background-position: -200% 0; } + } + `, + ]; + + @property({ type: Array }) + accessor bookmarks: IBookmark[] = []; + + @property({ type: Boolean }) + accessor showBookmarksBar = true; + + @property({ type: String }) + accessor defaultUrl = ''; + + @state() + accessor activePanel: TBrowserPanel = 'browser'; + + @state() + accessor currentUrl = ''; + + @state() + accessor inputUrl = ''; + + @state() + accessor pageTitle = ''; + + @state() + accessor canGoBack = false; + + @state() + accessor canGoForward = false; + + @state() + accessor isLoading = false; + + @state() + accessor showMenu = false; + + private isElectron = false; + private webviewEventsBound = false; + + async connectedCallback(): Promise { + await super.connectedCallback(); + // Check if we're in Electron - webview tag only works in Electron + // Since nodeIntegration is disabled, we check for the existence of electronAPI + // or if we're in a file:// protocol (Electron loads from file://) + this.isElectron = typeof window !== 'undefined' && ( + typeof (window as any).electronAPI !== 'undefined' || + window.location.protocol === 'file:' || + navigator.userAgent.includes('Electron') + ); + + if (this.defaultUrl) { + this.inputUrl = this.defaultUrl; + } + } + + protected updated(changedProperties: Map): void { + super.updated(changedProperties); + // Bind webview events after it's rendered + this.bindWebviewEvents(); + } + + private bindWebviewEvents(): void { + if (!this.isElectron || this.webviewEventsBound) return; + + const webview = this.shadowRoot?.querySelector('webview') as any; + if (!webview) return; + + this.webviewEventsBound = true; + + webview.addEventListener('did-start-loading', () => { + this.isLoading = true; + }); + + webview.addEventListener('did-stop-loading', () => { + this.isLoading = false; + this.updateNavigationState(); + }); + + webview.addEventListener('did-navigate', (e: any) => { + this.currentUrl = e.url || this.currentUrl; + this.inputUrl = this.currentUrl; + this.updateNavigationState(); + }); + + webview.addEventListener('did-navigate-in-page', (e: any) => { + if (e.isMainFrame) { + this.currentUrl = e.url || this.currentUrl; + this.inputUrl = this.currentUrl; + } + }); + + webview.addEventListener('page-title-updated', (e: any) => { + this.pageTitle = e.title || ''; + }); + + webview.addEventListener('page-favicon-updated', (e: any) => { + // Could store favicon for bookmarks + }); + + webview.addEventListener('dom-ready', () => { + this.updateNavigationState(); + }); + + console.log('Webview events bound'); + } + + public render(): TemplateResult { + return html` +
+ ${this.renderToolbar()} + ${this.showBookmarksBar && this.bookmarks.length > 0 ? this.renderBookmarksBar() : ''} + ${this.activePanel === 'browser' ? this.renderBrowserContent() : this.renderBookmarksPanel()} +
+ `; + } + + private renderToolbar(): TemplateResult { + return html` +
+ + +
+ + this.inputUrl = (e.target as HTMLInputElement).value} + @keydown=${this.handleUrlKeydown} + /> +
+ + + + +
+ `; + } + + private renderMenu(): TemplateResult { + return html` + + `; + } + + private renderBookmarksBar(): TemplateResult { + return html` +
+ ${this.bookmarks.slice(0, 10).map(bookmark => html` +
this.navigate(bookmark.url)} + > + ${bookmark.favicon + ? html`` + : html`` + } + ${bookmark.title || new URL(bookmark.url).hostname} +
+ `)} +
+ `; + } + + private renderBrowserContent(): TemplateResult { + return html` +
+ ${this.isLoading ? html`
` : ''} +
+ ${this.currentUrl ? this.renderWebview() : this.renderPlaceholder()} +
+
+ `; + } + + private renderWebview(): TemplateResult { + // In Electron, we use webview tag. In browser, we show a notice. + if (this.isElectron) { + // Reset event binding flag when URL changes so events get rebound + // Note: webview events are bound in updated() lifecycle + return html` + + `; + } else { + // Fallback for non-Electron environment (demo/testing) + return html` +
+ + Webview requires Electron environment + URL: ${this.currentUrl} +
+ `; + } + } + + private renderPlaceholder(): TemplateResult { + return html` +
+ + Enter a URL to start browsing + or select a bookmark +
+ `; + } + + private renderBookmarksPanel(): TemplateResult { + return html` +
+
+

Bookmarks

+

Your saved websites

+
+ + ${this.bookmarks.length > 0 + ? html` +
+ ${this.bookmarks.map(bookmark => html` +
this.handleBookmarkClick(bookmark)}> + ${bookmark.favicon + ? html`` + : html`` + } +
+
${bookmark.title || bookmark.url}
+
${bookmark.url}
+
+
+ +
+
+ `)} +
+ ` + : html` +
+ +

No bookmarks yet. Star a page to save it here.

+
+ ` + } +
+ `; + } + + // Navigation methods + private navigate(url: string): void { + if (!url) return; + + // Add protocol if missing + if (!/^https?:\/\//i.test(url)) { + // Check if it looks like a domain + if (/^[a-zA-Z0-9][a-zA-Z0-9-]*\.[a-zA-Z]{2,}/.test(url)) { + url = 'https://' + url; + } else { + // Treat as search query + url = `https://www.google.com/search?q=${encodeURIComponent(url)}`; + } + } + + this.currentUrl = url; + this.inputUrl = url; + this.isLoading = true; + + this.dispatchEvent(new CustomEvent('navigate', { + detail: { url }, + bubbles: true, + composed: true, + })); + } + + private handleUrlKeydown(e: KeyboardEvent): void { + if (e.key === 'Enter') { + this.navigate(this.inputUrl); + } + } + + private get webview(): any { + return this.shadowRoot?.querySelector('webview'); + } + + private handleBack(): void { + const wv = this.webview; + if (wv && this.isElectron) { + wv.goBack(); + } + this.dispatchEvent(new CustomEvent('browser-back', { bubbles: true, composed: true })); + } + + private handleForward(): void { + const wv = this.webview; + if (wv && this.isElectron) { + wv.goForward(); + } + this.dispatchEvent(new CustomEvent('browser-forward', { bubbles: true, composed: true })); + } + + private handleRefresh(): void { + const wv = this.webview; + if (wv && this.isElectron) { + wv.reload(); + } + this.dispatchEvent(new CustomEvent('browser-refresh', { bubbles: true, composed: true })); + } + + private handleStop(): void { + const wv = this.webview; + if (wv && this.isElectron) { + wv.stop(); + } + this.isLoading = false; + this.dispatchEvent(new CustomEvent('browser-stop', { bubbles: true, composed: true })); + } + + private handleFaviconUpdate(e: any): void { + // Could update current page favicon for bookmarks + } + + private updateNavigationState(): void { + if (this.webview && this.isElectron) { + this.canGoBack = (this.webview as any).canGoBack?.() || false; + this.canGoForward = (this.webview as any).canGoForward?.() || false; + } + } + + // Bookmark methods + private isCurrentPageBookmarked(): boolean { + return this.bookmarks.some(b => b.url === this.currentUrl); + } + + private toggleBookmark(): void { + if (!this.currentUrl) return; + + if (this.isCurrentPageBookmarked()) { + const bookmark = this.bookmarks.find(b => b.url === this.currentUrl); + if (bookmark) { + this.removeBookmark(bookmark.id); + } + } else { + this.addBookmark(); + } + } + + private addBookmark(): void { + const bookmark: IBookmark = { + id: crypto.randomUUID(), + title: this.pageTitle || this.currentUrl, + url: this.currentUrl, + createdAt: new Date(), + }; + + this.dispatchEvent(new CustomEvent('bookmark-add', { + detail: { bookmark }, + bubbles: true, + composed: true, + })); + } + + private removeBookmark(id: string): void { + this.dispatchEvent(new CustomEvent('bookmark-remove', { + detail: { id }, + bubbles: true, + composed: true, + })); + } + + private handleBookmarkClick(bookmark: IBookmark): void { + this.navigate(bookmark.url); + this.activePanel = 'browser'; + } + + // Menu actions + private handleNewTab(): void { + this.showMenu = false; + this.dispatchEvent(new CustomEvent('new-tab', { bubbles: true, composed: true })); + } + + private handleOpenDevTools(): void { + this.showMenu = false; + if (this.webview && this.isElectron) { + (this.webview as any).openDevTools(); + } + this.dispatchEvent(new CustomEvent('open-devtools', { bubbles: true, composed: true })); + } + + private handleCopyUrl(): void { + this.showMenu = false; + if (this.currentUrl) { + navigator.clipboard.writeText(this.currentUrl); + } + } + + // Public API + public goTo(url: string): void { + this.navigate(url); + } + + public setBookmarks(bookmarks: IBookmark[]): void { + this.bookmarks = bookmarks; + } + + public getState(): IBrowserState { + return { + url: this.currentUrl, + title: this.pageTitle, + canGoBack: this.canGoBack, + canGoForward: this.canGoForward, + isLoading: this.isLoading, + }; + } +} diff --git a/ts_web/views/eco-view-browser/index.ts b/ts_web/views/eco-view-browser/index.ts new file mode 100644 index 0000000..cf013ac --- /dev/null +++ b/ts_web/views/eco-view-browser/index.ts @@ -0,0 +1 @@ +export * from './eco-view-browser.js'; diff --git a/ts_web/views/eco-view-scan/eco-view-scan.demo.ts b/ts_web/views/eco-view-scan/eco-view-scan.demo.ts new file mode 100644 index 0000000..8c47dee --- /dev/null +++ b/ts_web/views/eco-view-scan/eco-view-scan.demo.ts @@ -0,0 +1,30 @@ +import { html } from '@design.estate/dees-element'; + +export const demo = () => html` + +
+ console.log('Scanner selected:', e.detail)} + @scan-request=${(e: CustomEvent) => console.log('Scan requested:', e.detail)} + @save-local=${(e: CustomEvent) => console.log('Save local:', e.detail)} + @send-to-provider=${(e: CustomEvent) => console.log('Send to provider:', e.detail)} + > +
+`; diff --git a/ts_web/views/eco-view-scan/eco-view-scan.ts b/ts_web/views/eco-view-scan/eco-view-scan.ts new file mode 100644 index 0000000..5448cba --- /dev/null +++ b/ts_web/views/eco-view-scan/eco-view-scan.ts @@ -0,0 +1,839 @@ +import { + customElement, + DeesElement, + type TemplateResult, + html, + property, + css, + cssManager, + state, +} from '@design.estate/dees-element'; +import { DeesAppuiSecondarymenu, DeesIcon } from '@design.estate/dees-catalog'; +import type { ISecondaryMenuGroup } from '../../elements/interfaces/secondarymenu.js'; +import { demo } from './eco-view-scan.demo.js'; + +// Ensure components are registered +DeesAppuiSecondarymenu; +DeesIcon; + +declare global { + interface HTMLElementTagNameMap { + 'eco-view-scan': EcoViewScan; + } +} + +// Types +export type TScanFormat = 'pdf' | 'jpeg' | 'png' | 'tiff'; +export type TScanColorMode = 'color' | 'grayscale' | 'blackwhite'; +export type TScanSource = 'flatbed' | 'adf' | 'adf-duplex'; +export type TScanPanel = 'scan' | 'history' | 'settings'; + +export interface IScanSettings { + format: TScanFormat; + resolution: number; + colorMode: TScanColorMode; + source: TScanSource; +} + +export interface IScannedDocument { + id: string; + timestamp: Date; + format: TScanFormat; + data: string; // base64 + thumbnail?: string; + size: number; + name?: string; +} + +export interface IScannerInfo { + id: string; + name: string; + address: string; + status: 'online' | 'offline' | 'busy' | 'error'; + capabilities?: { + resolutions: number[]; + formats: TScanFormat[]; + colorModes: TScanColorMode[]; + sources: TScanSource[]; + }; +} + +export interface IDataProviderInfo { + id: string; + name: string; + icon?: string; +} + +@customElement('eco-view-scan') +export class EcoViewScan extends DeesElement { + public static demo = demo; + public static demoGroup = 'Views'; + + public static styles = [ + cssManager.defaultStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + background: ${cssManager.bdTheme('#f5f5f7', 'hsl(240 6% 10%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + } + + .scan-container { + display: flex; + height: 100%; + } + + dees-appui-secondarymenu { + flex-shrink: 0; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 8%)')}; + border-right: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 15%)')}; + } + + .content { + flex: 1; + overflow-y: auto; + padding: 32px 48px; + display: flex; + flex-direction: column; + } + + .panel-header { + margin-bottom: 24px; + display: flex; + align-items: center; + justify-content: space-between; + } + + .panel-header-left { + display: flex; + flex-direction: column; + gap: 4px; + } + + .panel-title { + font-size: 28px; + font-weight: 600; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 98%)')}; + } + + .panel-description { + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + } + + .scanner-selector { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 24px; + } + + .scanner-selector label { + font-size: 14px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 70%)')}; + } + + .scanner-selector select { + flex: 1; + max-width: 300px; + padding: 10px 14px; + font-size: 14px; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 8px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 95%)')}; + cursor: pointer; + } + + .scanner-selector select:focus { + outline: none; + border-color: hsl(217 91% 60%); + } + + .preview-area { + flex: 1; + min-height: 300px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 12%)')}; + border: 2px dashed ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + margin-bottom: 24px; + } + + .preview-area.has-image { + border-style: solid; + } + + .preview-placeholder { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 60%)', 'hsl(0 0% 50%)')}; + } + + .preview-placeholder dees-icon { + opacity: 0.5; + } + + .preview-image { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } + + .action-bar { + display: flex; + gap: 12px; + margin-bottom: 32px; + } + + .action-button { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 24px; + font-size: 14px; + font-weight: 500; + border: none; + border-radius: 8px; + cursor: pointer; + transition: all 0.15s ease; + } + + .action-button.primary { + background: hsl(217 91% 60%); + color: white; + } + + .action-button.primary:hover:not(:disabled) { + background: hsl(217 91% 55%); + } + + .action-button.secondary { + background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(240 5% 20%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 90%)')}; + } + + .action-button.secondary:hover:not(:disabled) { + background: ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 25%)')}; + } + + .action-button:disabled { + opacity: 0.5; + cursor: not-allowed; + } + + .action-button.scanning dees-icon { + animation: spin 1s linear infinite; + } + + @keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } + } + + .dropdown-container { + position: relative; + } + + .dropdown-menu { + position: absolute; + bottom: 100%; + left: 0; + margin-bottom: 4px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 25%)')}; + border-radius: 8px; + box-shadow: 0 4px 16px ${cssManager.bdTheme('rgba(0,0,0,0.1)', 'rgba(0,0,0,0.3)')}; + min-width: 200px; + z-index: 100; + overflow: hidden; + } + + .dropdown-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 14px; + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + cursor: pointer; + transition: background 0.1s ease; + } + + .dropdown-item:hover { + background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(240 5% 20%)')}; + } + + .dropdown-item dees-icon { + opacity: 0.7; + } + + .settings-section { + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 12%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + } + + .settings-section-title { + font-size: 16px; + font-weight: 600; + margin-bottom: 16px; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + } + + .setting-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 0; + border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 92%)', 'hsl(240 5% 18%)')}; + } + + .setting-row:last-child { + border-bottom: none; + } + + .setting-label { + font-size: 14px; + color: ${cssManager.bdTheme('hsl(0 0% 30%)', 'hsl(0 0% 80%)')}; + } + + .setting-control select { + padding: 8px 12px; + font-size: 14px; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(240 5% 25%)')}; + border-radius: 6px; + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 15%)')}; + color: ${cssManager.bdTheme('hsl(0 0% 10%)', 'hsl(0 0% 95%)')}; + cursor: pointer; + } + + .history-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 16px; + } + + .history-item { + background: ${cssManager.bdTheme('#ffffff', 'hsl(240 6% 12%)')}; + border: 1px solid ${cssManager.bdTheme('hsl(0 0% 90%)', 'hsl(240 5% 18%)')}; + border-radius: 8px; + overflow: hidden; + cursor: pointer; + transition: all 0.15s ease; + } + + .history-item:hover { + border-color: hsl(217 91% 60%); + transform: translateY(-2px); + box-shadow: 0 4px 12px ${cssManager.bdTheme('rgba(0,0,0,0.1)', 'rgba(0,0,0,0.3)')}; + } + + .history-thumbnail { + width: 100%; + aspect-ratio: 1; + background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(240 5% 18%)')}; + display: flex; + align-items: center; + justify-content: center; + } + + .history-thumbnail img { + width: 100%; + height: 100%; + object-fit: cover; + } + + .history-info { + padding: 10px; + } + + .history-name { + font-size: 13px; + font-weight: 500; + color: ${cssManager.bdTheme('hsl(0 0% 20%)', 'hsl(0 0% 90%)')}; + margin-bottom: 4px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .history-date { + font-size: 12px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + } + + .empty-state { + text-align: center; + padding: 60px 20px; + color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 60%)')}; + } + + .empty-state dees-icon { + margin-bottom: 16px; + opacity: 0.4; + } + + .empty-state p { + font-size: 14px; + margin: 0; + } + `, + ]; + + @property({ type: Array }) + accessor scanners: IScannerInfo[] = []; + + @property({ type: Array }) + accessor providers: IDataProviderInfo[] = []; + + @state() + accessor activePanel: TScanPanel = 'scan'; + + @state() + accessor selectedScannerId: string | null = null; + + @state() + accessor isScanning = false; + + @state() + accessor currentPreview: string | null = null; + + @state() + accessor currentDocument: IScannedDocument | null = null; + + @state() + accessor scanHistory: IScannedDocument[] = []; + + @state() + accessor settings: IScanSettings = { + format: 'pdf', + resolution: 300, + colorMode: 'color', + source: 'flatbed', + }; + + @state() + accessor showSendToMenu = false; + + private get selectedScanner(): IScannerInfo | null { + return this.scanners.find(s => s.id === this.selectedScannerId) || null; + } + + private get availableResolutions(): number[] { + return this.selectedScanner?.capabilities?.resolutions || [150, 300, 600]; + } + + private get availableFormats(): TScanFormat[] { + return this.selectedScanner?.capabilities?.formats || ['pdf', 'jpeg', 'png']; + } + + private get availableColorModes(): TScanColorMode[] { + return this.selectedScanner?.capabilities?.colorModes || ['color', 'grayscale']; + } + + private get availableSources(): TScanSource[] { + return this.selectedScanner?.capabilities?.sources || ['flatbed']; + } + + public render(): TemplateResult { + return html` +
+ +
+ ${this.renderContent()} +
+
+ `; + } + + private getMenuGroups(): ISecondaryMenuGroup[] { + return [ + { + name: 'SCAN', + iconName: 'lucide:scan', + items: [ + { + key: 'scan', + label: 'New Scan', + iconName: 'lucide:plus', + action: () => this.activePanel = 'scan', + }, + ], + }, + { + name: 'HISTORY', + iconName: 'lucide:history', + items: [ + { + key: 'history', + label: 'Recent Scans', + iconName: 'lucide:clock', + action: () => this.activePanel = 'history', + badge: this.scanHistory.length > 0 ? this.scanHistory.length : undefined, + }, + ], + }, + { + name: 'OPTIONS', + iconName: 'lucide:settings', + items: [ + { + key: 'settings', + label: 'Scan Settings', + iconName: 'lucide:sliders', + action: () => this.activePanel = 'settings', + }, + ], + }, + ]; + } + + private renderContent(): TemplateResult { + switch (this.activePanel) { + case 'scan': + return this.renderScanPanel(); + case 'history': + return this.renderHistoryPanel(); + case 'settings': + return this.renderSettingsPanel(); + default: + return this.renderScanPanel(); + } + } + + private renderScanPanel(): TemplateResult { + return html` +
+
+

Scan Document

+

Select a scanner and start scanning

+
+
+ +
+ + +
+ +
+ ${this.currentPreview + ? html`Scan preview` + : html` +
+ + Scan preview will appear here +
+ ` + } +
+ +
+ + + + + +
+ `; + } + + private renderSendToMenu(): TemplateResult { + return html` + + `; + } + + private renderHistoryPanel(): TemplateResult { + return html` +
+
+

Recent Scans

+

View and manage your scanned documents

+
+
+ + ${this.scanHistory.length > 0 + ? html` +
+ ${this.scanHistory.map(doc => html` +
this.handleHistoryItemClick(doc)}> +
+ ${doc.thumbnail + ? html`${doc.name` + : html`` + } +
+
+
${doc.name || `Scan ${doc.id.slice(0, 8)}`}
+
${this.formatDate(doc.timestamp)}
+
+
+ `)} +
+ ` + : html` +
+ +

No scans yet. Start scanning to see your documents here.

+
+ ` + } + `; + } + + private renderSettingsPanel(): TemplateResult { + return html` +
+
+

Scan Settings

+

Configure default scan options

+
+
+ +
+
Output Settings
+ +
+ Format +
+ +
+
+ +
+ Resolution (DPI) +
+ +
+
+ +
+ Color Mode +
+ +
+
+ +
+ Source +
+ +
+
+
+ `; + } + + private handleScannerChange(e: Event): void { + const select = e.target as HTMLSelectElement; + this.selectedScannerId = select.value || null; + this.dispatchEvent(new CustomEvent('scanner-select', { + detail: { scannerId: this.selectedScannerId }, + bubbles: true, + composed: true, + })); + } + + private async handleScan(): Promise { + if (!this.selectedScannerId || this.isScanning) return; + + this.isScanning = true; + this.dispatchEvent(new CustomEvent('scan-request', { + detail: { + scannerId: this.selectedScannerId, + settings: this.settings, + }, + bubbles: true, + composed: true, + })); + } + + public setScanResult(result: { data: string; format: TScanFormat; thumbnail?: string }): void { + const doc: IScannedDocument = { + id: crypto.randomUUID(), + timestamp: new Date(), + format: result.format, + data: result.data, + thumbnail: result.thumbnail, + size: result.data.length, + }; + + this.currentDocument = doc; + this.currentPreview = result.thumbnail || `data:image/${result.format};base64,${result.data}`; + this.scanHistory = [doc, ...this.scanHistory.slice(0, 19)]; // Keep last 20 + this.isScanning = false; + } + + public setScanError(error: string): void { + this.isScanning = false; + console.error('Scan error:', error); + // Could dispatch error event or show toast + } + + private handleSaveLocal(): void { + if (!this.currentDocument) return; + + this.dispatchEvent(new CustomEvent('save-local', { + detail: { document: this.currentDocument }, + bubbles: true, + composed: true, + })); + } + + private handleSendToProvider(providerId: string): void { + if (!this.currentDocument) return; + + this.showSendToMenu = false; + this.dispatchEvent(new CustomEvent('send-to-provider', { + detail: { + providerId, + document: this.currentDocument, + }, + bubbles: true, + composed: true, + })); + } + + private handleHistoryItemClick(doc: IScannedDocument): void { + this.currentDocument = doc; + this.currentPreview = doc.thumbnail || `data:image/${doc.format};base64,${doc.data}`; + this.activePanel = 'scan'; + } + + private updateSetting(key: K, value: IScanSettings[K]): void { + this.settings = { ...this.settings, [key]: value }; + this.dispatchEvent(new CustomEvent('settings-change', { + detail: { settings: this.settings }, + bubbles: true, + composed: true, + })); + } + + private getColorModeLabel(mode: TScanColorMode): string { + const labels: Record = { + color: 'Color', + grayscale: 'Grayscale', + blackwhite: 'Black & White', + }; + return labels[mode]; + } + + private getSourceLabel(source: TScanSource): string { + const labels: Record = { + flatbed: 'Flatbed', + adf: 'Document Feeder', + 'adf-duplex': 'Document Feeder (Duplex)', + }; + return labels[source]; + } + + private formatDate(date: Date): string { + return new Intl.DateTimeFormat('en-US', { + month: 'short', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + }).format(date); + } +} diff --git a/ts_web/views/eco-view-scan/index.ts b/ts_web/views/eco-view-scan/index.ts new file mode 100644 index 0000000..27928cc --- /dev/null +++ b/ts_web/views/eco-view-scan/index.ts @@ -0,0 +1 @@ +export * from './eco-view-scan.js'; diff --git a/ts_web/views/eco-view-system/eco-view-system.ts b/ts_web/views/eco-view-system/eco-view-system.ts index ec826f0..17ca507 100644 --- a/ts_web/views/eco-view-system/eco-view-system.ts +++ b/ts_web/views/eco-view-system/eco-view-system.ts @@ -149,27 +149,83 @@ export class EcoViewSystem extends DeesElement { @property({ type: String }) accessor activePanel: TSystemPanel = 'overview'; - // Mock system data - @state() - accessor cpuUsage = 42; + // System data (can be set externally) + @property({ type: Number }) + accessor cpuUsage = 0; + + @property({ type: Number }) + accessor memoryUsage = 0; + + @property({ type: Number }) + accessor diskUsage = 0; + + @property({ type: Number }) + accessor cpuTemp = 0; + + @property({ type: String }) + accessor uptime = '--'; + + @property({ type: Number }) + accessor cpuCores = 0; + + @property({ type: String }) + accessor cpuModel = 'Unknown'; + + @property({ type: Number }) + accessor cpuSpeed = 0; + + @property({ type: Number }) + accessor memoryTotal = 0; + + @property({ type: Number }) + accessor memoryUsed = 0; + + @property({ type: Number }) + accessor memoryFree = 0; + + @property({ type: String }) + accessor hostname = 'Unknown'; + + @property({ type: String }) + accessor platform = 'Unknown'; + + @property({ type: Array }) + accessor loadAvg: number[] = [0, 0, 0]; @state() - accessor memoryUsage = 67; + accessor networkIn = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; @state() - accessor diskUsage = 54; + accessor networkOut = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - @state() - accessor cpuTemp = 58; + // Public method to update metrics from backend + public setMetrics(metrics: { + cpu: { usage: number; cores: number; model: string; speed: number; loadAvg: number[] }; + memory: { total: number; used: number; free: number; usagePercent: number }; + system: { platform: string; hostname: string; uptimeFormatted: string }; + }): void { + this.cpuUsage = metrics.cpu.usage; + this.cpuCores = metrics.cpu.cores; + this.cpuModel = metrics.cpu.model; + this.cpuSpeed = metrics.cpu.speed; + this.loadAvg = metrics.cpu.loadAvg; + this.memoryUsage = metrics.memory.usagePercent; + this.memoryTotal = metrics.memory.total; + this.memoryUsed = metrics.memory.used; + this.memoryFree = metrics.memory.free; + this.hostname = metrics.system.hostname; + this.platform = metrics.system.platform; + this.uptime = metrics.system.uptimeFormatted; + } - @state() - accessor uptime = '14d 7h 32m'; - - @state() - accessor networkIn = [45, 52, 38, 65, 72, 68, 75, 82, 79, 85, 88, 72]; - - @state() - accessor networkOut = [32, 28, 35, 42, 38, 45, 52, 48, 55, 62, 58, 65]; + // Helper to format bytes + private formatBytes(bytes: number): string { + if (bytes === 0) return '0 B'; + const k = 1024; + const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i]; + } private getMenuGroups(): ISecondaryMenuGroup[] { return [ @@ -299,6 +355,7 @@ export class EcoViewSystem extends DeesElement { value: this.memoryUsage, type: 'gauge' as const, icon: 'lucide:memoryStick', + description: this.memoryTotal ? `${this.formatBytes(this.memoryUsed)} of ${this.formatBytes(this.memoryTotal)}` : undefined, gaugeOptions: { min: 0, max: 100, @@ -373,12 +430,12 @@ export class EcoViewSystem extends DeesElement { description: 'Since last reboot', }, { - id: 'processes', - title: 'Processes', - value: 247, - type: 'number' as const, - icon: 'lucide:layers', - description: '12 running, 235 sleeping', + id: 'hostname', + title: 'Hostname', + value: this.hostname, + type: 'text' as const, + icon: 'lucide:server', + description: `${this.platform} - ${this.cpuCores} cores`, }, ]; diff --git a/ts_web/views/index.ts b/ts_web/views/index.ts index ddbb266..b8bb6f3 100644 --- a/ts_web/views/index.ts +++ b/ts_web/views/index.ts @@ -4,3 +4,5 @@ export * from './eco-view-saasshare/index.js'; export * from './eco-view-system/index.js'; export * from './eco-view-home/index.js'; export * from './eco-view-login/index.js'; +export * from './eco-view-scan/index.js'; +export * from './eco-view-browser/index.js';