update to 1.20.0 (#124)

This commit is contained in:
kwaroran
2023-05-27 23:22:14 +09:00
committed by GitHub
63 changed files with 825 additions and 100 deletions

2
.gitignore vendored
View File

@@ -9,6 +9,7 @@ lerna-debug.log*
node_modules node_modules
dist/ dist/
save/
dist-web/ dist-web/
dist-ssr dist-ssr
*.local *.local
@@ -27,3 +28,4 @@ xplugin/
/src-taurl/target/ /src-taurl/target/
/src-taurl/gen/ /src-taurl/gen/
/build/ /build/
pycache/

View File

@@ -10,16 +10,20 @@
"check": "svelte-check --tsconfig ./tsconfig.json", "check": "svelte-check --tsconfig ./tsconfig.json",
"tauri": "tauri", "tauri": "tauri",
"buildsite": "vite build --outDir dist", "buildsite": "vite build --outDir dist",
"updatePlugin": "tsc public/pluginApi.ts" "updatePlugin": "tsc public/pluginApi.ts",
"runserver": "node server/node/server.cjs"
}, },
"dependencies": { "dependencies": {
"@dqbd/tiktoken": "^1.0.4", "@dqbd/tiktoken": "^1.0.4",
"@msgpack/msgpack": "3.0.0-beta2", "@msgpack/msgpack": "3.0.0-beta2",
"@tauri-apps/api": "1.3.0", "@tauri-apps/api": "1.3.0",
"body-parser": "^1.20.2",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"core-js": "^3.30.2", "core-js": "^3.30.2",
"cors": "^2.8.5",
"dompurify": "^3.0.1", "dompurify": "^3.0.1",
"exifr": "^7.1.3", "exifr": "^7.1.3",
"express": "^4.18.2",
"gpt-3-encoder": "^1.1.4", "gpt-3-encoder": "^1.1.4",
"gpt3-tokenizer": "^1.1.5", "gpt3-tokenizer": "^1.1.5",
"isomorphic-dompurify": "^1.2.0", "isomorphic-dompurify": "^1.2.0",
@@ -27,6 +31,7 @@
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lucide-svelte": "^0.130.0", "lucide-svelte": "^0.130.0",
"mobile-drag-drop": "3.0.0-rc.0", "mobile-drag-drop": "3.0.0-rc.0",
"node-html-parser": "^6.1.5",
"pako": "^2.1.0", "pako": "^2.1.0",
"png-chunk-text": "^1.0.0", "png-chunk-text": "^1.0.0",
"png-chunks-encode": "^1.0.0", "png-chunks-encode": "^1.0.0",

493
pnpm-lock.yaml generated
View File

@@ -10,18 +10,27 @@ dependencies:
'@tauri-apps/api': '@tauri-apps/api':
specifier: 1.3.0 specifier: 1.3.0
version: 1.3.0 version: 1.3.0
body-parser:
specifier: ^1.20.2
version: 1.20.2
buffer: buffer:
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3 version: 6.0.3
core-js: core-js:
specifier: ^3.30.2 specifier: ^3.30.2
version: 3.30.2 version: 3.30.2
cors:
specifier: ^2.8.5
version: 2.8.5
dompurify: dompurify:
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.0.1 version: 3.0.1
exifr: exifr:
specifier: ^7.1.3 specifier: ^7.1.3
version: 7.1.3 version: 7.1.3
express:
specifier: ^4.18.2
version: 4.18.2
gpt-3-encoder: gpt-3-encoder:
specifier: ^1.1.4 specifier: ^1.1.4
version: 1.1.4 version: 1.1.4
@@ -43,6 +52,9 @@ dependencies:
mobile-drag-drop: mobile-drag-drop:
specifier: 3.0.0-rc.0 specifier: 3.0.0-rc.0
version: 3.0.0-rc.0 version: 3.0.0-rc.0
node-html-parser:
specifier: ^6.1.5
version: 6.1.5
pako: pako:
specifier: ^2.1.0 specifier: ^2.1.0
version: 2.1.0 version: 2.1.0
@@ -734,6 +746,14 @@ packages:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
dev: false dev: false
/accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
dependencies:
mime-types: 2.1.35
negotiator: 0.6.3
dev: false
/acorn-globals@7.0.1: /acorn-globals@7.0.1:
resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
dependencies: dependencies:
@@ -777,6 +797,10 @@ packages:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true dev: true
/array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
dev: false
/array-keyed-map@2.1.3: /array-keyed-map@2.1.3:
resolution: {integrity: sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA==} resolution: {integrity: sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA==}
dev: false dev: false
@@ -814,6 +838,50 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/body-parser@1.20.1:
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dependencies:
bytes: 3.1.2
content-type: 1.0.5
debug: 2.6.9
depd: 2.0.0
destroy: 1.2.0
http-errors: 2.0.0
iconv-lite: 0.4.24
on-finished: 2.4.1
qs: 6.11.0
raw-body: 2.5.1
type-is: 1.6.18
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
/body-parser@1.20.2:
resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dependencies:
bytes: 3.1.2
content-type: 1.0.5
debug: 2.6.9
depd: 2.0.0
destroy: 1.2.0
http-errors: 2.0.0
iconv-lite: 0.4.24
on-finished: 2.4.1
qs: 6.11.0
raw-body: 2.5.2
type-is: 1.6.18
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: false
/brace-expansion@1.1.11: /brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies: dependencies:
@@ -850,6 +918,18 @@ packages:
ieee754: 1.2.1 ieee754: 1.2.1
dev: false dev: false
/bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
dev: false
/call-bind@1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
dependencies:
function-bind: 1.1.1
get-intrinsic: 1.2.1
dev: false
/callsites@3.1.0: /callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -904,11 +984,40 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true dev: true
/content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
dependencies:
safe-buffer: 5.2.1
dev: false
/content-type@1.0.5:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
dev: false
/cookie-signature@1.0.6:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
dev: false
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
dev: false
/core-js@3.30.2: /core-js@3.30.2:
resolution: {integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==} resolution: {integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==}
requiresBuild: true requiresBuild: true
dev: false dev: false
/cors@2.8.5:
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
engines: {node: '>= 0.10'}
dependencies:
object-assign: 4.1.1
vary: 1.1.2
dev: false
/crc-32@0.3.0: /crc-32@0.3.0:
resolution: {integrity: sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA==} resolution: {integrity: sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA==}
engines: {node: '>=0.8'} engines: {node: '>=0.8'}
@@ -923,6 +1032,21 @@ packages:
which: 2.0.2 which: 2.0.2
dev: true dev: true
/css-select@5.1.0:
resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
dependencies:
boolbase: 1.0.0
css-what: 6.1.0
domhandler: 5.0.3
domutils: 3.1.0
nth-check: 2.1.1
dev: false
/css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
dev: false
/cssesc@3.0.0: /cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'} engines: {node: '>=4'}
@@ -945,6 +1069,17 @@ packages:
whatwg-url: 12.0.1 whatwg-url: 12.0.1
dev: false dev: false
/debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.0.0
dev: false
/debug@4.3.4: /debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
@@ -981,6 +1116,16 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
dev: false dev: false
/depd@2.0.0:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
dev: false
/destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dev: false
/detect-indent@6.1.0: /detect-indent@6.1.0:
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -994,6 +1139,18 @@ packages:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: true dev: true
/dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
entities: 4.4.0
dev: false
/domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
dev: false
/domexception@4.0.0: /domexception@4.0.0:
resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -1001,14 +1158,38 @@ packages:
webidl-conversions: 7.0.0 webidl-conversions: 7.0.0
dev: false dev: false
/domhandler@5.0.3:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
dev: false
/dompurify@3.0.1: /dompurify@3.0.1:
resolution: {integrity: sha512-60tsgvPKwItxZZdfLmamp0MTcecCta3avOhsLgPZ0qcWt96OasFfhkeIRbJ6br5i0fQawT1/RBGB5L58/Jpwuw==} resolution: {integrity: sha512-60tsgvPKwItxZZdfLmamp0MTcecCta3avOhsLgPZ0qcWt96OasFfhkeIRbJ6br5i0fQawT1/RBGB5L58/Jpwuw==}
dev: false dev: false
/domutils@3.1.0:
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
dependencies:
dom-serializer: 2.0.0
domelementtype: 2.3.0
domhandler: 5.0.3
dev: false
/ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
/electron-to-chromium@1.4.379: /electron-to-chromium@1.4.379:
resolution: {integrity: sha512-eRMq6Cf4PhjB14R9U6QcXM/VRQ54Gc3OL9LKnFugUIh2AXm3KJlOizlSfVIgjH76bII4zHGK4t0PVTE5qq8dZg==} resolution: {integrity: sha512-eRMq6Cf4PhjB14R9U6QcXM/VRQ54Gc3OL9LKnFugUIh2AXm3KJlOizlSfVIgjH76bII4zHGK4t0PVTE5qq8dZg==}
dev: true dev: true
/encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
dev: false
/entities@4.4.0: /entities@4.4.0:
resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
engines: {node: '>=0.12'} engines: {node: '>=0.12'}
@@ -1052,6 +1233,10 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
dev: false
/escodegen@2.0.0: /escodegen@2.0.0:
resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
@@ -1081,6 +1266,11 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/etag@1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
dev: false
/execa@5.1.1: /execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -1100,6 +1290,45 @@ packages:
resolution: {integrity: sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==} resolution: {integrity: sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==}
dev: false dev: false
/express@4.18.2:
resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
engines: {node: '>= 0.10.0'}
dependencies:
accepts: 1.3.8
array-flatten: 1.1.1
body-parser: 1.20.1
content-disposition: 0.5.4
content-type: 1.0.5
cookie: 0.5.0
cookie-signature: 1.0.6
debug: 2.6.9
depd: 2.0.0
encodeurl: 1.0.2
escape-html: 1.0.3
etag: 1.8.1
finalhandler: 1.2.0
fresh: 0.5.2
http-errors: 2.0.0
merge-descriptors: 1.0.1
methods: 1.1.2
on-finished: 2.4.1
parseurl: 1.3.3
path-to-regexp: 0.1.7
proxy-addr: 2.0.7
qs: 6.11.0
range-parser: 1.2.1
safe-buffer: 5.2.1
send: 0.18.0
serve-static: 1.15.0
setprototypeof: 1.2.0
statuses: 2.0.1
type-is: 1.6.18
utils-merge: 1.0.1
vary: 1.1.2
transitivePeerDependencies:
- supports-color
dev: false
/fast-glob@3.2.12: /fast-glob@3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'} engines: {node: '>=8.6.0'}
@@ -1128,6 +1357,21 @@ packages:
to-regex-range: 5.0.1 to-regex-range: 5.0.1
dev: true dev: true
/finalhandler@1.2.0:
resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
engines: {node: '>= 0.8'}
dependencies:
debug: 2.6.9
encodeurl: 1.0.2
escape-html: 1.0.3
on-finished: 2.4.1
parseurl: 1.3.3
statuses: 2.0.1
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
/form-data@4.0.0: /form-data@4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@@ -1137,10 +1381,20 @@ packages:
mime-types: 2.1.35 mime-types: 2.1.35
dev: false dev: false
/forwarded@0.2.0:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
dev: false
/fraction.js@4.2.0: /fraction.js@4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true dev: true
/fresh@0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
dev: false
/fs.realpath@1.0.0: /fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true dev: true
@@ -1154,7 +1408,15 @@ packages:
/function-bind@1.1.1: /function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
/get-intrinsic@1.2.1:
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
dependencies:
function-bind: 1.1.1
has: 1.0.3
has-proto: 1.0.1
has-symbols: 1.0.3
dev: false
/get-stream@6.0.1: /get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
@@ -1212,12 +1474,26 @@ packages:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true dev: true
/has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
dev: false
/has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
dev: false
/has@1.0.3: /has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'} engines: {node: '>= 0.4.0'}
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
dev: true
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
dev: false
/html-encoding-sniffer@3.0.0: /html-encoding-sniffer@3.0.0:
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
@@ -1226,6 +1502,17 @@ packages:
whatwg-encoding: 2.0.0 whatwg-encoding: 2.0.0
dev: false dev: false
/http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
dependencies:
depd: 2.0.0
inherits: 2.0.4
setprototypeof: 1.2.0
statuses: 2.0.1
toidentifier: 1.0.1
dev: false
/http-proxy-agent@5.0.0: /http-proxy-agent@5.0.0:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@@ -1252,6 +1539,13 @@ packages:
engines: {node: '>=10.17.0'} engines: {node: '>=10.17.0'}
dev: true dev: true
/iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
dependencies:
safer-buffer: 2.1.2
dev: false
/iconv-lite@0.6.3: /iconv-lite@0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -1284,7 +1578,6 @@ packages:
/inherits@2.0.4: /inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
/internal-ip@7.0.0: /internal-ip@7.0.0:
resolution: {integrity: sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==} resolution: {integrity: sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==}
@@ -1301,6 +1594,11 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
dev: false
/ipaddr.js@2.0.1: /ipaddr.js@2.0.1:
resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -1487,6 +1785,15 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/sourcemap-codec': 1.4.14
dev: true dev: true
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
dev: false
/merge-descriptors@1.0.1:
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
dev: false
/merge-stream@2.0.0: /merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true dev: true
@@ -1496,6 +1803,11 @@ packages:
engines: {node: '>= 8'} engines: {node: '>= 8'}
dev: true dev: true
/methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
dev: false
/micromatch@4.0.5: /micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
@@ -1516,6 +1828,12 @@ packages:
mime-db: 1.52.0 mime-db: 1.52.0
dev: false dev: false
/mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
hasBin: true
dev: false
/mimic-fn@2.1.0: /mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -1552,9 +1870,17 @@ packages:
engines: {node: '>=4'} engines: {node: '>=4'}
dev: true dev: true
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
dev: false
/ms@2.1.2: /ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
/mz@2.7.0: /mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies: dependencies:
@@ -1569,6 +1895,18 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
dev: false
/node-html-parser@6.1.5:
resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==}
dependencies:
css-select: 5.1.0
he: 1.2.0
dev: false
/node-releases@2.0.10: /node-releases@2.0.10:
resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
dev: true dev: true
@@ -1590,6 +1928,12 @@ packages:
path-key: 3.1.1 path-key: 3.1.1
dev: true dev: true
/nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
dependencies:
boolbase: 1.0.0
dev: false
/nwsapi@2.2.2: /nwsapi@2.2.2:
resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==}
dev: false dev: false
@@ -1597,13 +1941,23 @@ packages:
/object-assign@4.1.1: /object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true
/object-hash@3.0.0: /object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
dev: true dev: true
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
dev: false
/on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
dependencies:
ee-first: 1.1.1
dev: false
/once@1.4.0: /once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies: dependencies:
@@ -1664,6 +2018,11 @@ packages:
dependencies: dependencies:
entities: 4.4.0 entities: 4.4.0
/parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
dev: false
/path-is-absolute@1.0.1: /path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -1678,6 +2037,10 @@ packages:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true dev: true
/path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: false
/picocolors@1.0.0: /picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true dev: true
@@ -1802,6 +2165,14 @@ packages:
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
dev: false dev: false
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
dependencies:
forwarded: 0.2.0
ipaddr.js: 1.9.1
dev: false
/psl@1.9.0: /psl@1.9.0:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
dev: false dev: false
@@ -1811,6 +2182,13 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: false dev: false
/qs@6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.4
dev: false
/querystringify@2.2.0: /querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
dev: false dev: false
@@ -1824,6 +2202,31 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/range-parser@1.2.1:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
dev: false
/raw-body@2.5.1:
resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
engines: {node: '>= 0.8'}
dependencies:
bytes: 3.1.2
http-errors: 2.0.0
iconv-lite: 0.4.24
unpipe: 1.0.0
dev: false
/raw-body@2.5.2:
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
dependencies:
bytes: 3.1.2
http-errors: 2.0.0
iconv-lite: 0.4.24
unpipe: 1.0.0
dev: false
/read-cache@1.0.0: /read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies: dependencies:
@@ -1891,6 +2294,10 @@ packages:
mri: 1.2.0 mri: 1.2.0
dev: true dev: true
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
/safer-buffer@2.1.2: /safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: false dev: false
@@ -1911,6 +2318,43 @@ packages:
xmlchars: 2.2.0 xmlchars: 2.2.0
dev: false dev: false
/send@0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
engines: {node: '>= 0.8.0'}
dependencies:
debug: 2.6.9
depd: 2.0.0
destroy: 1.2.0
encodeurl: 1.0.2
escape-html: 1.0.3
etag: 1.8.1
fresh: 0.5.2
http-errors: 2.0.0
mime: 1.6.0
ms: 2.1.3
on-finished: 2.4.1
range-parser: 1.2.1
statuses: 2.0.1
transitivePeerDependencies:
- supports-color
dev: false
/serve-static@1.15.0:
resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
engines: {node: '>= 0.8.0'}
dependencies:
encodeurl: 1.0.2
escape-html: 1.0.3
parseurl: 1.3.3
send: 0.18.0
transitivePeerDependencies:
- supports-color
dev: false
/setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: false
/shebang-command@2.0.0: /shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -1930,6 +2374,14 @@ packages:
commander: 9.5.0 commander: 9.5.0
dev: false dev: false
/side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.1
object-inspect: 1.12.3
dev: false
/signal-exit@3.0.7: /signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true dev: true
@@ -1960,6 +2412,11 @@ packages:
dev: false dev: false
optional: true optional: true
/statuses@2.0.1:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
dev: false
/strip-final-newline@2.0.0: /strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -2189,6 +2646,11 @@ packages:
is-number: 7.0.0 is-number: 7.0.0
dev: true dev: true
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
dev: false
/tough-cookie@4.1.2: /tough-cookie@4.1.2:
resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -2221,6 +2683,14 @@ packages:
prelude-ls: 1.1.2 prelude-ls: 1.1.2
dev: false dev: false
/type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
dependencies:
media-typer: 0.3.0
mime-types: 2.1.35
dev: false
/typescript@4.9.5: /typescript@4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'} engines: {node: '>=4.2.0'}
@@ -2238,6 +2708,11 @@ packages:
engines: {node: '>= 4.0.0'} engines: {node: '>= 4.0.0'}
dev: false dev: false
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
dev: false
/update-browserslist-db@1.0.11(browserslist@4.21.5): /update-browserslist-db@1.0.11(browserslist@4.21.5):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true hasBin: true
@@ -2260,10 +2735,20 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true dev: true
/utils-merge@1.0.1:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
dev: false
/uuid@9.0.0: /uuid@9.0.0:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
hasBin: true hasBin: true
/vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
dev: false
/vite-plugin-top-level-await@1.3.0(rollup@3.21.3)(vite@4.2.1): /vite-plugin-top-level-await@1.3.0(rollup@3.21.3)(vite@4.2.1):
resolution: {integrity: sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA==} resolution: {integrity: sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA==}
peerDependencies: peerDependencies:

