فهرست منبع

refactor(server): update dependencies

NGPixel 7 ماه پیش
والد
کامیت
57d4097296

+ 1 - 0
.devcontainer/Dockerfile

@@ -52,6 +52,7 @@ RUN apt-get update \
     && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /root/.gnupg /tmp/library-scripts
 
 # Enable PNPM
+ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
 RUN sudo corepack enable \
     && corepack prepare pnpm@latest --activate
 

+ 1 - 1
.devcontainer/docker-compose.yml

@@ -9,7 +9,7 @@ services:
         # Update 'VARIANT' to pick an LTS version of Node.js: 18, 16, 14, 12.
         # Append -bullseye or -buster to pin to an OS version.
         # Use -bullseye variants on local arm64/Apple Silicon.
-        VARIANT: 18-bullseye
+        VARIANT: 20-bullseye
 
     volumes:
       - ..:/workspace

+ 8 - 7
blocks/package.json

@@ -11,14 +11,15 @@
   "author": "Nicolas Giard",
   "license": "AGPL-3.0",
   "dependencies": {
-    "lit": "2.8.0"
+    "lit": "3.2.1"
   },
   "devDependencies": {
-    "@rollup/plugin-graphql": "2.0.4",
-    "@rollup/plugin-node-resolve": "15.2.2",
+    "@rollup/plugin-graphql": "2.0.5",
+    "@rollup/plugin-node-resolve": "15.3.0",
     "@rollup/plugin-terser": "0.4.4",
-    "glob": "10.3.10",
-    "rollup": "3.29.4",
-    "rollup-plugin-summary": "2.0.0"
-  }
+    "glob": "11.0.0",
+    "rollup": "4.24.0",
+    "rollup-plugin-summary": "2.0.1"
+  },
+  "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228"
 }

+ 355 - 153
blocks/pnpm-lock.yaml

@@ -9,27 +9,27 @@ importers:
   .:
     dependencies:
       lit:
-        specifier: 2.8.0
-        version: 2.8.0
+        specifier: 3.2.1
+        version: 3.2.1
     devDependencies:
       '@rollup/plugin-graphql':
-        specifier: 2.0.4
-        version: 2.0.4(graphql@16.8.1)(rollup@3.29.4)
+        specifier: 2.0.5
+        version: 2.0.5(graphql@16.8.1)(rollup@4.24.0)
       '@rollup/plugin-node-resolve':
-        specifier: 15.2.2
-        version: 15.2.2(rollup@3.29.4)
+        specifier: 15.3.0
+        version: 15.3.0(rollup@4.24.0)
       '@rollup/plugin-terser':
         specifier: 0.4.4
-        version: 0.4.4(rollup@3.29.4)
+        version: 0.4.4(rollup@4.24.0)
       glob:
-        specifier: 10.3.10
-        version: 10.3.10
+        specifier: 11.0.0
+        version: 11.0.0
       rollup:
-        specifier: 3.29.4
-        version: 3.29.4
+        specifier: 4.24.0
+        version: 4.24.0
       rollup-plugin-summary:
-        specifier: 2.0.0
-        version: 2.0.0(rollup@3.29.4)
+        specifier: 2.0.1
+        version: 2.0.1(rollup@4.24.0)
 
 packages:
 
@@ -45,35 +45,52 @@ packages:
     resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
     engines: {node: '>=6.0.0'}
 
+  '@jridgewell/gen-mapping@0.3.5':
+    resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+    engines: {node: '>=6.0.0'}
+
   '@jridgewell/resolve-uri@3.1.1':
     resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
     engines: {node: '>=6.0.0'}
 
+  '@jridgewell/resolve-uri@3.1.2':
+    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+    engines: {node: '>=6.0.0'}
+
   '@jridgewell/set-array@1.1.2':
     resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
     engines: {node: '>=6.0.0'}
 
+  '@jridgewell/set-array@1.2.1':
+    resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+    engines: {node: '>=6.0.0'}
+
   '@jridgewell/source-map@0.3.5':
     resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
 
+  '@jridgewell/source-map@0.3.6':
+    resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+
   '@jridgewell/sourcemap-codec@1.4.15':
     resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
 
+  '@jridgewell/sourcemap-codec@1.5.0':
+    resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
   '@jridgewell/trace-mapping@0.3.19':
     resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
 
-  '@lit-labs/ssr-dom-shim@1.1.1':
-    resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==}
+  '@jridgewell/trace-mapping@0.3.25':
+    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
 
-  '@lit/reactive-element@1.6.3':
-    resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
+  '@lit-labs/ssr-dom-shim@1.2.1':
+    resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==}
 
-  '@pkgjs/parseargs@0.11.0':
-    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
-    engines: {node: '>=14'}
+  '@lit/reactive-element@2.0.4':
+    resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==}
 
-  '@rollup/plugin-graphql@2.0.4':
-    resolution: {integrity: sha512-TfaqbbK71VHodCDCoRbPnv2+Tsnlvad2OsGEviURHFl+ZBUyf5wfXgXc9RqZ+xKxSl87Z3YbPhD0z6eWYjuByw==}
+  '@rollup/plugin-graphql@2.0.5':
+    resolution: {integrity: sha512-NMx9uVIheYMOQHV9Aann0sk/2+henT8T5JUbHneOvbD3iUrVUC7AaZ1B1ELJ/1vhqUe2OQIkRtGHzOQwBLoCvg==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
       graphql: '>=0.9.0'
@@ -82,8 +99,8 @@ packages:
       rollup:
         optional: true
 
-  '@rollup/plugin-node-resolve@15.2.2':
-    resolution: {integrity: sha512-f64bU4OKqV0yihtxFemmuf0oj37pToCFMISCA+sJbbIAl5wcpbRO9XgWNWb1tDiWQJUcPxo6V0l59hcuZOQ3kw==}
+  '@rollup/plugin-node-resolve@15.3.0':
+    resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
       rollup: ^2.78.0||^3.0.0||^4.0.0
@@ -100,8 +117,8 @@ packages:
       rollup:
         optional: true
 
-  '@rollup/pluginutils@5.0.5':
-    resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==}
+  '@rollup/pluginutils@5.1.2':
+    resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
       rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -109,26 +126,111 @@ packages:
       rollup:
         optional: true
 
