diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index a83a3048ff..ebda7fca42 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -25,9 +25,6 @@ importers: '@aws-sdk/s3-request-presigner': specifier: ^3.738.0 version: 3.738.0 - '@cloudflare/workers-types': - specifier: ^4.20241022.0 - version: 4.20241022.0 '@elastic/elasticsearch': specifier: ^7.17.14 version: 7.17.14 @@ -178,12 +175,6 @@ importers: '@rush-temp/client-resources': specifier: file:./projects/client-resources.tgz version: file:projects/client-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)) - '@rush-temp/cloud-branding': - specifier: file:./projects/cloud-branding.tgz - version: file:projects/cloud-branding.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(bufferutil@4.0.8)(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))(utf-8-validate@6.0.4) - '@rush-temp/cloud-transactor': - specifier: file:./projects/cloud-transactor.tgz - version: file:projects/cloud-transactor.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))(utf-8-validate@6.0.4) '@rush-temp/collaboration': specifier: file:./projects/collaboration.tgz version: file:projects/collaboration.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)) @@ -1756,9 +1747,6 @@ importers: intl-messageformat: specifier: ^10.7.14 version: 10.7.14 - itty-router: - specifier: ^5.0.18 - version: 5.0.18 jest: specifier: ^29.7.0 version: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)) @@ -2053,9 +2041,6 @@ importers: winston-daily-rotate-file: specifier: ^5.0.0 version: 5.0.0(winston@3.13.1) - wrangler: - specifier: ^3.108.1 - version: 3.112.0(@cloudflare/workers-types@4.20241022.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4) ws: specifier: ^8.18.0 version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) @@ -2461,43 +2446,6 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - '@cloudflare/kv-asset-handler@0.3.4': - resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} - engines: {node: '>=16.13'} - - '@cloudflare/workerd-darwin-64@1.20250214.0': - resolution: {integrity: sha512-cDvvedWDc5zrgDnuXe2qYcz/TwBvzmweO55C7XpPuAWJ9Oqxv81PkdekYxD8mH989aQ/GI5YD0Fe6fDYlM+T3Q==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20250214.0': - resolution: {integrity: sha512-NytCvRveVzu0mRKo+tvZo3d/gCUway3B2ZVqSi/TS6NXDGBYIJo7g6s3BnTLS74kgyzeDOjhu9j/RBJBS809qw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-linux-64@1.20250214.0': - resolution: {integrity: sha512-pQ7+aHNHj8SiYEs4d/6cNoimE5xGeCMfgU1yfDFtA9YGN9Aj2BITZgOWPec+HW7ZkOy9oWlNrO6EvVjGgB4tbQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20250214.0': - resolution: {integrity: sha512-Vhlfah6Yd9ny1npNQjNgElLIjR6OFdEbuR3LCfbLDCwzWEBFhIf7yC+Tpp/a0Hq7kLz3sLdktaP7xl3PJhyOjA==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-windows-64@1.20250214.0': - resolution: {integrity: sha512-GMwMyFbkjBKjYJoKDhGX8nuL4Gqe3IbVnVWf2Q6086CValyIknupk5J6uQWGw2EBU3RGO3x4trDXT5WphQJZDQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - - '@cloudflare/workers-types@4.20241022.0': - resolution: {integrity: sha512-1zOAw5QIDKItzGatzCrEpfLOB1AuMTwVqKmbw9B9eBfCUGRFNfJYMrJxIwcse9EmKahsQt2GruqU00pY/GyXgg==} - '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -2555,19 +2503,6 @@ packages: resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} engines: {node: '>=16.4'} - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - - '@esbuild-plugins/node-globals-polyfill@0.2.3': - resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} - peerDependencies: - esbuild: '*' - - '@esbuild-plugins/node-modules-polyfill@0.2.2': - resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} - peerDependencies: - esbuild: '*' - '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -2580,12 +2515,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -2598,12 +2527,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.19.12': resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -2616,12 +2539,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.19.12': resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -2634,12 +2551,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -2652,12 +2563,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.19.12': resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -2670,12 +2575,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -2688,12 +2587,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -2706,12 +2599,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -2724,12 +2611,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.19.12': resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -2742,12 +2623,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.19.12': resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -2760,12 +2635,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.19.12': resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -2778,12 +2647,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.19.12': resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -2796,12 +2659,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.19.12': resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -2814,12 +2671,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.19.12': resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -2832,12 +2683,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.19.12': resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -2850,12 +2695,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.19.12': resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -2874,12 +2713,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -2898,12 +2731,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.19.12': resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -2916,12 +2743,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -2934,12 +2755,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -2952,12 +2767,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.19.12': resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -2970,12 +2779,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.19.12': resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -3010,10 +2813,6 @@ packages: resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@formatjs/ecma402-abstract@2.3.2': resolution: {integrity: sha512-6sE5nyvDloULiyOMbOTJEEgWL32w+VHkZQs8S02Lnn8Y/O5aQhjOEXwWzvR7SsBE/exxlSpY2EsWZgqHbtLatg==} @@ -3075,111 +2874,6 @@ packages: '@iconify/utils@2.2.1': resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -4120,7 +3814,7 @@ packages: version: 0.0.0 '@rush-temp/card-resources@file:projects/card-resources.tgz': - resolution: {integrity: sha512-5apWhg2RHNKp8HUcu4H6FBItLJ4plUjTvHqnDitdSY9qeInCmpb0vik0U1F8AZmsES1W1PnZ5J/UJ8LN/tU3Pg==, tarball: file:projects/card-resources.tgz} + resolution: {integrity: sha512-FcEZHBMUGvv3IRmYXftC8F7YiJHWhaR+yFIUm1/ymdtDCmD5FQ+PyEpu7jMVoD24ahgRr87rZzji6uEw3jtCgw==, tarball: file:projects/card-resources.tgz} version: 0.0.0 '@rush-temp/card@file:projects/card.tgz': @@ -4147,14 +3841,6 @@ packages: resolution: {integrity: sha512-xAjcmTvXZEYabkVRYfvG+7Z6rh9Bj+hheOCkMkRWp1Jhki/s2UWQca0poY52uu/KbDfP9lkWCFNUHQN3UTz+gw==, tarball: file:projects/client.tgz} version: 0.0.0 - '@rush-temp/cloud-branding@file:projects/cloud-branding.tgz': - resolution: {integrity: sha512-F0xtSdqy4bLs+Gt9eZnfst2vBTuCjT7F3m+/WmwmlxuoL8fWxbEx/Lu6ztycPeCKlky61LkCvOlvJsdZvQI5wQ==, tarball: file:projects/cloud-branding.tgz} - version: 0.0.0 - - '@rush-temp/cloud-transactor@file:projects/cloud-transactor.tgz': - resolution: {integrity: sha512-r6yWZUKJ49CEI1q8+mw24O3pYCsNuZFZ8V+MlTVb1olIS6Sb4i0oB1EE6c1roRKrDD5IQsjtbk/G4tnC1X2meQ==, tarball: file:projects/cloud-transactor.tgz} - version: 0.0.0 - '@rush-temp/collaboration@file:projects/collaboration.tgz': resolution: {integrity: sha512-Ccasox/NhydkJmgC6yuPlUIHR+e0HRNc4ggaUw1t9waxOm30hB471sMzzyzJWEpINn8WT2ga6XY81Sh+qW+8nQ==, tarball: file:projects/collaboration.tgz} version: 0.0.0 @@ -4828,11 +4514,11 @@ packages: version: 0.0.0 '@rush-temp/pod-datalake@file:projects/pod-datalake.tgz': - resolution: {integrity: sha512-Qb+okD7En9HkckPfuvUJRc0akUqTnzcU2u36ZKH5qDG37ie8i+52O8niwozFccTQRnlgmMW0lKC7UHsy0uOHVA==, tarball: file:projects/pod-datalake.tgz} + resolution: {integrity: sha512-esKnZvkrZ3FgWuaXLfk/qKBYUm7xzZQ7RgHdPXeFYHNMnB50kJqXmJbEVef2QzdHtLPOOOiRYVEfK+KGGVg7FQ==, tarball: file:projects/pod-datalake.tgz} version: 0.0.0 '@rush-temp/pod-export@file:projects/pod-export.tgz': - resolution: {integrity: sha512-ZFXMGyHVkTv7XD9ADDO1+n6cQN0dJ9yEGP3vaEaGZjKYTltoWwGGpfOW5k9Qe+ebpt7oL0s077OY1NDlWtTMRA==, tarball: file:projects/pod-export.tgz} + resolution: {integrity: sha512-H6qoITt5dqIu0MgU7rtKQYyMe/RhsVOHm0CLThbzO6wftD5BmY0Ji5Gb00/VLg7bbt4Jsg5W8F435sQSwKWmHw==, tarball: file:projects/pod-export.tgz} version: 0.0.0 '@rush-temp/pod-front@file:projects/pod-front.tgz': @@ -7088,9 +6774,6 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -7234,9 +6917,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blake3-wasm@2.1.5: - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - block-stream2@2.1.0: resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} @@ -7686,10 +7366,6 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -8022,9 +7698,6 @@ packages: dagre-d3-es@7.0.11: resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} @@ -8162,9 +7835,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - degenerator@5.0.1: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} @@ -8209,10 +7879,6 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -8610,11 +8276,6 @@ packages: esbuild: '>=0.17.0' svelte: '>=4.2.1 <6' - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -8845,9 +8506,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -8891,10 +8549,6 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -9241,9 +8895,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stdin@8.0.0: resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} engines: {node: '>=10'} @@ -9977,9 +9628,6 @@ packages: iterator.prototype@1.1.2: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - itty-router@5.0.18: - resolution: {integrity: sha512-mK3ReOt4ARAGy0V0J7uHmArG2USN2x0zprZ+u+YgmeRjXTDbaowDy3kPcsmQY6tH+uHhDgpWit9Vqmv/4rTXwA==} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -10629,9 +10277,6 @@ packages: ltgt@2.2.1: resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.7: resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} @@ -10776,11 +10421,6 @@ packages: peerDependencies: webpack: ^5.0.0 - miniflare@3.20250214.2: - resolution: {integrity: sha512-t+lT4p2lbOcKv4PS3sx1F/wcDAlbEYZCO2VooLp4H7JErWWYIi9yjD3UillC3CGOpiBahVg5nrPCoFltZf6UlA==} - engines: {node: '>=16.13'} - hasBin: true - minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -10952,10 +10592,6 @@ packages: resolution: {integrity: sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==} engines: {node: '>= 0.10'} - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11170,9 +10806,6 @@ packages: resolution: {integrity: sha512-u+XuSejhe3NdIvty3Jod00JvTdAE/0/+XbhIDhefHbu+2OcTRHd80aCiH6TX19ZybJmwPQBKFQmHGxp0i9mJrg==} engines: {node: '>= 18'} - ohash@1.1.4: - resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} - oidc-token-hash@5.0.3: resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} engines: {node: ^10.13.0 || >=12.0.0} @@ -11442,9 +11075,6 @@ packages: path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11745,9 +11375,6 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - printj@1.1.2: resolution: {integrity: sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==} engines: {node: '>=0.8'} @@ -12117,16 +11744,6 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - rollup-plugin-inject@3.0.2: - resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. - - rollup-plugin-node-polyfills@0.2.1: - resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rope-sequence@1.3.4: resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} @@ -12314,10 +11931,6 @@ packages: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -12469,10 +12082,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} @@ -12508,9 +12117,6 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - standard-engine@15.1.0: resolution: {integrity: sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -12527,10 +12133,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - store2@2.14.3: resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} @@ -13164,13 +12766,6 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.5: - resolution: {integrity: sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==} - engines: {node: '>=14.0'} - - unenv@2.0.0-rc.1: - resolution: {integrity: sha512-PU5fb40H8X149s117aB4ytbORcCvlASdtF97tfls4BPIyj4PeVxvpSuy1jAptqYHqB0vb2w2sHvzM0XWcp2OKg==} - unique-filename@2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -13505,21 +13100,6 @@ packages: resolution: {integrity: sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==} engines: {node: '>= 12.0.0'} - workerd@1.20250214.0: - resolution: {integrity: sha512-QWcqXZLiMpV12wiaVnb3nLmfs/g4ZsFQq2mX85z546r3AX4CTIkXl0VP50W3CwqLADej3PGYiRDOTelDOwVG1g==} - engines: {node: '>=16'} - hasBin: true - - wrangler@3.112.0: - resolution: {integrity: sha512-PNQWGze3ODlWwG33LPr8kNhbht3eB3L9fogv+fapk2fjaqj0kNweRapkwmvtz46ojcqWzsxmTe4nOC0hIVUfPA==} - engines: {node: '>=16.17.0'} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20250214.0 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrap-ansi@2.1.0: resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} engines: {node: '>=0.10.0'} @@ -13710,9 +13290,6 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - youch@3.2.3: - resolution: {integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==} - zeed-dom@0.15.1: resolution: {integrity: sha512-dtZ0aQSFyZmoJS0m06/xBN1SazUBPL5HpzlAcs/KcRW0rzadYw12deQBjeMhGKMMeGEp7bA9vmikMLaO4exBcg==} engines: {node: '>=14.13.1'} @@ -13727,9 +13304,6 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.22.3: - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -14507,27 +14081,6 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@cloudflare/kv-asset-handler@0.3.4': - dependencies: - mime: 3.0.0 - - '@cloudflare/workerd-darwin-64@1.20250214.0': - optional: true - - '@cloudflare/workerd-darwin-arm64@1.20250214.0': - optional: true - - '@cloudflare/workerd-linux-64@1.20250214.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20250214.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20250214.0': - optional: true - - '@cloudflare/workers-types@4.20241022.0': {} - '@colors/colors@1.6.0': {} '@cryptography/aes@0.1.1': {} @@ -14636,165 +14189,102 @@ snapshots: transitivePeerDependencies: - supports-color - '@emnapi/runtime@1.3.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': - dependencies: - esbuild: 0.17.19 - - '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': - dependencies: - esbuild: 0.17.19 - escape-string-regexp: 4.0.0 - rollup-plugin-node-polyfills: 0.2.1 - '@esbuild/aix-ppc64@0.19.12': optional: true '@esbuild/aix-ppc64@0.24.2': optional: true - '@esbuild/android-arm64@0.17.19': - optional: true - '@esbuild/android-arm64@0.19.12': optional: true '@esbuild/android-arm64@0.24.2': optional: true - '@esbuild/android-arm@0.17.19': - optional: true - '@esbuild/android-arm@0.19.12': optional: true '@esbuild/android-arm@0.24.2': optional: true - '@esbuild/android-x64@0.17.19': - optional: true - '@esbuild/android-x64@0.19.12': optional: true '@esbuild/android-x64@0.24.2': optional: true - '@esbuild/darwin-arm64@0.17.19': - optional: true - '@esbuild/darwin-arm64@0.19.12': optional: true '@esbuild/darwin-arm64@0.24.2': optional: true - '@esbuild/darwin-x64@0.17.19': - optional: true - '@esbuild/darwin-x64@0.19.12': optional: true '@esbuild/darwin-x64@0.24.2': optional: true - '@esbuild/freebsd-arm64@0.17.19': - optional: true - '@esbuild/freebsd-arm64@0.19.12': optional: true '@esbuild/freebsd-arm64@0.24.2': optional: true - '@esbuild/freebsd-x64@0.17.19': - optional: true - '@esbuild/freebsd-x64@0.19.12': optional: true '@esbuild/freebsd-x64@0.24.2': optional: true - '@esbuild/linux-arm64@0.17.19': - optional: true - '@esbuild/linux-arm64@0.19.12': optional: true '@esbuild/linux-arm64@0.24.2': optional: true - '@esbuild/linux-arm@0.17.19': - optional: true - '@esbuild/linux-arm@0.19.12': optional: true '@esbuild/linux-arm@0.24.2': optional: true - '@esbuild/linux-ia32@0.17.19': - optional: true - '@esbuild/linux-ia32@0.19.12': optional: true '@esbuild/linux-ia32@0.24.2': optional: true - '@esbuild/linux-loong64@0.17.19': - optional: true - '@esbuild/linux-loong64@0.19.12': optional: true '@esbuild/linux-loong64@0.24.2': optional: true - '@esbuild/linux-mips64el@0.17.19': - optional: true - '@esbuild/linux-mips64el@0.19.12': optional: true '@esbuild/linux-mips64el@0.24.2': optional: true - '@esbuild/linux-ppc64@0.17.19': - optional: true - '@esbuild/linux-ppc64@0.19.12': optional: true '@esbuild/linux-ppc64@0.24.2': optional: true - '@esbuild/linux-riscv64@0.17.19': - optional: true - '@esbuild/linux-riscv64@0.19.12': optional: true '@esbuild/linux-riscv64@0.24.2': optional: true - '@esbuild/linux-s390x@0.17.19': - optional: true - '@esbuild/linux-s390x@0.19.12': optional: true '@esbuild/linux-s390x@0.24.2': optional: true - '@esbuild/linux-x64@0.17.19': - optional: true - '@esbuild/linux-x64@0.19.12': optional: true @@ -14804,9 +14294,6 @@ snapshots: '@esbuild/netbsd-arm64@0.24.2': optional: true - '@esbuild/netbsd-x64@0.17.19': - optional: true - '@esbuild/netbsd-x64@0.19.12': optional: true @@ -14816,45 +14303,30 @@ snapshots: '@esbuild/openbsd-arm64@0.24.2': optional: true - '@esbuild/openbsd-x64@0.17.19': - optional: true - '@esbuild/openbsd-x64@0.19.12': optional: true '@esbuild/openbsd-x64@0.24.2': optional: true - '@esbuild/sunos-x64@0.17.19': - optional: true - '@esbuild/sunos-x64@0.19.12': optional: true '@esbuild/sunos-x64@0.24.2': optional: true - '@esbuild/win32-arm64@0.17.19': - optional: true - '@esbuild/win32-arm64@0.19.12': optional: true '@esbuild/win32-arm64@0.24.2': optional: true - '@esbuild/win32-ia32@0.17.19': - optional: true - '@esbuild/win32-ia32@0.19.12': optional: true '@esbuild/win32-ia32@0.24.2': optional: true - '@esbuild/win32-x64@0.17.19': - optional: true - '@esbuild/win32-x64@0.19.12': optional: true @@ -14886,8 +14358,6 @@ snapshots: '@faker-js/faker@8.4.1': {} - '@fastify/busboy@2.1.1': {} - '@formatjs/ecma402-abstract@2.3.2': dependencies: '@formatjs/fast-memoize': 2.2.6 @@ -14985,81 +14455,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - - '@img/sharp-darwin-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - - '@img/sharp-libvips-linux-s390x@1.0.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - optional: true - - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - - '@img/sharp-linux-s390x@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - optional: true - - '@img/sharp-linux-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - optional: true - - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.3.1 - optional: true - - '@img/sharp-win32-ia32@0.33.5': - optional: true - - '@img/sharp-win32-x64@0.33.5': - optional: true - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -17313,68 +16708,6 @@ snapshots: - supports-color - ts-node - '@rush-temp/cloud-branding@file:projects/cloud-branding.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(bufferutil@4.0.8)(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))(utf-8-validate@6.0.4)': - dependencies: - '@cloudflare/workers-types': 4.20241022.0 - '@types/jest': 29.5.12 - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2) - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2) - eslint: 8.56.0 - eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2) - eslint-plugin-import: 2.29.1(eslint@8.56.0) - eslint-plugin-n: 15.7.0(eslint@8.56.0) - eslint-plugin-promise: 6.1.1(eslint@8.56.0) - itty-router: 5.0.18 - jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)) - prettier: 3.2.5 - ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2) - typescript: 5.6.2 - wrangler: 3.112.0(@cloudflare/workers-types@4.20241022.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - '@babel/core' - - '@jest/types' - - '@types/node' - - babel-jest - - babel-plugin-macros - - bufferutil - - esbuild - - node-notifier - - supports-color - - ts-node - - utf-8-validate - - '@rush-temp/cloud-transactor@file:projects/cloud-transactor.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))(utf-8-validate@6.0.4)': - dependencies: - '@cloudflare/workers-types': 4.20241022.0 - '@types/jest': 29.5.12 - '@types/snappyjs': 0.7.1 - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2) - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2) - esbuild: 0.24.2 - eslint: 8.56.0 - eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2) - eslint-plugin-import: 2.29.1(eslint@8.56.0) - eslint-plugin-n: 15.7.0(eslint@8.56.0) - eslint-plugin-promise: 6.1.1(eslint@8.56.0) - itty-router: 5.0.18 - jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)) - prettier: 3.2.5 - snappyjs: 0.7.0 - ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2) - typescript: 5.6.2 - wrangler: 3.112.0(@cloudflare/workers-types@4.20241022.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - '@babel/core' - - '@jest/types' - - '@types/node' - - babel-jest - - babel-plugin-macros - - bufferutil - - node-notifier - - supports-color - - ts-node - - utf-8-validate - '@rush-temp/collaboration@file:projects/collaboration.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))': dependencies: '@types/jest': 29.5.12 @@ -29041,10 +28374,6 @@ snapshots: arrify@2.0.1: {} - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - asap@2.0.6: {} asn1.js@5.4.1: @@ -29208,8 +28537,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blake3-wasm@2.1.5: {} - block-stream2@2.1.0: dependencies: readable-stream: 3.6.2 @@ -29743,8 +29070,6 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.5.0: {} - cookie@0.7.1: {} cookiejar@2.1.4: {} @@ -30126,8 +29451,6 @@ snapshots: d3: 7.9.0 lodash-es: 4.17.21 - data-uri-to-buffer@2.0.2: {} - data-uri-to-buffer@6.0.2: {} data-urls@3.0.2: @@ -30240,8 +29563,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} - degenerator@5.0.1: dependencies: ast-types: 0.13.4 @@ -30272,9 +29593,6 @@ snapshots: detect-libc@2.0.2: {} - detect-libc@2.0.3: - optional: true - detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -30825,31 +30143,6 @@ snapshots: esbuild: 0.24.2 svelte: 4.2.19 - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -31216,8 +30509,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@0.6.1: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 @@ -31265,8 +30556,6 @@ snapshots: exif-parser@0.1.12: {} - exit-hook@2.2.1: {} - exit@0.1.2: {} expand-template@2.0.3: {} @@ -31676,11 +30965,6 @@ snapshots: get-package-type@0.1.0: {} - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stdin@8.0.0: {} get-stream@4.1.0: @@ -32483,8 +31767,6 @@ snapshots: reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 - itty-router@5.0.18: {} - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -33412,10 +32694,6 @@ snapshots: ltgt@2.2.1: optional: true - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - magic-string@0.30.7: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -33582,23 +32860,6 @@ snapshots: tapable: 2.2.1 webpack: 5.97.1(esbuild@0.24.2)(webpack-cli@5.1.4) - miniflare@3.20250214.2(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.28.5 - workerd: 1.20250214.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youch: 3.2.3 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - minimalistic-assert@1.0.1: {} minimatch@10.0.1: @@ -33773,8 +33034,6 @@ snapshots: safe-buffer: 5.2.1 uid-safe: 2.1.5 - mustache@4.2.0: {} - nanoid@3.3.7: {} napi-build-utils@1.0.2: {} @@ -33984,8 +33243,6 @@ snapshots: '@octokit/request-error': 5.1.0 '@octokit/types': 13.5.0 - ohash@1.1.4: {} - oidc-token-hash@5.0.3: {} omggif@1.0.10: {} @@ -34261,8 +33518,6 @@ snapshots: path-to-regexp@6.2.1: {} - path-to-regexp@6.3.0: {} - path-type@4.0.0: {} pathe@1.1.2: {} @@ -34543,8 +33798,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - printable-characters@1.0.42: {} - printj@1.1.2: {} process-nextick-args@2.0.1: {} @@ -34986,20 +34239,6 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-inject@3.0.2: - dependencies: - estree-walker: 0.6.1 - magic-string: 0.25.9 - rollup-pluginutils: 2.8.2 - - rollup-plugin-node-polyfills@0.2.1: - dependencies: - rollup-plugin-inject: 3.0.2 - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - rope-sequence@1.3.4: {} roughjs@4.6.6: @@ -35214,33 +34453,6 @@ snapshots: tar-fs: 3.0.5 tunnel-agent: 0.6.0 - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - optional: true - shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -35419,8 +34631,6 @@ snapshots: source-map@0.7.4: {} - sourcemap-codec@1.4.8: {} - sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 @@ -35464,11 +34674,6 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 - standard-engine@15.1.0: dependencies: get-stdin: 8.0.0 @@ -35482,8 +34687,6 @@ snapshots: statuses@2.0.1: {} - stoppable@1.1.0: {} - store2@2.14.3: {} stream-browserify@3.0.0: @@ -36348,18 +35551,6 @@ snapshots: undici-types@5.26.5: {} - undici@5.28.5: - dependencies: - '@fastify/busboy': 2.1.1 - - unenv@2.0.0-rc.1: - dependencies: - defu: 6.1.4 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - ufo: 1.5.4 - unique-filename@2.0.1: dependencies: unique-slug: 3.0.0 @@ -36800,33 +35991,6 @@ snapshots: triple-beam: 1.4.1 winston-transport: 4.7.1 - workerd@1.20250214.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250214.0 - '@cloudflare/workerd-darwin-arm64': 1.20250214.0 - '@cloudflare/workerd-linux-64': 1.20250214.0 - '@cloudflare/workerd-linux-arm64': 1.20250214.0 - '@cloudflare/workerd-windows-64': 1.20250214.0 - - wrangler@3.112.0(@cloudflare/workers-types@4.20241022.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@cloudflare/kv-asset-handler': 0.3.4 - '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) - '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) - blake3-wasm: 2.1.5 - esbuild: 0.17.19 - miniflare: 3.20250214.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) - path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.1 - workerd: 1.20250214.0 - optionalDependencies: - '@cloudflare/workers-types': 4.20241022.0 - fsevents: 2.3.3 - sharp: 0.33.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - wrap-ansi@2.1.0: dependencies: string-width: 1.0.2 @@ -37003,12 +36167,6 @@ snapshots: yocto-queue@1.0.0: {} - youch@3.2.3: - dependencies: - cookie: 0.5.0 - mustache: 4.2.0 - stacktracey: 2.1.8 - zeed-dom@0.15.1: dependencies: css-what: 6.1.0 @@ -37027,6 +36185,4 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod@3.22.3: {} - zod@3.23.8: {} diff --git a/rush.json b/rush.json index a21c5fce86..cc04f7545c 100644 --- a/rush.json +++ b/rush.json @@ -2228,11 +2228,6 @@ "projectFolder": "plugins/openai", "shouldPublish": false }, - { - "packageName": "@hcengineering/cloud-branding", - "projectFolder": "workers/branding", - "shouldPublish": false - }, { "packageName": "@hcengineering/scripts", "projectFolder": "common/scripts", @@ -2278,11 +2273,6 @@ "projectFolder": "plugins/survey-resources", "shouldPublish": false }, - { - "packageName": "@hcengineering/cloud-transactor", - "projectFolder": "workers/transactor", - "shouldPublish": false - }, { "packageName": "@hcengineering/card", "projectFolder": "plugins/card", diff --git a/workers/.gitignore b/workers/.gitignore deleted file mode 100644 index 74365ae7d0..0000000000 --- a/workers/.gitignore +++ /dev/null @@ -1 +0,0 @@ -**/.dev.vars \ No newline at end of file diff --git a/workers/branding/.dev.vars b/workers/branding/.dev.vars deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/workers/branding/.eslintrc.js b/workers/branding/.eslintrc.js deleted file mode 100644 index ce90fb9646..0000000000 --- a/workers/branding/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/node/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/workers/branding/config/rig.json b/workers/branding/config/rig.json deleted file mode 100644 index 78cc5a1733..0000000000 --- a/workers/branding/config/rig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", - "rigPackageName": "@hcengineering/platform-rig", - "rigProfile": "node" -} diff --git a/workers/branding/jest.config.js b/workers/branding/jest.config.js deleted file mode 100644 index 2cfd408b67..0000000000 --- a/workers/branding/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'], - roots: ["./src"], - coverageReporters: ["text-summary", "html"] -} diff --git a/workers/branding/package.json b/workers/branding/package.json deleted file mode 100644 index 358e10a580..0000000000 --- a/workers/branding/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@hcengineering/cloud-branding", - "version": "0.6.0", - "main": "lib/index.js", - "types": "types/index.d.ts", - "template": "@hcengineering/cloud-package", - "scripts": { - "deploy": "wrangler deploy", - "dev": "wrangler dev --port 4021", - "start": "wrangler dev --port 4021", - "cf-typegen": "wrangler types", - "build": "compile", - "build:watch": "compile", - "test": "jest --passWithNoTests --silent --forceExit", - "format": "format src", - "_phase:build": "compile transpile src", - "_phase:test": "jest --passWithNoTests --silent --forceExit", - "_phase:format": "format src", - "_phase:validate": "compile validate" - }, - "devDependencies": { - "@hcengineering/platform-rig": "^0.6.0", - "@cloudflare/workers-types": "^4.20241022.0", - "typescript": "^5.3.3", - "wrangler": "^3.108.1", - "jest": "^29.7.0", - "prettier": "^3.1.0", - "ts-jest": "^29.1.1", - "@hcengineering/core": "^0.6.32", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.4.0", - "eslint-plugin-promise": "^6.1.1", - "eslint": "^8.54.0", - "@types/jest": "^29.5.5" - }, - "dependencies": { - "itty-router": "^5.0.18" - }, - "private": true -} diff --git a/workers/branding/src/env.ts b/workers/branding/src/env.ts deleted file mode 100644 index 7e76f39656..0000000000 --- a/workers/branding/src/env.ts +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright © 2024 Hardcore Engineering Inc. -// -// Licensed under the Eclipse Public License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. You may -// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -export interface Env { - KV: KVNamespace -} diff --git a/workers/branding/src/index.ts b/workers/branding/src/index.ts deleted file mode 100644 index 3936531262..0000000000 --- a/workers/branding/src/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright © 2024 Hardcore Engineering Inc. -// -// Licensed under the Eclipse Public License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. You may -// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -import { Router, error, cors } from 'itty-router' -import { WorkerEntrypoint } from 'cloudflare:workers' -import type { Branding, BrandingMap } from '@hcengineering/core' - -import type { Env } from './env' - -const { preflight, corsify } = cors({ - maxAge: 86400 -}) - -const router = Router({ - before: [preflight], - catch: error, - finally: [(r: any) => r ?? error(404), corsify] -}) - -const BRANDING_KEY_PREFIX = 'branding/' - -async function getBrandings (env: Env): Promise { - // Note: up to 100 keys can be listed at once. If more, use cursor. - const keys = (await env.KV.list({ prefix: BRANDING_KEY_PREFIX })).keys - const values = await Promise.all(keys.map(async (key) => await env.KV.get(key.name, { type: 'json' }))) - - return keys.reduce((acc, key, idx) => { - if (values[idx] === null) return acc - - acc[getBrandingHost(key.name)] = values[idx] - return acc - }, {}) -} - -function getBrandingKey (host: string): string { - return `${BRANDING_KEY_PREFIX}${host}` -} - -function getBrandingHost (key: string): string { - return key.slice(BRANDING_KEY_PREFIX.length) -} - -router.get('/brandings', async (req, ctx: { env: Env, exCtx: ExecutionContext }) => { - return new Response(JSON.stringify(await getBrandings(ctx.env)), { status: 200 }) -}) - -// TODO later -// router.get('/branding/{host}') -// router.post('/branding/{host}') [with auth] -// router.put('/branding/{host}') [with auth] - -export default class BrandingWorker extends WorkerEntrypoint { - async fetch (request: Request): Promise { - return await router.fetch(request, { env: this.env }) - } - - async getBranding (host: string): Promise { - const value = await this.env.KV.get(getBrandingKey(host), { type: 'json' }) - - if (value == null) { - return null - } - - return value - } - - async getBrandings (): Promise { - return await getBrandings(this.env) - } -} diff --git a/workers/branding/tsconfig.json b/workers/branding/tsconfig.json deleted file mode 100644 index da8672e6cb..0000000000 --- a/workers/branding/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./node_modules/@hcengineering/platform-rig/profiles/default/tsconfig.json", - - "compilerOptions": { - "rootDir": "./src", - "outDir": "./lib", - "declarationDir": "./types", - "tsBuildInfoFile": ".build/build.tsbuildinfo", - "types": ["@cloudflare/workers-types", "jest"], - "lib": ["esnext"] - } -} \ No newline at end of file diff --git a/workers/branding/wrangler.toml b/workers/branding/wrangler.toml deleted file mode 100644 index a7df11a7f9..0000000000 --- a/workers/branding/wrangler.toml +++ /dev/null @@ -1,14 +0,0 @@ -#:schema node_modules/wrangler/config-schema.json -name = "branding-worker" -main = "src/index.ts" -compatibility_date = "2024-07-01" -keep_vars = true - -[build] -command = "npm run build" -watch_dir = "./src" - -[[kv_namespaces]] -binding = "KV" -id = "c020474a-1223-402b-be0c-cd122bab9599" -preview_id = "c320577a-5563-457b-be0c-cd152bab5599" diff --git a/workers/collaborator/src/metrics.ts b/workers/collaborator/src/metrics.ts deleted file mode 100644 index 5c800b879b..0000000000 --- a/workers/collaborator/src/metrics.ts +++ /dev/null @@ -1,95 +0,0 @@ -// -// Copyright © 2024 Hardcore Engineering Inc. -// -// Licensed under the Eclipse Public License, Version 2.0 (the 'License'); -// you may not use this file except in compliance with the License. You may -// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an 'AS IS' BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import { type Env } from './env' - -export async function withMetrics (name: string, fn: (ctx: MetricsContext) => Promise): Promise { - const ctx = new MetricsContext() - - const start = performance.now() - - try { - return await fn(ctx) - } finally { - const total = performance.now() - start - const ops = ctx.metrics - const message = `${name} total=${total} ` + ctx.toString() - console.log({ message, total, ops }) - } -} - -export interface MetricsData { - op: string - time: number -} - -export class MetricsContext { - metrics: Array = [] - - debug (...data: any[]): void { - console.debug(...data) - } - - log (...data: any[]): void { - console.log(...data) - } - - error (...data: any[]): void { - console.error(...data) - } - - async with(op: string, fn: () => Promise): Promise { - const start = performance.now() - try { - return await fn() - } finally { - const time = performance.now() - start - this.metrics.push({ op, time }) - } - } - - withSync(op: string, fn: () => T): T { - const start = performance.now() - try { - return fn() - } finally { - const time = performance.now() - start - this.metrics.push({ op, time }) - } - } - - toString (): string { - return this.metrics.map((p) => `${p.op}=${p.time}`).join(' ') - } -} - -export class LoggedDatalake { - constructor ( - private readonly datalake: Env['DATALAKE'], - private readonly ctx: MetricsContext - ) {} - - async getBlob (workspace: string, name: string): Promise { - return await this.ctx.with('datalake.getBlob', () => { - return this.datalake.getBlob(workspace, name) - }) - } - - async putBlob (workspace: string, name: string, data: ArrayBuffer | Blob | string, type: string): Promise { - await this.ctx.with('datalake.putBlob', () => { - return this.datalake.putBlob(workspace, name, data, type) - }) - } -} diff --git a/workers/transactor/.editorconfig b/workers/transactor/.editorconfig deleted file mode 100644 index 6874770725..0000000000 --- a/workers/transactor/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/workers/transactor/.eslintrc.js b/workers/transactor/.eslintrc.js deleted file mode 100644 index 72235dc283..0000000000 --- a/workers/transactor/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - } -} diff --git a/workers/transactor/.gitignore b/workers/transactor/.gitignore deleted file mode 100644 index 0148aabfad..0000000000 --- a/workers/transactor/.gitignore +++ /dev/null @@ -1,173 +0,0 @@ -# Logs - -logs -_.log -npm-debug.log_ -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) - -report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json - -# Runtime data - -pids -_.pid -_.seed -\*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover - -lib-cov - -# Coverage directory used by tools like istanbul - -coverage -\*.lcov - -# nyc test coverage - -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) - -.grunt - -# Bower dependency directory (https://bower.io/) - -bower_components - -# node-waf configuration - -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) - -build/Release - -# Dependency directories - -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) - -web_modules/ - -# TypeScript cache - -\*.tsbuildinfo - -# Optional npm cache directory - -.npm - -# Optional eslint cache - -.eslintcache - -# Optional stylelint cache - -.stylelintcache - -# Microbundle cache - -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history - -.node_repl_history - -# Output of 'npm pack' - -\*.tgz - -# Yarn Integrity file - -.yarn-integrity - -# dotenv environment variable files - -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) - -.cache -.parcel-cache - -# Next.js build output - -.next -out - -# Nuxt.js build / generate output - -.nuxt -dist - -# Gatsby files - -.cache/ - -# Comment in the public line in if your project uses Gatsby and not Next.js - -# https://nextjs.org/blog/next-9-1#public-directory-support - -# public - -# vuepress build output - -.vuepress/dist - -# vuepress v2.x temp and cache directory - -.temp -.cache - -# Docusaurus cache and generated files - -.docusaurus - -# Serverless directories - -.serverless/ - -# FuseBox cache - -.fusebox/ - -# DynamoDB Local files - -.dynamodb/ - -# TernJS port file - -.tern-port - -# Stores VSCode versions used for testing VSCode extensions - -.vscode-test - -# yarn v2 - -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.\* - -# wrangler project - -.dev.vars -.wrangler/ -src/model.json \ No newline at end of file diff --git a/workers/transactor/calc.sh b/workers/transactor/calc.sh deleted file mode 100755 index 164e22cf5e..0000000000 --- a/workers/transactor/calc.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -files=$(cat ./dist/index.js|grep node_modules | grep //) - -declare -a file_info - -# Iterate over each line in $files -while IFS= read -r line; do - file=${line##*//} - size=$(ls -l $file 2>/dev/null | awk '{print $5}') - # echo "Processing: $file $size" - - if [ ! -z "$size" ]; then - # Store size and path together - file_info+=("$size:$file") - fi -done <<< "$files" - -# Sort the array by size (numerically, in descending order) and print -printf '%s\n' "${file_info[@]}" | sort -t: -k1,1nr | while IFS=: read -r size path; do - if [ $(($size/1024)) -ne 0 ]; then - echo "Size: $(($size/1024)) KB - $path" - fi -done \ No newline at end of file diff --git a/workers/transactor/config/rig.json b/workers/transactor/config/rig.json deleted file mode 100644 index 0110930f55..0000000000 --- a/workers/transactor/config/rig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", - "rigPackageName": "@hcengineering/platform-rig" -} diff --git a/workers/transactor/package.json b/workers/transactor/package.json deleted file mode 100644 index a1f784e30e..0000000000 --- a/workers/transactor/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "@hcengineering/cloud-transactor", - "version": "0.0.0", - "private": true, - "template": "cloud", - "scripts": { - "deploy": "wrangler deploy", - "dev": "wrangler dev --port 3335 --remote", - "dev-local": "wrangler dev --port 3335 --local --upstream-protocol=http", - "start": "wrangler dev --port 3335", - "logs": "npx wrangler tail --format pretty", - "cf-typegen": "wrangler types", - "get-model": "mkdir -p bundle && esbuild src/get-model.ts --bundle --keep-names --external:*.node --platform=node --define:process.env.MODEL_VERSION=$(node ../../common/scripts/show_version.js) --define:process.env.VERSION=$(node ../../common/scripts/show_tag.js) --define:process.env.GIT_REVISION=$(../../common/scripts/git_version.sh) --outfile=bundle/bundle.js --log-level=error && node ./bundle/bundle.js > ./src/model.json", - "bundle": "rushx get-model && wrangler deploy --dry-run --outdir dist", - "build": "compile", - "build:watch": "compile", - "test": "jest --passWithNoTests --silent --forceExit", - "format": "format src", - "_phase:bundle": "rushx get-model", - "_phase:build": "compile transpile src", - "_phase:test": "jest --passWithNoTests --silent --forceExit", - "_phase:format": "format src", - "_phase:validate": "rushx bundle && compile validate" - }, - "devDependencies": { - "@cloudflare/workers-types": "^4.20241022.0", - "@hcengineering/model-all": "^0.6.0", - "@hcengineering/platform-rig": "^0.6.0", - "@types/jest": "^29.5.5", - "@typescript-eslint/eslint-plugin": "^6.11.0", - "@typescript-eslint/parser": "^6.11.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-n": "^15.4.0", - "eslint": "^8.54.0", - "jest": "^29.7.0", - "prettier": "^3.1.0", - "ts-jest": "^29.1.1", - "typescript": "^5.3.3", - "wrangler": "^3.108.1", - "esbuild": "^0.24.2", - "@types/snappyjs": "^0.7.1" - }, - "dependencies": { - "@hcengineering/core": "^0.6.32", - "@hcengineering/middleware": "^0.6.0", - "@hcengineering/platform-rig": "^0.6.0", - "@hcengineering/rpc": "^0.6.5", - "@hcengineering/platform": "^0.6.11", - "@hcengineering/postgres": "^0.6.0", - "@hcengineering/server": "^0.6.4", - "@hcengineering/server-core": "^0.6.1", - "@hcengineering/server-client": "^0.6.0", - "@hcengineering/server-pipeline": "^0.6.0", - "@hcengineering/server-token": "^0.6.11", - "@hcengineering/contact": "^0.6.24", - "@hcengineering/storage": "^0.6.0", - "@hcengineering/server-notification": "^0.6.1", - "@hcengineering/notification": "^0.6.23", - "@hcengineering/server-ai-bot": "^0.6.0", - "@hcengineering/server-telegram": "^0.6.0", - "itty-router": "^5.0.18", - "snappyjs": "^0.7.0" - } -} diff --git a/workers/transactor/src/get-model.ts b/workers/transactor/src/get-model.ts deleted file mode 100644 index 9f9b31b293..0000000000 --- a/workers/transactor/src/get-model.ts +++ /dev/null @@ -1 +0,0 @@ -import '@hcengineering/model-all/src/show' diff --git a/workers/transactor/src/index.ts b/workers/transactor/src/index.ts deleted file mode 100644 index 1f4c81d79e..0000000000 --- a/workers/transactor/src/index.ts +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright © 2024 Huly Labs. - -import { Class, Doc, DocumentQuery, FindOptions, Ref, Tx } from '@hcengineering/core' -import { decodeToken } from '@hcengineering/server-token' -import { RpcTarget, WorkerEntrypoint } from 'cloudflare:workers' -import { Router, error, html } from 'itty-router' -import type { Transactor } from './transactor' - -export { Transactor } from './transactor' - -export interface Env { - TRANSACTOR: DurableObjectNamespace - - HYPERDRIVE: Hyperdrive - - SERVER_SECRET: string - ACCOUNTS_URL: string -} - -export default { - async fetch (request: Request, env: Env, ctx: ExecutionContext): Promise { - const router = Router() - - router - .get('/:token', async ({ params, headers }) => { - if (headers.get('Upgrade') !== 'websocket') { - return new Response('Expected header Upgrade: websocket', { status: 426 }) - } - try { - const { account, workspace } = decodeToken(params.token, true, env.SERVER_SECRET) - console.log({ message: 'connecting', account, workspace }) - - const id = env.TRANSACTOR.idFromName(workspace) - const stub = env.TRANSACTOR.get(id) - - return await stub.fetch(request) - } catch (err: any) { - console.error({ message: 'Request failed:', err, errMessage: err.message, stack: err.stack }) - - return new Response('Invalid', { status: 401 }) - } - }) - - // TODO: Add statistics using storage - .all('/', () => - html( - `Huly® Transactor™ https://huly.io - © 2024 Huly Labs` - ) - ) - .all('*', () => error(404)) - - return await router.fetch(request).catch(error) - } -} satisfies ExportedHandler - -class TransactorRpcTarget extends RpcTarget { - constructor ( - private readonly token: string, - private readonly workspaceId: string, - private readonly transactor: DurableObjectStub - ) { - super() - } - - async findAll (_class: Ref>, query?: DocumentQuery, options?: FindOptions): Promise { - return (this.transactor as any).findAll(this.token, this.workspaceId, _class, query, options) - } - - async tx (tx: Tx): Promise { - return (this.transactor as any).tx(this.token, this.workspaceId, tx) - } - - async getModel (): Promise { - return (this.transactor as any).getModel(this.token) - } - - async getAccount (): Promise { - return (this.transactor as any).getAccount(this.token, this.workspaceId) - } -} - -export class TransactorRpc extends WorkerEntrypoint { - async openRpc (token: string, workspaceId: string): Promise { - const decodedToken = decodeToken(token, true, this.env.SERVER_SECRET) - const id = this.env.TRANSACTOR.idFromName(decodedToken.workspace) - const stub = this.env.TRANSACTOR.get(id) - return new TransactorRpcTarget(token, workspaceId, stub) - } -} diff --git a/workers/transactor/src/logger.ts b/workers/transactor/src/logger.ts deleted file mode 100644 index b0926ac94d..0000000000 --- a/workers/transactor/src/logger.ts +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright © 2025 Hardcore Engineering Inc. -// - -import type { MeasureLogger, ParamsType } from '@hcengineering/core' - -export class CloudFlareLogger implements MeasureLogger { - error (message: string, obj?: Record): void { - const errMsg: Record = {} - // Check if obj has error inside, so we could send it to Analytics - for (const v of Object.values(obj ?? {})) { - if (v instanceof Error) { - // Analytics.handleError(v) - errMsg.error = v.message - errMsg.stack = v.stack - } - } - - console.error({ message, ...obj, ...errMsg }) - } - - info (message: string, obj?: Record): void { - console.info({ message, ...obj }) - } - - warn (message: string, obj?: Record): void { - console.warn({ message, ...obj }) - } - - logOperation (operation: string, time: number, params: ParamsType): void { - console.info({ time, ...params, message: operation }) - } - - childLogger (name: string, params: Record): MeasureLogger { - return this - } - - async close (): Promise {} -} diff --git a/workers/transactor/src/transactor.ts b/workers/transactor/src/transactor.ts deleted file mode 100644 index 08c97ac0af..0000000000 --- a/workers/transactor/src/transactor.ts +++ /dev/null @@ -1,582 +0,0 @@ -// Copyright © 2024 Huly Labs. - -import { - generateId, - NoMetricsContext, - platformNow, - platformNowDiff, - WorkspaceUuid, - type Account, - type Class, - type Doc, - type DocumentQuery, - type FindOptions, - type MeasureContext, - type Ref, - type Tx -} from '@hcengineering/core' -import { setMetadata } from '@hcengineering/platform' -import { RPCHandler } from '@hcengineering/rpc' -import { ClientSession, createSessionManager, doSessionOp, type WebsocketData } from '@hcengineering/server' -import serverCore, { - createDummyStorageAdapter, - loadBrandingMap, - pingConst, - pongConst, - Session, - Workspace, - type ConnectionSocket, - type Pipeline, - type PipelineFactory, - type SessionManager -} from '@hcengineering/server-core' -import serverPlugin, { decodeToken, type Token } from '@hcengineering/server-token' -import { DurableObject } from 'cloudflare:workers' -import { compress, uncompress } from 'snappyjs' -import { promisify } from 'util' -import { gzip } from 'zlib' - -// Approach usefull only for separate build, after model-all bundle phase is executed. -import { - createPostgreeDestroyAdapter, - createPostgresAdapter, - createPostgresTxAdapter, - registerGreenDecoder, - registerGreenUrl, - setDBExtraOptions -} from '@hcengineering/postgres' -import { - createServerPipeline, - isAdapterSecurity, - registerAdapterFactory, - registerDestroyFactory, - registerServerPlugins, - registerStringLoaders, - registerTxAdapterFactory, - setAdapterSecurity -} from '@hcengineering/server-pipeline' -import { CloudFlareLogger } from './logger' -import model from './model.json' -// import { configureAnalytics } from '@hcengineering/analytics-service' -// import { Analytics } from '@hcengineering/analytics' -import contactPlugin from '@hcengineering/contact' -import serverAiBot from '@hcengineering/server-ai-bot' -import serverNotification from '@hcengineering/server-notification' -import serverTelegram from '@hcengineering/server-telegram' - -export const PREFERRED_SAVE_SIZE = 500 -export const PREFERRED_SAVE_INTERVAL = 30 * 1000 - -export class Transactor extends DurableObject { - private workspace = '' as WorkspaceUuid - - private sessionManager!: SessionManager - - private readonly measureCtx: MeasureContext - - private readonly pipelineFactory: PipelineFactory - - private readonly accountsUrl: string - - private readonly sessions = new Map() - - private readonly contextVars: Record = {} - - constructor (ctx: DurableObjectState, env: Env) { - super(ctx, env) - - setDBExtraOptions({ - ssl: false, - max: env.USE_GREEN === 'true' ? 2 : 5, // Cloud flare limit an concurrent connection to be 6 total - connection: { - application_name: 'cloud-transactor' - } - }) - - // this.ctx.setHibernatableWebSocketEventTimeout(60 * 1000) - this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(pingConst, pongConst)) - - // configureAnalytics(env.SENTRY_DSN, {}) - // Analytics.setTag('application', 'transactor') - - const lastNameFirst = process.env.LAST_NAME_FIRST === 'true' - setMetadata(contactPlugin.metadata.LastNameFirst, lastNameFirst) - setMetadata(serverCore.metadata.FrontUrl, env.FRONT_URL) - setMetadata(serverCore.metadata.FilesUrl, env.FILES_URL) - setMetadata(serverNotification.metadata.SesUrl, env.SES_URL ?? '') - setMetadata(serverNotification.metadata.SesAuthToken, env.SES_AUTH_TOKEN) - setMetadata(serverTelegram.metadata.BotUrl, process.env.TELEGRAM_BOT_URL) - setMetadata(serverAiBot.metadata.EndpointURL, process.env.AI_BOT_URL) - - registerTxAdapterFactory('postgresql', createPostgresTxAdapter, true) - registerAdapterFactory('postgresql', createPostgresAdapter, true) - registerDestroyFactory('postgresql', createPostgreeDestroyAdapter, true) - setAdapterSecurity('postgresql', true) - - if (env.USE_GREEN === 'true') { - registerGreenUrl(env.GREEN_URL) - registerGreenDecoder('snappy', async (data) => uncompress(data)) - } - - registerStringLoaders() - registerServerPlugins() - this.accountsUrl = env.ACCOUNTS_URL ?? 'http://127.0.0.1:3000' - - this.measureCtx = new NoMetricsContext(new CloudFlareLogger()) - // initStatisticsContext('ctr-' + ctx.id.toString(), { - // statsUrl: this.env.STATS_URL ?? 'http://127.0.0.1:4900', - // serviceName: () => 'cloud-transactor: ' + this.workspace, - // factory: () => new MeasureMetricsContext('transactor', {}, {}, newMetrics(), new CloudFlareLogger()) - // }) - - setMetadata(serverPlugin.metadata.Secret, env.SERVER_SECRET ?? 'secret') - - console.log({ message: 'Connecting DB', mode: env.DB_URL !== '' ? 'Direct ' : 'Hyperdrive' }) - console.log({ message: 'use stats', url: this.env.STATS_URL }) - console.log({ message: 'use fulltext', url: this.env.FULLTEXT_URL }) - - const dbUrl = env.DB_MODE === 'direct' ? env.DB_URL ?? '' : env.HYPERDRIVE.connectionString - - // TODO: - const storage = createDummyStorageAdapter() - - this.pipelineFactory = async (ctx, ws, upgrade, broadcast, branding) => { - const pipeline = createServerPipeline(this.measureCtx, dbUrl, model, { - externalStorage: storage, - adapterSecurity: isAdapterSecurity(dbUrl), - disableTriggers: false, - fulltextUrl: env.FULLTEXT_URL, - extraLogging: true, - pipelineContextVars: this.contextVars - }) - return await pipeline(ctx, ws, upgrade, broadcast, branding) - } - - void this.ctx - .blockConcurrencyWhile(async () => { - const wakeUps = ((await ctx.storage.get('wakeUps')) as number) ?? 0 - console.log({ message: `wakeup ${wakeUps}`, connections: ctx.getWebSockets().length }) - await ctx.storage.put('wakeUps', wakeUps + 1) - - this.sessionManager = createSessionManager( - this.measureCtx, - (token: Token, workspace: Workspace, account: Account) => new ClientSession(token, workspace, account, false), - loadBrandingMap(), // TODO: Support branding map - { - pingTimeout: 10000, - reconnectTimeout: 3000 - }, - undefined, - this.accountsUrl, - env.ENABLE_COMPRESSION === 'true', - false - ) - }) - .catch((err) => { - console.error({ message: 'Failed to init transactor', err }) - }) - } - - async fetch (request: Request): Promise { - const { 0: client, 1: server } = new WebSocketPair() - - const url = new URL(request.url ?? '') - const token = url.pathname.substring(1) - - try { - const payload = decodeToken(token ?? '') - const sessionId = url.searchParams.get('sessionId') - - // By design, all fetches to this durable object will be for the same workspace - if (this.workspace === '') { - this.workspace = payload.workspace - } - - if (!(await this.handleSession(server, request, payload, token, sessionId))) { - return new Response(null, { status: 404 }) - } - return new Response(null, { status: 101, webSocket: client }) - } catch (err: any) { - console.error({ message: 'Failed to handle request', errMsg: err.message, errStack: err.stack }) - return new Response(null, { status: 404 }) - } - } - - async webSocketMessage (ws: WebSocket, message: ArrayBuffer | string): Promise { - const session = this.sessions.get(ws) - if (session === undefined) { - return - } - const cs = session.connectionSocket - if (cs === undefined) { - return - } - try { - doSessionOp( - session, - (s, buff) => { - s.context.measure('receive-data', buff?.length ?? 0) - // processRequest(s.session, cs, s.context, s.workspaceId, buff, handleRequest) - const request = cs.readRequest(buff, s.session.binaryMode) - const st = platformNow() - const r = this.sessionManager.handleRequest(this.measureCtx, s.session, cs, request, this.workspace) - this.ctx.waitUntil( - r.finally(() => { - const time = platformNowDiff(st) - console.log({ - message: `handle-request: ${request.method} time: ${time}`, - method: request.method, - params: request.params, - workspace: s.workspaceId, - user: s.session.getUser(), - time - }) - }) - ) - }, - typeof message === 'string' ? Buffer.from(message) : Buffer.from(message) - ) - } catch (err: any) { - console.error({ message: 'Failed to handle message:', errMsg: err.message, err, stack: err.stack }) - } - } - - async webSocketError (ws: WebSocket, error: unknown): Promise { - const session = this.sessions.get(ws) - console.error({ message: 'error:', error, account: session?.payload?.account }) - await this.handleClose(ws, 1011, 'error') - } - - async webSocketClose (ws: WebSocket, code: number, reason: string, wasClean: boolean): Promise { - const session = this.sessions.get(ws) - console.warn({ message: 'closed', reason, code, wasClean, account: session?.payload?.account }) - } - - async alarm (): Promise { - const memoryUsage = process.memoryUsage() - console.log({ - message: 'Resource usage', - memoryUsed: memoryUsage.rss, - heapTotal: memoryUsage.heapTotal, - heapUsed: memoryUsage.heapUsed - }) - } - - async handleSession ( - ws: WebSocket, - request: Request, - token: Token, - rawToken: string, - sessionId: string | null - ): Promise { - const data = { - remoteAddress: request.headers.get('CF-Connecting-IP') ?? '', - userAgent: request.headers.get('user-agent') ?? '', - language: request.headers.get('accept-language') ?? '', - account: token.account, - mode: token.extra?.mode, - model: token.extra?.model - } - console.log({ - message: 'New session attempt', - remoteAddress: data.remoteAddress, - userAgent: data.userAgent, - account: data.account - }) - this.ctx.acceptWebSocket(ws) - const cs = this.createWebsocketClientSocket(ws, data) - - try { - const session = await this.sessionManager.addSession( - this.measureCtx, - cs, - token, - rawToken, - this.pipelineFactory, - sessionId ?? undefined - ) - - const webSocketData: WebsocketData = { - connectionSocket: cs, - payload: token, - token: rawToken, - session, - url: '' - } - - if ('error' in session) { - console.error({ message: 'Failed to establish session:', error: session.error }) - if (session.terminate === true) { - ws.close(4003, 'Session establishment failed') - } - throw session.error - } - if ('upgrade' in session) { - await cs.send( - this.measureCtx, - { id: -1, result: { state: 'upgrading', stats: (session as any).upgradeInfo } }, - false, - false - ) - ws.close(4003, 'Session establishment failed') - return true - } - - console.log({ - message: 'Session established successfully:', - sessionId: session.session.sessionId, - workspaceId: token.workspace, - user: token.account - }) - this.sessions.set(ws, webSocketData) - } catch (err: any) { - console.error({ message: 'Failed to establish session:', err }) - ws.close(4003, 'Session establishment failed') - throw err - } - - return true - } - - createWebsocketClientSocket ( - ws: WebSocket, - data: { - remoteAddress: string - userAgent: string - language: string - account: string - mode: any - model: any - } - ): ConnectionSocket { - const rpcHandler = new RPCHandler() - const cs: ConnectionSocket = { - id: generateId(), - isClosed: false, - close: () => { - cs.isClosed = true - console.warn({ message: 'close socket', id: cs.id }) - ws.close() - }, - checkState: () => { - if (ws.readyState === WebSocket.CLOSED || ws.readyState === WebSocket.CLOSING) { - return false - } - return true - }, - backpressure: async (ctx) => {}, - isBackpressure: () => false, - readRequest: (buffer: Buffer, binary: boolean) => { - if (buffer.length === pingConst.length) { - if (buffer.toString() === pingConst) { - return { method: pingConst, params: [], id: -1, time: Date.now() } - } - } - return rpcHandler.readRequest(buffer, binary) - }, - data: () => data, - send: async (ctx: MeasureContext, msg, binary, _compression) => { - let smsg = rpcHandler.serialize(msg, binary) - - ctx.measure('send-data', smsg.length) - if (ws.readyState !== WebSocket.OPEN || cs.isClosed) { - return - } - - if (_compression) { - smsg = compress(smsg) - } - - try { - ws.send(smsg) - } catch (err: any) { - console.error({ message: 'failed to send', err }) - } - }, - sendPong: () => { - if (ws.readyState !== WebSocket.OPEN || cs.isClosed) { - return - } - try { - ws.send(pongConst) - } catch (err: any) { - console.error({ message: 'failed to send', err }) - } - } - } - return cs - } - - async broadcastMessage (message: Uint8Array, origin?: any): Promise { - console.log({ message: 'broadcast' }) - const wss = this.ctx.getWebSockets().filter((ws) => ws.readyState === WebSocket.OPEN) - await Promise.all( - wss.map(async (ws) => { - await this.sendMessage(ws, message) - }) - ) - } - - async sendMessage (ws: WebSocket, message: Uint8Array): Promise { - try { - ws.send(message) - } catch (error) { - console.error({ message: 'Failed to send message:', error }) - await this.handleClose(ws, 1011, 'error') - } - } - - async handleClose (ws: WebSocket, code: number, reason?: string): Promise { - try { - console.log({ message: 'Closing connection with code', code, reason }) - ws.close(code, reason) - } catch (err) { - console.error({ message: 'Failed to close WebSocket:', err }) - } - const session = this.sessions.get(ws) - if (session !== undefined) { - this.sessions.delete(ws) - console.log({ message: 'Cleaning up session for', account: session.payload.account }) - await this.sessionManager.close(this.measureCtx, session.connectionSocket as ConnectionSocket, this.workspace) - } - } - - private createDummyClientSocket (): ConnectionSocket { - const cs: ConnectionSocket = { - id: generateId(), - isClosed: false, - close: () => { - cs.isClosed = true - }, - checkState: () => { - return !cs.isClosed - }, - readRequest: (buffer: Buffer, binary: boolean) => { - return {} as any - }, - data: () => { - return {} - }, - isBackpressure: () => false, - backpressure: async (ctx) => {}, - send: async (ctx: MeasureContext, msg, binary, compression) => {}, - sendPong: () => {} - } - return cs - } - - private async makeRpcSession (rawToken: string, cs: ConnectionSocket): Promise { - const token = decodeToken(rawToken ?? '') - const session = await this.sessionManager.addSession( - this.measureCtx, - cs, - token, - rawToken, - this.pipelineFactory, - generateId() - ) - if ('error' in session) { - throw session.error - } - if ('upgrade' in session) { - throw new Error('Workspace is upgrading') - } - if (!('session' in session) || session.session === undefined) { - throw new Error('No session') - } - // By design, all fetches to this durable object will be for the same workspace - if (this.workspace === '') { - this.workspace = token.workspace - } - return session.session - } - - private async getRpcPipeline (rawToken: string, cs: ConnectionSocket): Promise { - const session = await this.makeRpcSession(rawToken, cs) - const pipeline = - session.workspace.pipeline instanceof Promise ? await session.workspace.pipeline : session.workspace.pipeline - const opContext = this.sessionManager.createOpContext( - this.measureCtx, - this.measureCtx, - pipeline, - undefined, - session, - cs - ) - session.includeSessionContext(opContext) - return pipeline - } - - async findAll ( - rawToken: string, - workspaceId: string, - _class: Ref>, - query?: DocumentQuery, - options?: FindOptions - ): Promise { - let result - const cs = this.createDummyClientSocket() - try { - const pipeline = await this.getRpcPipeline(rawToken, cs) - result = await pipeline.findAll(this.measureCtx, _class, query ?? {}, options ?? {}) - } catch (error: any) { - console.error(error) - result = { error: `${error}` } - } finally { - await this.sessionManager.close(this.measureCtx, cs, this.workspace) - } - return result - } - - async tx (rawToken: string, workspaceId: string, tx: Tx): Promise { - let result - const cs = this.createDummyClientSocket() - try { - const pipeline = await this.getRpcPipeline(rawToken, cs) - result = await pipeline.tx(this.measureCtx, [tx]) - } catch (error: any) { - console.error(error) - result = { error: `${error}` } - } finally { - await this.sessionManager.close(this.measureCtx, cs, this.workspace) - } - return result - } - - async getModel (rawToken: string): Promise { - let result: Tx[] = [] - const cs = this.createDummyClientSocket() - try { - const pipeline = await this.getRpcPipeline(rawToken, cs) - const ret = await pipeline.loadModel(this.measureCtx, 0) - if (Array.isArray(ret)) { - result = ret - } else { - result = ret.transactions - } - } catch (error: any) { - console.error(error) - return { error: `${error}` } - } finally { - await this.sessionManager.close(this.measureCtx, cs, this.workspace) - } - - const encoder = new TextEncoder() - const buffer = encoder.encode(JSON.stringify(result)) - const gzipAsync = promisify(gzip) - const compressed = await gzipAsync(buffer) - return compressed - } - - async getAccount (rawToken: string): Promise { - const cs = this.createDummyClientSocket() - try { - const session = await this.makeRpcSession(rawToken, cs) - return session.getRawAccount() - } catch (error: any) { - return { error: `${error}` } - } finally { - await this.sessionManager.close(this.measureCtx, cs, this.workspace) - } - } -} diff --git a/workers/transactor/tsconfig.json b/workers/transactor/tsconfig.json deleted file mode 100644 index 6b38a447d2..0000000000 --- a/workers/transactor/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./node_modules/@hcengineering/platform-rig/profiles/default/tsconfig.json", - - "compilerOptions": { - "rootDir": "./src", - "outDir": "./lib", - "declarationDir": "./types", - "tsBuildInfoFile": ".build/build.tsbuildinfo", - "types": ["@cloudflare/workers-types", "jest"] - } -} diff --git a/workers/transactor/worker-configuration.d.ts b/workers/transactor/worker-configuration.d.ts deleted file mode 100644 index fd4cf0ba66..0000000000 --- a/workers/transactor/worker-configuration.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Generated by Wrangler -// After adding bindings to `wrangler.toml`, regenerate this interface via `npm run cf-typegen` -interface Env { - TRANSACTOR: DurableObjectNamespace - - SERVER_SECRET: string - - HYPERDRIVE: Hyperdrive - - ACCOUNTS_URL: string - - DB_URL: string | undefined - - STATS_URL: string | undefined - - ENABLE_COMPRESSION: string | undefined - - FULLTEXT_URL: string | undefined - - DB_MODE: 'hyperdrive' | 'direct' | undefined - - FRONT_URL: string - - FILES_URL?: string - - SES_URL?: string - SES_AUTH_TOKEN?: string - TELEGRAM_BOT_URL: string - AI_BOT_URL?: string - LAST_NAME_FIRST?: string - - GREEN_URL?: string - USE_GREEN?: string -} diff --git a/workers/transactor/wrangler.toml b/workers/transactor/wrangler.toml deleted file mode 100644 index f8ca2a8919..0000000000 --- a/workers/transactor/wrangler.toml +++ /dev/null @@ -1,128 +0,0 @@ -#:schema node_modules/wrangler/config-schema.json -name = "cloud-transactor" -main = "src/index.ts" -compatibility_date = "2024-11-11" -compatibility_flags = ["nodejs_compat"] -keep_vars = true - -[observability.logs] -enabled = true -head_sampling_rate = 1 # optional. default = 1. - -# Automatically place your workloads in an optimal location to minimize latency. -# If you are running back-end logic in a Worker, running it closer to your back-end infrastructure -# rather than the end user may result in better performance. -# Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement -[placement] -mode = "smart" - -# Variable bindings. These are arbitrary, plaintext strings (similar to environment variables) -# Docs: -# - https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables -# Note: Use secrets to store sensitive data. -# - https://developers.cloudflare.com/workers/configuration/secrets/ -[vars] -# ACCOUNTS_URL = "http://127.0.0.1:3000" -# SERVER_SECRET = "secret" -DB_MODE='hyperdrive' -# FRONT_URL -ENABLE_COMPRESSION=true -# ACCOUNTS_URL -# FULLTEXT_URL -# STATS_URL -# PUSH_PUBLIC_KEY -# PUSH_PRIVATE_KEY -# SENTRY_DSN -# TELEGRAM_BOT_URL -# AI_BOT_URL -# LAST_NAME_FIRST -USE_GREEN='true' - -# Bind the Workers AI model catalog. Run machine learning models, powered by serverless GPUs, on Cloudflare’s global network -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#workers-ai -# [ai] -# binding = "AI" - -# Bind an Analytics Engine dataset. Use Analytics Engine to write analytics within your Pages Function. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#analytics-engine-datasets -# [[analytics_engine_datasets]] -# binding = "MY_DATASET" - -# Bind a headless browser instance running on Cloudflare's global network. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#browser-rendering -# [browser] -# binding = "MY_BROWSER" - -# Bind a D1 database. D1 is Cloudflare’s native serverless SQL database. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#d1-databases -# [[d1_databases]] -# binding = "MY_DB" -# database_name = "my-database" -# database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - -# Bind a dispatch namespace. Use Workers for Platforms to deploy serverless functions programmatically on behalf of your customers. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#dispatch-namespace-bindings-workers-for-platforms -# [[dispatch_namespaces]] -# binding = "MY_DISPATCHER" -# namespace = "my-namespace" - -# Bind a Durable Object. Durable objects are a scale-to-zero compute primitive based on the actor model. -# Durable Objects can live for as long as needed. Use these when you need a long-running "server", such as in realtime apps. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects -[[durable_objects.bindings]] -name = "TRANSACTOR" -class_name = "Transactor" - -# Durable Object migrations. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#migrations -[[migrations]] -tag = "v1" -new_classes = ["Transactor"] - -# Bind a Hyperdrive configuration. Use to accelerate access to your existing databases from Cloudflare Workers. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#hyperdrive -[[hyperdrive]] -binding = "HYPERDRIVE" -id = "1f713bb2ec1b464cb663983feca4c89e" -localConnectionString = "postgresql://postgree:example@huly.local:26257/defaultdb?sslmode=disable" - -# Bind a KV Namespace. Use KV as persistent storage for small key-value pairs. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#kv-namespaces -#[[kv_namespaces]] -#binding = "transactor_model" -#id = "" - -# Bind an mTLS certificate. Use to present a client certificate when communicating with another service. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#mtls-certificates -# [[mtls_certificates]] -# binding = "MY_CERTIFICATE" -# certificate_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - -# Bind a Queue producer. Use this binding to schedule an arbitrary task that may be processed later by a Queue consumer. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#queues -# [[queues.producers]] -# binding = "MY_QUEUE" -# queue = "my-queue" - -# Bind a Queue consumer. Queue Consumers can retrieve tasks scheduled by Producers to act on them. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#queues -# [[queues.consumers]] -# queue = "my-queue" - -# Bind an R2 Bucket. Use R2 to store arbitrarily large blobs of data, such as files. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#r2-buckets -# [[r2_buckets]] -# binding = "MY_BUCKET" -# bucket_name = "my-bucket" - -# Bind another Worker service. Use this binding to call another Worker without network overhead. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings -# [[services]] -# binding = "MY_SERVICE" -# service = "my-service" - -# Bind a Vectorize index. Use to store and query vector embeddings for semantic search, classification and other vector search use-cases. -# Docs: https://developers.cloudflare.com/workers/wrangler/configuration/#vectorize-indexes -# [[vectorize]] -# binding = "MY_INDEX" -# index_name = "my-index"