2
run.bat Normal file
View File

@@ -0,0 +1,2 @@
npm build
npm run runserver

2
run.sh Normal file
View File

@@ -0,0 +1,2 @@
npm build
npm run runserver

148
server/node/server.cjs Normal file
View File

@@ -0,0 +1,148 @@
const express = require('express');
const app = express();
const path = require('path');
const htmlparser = require('node-html-parser');
const { existsSync, mkdirSync } = require('fs');
const bodyParser = require('body-parser');
const fs = require('fs/promises')
app.use(express.static(path.join(process.cwd(), 'dist'), {index: false}));
app.use(bodyParser.json({ limit: 100000000 }));
const savePath = path.join(process.cwd(), "save")
if(!existsSync(savePath)){
mkdirSync(savePath)
}
app.get('/', async (req, res, next) => {
console.log("connected")
try {
const mainIndex = await fs.readFile(path.join(process.cwd(), 'dist', 'index.html'))
const root = htmlparser.parse(mainIndex)
const head = root.querySelector('head')
head.innerHTML = `<script>globalThis.__NODE__ = true</script>` + head.innerHTML
res.send(root.toString())
} catch (error) {
console.log(error)
next(error)
}
})
app.post('/proxy', async (req, res, next) => {
const urlParam = req.query.url;
if (!urlParam) {
res.status(400).send({
error:'URL has no param'
});
return;
}
const header = req.headers['risu-header'] ? JSON.parse(decodeURIComponent(req.headers['risu-header'])) : req.headers;
let originalResponse;
try {
console.log(urlParam)
originalResponse = await fetch(urlParam, {
method: req.method,
headers: header,
body: JSON.stringify(req.body)
});
} catch (err) {
next(err);
return;
}
const status = originalResponse.status;
const originalBody = await originalResponse.text();
if(status < 200 || status >= 300){
res.status(status)
}
res.send(originalBody);
});
app.get('/api/read', async (req, res, next) => {
const filePath = req.headers['file-path'];
if (!filePath) {
res.status(400).send({
error:'File path required'
});
return;
}
try {
if(!existsSync(path.join(savePath, filePath))){
res.send({
success: true,
content: null
});
}
else{
const data = await fs.readFile(path.join(savePath, filePath));
res.send({
success: true,
content: data.toString('base64')
});
}
} catch (error) {
next(error);
}
});
app.get('/api/remove', async (req, res, next) => {
const filePath = req.headers['file-path'];
if (!filePath) {
res.status(400).send({
error:'File path required'
});
return;
}
try {
await fs.rm(path.join(savePath, filePath));
res.send({
success: true,
});
} catch (error) {
next(error);
}
});
app.get('/api/list', async (req, res, next) => {
try {
const data = (await fs.readdir(path.join(savePath))).map((v) => {
return Buffer.from(v, 'hex').toString('utf-8')
})
res.send({
success: true,
content: data
});
} catch (error) {
next(error);
}
});
app.post('/api/write', async (req, res, next) => {
const filePath = req.headers['file-path'];
const fileContent = Buffer.from(req.body.content, 'base64');
if (!filePath || !fileContent) {
res.status(400).send({
error:'File path required'
});
return;
}
try {
await fs.writeFile(path.join(savePath, filePath), fileContent);
res.send({
success: true
});
} catch (error) {
next(error);
}
});
app.listen(6001, () => {
console.log("Server is listening on http://localhost:6001/");
});