-  '@types/estree@1.0.2':
-    resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==}
+  '@rollup/rollup-android-arm-eabi@4.24.0':
+    resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
+    cpu: [arm]
+    os: [android]
+
+  '@rollup/rollup-android-arm64@4.24.0':
+    resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
+    cpu: [arm64]
+    os: [android]
+
+  '@rollup/rollup-darwin-arm64@4.24.0':
+    resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
+    cpu: [arm64]
+    os: [darwin]
+
+  '@rollup/rollup-darwin-x64@4.24.0':
+    resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
+    cpu: [x64]
+    os: [darwin]
+
+  '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
+    resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
+    cpu: [arm]
+    os: [linux]
+
+  '@rollup/rollup-linux-arm-musleabihf@4.24.0':
+    resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
+    cpu: [arm]
+    os: [linux]
+
+  '@rollup/rollup-linux-arm64-gnu@4.24.0':
+    resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
+    cpu: [arm64]
+    os: [linux]
+
+  '@rollup/rollup-linux-arm64-musl@4.24.0':
+    resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
+    cpu: [arm64]
+    os: [linux]
+
+  '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
+    resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
+    cpu: [ppc64]
+    os: [linux]
+
+  '@rollup/rollup-linux-riscv64-gnu@4.24.0':
+    resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
+    cpu: [riscv64]
+    os: [linux]
+
+  '@rollup/rollup-linux-s390x-gnu@4.24.0':
+    resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
+    cpu: [s390x]
+    os: [linux]
+
+  '@rollup/rollup-linux-x64-gnu@4.24.0':
+    resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
+    cpu: [x64]
+    os: [linux]
+
+  '@rollup/rollup-linux-x64-musl@4.24.0':
+    resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
+    cpu: [x64]
+    os: [linux]
+
+  '@rollup/rollup-win32-arm64-msvc@4.24.0':
+    resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
+    cpu: [arm64]
+    os: [win32]
+
+  '@rollup/rollup-win32-ia32-msvc@4.24.0':
+    resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
+    cpu: [ia32]
+    os: [win32]
+
+  '@rollup/rollup-win32-x64-msvc@4.24.0':
+    resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
+    cpu: [x64]
+    os: [win32]
+
+  '@types/estree@1.0.6':
+    resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
 
   '@types/resolve@1.20.2':
     resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
 
-  '@types/trusted-types@2.0.4':
-    resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==}
+  '@types/trusted-types@2.0.7':
+    resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
 
   acorn@8.10.0:
     resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
     engines: {node: '>=0.4.0'}
     hasBin: true
 
+  acorn@8.13.0:
+    resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==}
+    engines: {node: '>=0.4.0'}
+    hasBin: true
+
   ansi-regex@5.0.1:
     resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
     engines: {node: '>=8'}
 
-  ansi-regex@6.0.1:
-    resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+  ansi-regex@6.1.0:
+    resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
     engines: {node: '>=12'}
 
   ansi-styles@4.3.0:
@@ -152,12 +254,8 @@ packages:
   buffer-from@1.1.2:
     resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
 
-  builtin-modules@3.3.0:
-    resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
-    engines: {node: '>=6'}
-
-  cli-table3@0.6.3:
-    resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
+  cli-table3@0.6.5:
+    resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
     engines: {node: 10.* || >= 12.*}
 
   color-convert@2.0.1:
@@ -196,12 +294,12 @@ packages:
   estree-walker@2.0.2:
     resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
 
-  filesize@10.1.0:
-    resolution: {integrity: sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==}
+  filesize@10.1.6:
+    resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
     engines: {node: '>= 10.4.0'}
 
-  foreground-child@3.1.1:
-    resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+  foreground-child@3.3.0:
+    resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
     engines: {node: '>=14'}
 
   fsevents@2.3.3:
@@ -209,9 +307,12 @@ packages:
     engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
     os: [darwin]
 
-  glob@10.3.10:
-    resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
-    engines: {node: '>=16 || 14 >=14.17'}
+  function-bind@1.1.2:
+    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+  glob@11.0.0:
+    resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==}
+    engines: {node: 20 || >=22}
     hasBin: true
 
   graphql-tag@2.12.6:
@@ -228,16 +329,13 @@ packages:
     resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
 
-  has@1.0.4:
-    resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
-    engines: {node: '>= 0.4.0'}
-
-  is-builtin-module@3.2.1:
-    resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
-    engines: {node: '>=6'}
+  hasown@2.0.2:
+    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+    engines: {node: '>= 0.4'}
 
-  is-core-module@2.13.0:
-    resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
+  is-core-module@2.15.1:
+    resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+    engines: {node: '>= 0.4'}
 
   is-fullwidth-code-point@3.0.0:
     resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
@@ -249,31 +347,34 @@ packages:
   isexe@2.0.0:
     resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
 
-  jackspeak@2.3.6:
-    resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
-    engines: {node: '>=14'}
+  jackspeak@4.0.2:
+    resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==}
+    engines: {node: 20 || >=22}
 
-  lit-element@3.3.3:
-    resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==}
+  lit-element@4.1.1:
+    resolution: {integrity: sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==}
 
-  lit-html@2.8.0:
-    resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==}
+  lit-html@3.2.1:
+    resolution: {integrity: sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==}
 
-  lit@2.8.0:
-    resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==}
+  lit@3.2.1:
+    resolution: {integrity: sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==}
 
-  lru-cache@10.0.1:
-    resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==}
-    engines: {node: 14 || >=16.14}
+  lru-cache@11.0.1:
+    resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==}
+    engines: {node: 20 || >=22}
 
-  minimatch@9.0.3:
-    resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
-    engines: {node: '>=16 || 14 >=14.17'}
+  minimatch@10.0.1:
+    resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+    engines: {node: 20 || >=22}
 
-  minipass@7.0.4:
-    resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+  minipass@7.1.2:
+    resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
     engines: {node: '>=16 || 14 >=14.17'}
 
+  package-json-from-dist@1.0.1:
+    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
   path-key@3.1.1:
     resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
     engines: {node: '>=8'}
@@ -281,9 +382,9 @@ packages:
   path-parse@1.0.7:
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
 
-  path-scurry@1.10.1:
-    resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
-    engines: {node: '>=16 || 14 >=14.17'}
+  path-scurry@2.0.0:
+    resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+    engines: {node: 20 || >=22}
 
   picomatch@2.3.1:
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@@ -292,19 +393,19 @@ packages:
   randombytes@2.1.0:
     resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
 
-  resolve@1.22.6:
-    resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
+  resolve@1.22.8:
+    resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
     hasBin: true
 
-  rollup-plugin-summary@2.0.0:
-    resolution: {integrity: sha512-7Av6DQeCmVNpFmCdkkbMya1CneeGWhjSXXQ3B4yDO+BvN/Kbohqi3IEYXAvgHP3iIafSfMyOw+PBLFUlvf1ViA==}
+  rollup-plugin-summary@2.0.1:
+    resolution: {integrity: sha512-aO8t5ZxAB9svdUl4etKUbWr7FFK/2RLj81ZiHnsJKsXPcZEekh32+TknJFj/V8JYRqjmlb/Ygi4aktRa9LdQjw==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
-      rollup: ^2.68.0||^3.0.0
+      rollup: ^2.68.0||^3.0.0||^4.0.0
 
-  rollup@3.29.4:
-    resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
-    engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+  rollup@4.24.0:
+    resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
+    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
   safe-buffer@5.2.1:
@@ -360,8 +461,13 @@ packages:
     engines: {node: '>=10'}
     hasBin: true
 
-  tslib@2.6.2:
-    resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+  terser@5.36.0:
+    resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==}
+    engines: {node: '>=10'}
+    hasBin: true
+
+  tslib@2.8.0:
+    resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==}
 
   which@2.0.2:
     resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -396,73 +502,145 @@ snapshots:
       '@jridgewell/sourcemap-codec': 1.4.15
       '@jridgewell/trace-mapping': 0.3.19
 
+  '@jridgewell/gen-mapping@0.3.5':
+    dependencies:
+      '@jridgewell/set-array': 1.2.1
+      '@jridgewell/sourcemap-codec': 1.5.0
+      '@jridgewell/trace-mapping': 0.3.25
+
   '@jridgewell/resolve-uri@3.1.1': {}
 
+  '@jridgewell/resolve-uri@3.1.2': {}
+
   '@jridgewell/set-array@1.1.2': {}
 
+  '@jridgewell/set-array@1.2.1': {}
+
   '@jridgewell/source-map@0.3.5':
     dependencies:
       '@jridgewell/gen-mapping': 0.3.3
       '@jridgewell/trace-mapping': 0.3.19
 
+  '@jridgewell/source-map@0.3.6':
+    dependencies:
+      '@jridgewell/gen-mapping': 0.3.5
+      '@jridgewell/trace-mapping': 0.3.25
+
   '@jridgewell/sourcemap-codec@1.4.15': {}
 
+  '@jridgewell/sourcemap-codec@1.5.0': {}
+
   '@jridgewell/trace-mapping@0.3.19':
     dependencies:
       '@jridgewell/resolve-uri': 3.1.1
       '@jridgewell/sourcemap-codec': 1.4.15
 
-  '@lit-labs/ssr-dom-shim@1.1.1': {}
-
-  '@lit/reactive-element@1.6.3':
+  '@jridgewell/trace-mapping@0.3.25':
     dependencies:
-      '@lit-labs/ssr-dom-shim': 1.1.1
+      '@jridgewell/resolve-uri': 3.1.2
+      '@jridgewell/sourcemap-codec': 1.5.0
 
-  '@pkgjs/parseargs@0.11.0':
-    optional: true
+  '@lit-labs/ssr-dom-shim@1.2.1': {}
 
-  '@rollup/plugin-graphql@2.0.4(graphql@16.8.1)(rollup@3.29.4)':
+  '@lit/reactive-element@2.0.4':
     dependencies:
-      '@rollup/pluginutils': 5.0.5(rollup@3.29.4)
+      '@lit-labs/ssr-dom-shim': 1.2.1
+
+  '@rollup/plugin-graphql@2.0.5(graphql@16.8.1)(rollup@4.24.0)':
+    dependencies:
+      '@rollup/pluginutils': 5.1.2(rollup@4.24.0)
       graphql: 16.8.1
       graphql-tag: 2.12.6(graphql@16.8.1)
-      rollup: 3.29.4
+    optionalDependencies:
+      rollup: 4.24.0
 
-  '@rollup/plugin-node-resolve@15.2.2(rollup@3.29.4)':
+  '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.0)':
     dependencies:
-      '@rollup/pluginutils': 5.0.5(rollup@3.29.4)
+      '@rollup/pluginutils': 5.1.2(rollup@4.24.0)
       '@types/resolve': 1.20.2
       deepmerge: 4.3.1
-      is-builtin-module: 3.2.1
       is-module: 1.0.0
-      resolve: 1.22.6
-      rollup: 3.29.4
+      resolve: 1.22.8
+    optionalDependencies:
+      rollup: 4.24.0
 
-  '@rollup/plugin-terser@0.4.4(rollup@3.29.4)':
+  '@rollup/plugin-terser@0.4.4(rollup@4.24.0)':
     dependencies:
-      rollup: 3.29.4
       serialize-javascript: 6.0.1
       smob: 1.4.1
       terser: 5.21.0
+    optionalDependencies:
+      rollup: 4.24.0
 
-  '@rollup/pluginutils@5.0.5(rollup@3.29.4)':
+  '@rollup/pluginutils@5.1.2(rollup@4.24.0)':
     dependencies:
-      '@types/estree': 1.0.2
+      '@types/estree': 1.0.6
       estree-walker: 2.0.2
       picomatch: 2.3.1
-      rollup: 3.29.4
+    optionalDependencies:
+      rollup: 4.24.0
+
+  '@rollup/rollup-android-arm-eabi@4.24.0':
+    optional: true
+
+  '@rollup/rollup-android-arm64@4.24.0':
+    optional: true
+
+  '@rollup/rollup-darwin-arm64@4.24.0':
+    optional: true
+
+  '@rollup/rollup-darwin-x64@4.24.0':
+    optional: true
 
-  '@types/estree@1.0.2': {}
+  '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-arm-musleabihf@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-arm64-gnu@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-arm64-musl@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-riscv64-gnu@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-s390x-gnu@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-x64-gnu@4.24.0':
+    optional: true
+
+  '@rollup/rollup-linux-x64-musl@4.24.0':
+    optional: true
+
+  '@rollup/rollup-win32-arm64-msvc@4.24.0':
+    optional: true
+
+  '@rollup/rollup-win32-ia32-msvc@4.24.0':
+    optional: true
+
+  '@rollup/rollup-win32-x64-msvc@4.24.0':
+    optional: true
+
+  '@types/estree@1.0.6': {}
 
   '@types/resolve@1.20.2': {}
 
-  '@types/trusted-types@2.0.4': {}
+  '@types/trusted-types@2.0.7': {}
 
   acorn@8.10.0: {}
 
+  acorn@8.13.0: {}
+
   ansi-regex@5.0.1: {}
 
-  ansi-regex@6.0.1: {}
+  ansi-regex@6.1.0: {}
 
   ansi-styles@4.3.0:
     dependencies:
@@ -482,9 +660,7 @@ snapshots:
 
   buffer-from@1.1.2: {}
 
-  builtin-modules@3.3.0: {}
-
-  cli-table3@0.6.3:
+  cli-table3@0.6.5:
     dependencies:
       string-width: 4.2.3
     optionalDependencies:
@@ -518,9 +694,9 @@ snapshots:
 
   estree-walker@2.0.2: {}
 
-  filesize@10.1.0: {}
+  filesize@10.1.6: {}
 
-  foreground-child@3.1.1:
+  foreground-child@3.3.0:
     dependencies:
       cross-spawn: 7.0.3
       signal-exit: 4.1.0
@@ -528,18 +704,21 @@ snapshots:
   fsevents@2.3.3:
     optional: true
 
-  glob@10.3.10:
+  function-bind@1.1.2: {}
+
+  glob@11.0.0:
     dependencies:
-      foreground-child: 3.1.1
-      jackspeak: 2.3.6
-      minimatch: 9.0.3
-      minipass: 7.0.4
-      path-scurry: 1.10.1
+      foreground-child: 3.3.0
+      jackspeak: 4.0.2
+      minimatch: 10.0.1
+      minipass: 7.1.2
+      package-json-from-dist: 1.0.1
+      path-scurry: 2.0.0
 
   graphql-tag@2.12.6(graphql@16.8.1):
     dependencies:
       graphql: 16.8.1
-      tslib: 2.6.2
+      tslib: 2.8.0
 
   graphql@16.8.1: {}
 
@@ -547,15 +726,13 @@ snapshots:
     dependencies:
       duplexer: 0.1.2
 
-  has@1.0.4: {}
-
-  is-builtin-module@3.2.1:
+  hasown@2.0.2:
     dependencies:
-      builtin-modules: 3.3.0
+      function-bind: 1.1.2
 
-  is-core-module@2.13.0:
+  is-core-module@2.15.1:
     dependencies:
-      has: 1.0.4
+      hasown: 2.0.2
 
   is-fullwidth-code-point@3.0.0: {}
 
@@ -563,44 +740,44 @@ snapshots:
 
   isexe@2.0.0: {}
 
-  jackspeak@2.3.6:
+  jackspeak@4.0.2:
     dependencies:
       '@isaacs/cliui': 8.0.2
-    optionalDependencies:
-      '@pkgjs/parseargs': 0.11.0
 
-  lit-element@3.3.3:
+  lit-element@4.1.1:
     dependencies:
-      '@lit-labs/ssr-dom-shim': 1.1.1
-      '@lit/reactive-element': 1.6.3
-      lit-html: 2.8.0
+      '@lit-labs/ssr-dom-shim': 1.2.1
+      '@lit/reactive-element': 2.0.4
+      lit-html: 3.2.1
 
-  lit-html@2.8.0:
+  lit-html@3.2.1:
     dependencies:
-      '@types/trusted-types': 2.0.4
+      '@types/trusted-types': 2.0.7
 
-  lit@2.8.0:
+  lit@3.2.1:
     dependencies:
-      '@lit/reactive-element': 1.6.3
-      lit-element: 3.3.3
-      lit-html: 2.8.0
+      '@lit/reactive-element': 2.0.4
+      lit-element: 4.1.1
+      lit-html: 3.2.1
 
-  lru-cache@10.0.1: {}
+  lru-cache@11.0.1: {}
 
-  minimatch@9.0.3:
+  minimatch@10.0.1:
     dependencies:
       brace-expansion: 2.0.1
 
-  minipass@7.0.4: {}
+  minipass@7.1.2: {}
+
+  package-json-from-dist@1.0.1: {}
 
   path-key@3.1.1: {}
 
   path-parse@1.0.7: {}
 
-  path-scurry@1.10.1:
+  path-scurry@2.0.0:
     dependencies:
-      lru-cache: 10.0.1
-      minipass: 7.0.4
+      lru-cache: 11.0.1
+      minipass: 7.1.2
 
   picomatch@2.3.1: {}
 
@@ -608,23 +785,41 @@ snapshots:
     dependencies:
       safe-buffer: 5.2.1
 
-  resolve@1.22.6:
+  resolve@1.22.8:
     dependencies:
-      is-core-module: 2.13.0
+      is-core-module: 2.15.1
       path-parse: 1.0.7
       supports-preserve-symlinks-flag: 1.0.0
 
-  rollup-plugin-summary@2.0.0(rollup@3.29.4):
+  rollup-plugin-summary@2.0.1(rollup@4.24.0):
     dependencies:
       brotli-size: 4.0.0
-      cli-table3: 0.6.3
-      filesize: 10.1.0
+      cli-table3: 0.6.5
+      filesize: 10.1.6
       gzip-size: 7.0.0
-      rollup: 3.29.4
-      terser: 5.21.0
+      rollup: 4.24.0
+      terser: 5.36.0
 
-  rollup@3.29.4:
+  rollup@4.24.0:
+    dependencies:
+      '@types/estree': 1.0.6
     optionalDependencies:
+      '@rollup/rollup-android-arm-eabi': 4.24.0
+      '@rollup/rollup-android-arm64': 4.24.0
+      '@rollup/rollup-darwin-arm64': 4.24.0
+      '@rollup/rollup-darwin-x64': 4.24.0
+      '@rollup/rollup-linux-arm-gnueabihf': 4.24.0
+      '@rollup/rollup-linux-arm-musleabihf': 4.24.0
+      '@rollup/rollup-linux-arm64-gnu': 4.24.0
+      '@rollup/rollup-linux-arm64-musl': 4.24.0
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0
+      '@rollup/rollup-linux-riscv64-gnu': 4.24.0
+      '@rollup/rollup-linux-s390x-gnu': 4.24.0
+      '@rollup/rollup-linux-x64-gnu': 4.24.0
+      '@rollup/rollup-linux-x64-musl': 4.24.0
+      '@rollup/rollup-win32-arm64-msvc': 4.24.0
+      '@rollup/rollup-win32-ia32-msvc': 4.24.0
+      '@rollup/rollup-win32-x64-msvc': 4.24.0
       fsevents: 2.3.3
 
   safe-buffer@5.2.1: {}
@@ -668,7 +863,7 @@ snapshots:
 
   strip-ansi@7.1.0:
     dependencies:
-      ansi-regex: 6.0.1
+      ansi-regex: 6.1.0
 
   supports-preserve-symlinks-flag@1.0.0: {}
 
@@ -679,7 +874,14 @@ snapshots:
       commander: 2.20.3
       source-map-support: 0.5.21
 
-  tslib@2.6.2: {}
+  terser@5.36.0:
+    dependencies:
+      '@jridgewell/source-map': 0.3.6
+      acorn: 8.13.0
+      commander: 2.20.3
+      source-map-support: 0.5.21
+
+  tslib@2.8.0: {}
 
   which@2.0.2:
     dependencies:

+ 0 - 21
server/.eslintrc.yml

@@ -1,21 +0,0 @@
-extends:
-  - requarks
-env:
-  node: true
-parserOptions:
-  parser: babel-eslint
-  ecmaVersion: 2020
-  allowImportExportEverywhere: true
-globals:
-  document: false
-  navigator: false
-  window: false
-  WIKI: true
-ignorePatterns:
-  - '**/node_modules/**'
-  - '**/*.min.js'
-  - 'coverage/**'
-  - 'repo/**'
-  - 'data/**'
-  - 'logs/**'
-  - 'locales/**'

+ 19 - 0
server/eslint.config.js

@@ -0,0 +1,19 @@
+import neostandard from 'neostandard'
+
+export default neostandard({
+  globals: {
+    document: false,
+    navigator: false,
+    window: false,
+    WIKI: true
+  },
+  ignores: [
+    '**/node_modules/**',
+    '**/*.min.js',
+    'coverage/**',
+    'repo/**',
+    'data/**',
+    'logs/**',
+    'locales/**'
+  ]
+})

+ 1 - 1
server/graph/resolvers/authentication.mjs

@@ -3,7 +3,7 @@ import { generateError, generateSuccess } from '../../helpers/graph.mjs'
 import jwt from 'jsonwebtoken'
 import ms from 'ms'
 import { DateTime } from 'luxon'