View File

@@ -8,7 +8,7 @@
}, },
"package": { "package": {
"productName": "RisuAI", "productName": "RisuAI",
"version": "1.19.1" "version": "1.20.0"
}, },
"tauri": { "tauri": {
"allowlist": { "allowlist": {

View File

@@ -2,7 +2,7 @@
import Sidebar from './lib/SideBars/Sidebar.svelte'; import Sidebar from './lib/SideBars/Sidebar.svelte';
import {ArrowRight} from 'lucide-svelte' import {ArrowRight} from 'lucide-svelte'
import { SizeStore, settingsOpen, sideBarStore } from './ts/stores'; import { SizeStore, settingsOpen, sideBarStore } from './ts/stores';
import { DataBase, loadedStore } from './ts/database'; import { DataBase, loadedStore } from './ts/storage/database';
import ChatScreen from './lib/ChatScreens/ChatScreen.svelte'; import ChatScreen from './lib/ChatScreens/ChatScreen.svelte';
import AlertComp from './lib/Others/AlertComp.svelte'; import AlertComp from './lib/Others/AlertComp.svelte';
import { alertStore } from './ts/alert'; import { alertStore } from './ts/alert';

View File

@@ -1,6 +1,6 @@
<script> <script>
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
let textarea; let textarea;
let previousScrollHeight = 0; let previousScrollHeight = 0;

View File

@@ -4,7 +4,7 @@
import AutoresizeArea from "./AutoresizeArea.svelte"; import AutoresizeArea from "./AutoresizeArea.svelte";
import { alertConfirm } from "../../ts/alert"; import { alertConfirm } from "../../ts/alert";
import { language } from "../../lang"; import { language } from "../../lang";
import { DataBase, type character, type groupChat } from "../../ts/database"; import { DataBase, type character, type groupChat } from "../../ts/storage/database";
import { selectedCharID } from "../../ts/stores"; import { selectedCharID } from "../../ts/stores";
import { translate } from "../../ts/translator/translator"; import { translate } from "../../ts/translator/translator";
import { replacePlaceholders } from "../../ts/util"; import { replacePlaceholders } from "../../ts/util";

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { getCustomBackground, getEmotion } from "../../ts/util"; import { getCustomBackground, getEmotion } from "../../ts/util";
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
import { CharEmotion, SizeStore, selectedCharID, sideBarStore } from "../../ts/stores"; import { CharEmotion, SizeStore, selectedCharID, sideBarStore } from "../../ts/stores";
import ResizeBox from './ResizeBox.svelte' import ResizeBox from './ResizeBox.svelte'
import DefaultChatScreen from "./DefaultChatScreen.svelte"; import DefaultChatScreen from "./DefaultChatScreen.svelte";

View File

@@ -2,7 +2,7 @@
import { DatabaseIcon, DicesIcon, LanguagesIcon, MenuIcon, MicOffIcon, RefreshCcwIcon, Send } from "lucide-svelte"; import { DatabaseIcon, DicesIcon, LanguagesIcon, MenuIcon, MicOffIcon, RefreshCcwIcon, Send } from "lucide-svelte";
import { selectedCharID } from "../../ts/stores"; import { selectedCharID } from "../../ts/stores";
import Chat from "./Chat.svelte"; import Chat from "./Chat.svelte";
import { DataBase, appVer, type Message } from "../../ts/database"; import { DataBase, appVer, type Message } from "../../ts/storage/database";
import { getCharImage } from "../../ts/characters"; import { getCharImage } from "../../ts/characters";
import { doingChat, sendChat } from "../../ts/process/index"; import { doingChat, sendChat } from "../../ts/process/index";
import { findCharacterbyId, messageForm, sleep } from "../../ts/util"; import { findCharacterbyId, messageForm, sleep } from "../../ts/util";

View File

@@ -1,5 +1,5 @@
<script> <script>
import { DataBase } from '../../ts/database'; import { DataBase } from '../../ts/storage/database';
import { CharEmotion } from '../../ts/stores'; import { CharEmotion } from '../../ts/stores';
import { getEmotion } from '../../ts/util'; import { getEmotion } from '../../ts/util';
</script> </script>

View File

@@ -4,7 +4,7 @@
import EmotionBox from './EmotionBox.svelte'; import EmotionBox from './EmotionBox.svelte';
import TransitionImage from './TransitionImage.svelte'; import TransitionImage from './TransitionImage.svelte';
import { getEmotion } from '../../ts/util'; import { getEmotion } from '../../ts/util';
import { DataBase } from '../../ts/database'; import { DataBase } from '../../ts/storage/database';
let box; let box;
let isResizing = false; let isResizing = false;

View File

@@ -1,7 +1,7 @@
<script> <script>
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { alertStore } from "../../ts/alert"; import { alertStore } from "../../ts/alert";
import { DataBase } from '../../ts/database'; import { DataBase } from '../../ts/storage/database';
import { getCharImage } from '../../ts/characters'; import { getCharImage } from '../../ts/characters';
import { ParseMarkdown } from '../../ts/parser'; import { ParseMarkdown } from '../../ts/parser';
import BarIcon from '../SideBars/BarIcon.svelte'; import BarIcon from '../SideBars/BarIcon.svelte';

View File

@@ -1,7 +1,7 @@
<script> <script>
import { alertConfirm, alertError } from "../../ts/alert"; import { alertConfirm, alertError } from "../../ts/alert";
import { language } from "../../lang"; import { language } from "../../lang";
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
import { selectedCharID } from "../../ts/stores"; import { selectedCharID } from "../../ts/stores";
import { DownloadIcon, EditIcon, FolderUpIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte"; import { DownloadIcon, EditIcon, FolderUpIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
import { exportChat, importChat } from "../../ts/characters"; import { exportChat, importChat } from "../../ts/characters";

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { isTauri, openURL } from "src/ts/globalApi"; import { isTauri, openURL } from "src/ts/storage/globalApi";
</script> </script>
<svelte:head> <svelte:head>

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { characterFormatUpdate, getCharImage } from "../../ts/characters"; import { characterFormatUpdate, getCharImage } from "../../ts/characters";
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
import BarIcon from "../SideBars/BarIcon.svelte"; import BarIcon from "../SideBars/BarIcon.svelte";
import { User, Users } from "lucide-svelte"; import { User, Users } from "lucide-svelte";
import { selectedCharID } from "../../ts/stores"; import { selectedCharID } from "../../ts/stores";

View File

@@ -3,7 +3,7 @@
import { ArrowBigLeftIcon } from "lucide-svelte"; import { ArrowBigLeftIcon } from "lucide-svelte";
import { changeLanguage, language } from "src/lang"; import { changeLanguage, language } from "src/lang";
import { addDefaultCharacters } from "src/ts/characters"; import { addDefaultCharacters } from "src/ts/characters";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { sleep } from "src/ts/util"; import { sleep } from "src/ts/util";
let step = 0 let step = 0

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.accessibility}</h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.accessibility}</h2>

View File

@@ -2,9 +2,9 @@
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { alertMd } from "src/ts/alert"; import { alertMd } from "src/ts/alert";
import { getRequestLog, isTauri } from "src/ts/globalApi"; import { getRequestLog, isTauri } from "src/ts/storage/globalApi";
</script> </script>
<h2 class="text-2xl font-bold mt-2">{language.advancedSettings}</h2> <h2 class="text-2xl font-bold mt-2">{language.advancedSettings}</h2>

View File

@@ -2,9 +2,9 @@
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { customProviderStore, getCurrentPluginMax } from "src/ts/process/plugins"; import { customProviderStore, getCurrentPluginMax } from "src/ts/process/plugins";
import { isTauri } from "src/ts/globalApi"; import { isTauri } from "src/ts/storage/globalApi";
import { tokenize } from "src/ts/tokenizer"; import { tokenize } from "src/ts/tokenizer";
import ModelList from "src/lib/UI/ModelList.svelte"; import ModelList from "src/lib/UI/ModelList.svelte";
import DropList from "src/lib/SideBars/DropList.svelte"; import DropList from "src/lib/SideBars/DropList.svelte";

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { language } from "src/lang"; import { language } from "src/lang";
import { openURL } from "src/ts/globalApi"; import { openURL } from "src/ts/storage/globalApi";
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.community}</h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.community}</h2>

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { language } from "src/lang"; import { language } from "src/lang";
import { DataBase, saveImage, updateTextTheme } from "src/ts/database"; import { DataBase, saveImage, updateTextTheme } from "src/ts/storage/database";
import { changeFullscreen, selectSingleFile, sleep } from "src/ts/util"; import { changeFullscreen, selectSingleFile, sleep } from "src/ts/util";
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";

View File

@@ -2,7 +2,7 @@
import { language } from "src/lang"; import { language } from "src/lang";
import { alertConfirm } from "src/ts/alert"; import { alertConfirm } from "src/ts/alert";
import { checkDriver } from "src/ts/drive/drive"; import { checkDriver } from "src/ts/drive/drive";
import { isTauri } from "src/ts/globalApi"; import { isTauri } from "src/ts/storage/globalApi";
</script> </script>

View File

@@ -2,7 +2,7 @@
import { language } from "src/lang"; import { language } from "src/lang";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";
import LoreBookSetting from "src/lib/SideBars/LoreBookSetting.svelte"; import LoreBookSetting from "src/lib/SideBars/LoreBookSetting.svelte";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
export let openLoreList = false export let openLoreList = false
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.globalLoreBook} <Help key="lorebook" /></h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.globalLoreBook} <Help key="lorebook" /></h2>