-import base64 from '@hexagon/base64'
+import { base64 } from '@hexagon/base64'
 import {
   generateRegistrationOptions,
   verifyRegistrationResponse,

+ 56 - 51
server/models/pages.mjs

@@ -12,7 +12,7 @@ import he from 'he'
 import CleanCSS from 'clean-css'
 import TurndownService from 'turndown'
 import { gfm as turndownPluginGfm } from '@joplin/turndown-plugin-gfm'
-import cheerio from 'cheerio'
+import * as cheerio from 'cheerio'
 import matter from 'gray-matter'
 
 import { PageLink } from './pageLinks.mjs'
@@ -29,7 +29,7 @@ const frontmatterRegex = {
  * Pages model
  */
 export class Page extends Model {
-  static get tableName() { return 'pages' }
+  static get tableName () { return 'pages' }
 
   static get jsonSchema () {
     return {
@@ -37,29 +37,29 @@ export class Page extends Model {
       required: ['path', 'title'],
 
       properties: {
-        id: {type: 'string'},
-        path: {type: 'string'},
-        hash: {type: 'string'},
-        title: {type: 'string'},
-        description: {type: 'string'},
-        publishState: {type: 'string'},
-        publishStartDate: {type: 'string'},
-        publishEndDate: {type: 'string'},
-        content: {type: 'string'},
-        contentType: {type: 'string'},
-        render: {type: 'string'},
-        siteId: {type: 'string'},
-        createdAt: {type: 'string'},
-        updatedAt: {type: 'string'}
+        id: { type: 'string' },
+        path: { type: 'string' },
+        hash: { type: 'string' },
+        title: { type: 'string' },
+        description: { type: 'string' },
+        publishState: { type: 'string' },
+        publishStartDate: { type: 'string' },
+        publishEndDate: { type: 'string' },
+        content: { type: 'string' },
+        contentType: { type: 'string' },
+        render: { type: 'string' },
+        siteId: { type: 'string' },
+        createdAt: { type: 'string' },
+        updatedAt: { type: 'string' }
       }
     }
   }
 
-  static get jsonAttributes() {
+  static get jsonAttributes () {
     return ['config', 'historyData', 'relations', 'scripts', 'toc']
   }
 
-  static get relationMappings() {
+  static get relationMappings () {
     return {
       // tags: {
       //   relation: Model.ManyToManyRelation,
@@ -100,26 +100,29 @@ export class Page extends Model {
     }
   }
 
-  $beforeUpdate() {
+  $beforeUpdate () {
     this.updatedAt = new Date().toISOString()
   }
-  $beforeInsert() {
+
+  $beforeInsert () {
     this.createdAt = new Date().toISOString()
     this.updatedAt = new Date().toISOString()
   }
+
   /**
    * Solving the violates foreign key constraint using cascade strategy
    * using static hooks
    * @see https://vincit.github.io/objection.js/api/types/#type-statichookarguments
    */
-  static async beforeDelete({ asFindQuery }) {
+  static async beforeDelete ({ asFindQuery }) {
     const page = await asFindQuery().select('id')
     await WIKI.db.comments.query().delete().where('pageId', page[0].id)
   }
+
   /**
    * Cache Schema
    */
-  static get cacheSchema() {
+  static get cacheSchema () {
     return new JSBinType({
       id: 'string',
       authorId: 'string',
@@ -163,7 +166,7 @@ export class Page extends Model {
    *
    * @returns {string} File Extension
    */
-  getFileExtension() {
+  getFileExtension () {
     return getFileExtension(this.contentType)
   }
 
@@ -212,7 +215,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async createPage(opts) {
+  static async createPage (opts) {
     // -> Validate site
     if (!WIKI.sites[opts.siteId]) {
       throw new Error('ERR_INVALID_SITE')
@@ -399,7 +402,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async updatePage(opts) {
+  static async updatePage (opts) {
     // -> Fetch original page
     const ogPage = await WIKI.db.pages.query().findById(opts.id)
     if (!ogPage) {
@@ -627,7 +630,7 @@ export class Page extends Model {
       authorId: opts.user.id,
       historyData
     }).where('id', ogPage.id)
-    let page = await WIKI.db.pages.getPageFromDb(ogPage.id)
+    const page = await WIKI.db.pages.getPageFromDb(ogPage.id)
 
     // -> Render page to HTML
     if (opts.patch.content) {
@@ -717,7 +720,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async convertPage(opts) {
+  static async convertPage (opts) {
     // -> Fetch original page
     const ogPage = await WIKI.db.pages.query().findById(opts.id)
     if (!ogPage) {
@@ -738,7 +741,7 @@ export class Page extends Model {
 
     // -> Check content type
     const sourceContentType = ogPage.contentType
-    const targetContentType = get(find(WIKI.data.editors, ['key', opts.editor]), `contentType`, 'text')
+    const targetContentType = get(find(WIKI.data.editors, ['key', opts.editor]), 'contentType', 'text')
     const shouldConvert = sourceContentType !== targetContentType
     let convertedContent = null
 
@@ -884,7 +887,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise with no value
    */
-  static async movePage(opts) {
+  static async movePage (opts) {
     let page
     if (has(opts, 'id')) {
       page = await WIKI.db.pages.query().findById(opts.id)
@@ -1009,7 +1012,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise with no value
    */
-  static async deletePage(opts) {
+  static async deletePage (opts) {
     const page = await WIKI.db.pages.getPageFromDb(has(opts, 'id') ? opts.id : opts)
     if (!page) {
       throw new WIKI.Error.PageNotFound()
@@ -1067,7 +1070,7 @@ export class Page extends Model {
     return
     // TODO: fix this
     const pageHref = `/${opts.locale}/${opts.path}`
-    let replaceArgs = {
+    const replaceArgs = {
       from: '',
       to: ''
     }
@@ -1138,7 +1141,7 @@ export class Page extends Model {
    * @param {Object} page Page Model Instance
    * @returns {Promise} Promise with no value
    */
-  static async renderPage(page) {
+  static async renderPage (page) {
     const renderJob = await WIKI.scheduler.addJob({
       task: 'render-page',
       payload: {
@@ -1156,7 +1159,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async getPage(opts) {
+  static async getPage (opts) {
     return WIKI.db.pages.getPageFromDb(opts)
 
     // -> Get from cache first
@@ -1184,7 +1187,7 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async getPageFromDb(opts) {
+  static async getPageFromDb (opts) {
     const queryModeID = typeof opts === 'string'
     try {
       return WIKI.db.pages.query()
@@ -1202,13 +1205,15 @@ export class Page extends Model {
         .joinRelated('author')
         .joinRelated('creator')
         .leftJoin('tree', 'pages.id', 'tree.id')
-        .where(queryModeID ? {
-          'pages.id': opts
-        } : {
-          'pages.siteId': opts.siteId,
-          'pages.path': opts.path,
-          'pages.locale': opts.locale
-        })
+        .where(queryModeID
+          ? {
+              'pages.id': opts
+            }
+          : {
+              'pages.siteId': opts.siteId,
+              'pages.path': opts.path,
+              'pages.locale': opts.locale
+            })
         // .andWhere(builder => {
         //   if (queryModeID) return
         //   builder.where({
@@ -1231,7 +1236,7 @@ export class Page extends Model {
    * @param {Object} page Page Model Instance
    * @returns {Promise} Promise with no value
    */
-  static async savePageToCache(page) {
+  static async savePageToCache (page) {
     const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${page.hash}.bin`)
     await fse.outputFile(cachePath, WIKI.db.pages.cacheSchema.encode({
       id: page.id,
@@ -1264,13 +1269,13 @@ export class Page extends Model {
    * @param {Object} opts Page Properties
    * @returns {Promise} Promise of the Page Model Instance
    */
-  static async getPageFromCache(opts) {
+  static async getPageFromCache (opts) {
     const pageHash = generateHash({ path: opts.path, locale: opts.locale })
     const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${pageHash}.bin`)
 
     try {
       const pageBuffer = await fse.readFile(cachePath)
-      let page = WIKI.db.pages.cacheSchema.decode(pageBuffer)
+      const page = WIKI.db.pages.cacheSchema.decode(pageBuffer)
       return {
         ...page,
         path: opts.path,
@@ -1291,15 +1296,15 @@ export class Page extends Model {
    * @param {String} page Page Unique Hash
    * @returns {Promise} Promise with no value
    */
-  static async deletePageFromCache(hash) {
+  static async deletePageFromCache (hash) {
     return fse.remove(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${hash}.bin`))
   }
 
   /**
    * Flush the contents of the Cache
    */
-  static async flushCache() {
-    return fse.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache`))
+  static async flushCache () {
+    return fse.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'cache'))
   }
 
   /**
@@ -1310,7 +1315,7 @@ export class Page extends Model {
    * @param {string} opts.targetLocale Target Locale Code
    * @returns {Promise} Promise with no value
    */
-  static async migrateToLocale({ sourceLocale, targetLocale }) {
+  static async migrateToLocale ({ sourceLocale, targetLocale }) {
     return WIKI.db.pages.query()
       .patch({
         locale: targetLocale
@@ -1318,7 +1323,7 @@ export class Page extends Model {
       .where({
         locale: sourceLocale
       })
-      .whereNotExists(function() {
+      .whereNotExists(function () {
         this.select('id').from('pages AS pagesm').where('pagesm.locale', targetLocale).andWhereRaw('pagesm.path = pages.path')
       })
   }
@@ -1329,7 +1334,7 @@ export class Page extends Model {
    * @param {string} rawHTML Raw HTML
    * @returns {string} Cleaned Content Text
    */
-  static cleanHTML(rawHTML = '') {
+  static cleanHTML (rawHTML = '') {
     const data = striptags(rawHTML || '', [], ' ')
       .replace(emojiRegex(), '')
     return he.decode(data)
@@ -1340,7 +1345,7 @@ export class Page extends Model {
   /**
    * Subscribe to HA propagation events
    */
-  static subscribeToEvents() {
+  static subscribeToEvents () {
     WIKI.events.inbound.on('deletePageFromCache', hash => {
       WIKI.db.pages.deletePageFromCache(hash)
     })

+ 45 - 45
server/package.json

@@ -36,55 +36,55 @@
     "node": ">=18.0"
   },
   "dependencies": {
-    "@apollo/server": "4.10.4",
-    "@azure/storage-blob": "12.23.0",
+    "@apollo/server": "4.11.0",
+    "@azure/storage-blob": "12.25.0",
     "@exlinc/keycloak-passport": "1.0.2",
-    "@graphql-tools/schema": "10.0.4",
-    "@graphql-tools/utils": "10.1.3",
-    "@hexagon/base64": "1.1.28",
+    "@graphql-tools/schema": "10.0.7",
+    "@graphql-tools/utils": "10.5.5",
+    "@hexagon/base64": "2.0.4",
     "@joplin/turndown-plugin-gfm": "1.0.56",
     "@node-saml/passport-saml": "5.0.0",
     "@root/csr": "0.8.1",
     "@root/keypairs": "0.10.3",
     "@root/pem": "1.0.4",
-    "@simplewebauthn/server": "10.0.0",
+    "@simplewebauthn/server": "11.0.0",
     "@vue-email/compiler": "0.8.14",
     "acme": "3.0.3",
     "akismet-api": "6.0.0",
-    "aws-sdk": "2.1659.0",
+    "aws-sdk": "2.1691.0",
     "bcryptjs": "2.4.3",
     "chalk": "5.3.0",
-    "cheerio": "1.0.0-rc.12",
-    "chokidar": "3.6.0",
+    "cheerio": "1.0.0",
+    "chokidar": "4.0.1",
     "chromium-pickle-js": "0.2.0",
     "clean-css": "5.3.3",
     "command-exists": "1.2.9",
     "compression": "1.7.4",
-    "connect-session-knex": "4.0.0",
-    "cookie-parser": "1.4.6",
+    "connect-session-knex": "5.0.0",
+    "cookie-parser": "1.4.7",
     "cors": "2.8.5",
     "cron-parser": "4.9.0",
     "cuint": "0.2.2",
     "custom-error-instance": "2.1.2",
     "dependency-graph": "1.0.0",
-    "diff": "5.2.0",
+    "diff": "7.0.0",
     "diff2html": "3.4.48",
-    "dompurify": "3.1.6",
+    "dompurify": "3.1.7",
     "dotize": "0.3.0",
-    "emoji-regex": "10.3.0",
+    "emoji-regex": "10.4.0",
     "eventemitter2": "6.4.9",
-    "express": "4.19.2",
+    "express": "4.21.1",
     "express-brute": "1.0.1",
-    "express-session": "1.18.0",
-    "file-type": "19.1.1",
-    "filesize": "10.1.4",
+    "express-session": "1.18.1",
+    "file-type": "19.6.0",
+    "filesize": "10.1.6",
     "fs-extra": "11.2.0",
     "getos": "3.2.1",
-    "graphql": "16.8.1",
+    "graphql": "16.9.0",
     "graphql-list-fields": "2.0.4",
     "graphql-rate-limit-directive": "2.0.5",
-    "graphql-tools": "9.0.1",
-    "graphql-upload": "16.0.2",
+    "graphql-tools": "9.0.2",
+    "graphql-upload": "17.0.0",
     "gray-matter": "4.0.3",
     "he": "1.2.0",
     "highlight.js": "11.10.0",
@@ -92,17 +92,17 @@
     "js-base64": "3.7.7",
     "js-binary": "1.2.0",
     "js-yaml": "4.1.0",
-    "jsdom": "24.1.0",
+    "jsdom": "25.0.1",
     "jsonwebtoken": "9.0.2",
     "katex": "0.16.11",
     "klaw": "4.1.0",
     "knex": "3.1.0",
     "lodash": "4.17.21",
     "lodash-es": "4.17.21",
-    "luxon": "3.4.4",
+    "luxon": "3.5.0",
     "markdown-it": "14.1.0",
     "markdown-it-abbr": "2.0.0",
-    "markdown-it-attrs": "4.1.6",
+    "markdown-it-attrs": "4.2.0",
     "markdown-it-decorate": "1.2.2",
     "markdown-it-emoji": "3.0.0",
     "markdown-it-expand-tabs": "1.0.13",
@@ -121,8 +121,8 @@
     "nanoid": "5.0.7",
     "node-2fa": "2.0.3",
     "node-cache": "5.1.2",
-    "nodemailer": "6.9.14",
-    "objection": "3.1.4",
+    "nodemailer": "6.9.15",
+    "objection": "3.1.5",
     "octokit": "4.0.2",
     "passport": "0.7.0",
     "passport-auth0": "1.4.4",
@@ -144,52 +144,52 @@
     "passport-slack-oauth2": "1.2.0",
     "passport-twitch-strategy": "2.2.0",
     "pem-jwk": "2.0.0",
-    "pg": "8.12.0",
+    "pg": "8.13.0",
     "pg-hstore": "2.3.4",
     "pg-pubsub": "0.8.1",
-    "pg-query-stream": "4.6.0",
+    "pg-query-stream": "4.7.0",
     "pg-tsquery": "8.4.2",
-    "poolifier": "4.0.18",
+    "poolifier": "4.3.0",
     "prom-client": "15.1.3",
     "punycode": "2.3.1",
-    "puppeteer-core": "22.13.0",
+    "puppeteer-core": "23.6.0",
     "qr-image": "3.2.0",
-    "remove-markdown": "0.5.0",
+    "remove-markdown": "0.5.5",
     "safe-regex": "2.1.1",
     "sanitize-filename": "1.6.3",
     "scim-query-filter-parser": "2.0.4",
-    "semver": "7.6.2",
+    "semver": "7.6.3",
     "serve-favicon": "2.5.0",
-    "sharp": "0.33.4",
-    "simple-git": "3.25.0",
-    "socket.io": "4.7.5",
+    "sharp": "0.33.5",
+    "simple-git": "3.27.0",
+    "socket.io": "4.8.0",
     "striptags": "3.2.0",
     "tar-fs": "3.0.6",
     "turndown": "7.2.0",
     "twemoji": "14.0.2",
-    "ufo": "1.5.3",
+    "ufo": "1.5.4",
     "uslug": "1.0.4",
     "uuid": "10.0.0",
     "validate.js": "0.13.1",
-    "vue": "3.4.31",
+    "vue": "3.5.12",
     "xss": "1.0.15",
     "yargs": "17.7.2"
   },
   "devDependencies": {
-    "eslint": "8.56.0",
-    "eslint-config-requarks": "1.0.7",
-    "eslint-config-standard": "17.1.0",
-    "eslint-plugin-import": "2.29.1",
+    "eslint": "9.13.0",
+    "eslint-plugin-import": "2.31.0",
     "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-promise": "6.4.0",
-    "nodemon": "3.1.4"
+    "eslint-plugin-promise": "7.1.0",
+    "neostandard": "0.11.6",
+    "nodemon": "3.1.7"
   },
   "overrides": {
-    "@graphql-tools/utils": "10.1.3"
+    "@graphql-tools/utils": "10.5.5"
   },
   "collective": {
     "type": "opencollective",
     "url": "https://opencollective.com/wikijs",
     "logo": "https://opencollective.com/opencollective/logo.txt"
-  }
+  },
+  "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228"
 }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 328 - 252
server/pnpm-lock.yaml


+ 3 - 3
server/web.mjs

@@ -3,7 +3,7 @@ import cookieParser from 'cookie-parser'
 import cors from 'cors'
 import express from 'express'
 import session from 'express-session'
-import KnexSessionStore from 'connect-session-knex'
+import { ConnectSessionKnexStore } from 'connect-session-knex'
 import favicon from 'serve-favicon'
 import path from 'node:path'
 import { set } from 'lodash-es'
@@ -139,7 +139,7 @@ export async function init () {
     secret: WIKI.config.auth.secret,
     resave: false,
     saveUninitialized: false,
-    store: new KnexSessionStore(session)({
+    store: new ConnectSessionKnexStore({
       knex: WIKI.db.knex
     })
   }))
@@ -159,7 +159,7 @@ export async function init () {
 
   app.use((req, res, next) => {
     if (req.path.length > 1 && req.path.endsWith('/')) {
-      let query = req.url.slice(req.path.length) || ''
+      const query = req.url.slice(req.path.length) || ''
       res.redirect(301, req.path.slice(0, -1) + query)
     } else {
       set(res.locals, 'pageMeta.url', `${WIKI.config.host}${req.path}`)

+ 2 - 1
ux/package.json

@@ -128,5 +128,6 @@
   "engines": {
     "node": ">= 18.0",
     "npm": ">= 6.13.4"
-  }
+  },
+  "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228"
 }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است