View File

@@ -3,7 +3,7 @@
import { language } from "src/lang"; import { language } from "src/lang";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";
import RegexData from "src/lib/SideBars/RegexData.svelte"; import RegexData from "src/lib/SideBars/RegexData.svelte";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { exportRegex, importRegex } from "src/ts/process/scripts"; import { exportRegex, importRegex } from "src/ts/process/scripts";
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.globalRegexScript} <Help key="regexScript" /></h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.globalRegexScript} <Help key="regexScript" /></h2>

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import { changeLanguage, language } from "src/lang"; import { changeLanguage, language } from "src/lang";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { sleep } from "src/ts/util"; import { sleep } from "src/ts/util";
let langChanged = false let langChanged = false
</script> </script>

View File

@@ -2,8 +2,8 @@
import Check from "src/lib/Others/Check.svelte"; import Check from "src/lib/Others/Check.svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import Help from "src/lib/Others/Help.svelte"; import Help from "src/lib/Others/Help.svelte";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { isTauri } from "src/ts/globalApi"; import { isTauri } from "src/ts/storage/globalApi";
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.otherBots}</h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.otherBots}</h2>

View File

@@ -2,7 +2,7 @@
import { PlusIcon, TrashIcon } from "lucide-svelte"; import { PlusIcon, TrashIcon } from "lucide-svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import { alertConfirm } from "src/ts/alert"; import { alertConfirm } from "src/ts/alert";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { importPlugin } from "src/ts/process/plugins"; import { importPlugin } from "src/ts/process/plugins";
</script> </script>

View File

@@ -1,7 +1,7 @@
<script> <script>
import { language } from "src/lang"; import { language } from "src/lang";
import { getCharImage, selectUserImg } from "src/ts/characters"; import { getCharImage, selectUserImg } from "src/ts/characters";
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
</script> </script>
<h2 class="mb-2 text-2xl font-bold mt-2">{language.user}</h2> <h2 class="mb-2 text-2xl font-bold mt-2">{language.user}</h2>

View File

@@ -1,7 +1,7 @@
<script> <script>
import { alertConfirm, alertError } from "../../ts/alert"; import { alertConfirm, alertError } from "../../ts/alert";
import { language } from "../../lang"; import { language } from "../../lang";
import { DataBase, changeToPreset, copyPreset, presetTemplate } from "../../ts/database"; import { DataBase, changeToPreset, copyPreset, presetTemplate } from "../../ts/storage/database";
import { CopyIcon, EditIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte"; import { CopyIcon, EditIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
let editMode = false let editMode = false

View File

@@ -1,7 +1,7 @@
<script> <script>
import { alertConfirm, alertError } from "../../ts/alert"; import { alertConfirm, alertError } from "../../ts/alert";
import { language } from "../../lang"; import { language } from "../../lang";
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
import { EditIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte"; import { EditIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
let editMode = false let editMode = false
export let close = () => {} export let close = () => {}

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { language } from "../../lang"; import { language } from "../../lang";
import { tokenize } from "../../ts/tokenizer"; import { tokenize } from "../../ts/tokenizer";
import { DataBase, saveImage as saveAsset, type Database, type character, type groupChat } from "../../ts/database"; import { DataBase, saveImage as saveAsset, type Database, type character, type groupChat } from "../../ts/storage/database";
import { selectedCharID } from "../../ts/stores"; import { selectedCharID } from "../../ts/stores";
import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, LoaderIcon, User, DnaIcon, CurlyBracesIcon, Volume2Icon } from 'lucide-svelte' import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, LoaderIcon, User, DnaIcon, CurlyBracesIcon, Volume2Icon } from 'lucide-svelte'
import Check from "../Others/Check.svelte"; import Check from "../Others/Check.svelte";
@@ -16,7 +16,7 @@
import RegexData from "./RegexData.svelte"; import RegexData from "./RegexData.svelte";
import { exportChar } from "src/ts/characterCards"; import { exportChar } from "src/ts/characterCards";
import { getElevenTTSVoices, getWebSpeechTTSVoices, getVOICEVOXVoices } from "src/ts/process/tts"; import { getElevenTTSVoices, getWebSpeechTTSVoices, getVOICEVOXVoices } from "src/ts/process/tts";
import { checkCharOrder } from "src/ts/globalApi"; import { checkCharOrder } from "src/ts/storage/globalApi";
let subMenu = 0 let subMenu = 0
let subberMenu = 0 let subberMenu = 0

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { XIcon } from "lucide-svelte"; import { XIcon } from "lucide-svelte";
import { language } from "../../lang"; import { language } from "../../lang";
import type { loreBook } from "../../ts/database"; import type { loreBook } from "../../ts/storage/database";
import { alertConfirm } from "../../ts/alert"; import { alertConfirm } from "../../ts/alert";
import Check from "../Others/Check.svelte"; import Check from "../Others/Check.svelte";
import Help from "../Others/Help.svelte"; import Help from "../Others/Help.svelte";

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { DataBase } from "../../ts/database"; import { DataBase } from "../../ts/storage/database";
import { language } from "../../lang"; import { language } from "../../lang";
import {selectedCharID} from '../../ts/stores' import {selectedCharID} from '../../ts/stores'
import { DownloadIcon, FolderUpIcon, ImportIcon, PlusIcon } from "lucide-svelte"; import { DownloadIcon, FolderUpIcon, ImportIcon, PlusIcon } from "lucide-svelte";

View File

@@ -2,7 +2,7 @@
import { XIcon } from "lucide-svelte"; import { XIcon } from "lucide-svelte";
import { language } from "src/lang"; import { language } from "src/lang";
import { alertConfirm } from "src/ts/alert"; import { alertConfirm } from "src/ts/alert";
import type { customscript } from "src/ts/database"; import type { customscript } from "src/ts/storage/database";
export let value:customscript export let value:customscript
export let onRemove: () => void = () => {} export let onRemove: () => void = () => {}

View File

@@ -6,7 +6,7 @@
settingsOpen, settingsOpen,
sideBarStore, sideBarStore,
} from "../../ts/stores"; } from "../../ts/stores";
import { DataBase, setDatabase, type folder } from "../../ts/database"; import { DataBase, setDatabase, type folder } from "../../ts/storage/database";
import BarIcon from "./BarIcon.svelte"; import BarIcon from "./BarIcon.svelte";
import SidebarIndicator from "./SidebarIndicator.svelte"; import SidebarIndicator from "./SidebarIndicator.svelte";
import { import {
@@ -41,7 +41,7 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import { findCharacterIndexbyId, findCharacterbyId, getCharacterIndexObject } from "src/ts/util"; import { findCharacterIndexbyId, findCharacterbyId, getCharacterIndexObject } from "src/ts/util";
import { v4 } from "uuid"; import { v4 } from "uuid";
import { checkCharOrder } from "src/ts/globalApi"; import { checkCharOrder } from "src/ts/storage/globalApi";
let openPresetList = false; let openPresetList = false;
let sideBarMode = 0; let sideBarMode = 0;
let editMode = false; let editMode = false;

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { DataBase } from "src/ts/database"; import { DataBase } from "src/ts/storage/database";
import { getHordeModels } from "src/ts/horde/getModels"; import { getHordeModels } from "src/ts/horde/getModels";
import Arcodion from "./Arcodion.svelte"; import Arcodion from "./Arcodion.svelte";
import { language } from "src/lang"; import { language } from "src/lang";

View File

@@ -1,7 +1,7 @@
import "./styles.css"; import "./styles.css";
import "core-js/actual" import "core-js/actual"
import App from "./App.svelte"; import App from "./App.svelte";
import { loadData } from "./ts/globalApi"; import { loadData } from "./ts/storage/globalApi";
import { initHotkey } from "./ts/hotkey"; import { initHotkey } from "./ts/hotkey";
import { polyfill } from "./ts/polyfill"; import { polyfill } from "./ts/polyfill";

View File

@@ -1,6 +1,6 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert" import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert"
import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./database" import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./storage/database"
import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util" import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util"
import { language } from "src/lang" import { language } from "src/lang"
import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack"; import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack";
@@ -8,7 +8,7 @@ import { v4 as uuidv4 } from 'uuid';
import exifr from 'exifr' import exifr from 'exifr'
import { PngMetadata } from "./exif" import { PngMetadata } from "./exif"
import { characterFormatUpdate } from "./characters" import { characterFormatUpdate } from "./characters"
import { checkCharOrder, downloadFile, readImage, saveAsset } from "./globalApi" import { checkCharOrder, downloadFile, readImage, saveAsset } from "./storage/globalApi"
import { cloneDeep } from "lodash" import { cloneDeep } from "lodash"

View File

@@ -1,5 +1,5 @@
import { get, writable } from "svelte/store"; import { get, writable } from "svelte/store";
import { DataBase, saveImage, setDatabase, type character, type Chat, defaultSdDataFunc } from "./database"; import { DataBase, saveImage, setDatabase, type character, type Chat, defaultSdDataFunc } from "./storage/database";
import exifr from 'exifr' import exifr from 'exifr'
import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert"; import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert";
import { language } from "../lang"; import { language } from "../lang";
@@ -8,7 +8,7 @@ import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpa
import { checkNullish, findCharacterbyId, selectMultipleFile, selectSingleFile, sleep } from "./util"; import { checkNullish, findCharacterbyId, selectMultipleFile, selectSingleFile, sleep } from "./util";
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { selectedCharID } from "./stores"; import { selectedCharID } from "./stores";
import { checkCharOrder, downloadFile, getFileSrc, readImage } from "./globalApi"; import { checkCharOrder, downloadFile, getFileSrc, readImage } from "./storage/globalApi";
export function createNewCharacter() { export function createNewCharacter() {
let db = get(DataBase) let db = get(DataBase)
@@ -41,6 +41,7 @@ export function createNewGroup(){
firstMsgIndex: -1 firstMsgIndex: -1
}) })
setDatabase(db) setDatabase(db)
checkCharOrder()
return db.characters.length - 1 return db.characters.length - 1
} }

View File

@@ -1,7 +1,7 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import { alertError, alertInput, alertNormal, alertSelect, alertStore } from "../alert"; import { alertError, alertInput, alertNormal, alertSelect, alertStore } from "../alert";
import { DataBase, setDatabase, type Database } from "../database"; import { DataBase, setDatabase, type Database } from "../storage/database";
import { forageStorage, getUnpargeables, isTauri } from "../globalApi"; import { forageStorage, getUnpargeables, isTauri } from "../storage/globalApi";
import pako from "pako"; import pako from "pako";
import { BaseDirectory, exists, readBinaryFile, readDir, writeBinaryFile } from "@tauri-apps/api/fs"; import { BaseDirectory, exists, readBinaryFile, readDir, writeBinaryFile } from "@tauri-apps/api/fs";
import { language } from "../../lang"; import { language } from "../../lang";

View File

@@ -1,6 +1,6 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { alertToast, doingAlert } from "./alert" import { alertToast, doingAlert } from "./alert"
import { DataBase, changeToPreset as changeToPreset2 } from "./database" import { DataBase, changeToPreset as changeToPreset2 } from "./storage/database"
export function initHotkey(){ export function initHotkey(){
document.addEventListener('keydown', (ev) => { document.addEventListener('keydown', (ev) => {

View File

@@ -1,7 +1,7 @@
import DOMPurify from 'isomorphic-dompurify'; import DOMPurify from 'isomorphic-dompurify';
import showdown from 'showdown'; import showdown from 'showdown';
import type { character, groupChat } from './database'; import type { character, groupChat } from './storage/database';
import { getFileSrc } from './globalApi'; import { getFileSrc } from './storage/globalApi';
import { processScript } from './process/scripts'; import { processScript } from './process/scripts';
const convertor = new showdown.Converter({ const convertor = new showdown.Converter({

View File

@@ -19,6 +19,9 @@ export function polyfill() {
forceApply: true forceApply: true
}); });
} }
else{
console.log("supports dragdrop")
}
} catch (error) { } catch (error) {
} }

View File

@@ -1,5 +1,5 @@
import type { OpenAIChat } from "."; import type { OpenAIChat } from ".";
import type { character } from "../database"; import type { character } from "../storage/database";
import { replacePlaceholders } from "../util"; import { replacePlaceholders } from "../util";
export function exampleMessage(char:character):OpenAIChat[]{ export function exampleMessage(char:character):OpenAIChat[]{

View File

@@ -1,5 +1,5 @@
import { get, writable } from "svelte/store"; import { get, writable } from "svelte/store";
import { DataBase, setDatabase, type character } from "../database"; import { DataBase, setDatabase, type character } from "../storage/database";
import { CharEmotion, selectedCharID } from "../stores"; import { CharEmotion, selectedCharID } from "../stores";
import { tokenize, tokenizeNum } from "../tokenizer"; import { tokenize, tokenizeNum } from "../tokenizer";
import { language } from "../../lang"; import { language } from "../../lang";

View File

@@ -1,11 +1,11 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import {selectedCharID} from '../stores' import {selectedCharID} from '../stores'
import { DataBase, setDatabase, type loreBook } from "../database"; import { DataBase, setDatabase, type loreBook } from "../storage/database";
import { tokenize } from "../tokenizer"; import { tokenize } from "../tokenizer";
import { selectSingleFile } from "../util"; import { selectSingleFile } from "../util";
import { alertError, alertNormal } from "../alert"; import { alertError, alertNormal } from "../alert";
import { language } from "../../lang"; import { language } from "../../lang";
import { downloadFile } from "../globalApi"; import { downloadFile } from "../storage/globalApi";
export function addLorebook(type:number) { export function addLorebook(type:number) {
let selectedID = get(selectedCharID) let selectedID = get(selectedCharID)

View File

@@ -1,10 +1,10 @@
import { get, writable } from "svelte/store"; import { get, writable } from "svelte/store";
import { language } from "../../lang"; import { language } from "../../lang";
import { alertError } from "../alert"; import { alertError } from "../alert";
import { DataBase } from "../database"; import { DataBase } from "../storage/database";
import { checkNullish, selectSingleFile, sleep } from "../util"; import { checkNullish, selectSingleFile, sleep } from "../util";
import type { OpenAIChat } from "."; import type { OpenAIChat } from ".";
import { globalFetch } from "../globalApi"; import { globalFetch } from "../storage/globalApi";
import { selectedCharID } from "../stores"; import { selectedCharID } from "../stores";
export const customProviderStore = writable([] as string[]) export const customProviderStore = writable([] as string[])

View File

@@ -1,10 +1,10 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import type { OpenAIChat } from "."; import type { OpenAIChat } from ".";
import { DataBase, setDatabase, type character } from "../database"; import { DataBase, setDatabase, type character } from "../storage/database";
import { pluginProcess } from "./plugins"; import { pluginProcess } from "./plugins";
import { language } from "../../lang"; import { language } from "../../lang";
import { stringlizeChat, unstringlizeChat } from "./stringlize"; import { stringlizeChat, unstringlizeChat } from "./stringlize";
import { globalFetch, isTauri } from "../globalApi"; import { globalFetch, isTauri } from "../storage/globalApi";
import { alertError } from "../alert"; import { alertError } from "../alert";
import { sleep } from "../util"; import { sleep } from "../util";
@@ -430,7 +430,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
method: "POST", method: "POST",
body: JSON.stringify({ body: JSON.stringify({
"prompt": proompt, "prompt": proompt,
"temperature": db.temperature, "temperature": (db.temperature / 100),
"top_p": 0.9 "top_p": 0.9
}), }),
headers: { headers: {

View File

@@ -1,7 +1,7 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import { CharEmotion, selectedCharID } from "../stores"; import { CharEmotion, selectedCharID } from "../stores";
import { DataBase, setDatabase, type character, type customscript } from "../database"; import { DataBase, setDatabase, type character, type customscript } from "../storage/database";
import { downloadFile } from "../globalApi"; import { downloadFile } from "../storage/globalApi";
import { alertError, alertNormal } from "../alert"; import { alertError, alertNormal } from "../alert";
import { language } from "src/lang"; import { language } from "src/lang";
import { selectSingleFile } from "../util"; import { selectSingleFile } from "../util";

View File

@@ -1,8 +1,8 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { DataBase, type character } from "../database" import { DataBase, type character } from "../storage/database"
import { requestChatData } from "./request" import { requestChatData } from "./request"
import { alertError } from "../alert" import { alertError } from "../alert"
import { globalFetch } from "../globalApi" import { globalFetch } from "../storage/globalApi"
import { CharEmotion } from "../stores" import { CharEmotion } from "../stores"
import type { OpenAIChat } from "." import type { OpenAIChat } from "."

View File

@@ -1,6 +1,6 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import type { OpenAIChat } from "."; import type { OpenAIChat } from ".";
import { DataBase, type Chat, type character, type groupChat } from "../database"; import { DataBase, type Chat, type character, type groupChat } from "../storage/database";
import { tokenize } from "../tokenizer"; import { tokenize } from "../tokenizer";
import { findCharacterbyId } from "../util"; import { findCharacterbyId } from "../util";
import { requestChatData } from "./request"; import { requestChatData } from "./request";

View File

@@ -1,6 +1,6 @@
import { get } from "svelte/store"; import { get } from "svelte/store";
import { alertError } from "../alert"; import { alertError } from "../alert";
import { DataBase, type character } from "../database"; import { DataBase, type character } from "../storage/database";
import { translateVox } from "../translator/translator"; import { translateVox } from "../translator/translator";
let sourceNode:AudioBufferSourceNode = null let sourceNode:AudioBufferSourceNode = null
@@ -12,7 +12,7 @@ export async function sayTTS(character:character,text:string) {
if(character.ttsReadOnlyQuoted){ if(character.ttsReadOnlyQuoted){
const matches = text.match(/"(.*?)"/g) const matches = text.match(/"(.*?)"/g)
if(matches.length > 0){ if(matches && matches.length > 0){
text = matches.map(match => match.slice(1, -1)).join(""); text = matches.map(match => match.slice(1, -1)).join("");
} }
else{ else{

View File

@@ -1,13 +1,13 @@
import { get, writable } from 'svelte/store'; import { get, writable } from 'svelte/store';
import { checkNullish } from './util'; import { checkNullish } from '../util';
import { changeLanguage } from '../lang'; import { changeLanguage } from '../../lang';
import type { RisuPlugin } from './process/plugins'; import type { RisuPlugin } from '../process/plugins';
import { saveAsset as saveImageGlobal } from './globalApi'; import { saveAsset as saveImageGlobal } from './globalApi';
import { cloneDeep } from 'lodash'; import { cloneDeep } from 'lodash';
export const DataBase = writable({} as any as Database) export const DataBase = writable({} as any as Database)
export const loadedStore = writable(false) export const loadedStore = writable(false)
export let appVer = '1.19.1' export let appVer = '1.20.0'
export function setDatabase(data:Database){ export function setDatabase(data:Database){

View File

@@ -1,5 +1,5 @@
import { writeBinaryFile,BaseDirectory, readBinaryFile, exists, createDir, readDir, removeFile } from "@tauri-apps/api/fs" import { writeBinaryFile,BaseDirectory, readBinaryFile, exists, createDir, readDir, removeFile } from "@tauri-apps/api/fs"
import { changeFullscreen, checkNullish, findCharacterbyId, sleep } from "./util" import { changeFullscreen, checkNullish, findCharacterbyId, sleep } from "../util"
import localforage from 'localforage' import localforage from 'localforage'
import { convertFileSrc, invoke } from "@tauri-apps/api/tauri" import { convertFileSrc, invoke } from "@tauri-apps/api/tauri"
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
@@ -9,19 +9,22 @@ import {open} from '@tauri-apps/api/shell'
import { DataBase, loadedStore, setDatabase, type Database, updateTextTheme, defaultSdDataFunc } from "./database"; import { DataBase, loadedStore, setDatabase, type Database, updateTextTheme, defaultSdDataFunc } from "./database";
import pako from "pako"; import pako from "pako";
import { appWindow } from "@tauri-apps/api/window"; import { appWindow } from "@tauri-apps/api/window";
import { checkOldDomain, checkUpdate } from "./update"; import { checkOldDomain, checkUpdate } from "../update";
import { selectedCharID } from "./stores"; import { selectedCharID } from "../stores";
import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http"; import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http";
import { loadPlugins } from "./process/plugins"; import { loadPlugins } from "../process/plugins";
import { alertError, alertStore } from "./alert"; import { alertError, alertStore } from "../alert";
import { checkDriverInit } from "./drive/drive"; import { checkDriverInit } from "../drive/drive";
import { hasher } from "./parser"; import { hasher } from "../parser";
import { characterHubImport } from "./characterCards"; import { characterHubImport } from "../characterCards";
import { cloneDeep } from "lodash"; import { cloneDeep } from "lodash";
import { NodeStorage } from "./nodeStorage";
//@ts-ignore //@ts-ignore
export const isTauri = !!window.__TAURI__ export const isTauri = !!window.__TAURI__
export const forageStorage = localforage.createInstance({ //@ts-ignore
export const isNodeServer = !!globalThis.__NODE__
export const forageStorage = isNodeServer ? new NodeStorage() : localforage.createInstance({
name: "risuai" name: "risuai"
}) })
@@ -554,7 +557,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
const da = await fetch(furl, { const da = await fetch(furl, {
body: JSON.stringify(arg.body), body: JSON.stringify(arg.body),
headers: { headers: {
"risu-header": encodeURIComponent(JSON.stringify(arg.headers)) "risu-header": encodeURIComponent(JSON.stringify(arg.headers)),
"Content-Type": "application/json"
}, },
method: method method: method
}) })
@@ -571,7 +575,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
const da = await fetch(furl, { const da = await fetch(furl, {
body: JSON.stringify(arg.body), body: JSON.stringify(arg.body),
headers: { headers: {
"risu-header": encodeURIComponent(JSON.stringify(arg.headers)) "risu-header": encodeURIComponent(JSON.stringify(arg.headers)),
"Content-Type": "application/json"
}, },
method: method method: method
}) })

View File

@@ -0,0 +1,73 @@
export class NodeStorage{
async setItem(key:string, value:Uint8Array) {
const da = await fetch('/api/write', {
method: "POST",
body: JSON.stringify({
content: Buffer.from(value).toString('base64')
}),
headers: {
'content-type': 'application/json',
'file-path': Buffer.from(key, 'utf-8').toString('hex')
}
})
if(da.status < 200 || da.status >= 300){
throw "setItem Error"
}
const data = await da.json()
if(data.error){
throw data.error
}
}
async getItem(key:string):Promise<Buffer> {
const da = await fetch('/api/read', {
method: "GET",
headers: {
'file-path': Buffer.from(key, 'utf-8').toString('hex')
}
})
const data = await da.json()
if(da.status < 200 || da.status >= 300){
throw "getItem Error"
}
if(data.error){
throw data.error
}
if(data.content === null){
return null
}
return Buffer.from(data.content, 'base64')
}
async keys():Promise<string[]>{
const da = await fetch('/api/list', {
method: "GET",
})
const data = await da.json()
if(da.status < 200 || da.status >= 300){
throw "listItem Error"
}
if(data.error){
throw data.error
}
return data.content
}
async removeItem(key:string){
const da = await fetch('/api/list', {
method: "GET",
headers: {
'file-path': Buffer.from(key, 'utf-8').toString('hex')
}
})
if(da.status < 200 || da.status >= 300){
throw "removeItem Error"
}
const data = await da.json()
if(data.error){
throw data.error
}
}
listItem = this.keys
}

View File

@@ -1,5 +1,5 @@
import type { Tiktoken } from "@dqbd/tiktoken"; import type { Tiktoken } from "@dqbd/tiktoken";
import type { character } from "./database"; import type { character } from "./storage/database";
async function encode(data:string):Promise<(number[]|Uint32Array)>{ async function encode(data:string):Promise<(number[]|Uint32Array)>{
return await tikJS(data) return await tikJS(data)

View File

@@ -1,6 +1,6 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { translatorPlugin } from "../process/plugins" import { translatorPlugin } from "../process/plugins"
import { DataBase } from "../database" import { DataBase } from "../storage/database"
let cache={ let cache={
origin: [''], origin: [''],
@@ -92,8 +92,6 @@ async function jpTrans(text:string) {
const url = `https://${host}/translate_a/single?client=gtx&sl=auto&tl=ja&dt=t&q=` + encodeURIComponent(text) const url = `https://${host}/translate_a/single?client=gtx&sl=auto&tl=ja&dt=t&q=` + encodeURIComponent(text)
const f = await fetch(url, { const f = await fetch(url, {
method: "GET", method: "GET",
@@ -102,16 +100,17 @@ async function jpTrans(text:string) {
const res = await f.json() const res = await f.json()
if(typeof(res) === 'string'){ if(typeof(res) === 'string'){
return res as unknown as string return res as unknown as string
} }
const result = res[0].map((s) => s[0]).filter(Boolean).join(''); let result = ''
if (res[0]) {
result = res[0].map((s) => s[0]).filter(Boolean).join('');
}
return result return result
} }

View File

@@ -1,5 +1,5 @@
import { fetch } from "@tauri-apps/api/http"; import { fetch } from "@tauri-apps/api/http";
import { DataBase, appVer, setDatabase } from "./database"; import { DataBase, appVer, setDatabase } from "./storage/database";
import { alertConfirm, alertMd } from "./alert"; import { alertConfirm, alertMd } from "./alert";
import { language } from "../lang"; import { language } from "../lang";
import { get } from "svelte/store"; import { get } from "svelte/store";

View File

@@ -1,13 +1,13 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import type { Database, Message } from "./database" import type { Database, Message } from "./storage/database"
import { DataBase } from "./database" import { DataBase } from "./storage/database"
import { selectedCharID } from "./stores" import { selectedCharID } from "./stores"
import {open} from '@tauri-apps/api/dialog' import {open} from '@tauri-apps/api/dialog'
import { readBinaryFile } from "@tauri-apps/api/fs" import { readBinaryFile } from "@tauri-apps/api/fs"
import { basename } from "@tauri-apps/api/path" import { basename } from "@tauri-apps/api/path"
import { createBlankChar, getCharImage } from "./characters" import { createBlankChar, getCharImage } from "./characters"
import { appWindow } from '@tauri-apps/api/window'; import { appWindow } from '@tauri-apps/api/window';
import { isTauri } from "./globalApi" import { isTauri } from "./storage/globalApi"
export interface Messagec extends Message{ export interface Messagec extends Message{
index: number index: number

View File

@@ -1 +1 @@
{"version":"1.19.1"} {"version":"1.20.0"}