diff --git a/package.json b/package.json index a3ea90c..300767f 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "semver": "^7.6.3", "sequelize": "^6.37.4", "socket.io": "^4.8.1", + "sqlite3": "^5.1.7", "strip-ansi": "^7.1.0", "uuid": "^10.0.0", "zod": "^3.23.8" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b92f0f1..6bcbec8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,10 +97,13 @@ importers: version: 7.6.3 sequelize: specifier: ^6.37.4 - version: 6.37.4(pg@8.13.1) + version: 6.37.4(pg@8.13.1)(sqlite3@5.1.7) socket.io: specifier: ^4.8.1 version: 4.8.1 + sqlite3: + specifier: ^5.1.7 + version: 5.1.7 strip-ansi: specifier: ^7.1.0 version: 7.1.0 @@ -203,22 +206,22 @@ importers: version: 0.0.2 '@langchain/core': specifier: ^0.3.3 - version: 0.3.3(openai@4.65.0(zod@3.23.8)) + version: 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) '@langchain/langgraph': specifier: ^0.2.9 - version: 0.2.9(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))) + version: 0.2.9(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))) '@langchain/langgraph-checkpoint-mongodb': specifier: ^0.0.3 - version: 0.0.3(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))(@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))) + version: 0.0.3(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))))(socks@2.8.3) '@langchain/ollama': specifier: ^0.1.0 - version: 0.1.0(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))) '@langchain/openai': specifier: ^0.3.2 - version: 0.3.2(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))) + version: 0.3.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) mongodb: specifier: ^6.9.0 - version: 6.9.0 + version: 6.9.0(socks@2.8.3) nanoid: specifier: ^5.0.7 version: 5.0.7 @@ -1028,6 +1031,9 @@ packages: cpu: [x64] os: [win32] + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + '@hapi/address@2.1.4': resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} deprecated: Moved to 'npm install @sideway/address' @@ -1137,6 +1143,14 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@npmcli/fs@1.1.1': + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + + '@npmcli/move-file@1.1.2': + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + '@rollup/plugin-commonjs@28.0.0': resolution: {integrity: sha512-BJcu+a+Mpq476DMXG+hevgPSl56bkUoi88dKT8t3RyUp8kGuOh+2bU8Gs7zXDlu+fyZggnJ+iOBGrb/O1SorYg==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -1393,6 +1407,10 @@ packages: '@supabase/supabase-js@2.45.6': resolution: {integrity: sha512-qVXSSUhhIqdFnF2VUGgeecPvw1cDW6+avcTbRgur4LaGnzrJCbM3Rx7g81/SSZjjeqYOtmHuKWhiHzV/EN8Ktw==} + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + '@types/archiver@6.0.3': resolution: {integrity: sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==} @@ -1565,6 +1583,9 @@ packages: '@zxing/text-encoding@0.9.0': resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1583,10 +1604,18 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -1639,6 +1668,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -1647,6 +1679,11 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1714,6 +1751,12 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + block-stream2@2.1.0: resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} @@ -1754,9 +1797,16 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1787,6 +1837,13 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -1795,6 +1852,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -1820,6 +1881,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -1849,6 +1914,9 @@ packages: engines: {node: '>=18'} hasBin: true + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1935,10 +2003,18 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -1958,10 +2034,17 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -2002,6 +2085,12 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} @@ -2014,11 +2103,18 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + envinfo@7.14.0: resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} engines: {node: '>=4'} hasBin: true + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2102,6 +2198,10 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2141,6 +2241,9 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2192,6 +2295,9 @@ packages: formidable@3.5.2: resolution: {integrity: sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -2200,6 +2306,10 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + fs-monkey@1.0.6: resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} @@ -2218,6 +2328,11 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2241,6 +2356,9 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2305,6 +2423,9 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2313,9 +2434,24 @@ packages: resolution: {integrity: sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==} engines: {node: '>=8'} + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2335,6 +2471,17 @@ packages: engines: {node: '>=8'} hasBin: true + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + inflection@1.13.4: resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==} engines: {'0': node >= 0.4.0} @@ -2342,6 +2489,9 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -2354,6 +2504,10 @@ packages: resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} engines: {node: '>=12.22.0'} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -2417,6 +2571,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -2517,6 +2674,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -2629,9 +2789,17 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + make-fetch-happen@9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} + memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} @@ -2658,6 +2826,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -2676,10 +2848,50 @@ packages: resolution: {integrity: sha512-7ipWbtgzzboctf+McK+2cXwCrNOhuboTA/O1g9iWa0gH8R4GkeyFWwk12aVDEHdzjPiG8wxnjwfHS7pgraKuHw==} engines: {node: ^16 || ^18 || >=20} + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mock-property@1.1.0: resolution: {integrity: sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==} engines: {node: '>= 0.4'} @@ -2732,6 +2944,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2760,9 +2975,16 @@ packages: neode@0.4.9: resolution: {integrity: sha512-3RufLD2cmTXrPpvsgkEAqS3maRjXJ89vjbyYmyqJMJl5uv6gcUa32N6hRwHcqfjWRWUaFKaoGLEJLaOQobs4eA==} + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + engines: {node: '>=10'} + node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -2780,6 +3002,11 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp@8.4.1: + resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} + engines: {node: '>= 10.12.0'} + hasBin: true + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -2788,10 +3015,20 @@ packages: engines: {node: '>=10'} hasBin: true + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2847,6 +3084,10 @@ packages: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -2970,6 +3211,11 @@ packages: postinstall-postinstall@2.1.0: resolution: {integrity: sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==} + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2977,9 +3223,24 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2997,6 +3258,10 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -3089,6 +3354,10 @@ packages: retry-as-promised@7.0.4: resolution: {integrity: sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==} + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -3136,6 +3405,9 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -3196,6 +3468,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3223,10 +3498,19 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-update-notifier@2.0.0: resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} engines: {node: '>=10'} @@ -3239,6 +3523,10 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} @@ -3250,6 +3538,14 @@ packages: resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} engines: {node: '>=10.2.0'} + socks-proxy-agent@6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -3272,6 +3568,16 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + sqlite3@5.1.7: + resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} + + ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} @@ -3325,6 +3631,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -3352,9 +3662,20 @@ packages: resolution: {integrity: sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==} hasBin: true + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -3433,6 +3754,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -3486,6 +3810,12 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3613,6 +3943,9 @@ packages: engines: {node: '>= 8'} hasBin: true + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -3673,6 +4006,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@2.5.1: resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} @@ -4546,6 +4882,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true + '@gar/promisify@1.1.3': + optional: true + '@hapi/address@2.1.4': {} '@hapi/bourne@1.3.2': {} @@ -4603,13 +4942,13 @@ snapshots: - bufferutil - utf-8-validate - '@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))': + '@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.14 - langsmith: 0.1.61(openai@4.65.0(zod@3.23.8)) + langsmith: 0.1.61(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -4619,11 +4958,11 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/langgraph-checkpoint-mongodb@0.0.3(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))(@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))))': + '@langchain/langgraph-checkpoint-mongodb@0.0.3(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))))(socks@2.8.3)': dependencies: - '@langchain/core': 0.3.3(openai@4.65.0(zod@3.23.8)) - '@langchain/langgraph-checkpoint': 0.0.7(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))) - mongodb: 6.9.0 + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/langgraph-checkpoint': 0.0.7(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))) + mongodb: 6.9.0(socks@2.8.3) transitivePeerDependencies: - '@aws-sdk/credential-providers' - '@mongodb-js/zstd' @@ -4633,30 +4972,30 @@ snapshots: - snappy - socks - '@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))': + '@langchain/langgraph-checkpoint@0.0.7(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.3(openai@4.65.0(zod@3.23.8)) + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) uuid: 10.0.0 - '@langchain/langgraph@0.2.9(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))': + '@langchain/langgraph@0.2.9(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.3(openai@4.65.0(zod@3.23.8)) - '@langchain/langgraph-checkpoint': 0.0.7(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8))) + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/langgraph-checkpoint': 0.0.7(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8))) double-ended-queue: 2.1.0-0 uuid: 10.0.0 zod: 3.23.8 - '@langchain/ollama@0.1.0(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))': + '@langchain/ollama@0.1.0(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.3(openai@4.65.0(zod@3.23.8)) + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) ollama: 0.5.9 uuid: 10.0.0 - '@langchain/openai@0.3.2(@langchain/core@0.3.3(openai@4.65.0(zod@3.23.8)))': + '@langchain/openai@0.3.2(@langchain/core@0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.3(openai@4.65.0(zod@3.23.8)) + '@langchain/core': 0.3.3(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.14 - openai: 4.65.0(zod@3.23.8) + openai: 4.65.0(encoding@0.1.13)(zod@3.23.8) zod: 3.23.8 zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: @@ -4687,6 +5026,18 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@npmcli/fs@1.1.1': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + optional: true + + '@npmcli/move-file@1.1.2': + dependencies: + mkdirp: 1.0.4 + rimraf: 6.0.1 + optional: true + '@rollup/plugin-commonjs@28.0.0(rollup@4.22.4)': dependencies: '@rollup/pluginutils': 5.1.2(rollup@4.22.4) @@ -4913,6 +5264,9 @@ snapshots: - bufferutil - utf-8-validate + '@tootallnate/once@1.1.2': + optional: true + '@types/archiver@6.0.3': dependencies: '@types/readdir-glob': 1.1.5 @@ -5104,6 +5458,9 @@ snapshots: '@zxing/text-encoding@0.9.0': optional: true + abbrev@1.1.1: + optional: true + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -5119,10 +5476,23 @@ snapshots: acorn@8.12.1: {} + agent-base@6.0.2: + dependencies: + debug: 4.3.7(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + optional: true + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + optional: true + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -5171,6 +5541,9 @@ snapshots: normalize-path: 3.0.0 picomatch: 4.0.2 + aproba@2.0.0: + optional: true + archiver-utils@5.0.2: dependencies: glob: 11.0.0 @@ -5191,6 +5564,12 @@ snapshots: tar-stream: 3.1.7 zip-stream: 6.0.1 + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + optional: true + argparse@2.0.1: {} array-buffer-byte-length@1.0.1: @@ -5266,6 +5645,16 @@ snapshots: binary-extensions@2.3.0: {} + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + block-stream2@2.1.0: dependencies: readable-stream: 3.6.2 @@ -5307,11 +5696,40 @@ snapshots: buffer-from@1.1.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + cacache@15.3.0: + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 11.0.0 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 6.0.1 + ssri: 8.0.1 + tar: 6.2.1 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + optional: true + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -5351,10 +5769,17 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@1.1.4: {} + + chownr@2.0.0: {} + chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} + clean-stack@2.2.0: + optional: true + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -5381,6 +5806,9 @@ snapshots: color-name@1.1.4: {} + color-support@1.1.3: + optional: true + colorette@2.0.20: {} combined-stream@1.0.8: @@ -5413,6 +5841,9 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 + console-control-strings@1.1.0: + optional: true + convert-source-map@2.0.0: {} cookie@0.4.2: {} @@ -5496,6 +5927,10 @@ snapshots: decode-uri-component@0.2.2: {} + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -5517,6 +5952,8 @@ snapshots: which-collection: 1.0.2 which-typed-array: 1.1.15 + deep-extend@0.6.0: {} + deepmerge@4.3.1: {} define-data-property@1.1.4: @@ -5535,8 +5972,13 @@ snapshots: delayed-stream@1.0.0: {} + delegates@1.0.0: + optional: true + denque@2.1.0: {} + detect-libc@2.0.3: {} + dezalgo@1.0.4: dependencies: asap: 2.0.6 @@ -5571,6 +6013,15 @@ snapshots: emoji-regex@9.2.2: {} + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + engine.io-parser@5.2.3: {} engine.io@6.6.1: @@ -5595,8 +6046,14 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + env-paths@2.2.1: + optional: true + envinfo@7.14.0: {} + err-code@2.0.3: + optional: true + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -5742,6 +6199,8 @@ snapshots: events@3.3.0: {} + expand-template@2.0.3: {} + fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -5777,6 +6236,8 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + file-uri-to-path@1.0.0: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -5843,6 +6304,8 @@ snapshots: hexoid: 2.0.0 once: 1.4.0 + fs-constants@1.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -5856,6 +6319,10 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + fs-monkey@1.0.6: {} fsevents@2.3.3: @@ -5872,6 +6339,18 @@ snapshots: functions-have-names@1.2.3: {} + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + optional: true + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -5896,6 +6375,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + github-from-package@0.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5960,16 +6441,44 @@ snapshots: dependencies: has-symbols: 1.0.3 + has-unicode@2.0.1: + optional: true + hasown@2.0.2: dependencies: function-bind: 1.1.2 hexoid@2.0.0: {} + http-cache-semantics@4.1.1: + optional: true + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.7(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + optional: true + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + optional: true + humanize-ms@1.2.1: dependencies: ms: 2.1.3 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + ieee754@1.2.1: {} ignore-by-default@1.0.1: {} @@ -5986,10 +6495,21 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + imurmurhash@0.1.4: + optional: true + + indent-string@4.0.0: + optional: true + + infer-owner@1.0.4: + optional: true + inflection@1.13.4: {} inherits@2.0.4: {} + ini@1.3.8: {} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -6012,6 +6532,12 @@ snapshots: transitivePeerDependencies: - supports-color + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + optional: true + ipaddr.js@2.2.0: {} is-arguments@1.1.1: @@ -6067,6 +6593,9 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-lambda@1.0.1: + optional: true + is-map@2.0.3: {} is-module@1.0.0: {} @@ -6155,6 +6684,9 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: + optional: true + jsesc@3.0.2: {} json-parse-even-better-errors@2.3.1: {} @@ -6210,7 +6742,7 @@ snapshots: dependencies: graceful-fs: 4.2.11 - langsmith@0.1.61(openai@4.65.0(zod@3.23.8)): + langsmith@0.1.61(openai@4.65.0(encoding@0.1.13)(zod@3.23.8)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -6219,7 +6751,7 @@ snapshots: semver: 7.6.3 uuid: 10.0.0 optionalDependencies: - openai: 4.65.0(zod@3.23.8) + openai: 4.65.0(encoding@0.1.13)(zod@3.23.8) lazystream@1.0.1: dependencies: @@ -6263,10 +6795,38 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + optional: true + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + make-fetch-happen@9.1.0: + dependencies: + agentkeepalive: 4.5.0 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + optional: true + memfs@3.5.3: dependencies: fs-monkey: 1.0.6 @@ -6288,6 +6848,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-response@3.1.0: {} + minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -6319,8 +6881,52 @@ snapshots: web-encoding: 1.1.5 xml2js: 0.5.0 + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-fetch@1.4.1: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + optional: true + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + optional: true + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + optional: true + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + minipass@7.1.2: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + mock-property@1.1.0: dependencies: define-data-property: 1.1.4 @@ -6342,11 +6948,13 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 13.0.0 - mongodb@6.9.0: + mongodb@6.9.0(socks@2.8.3): dependencies: '@mongodb-js/saslprep': 1.1.9 bson: 6.8.0 mongodb-connection-string-url: 3.0.1 + optionalDependencies: + socks: 2.8.3 ms@2.1.3: {} @@ -6354,6 +6962,8 @@ snapshots: nanoid@5.0.7: {} + napi-build-utils@1.0.2: {} + negotiator@0.6.3: {} neo-async@2.6.2: {} @@ -6394,13 +7004,21 @@ snapshots: neo4j-driver: 4.4.11 uuid: 3.4.0 + node-abi@3.71.0: + dependencies: + semver: 7.6.3 + node-abort-controller@3.1.1: {} + node-addon-api@7.1.1: {} + node-domexception@1.0.0: {} - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-fetch@3.3.2: dependencies: @@ -6408,6 +7026,23 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + node-gyp@8.4.1: + dependencies: + env-paths: 2.2.1 + glob: 11.0.0 + graceful-fs: 4.2.11 + make-fetch-happen: 9.1.0 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 6.0.1 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + optional: true + node-releases@2.0.18: {} nodemon@3.1.7: @@ -6423,8 +7058,21 @@ snapshots: touch: 3.1.1 undefsafe: 2.0.5 + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + optional: true + normalize-path@3.0.0: {} + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + optional: true + object-assign@4.1.1: {} object-inspect@1.13.2: {} @@ -6456,7 +7104,7 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openai@4.65.0(zod@3.23.8): + openai@4.65.0(encoding@0.1.13)(zod@3.23.8): dependencies: '@types/node': 18.19.53 '@types/node-fetch': 2.6.11 @@ -6464,7 +7112,7 @@ snapshots: agentkeepalive: 4.5.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: zod: 3.23.8 transitivePeerDependencies: @@ -6482,6 +7130,11 @@ snapshots: dependencies: p-limit: 2.3.0 + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + optional: true + p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 @@ -6601,12 +7254,41 @@ snapshots: postinstall-postinstall@2.1.0: {} + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.71.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + process-nextick-args@2.0.1: {} process@0.11.10: {} + promise-inflight@1.0.1: + optional: true + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + optional: true + pstree.remy@1.1.8: {} + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} query-string@7.1.3: @@ -6624,6 +7306,13 @@ snapshots: dependencies: safe-buffer: 5.2.1 + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -6728,6 +7417,9 @@ snapshots: retry-as-promised@7.0.4: {} + retry@0.12.0: + optional: true + retry@0.13.1: {} reusify@1.0.4: {} @@ -6810,6 +7502,9 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 + safer-buffer@2.1.2: + optional: true + sax@1.4.1: {} schema-utils@3.3.0: @@ -6831,7 +7526,7 @@ snapshots: sequelize-pool@7.1.0: {} - sequelize@6.37.4(pg@8.13.1): + sequelize@6.37.4(pg@8.13.1)(sqlite3@5.1.7): dependencies: '@types/debug': 4.1.12 '@types/validator': 13.12.2 @@ -6851,6 +7546,7 @@ snapshots: wkx: 0.5.0 optionalDependencies: pg: 8.13.1 + sqlite3: 5.1.7 transitivePeerDependencies: - supports-color @@ -6858,6 +7554,9 @@ snapshots: dependencies: randombytes: 2.1.0 + set-blocking@2.0.0: + optional: true + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -6893,8 +7592,19 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.2 + signal-exit@3.0.7: + optional: true + signal-exit@4.1.0: {} + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + simple-update-notifier@2.0.0: dependencies: semver: 7.6.3 @@ -6903,6 +7613,9 @@ snapshots: slash@5.1.0: {} + smart-buffer@4.2.0: + optional: true + socket.io-adapter@2.5.5: dependencies: debug: 4.3.7(supports-color@5.5.0) @@ -6933,6 +7646,21 @@ snapshots: - supports-color - utf-8-validate + socks-proxy-agent@6.2.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@5.5.0) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + optional: true + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + optional: true + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -6950,6 +7678,26 @@ snapshots: split2@4.2.0: {} + sprintf-js@1.1.3: + optional: true + + sqlite3@5.1.7: + dependencies: + bindings: 1.5.0 + node-addon-api: 7.1.1 + prebuild-install: 7.1.2 + tar: 6.2.1 + optionalDependencies: + node-gyp: 8.4.1 + transitivePeerDependencies: + - bluebird + - supports-color + + ssri@8.0.1: + dependencies: + minipass: 3.3.6 + optional: true + standard-as-callback@2.1.0: {} stop-iteration-iterator@1.0.0: @@ -7019,6 +7767,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-json-comments@2.0.1: {} + strnum@1.0.5: {} supports-color@5.5.0: @@ -7062,12 +7812,36 @@ snapshots: resolve: 2.0.0-next.5 string.prototype.trim: 1.2.9 + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar-stream@3.1.7: dependencies: b4a: 1.6.7 fast-fifo: 1.3.2 streamx: 2.20.1 + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -7137,6 +7911,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -7197,6 +7975,16 @@ snapshots: unicorn-magic@0.1.0: {} + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + optional: true + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + optional: true + universalify@2.0.1: {} update-browserslist-db@1.1.0(browserslist@4.23.3): @@ -7352,6 +8140,11 @@ snapshots: dependencies: isexe: 2.0.0 + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + optional: true + wildcard@2.0.1: {} wkx@0.5.0: @@ -7389,6 +8182,8 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + yaml@2.5.1: {} yargs-parser@21.1.1: {} diff --git a/src/admin/app.ts b/src/admin/app.ts index 5fb32de..216d7b9 100644 --- a/src/admin/app.ts +++ b/src/admin/app.ts @@ -1,3 +1,5 @@ import { App } from '@kevisual/router'; +import { sequelize } from './modules/sequelize.ts'; +export { sequelize }; export const app = new App(); diff --git a/src/admin/core.ts b/src/admin/core.ts index 6f55bff..b1de21a 100644 --- a/src/admin/core.ts +++ b/src/admin/core.ts @@ -1,4 +1,4 @@ -import { app } from '../app.ts'; +import { app } from './app.ts'; new app.Route('admin', 'getRouteList') .define(async (ctx) => { diff --git a/src/admin/dashboard/load.ts b/src/admin/dashboard/load.ts index adca146..591cd10 100644 --- a/src/admin/dashboard/load.ts +++ b/src/admin/dashboard/load.ts @@ -1,6 +1,8 @@ -import { router } from '../../modules/router.ts'; +// import { router } from '../../modules/router.ts'; +import { app } from '../app.ts'; + import { Route } from '@kevisual/router'; -import { RouterCodeModel, RouterCode } from '../../models/code.ts'; +import { RouterCodeModel, RouterCode } from '../models/code.ts'; export enum CodeStatus { running = 'running', @@ -40,8 +42,8 @@ export const loadOne = async (item: RouterCodeModel) => { const codeRunRoute = new Route(path, key, { id }); codeRunRoute.run = fn; codeRunRoute.middleware = middleware; - router.removeById(id); // TODO: - router.add(codeRunRoute); + app.router.removeById(id); // TODO: + app.router.add(codeRunRoute); return { ...item.toJSON(), path, @@ -90,7 +92,7 @@ export const load = async function () { const codeRunRoute = new Route(path, key, { id }); codeRunRoute.run = fn; codeRunRoute.middleware = middleware; - router.add(codeRunRoute); + app.router.add(codeRunRoute); return { ...item.toJSON(), path, diff --git a/src/admin/dashboard/manager.ts b/src/admin/dashboard/manager.ts index 7a3b34e..46f34dc 100644 --- a/src/admin/dashboard/manager.ts +++ b/src/admin/dashboard/manager.ts @@ -1,6 +1,6 @@ import { EventEmitter, once } from 'stream'; import { load, CodeManager, CodeStatus, loadOne } from './load.ts'; -import { RouterCodeModel } from '../../models/code.ts'; +import { RouterCodeModel, TableIsExist } from '../models/code.ts'; export enum LoadStatus { LOADING = 'loading', @@ -37,7 +37,7 @@ export const stopCode = (id: string) => { }; export const startCode = async (code: RouterCodeModel) => { const index = manager.list.findIndex((item) => item.id === code.id); - console.log('index', index, code.toJSON()) + console.log('index', index, code.toJSON()); if (index !== -1) { manager.list[index] = await loadOne(code); } else { @@ -65,5 +65,22 @@ const init = async function () { events.emit('loaded'); }; - -init(); +TableIsExist().then(async (res) => { + if (res) { + init(); + } else { + console.log('TableIsExist not exist, waiting create'); + // 3s后再次检测 + setTimeout(() => { + TableIsExist().then(async (res) => { + if (res) { + init(); + } else { + console.error('TableIsExist not exist, create error'); + process.exit(1); + } + }); + }, 3000); + } +}); +// init(); diff --git a/src/admin/manager.ts b/src/admin/manager.ts index 6759a90..d8aacb1 100644 --- a/src/admin/manager.ts +++ b/src/admin/manager.ts @@ -1,9 +1,7 @@ // admin 需要最后运行,并在route中进行过滤。 import { Route } from '@kevisual/router'; -import { router } from '../modules/router.ts'; +import { app } from './app.ts'; import { manager, updateNewCode, removeCode, stopCode, startCode } from './dashboard/manager.ts'; -import { loadOne } from './dashboard/load.ts'; -import { RouterCodeModel } from '../models/code.ts'; // get manager status export const managerRouter = new Route('admin', 'getManagerStatus'); managerRouter.run = async (ctx) => { @@ -13,20 +11,21 @@ managerRouter.run = async (ctx) => { }; return ctx; }; -router.add(managerRouter); +managerRouter.addTo(app); // get manager list export const managerList = new Route('admin', 'getManagerList'); managerList.run = async (ctx) => { ctx.body = manager.list; - const routerList = router.getList().filter((r) => !r.path.startsWith('admin')); + // TODO: + const routerList = app.router.getList().filter((r) => !r.path.startsWith('admin')); ctx.body = { list: manager.list, routerList, }; return ctx; }; -router.add(managerList); +managerList.addTo(app); // get manager one export const managerOne = new Route('admin', 'getManagerOne'); @@ -52,4 +51,4 @@ managerOne.validator = { }, }; -router.add(managerOne); +managerOne.addTo(app); diff --git a/src/admin/models/code.ts b/src/admin/models/code.ts new file mode 100644 index 0000000..13f4f4b --- /dev/null +++ b/src/admin/models/code.ts @@ -0,0 +1,119 @@ +import { sequelize } from '../modules/sequelize.ts'; +import { DataTypes, Model } from 'sequelize'; + +export type RouterCode = { + id: string; + path: string; + key: string; + active: boolean; + project: string; + code: string; + exec: string; + type: RouterCodeType; + middleware: string[]; + next: string; + data: any; + validator: any; +}; + +export enum RouterCodeType { + route = 'route', + middleware = 'middleware', +} + +export class RouterCodeModel extends Model { + declare id: string; + declare path: string; + declare key: string; + declare active: boolean; + declare project: string; + declare code: string; + declare exec: string; + declare type: RouterCodeType; + declare middleware: string[]; + declare next: string; // 如果是中间件,不存在 + declare data: any; // 内容 + declare validator: any; +} +RouterCodeModel.init( + { + id: { + type: DataTypes.UUID, + primaryKey: true, + defaultValue: DataTypes.UUIDV4, + comment: 'code id', + }, + path: { + type: DataTypes.STRING, + allowNull: false, + }, + key: { + type: DataTypes.STRING, + allowNull: true, + }, + active: { + type: DataTypes.BOOLEAN, + defaultValue: false, + }, + project: { + type: DataTypes.STRING, + defaultValue: 'default', + }, + code: { + type: DataTypes.TEXT, + defaultValue: '', + }, + exec: { + type: DataTypes.TEXT, // 对代码进行编译后的代码 + defaultValue: '', + }, + type: { + type: DataTypes.ENUM(RouterCodeType.route, RouterCodeType.middleware), + defaultValue: RouterCodeType.route, + }, + middleware: { + type: DataTypes.JSON, + defaultValue: [], + }, + next: { + type: DataTypes.JSON, + defaultValue: {}, + }, + data: { + type: DataTypes.JSON, + defaultValue: {}, + }, + validator: { + type: DataTypes.JSON, + defaultValue: {}, + }, + }, + { + sequelize, + tableName: 'cf_router_code', // container flow router code + paranoid: true, + }, +); +// RouterCodeModel 检测不存在,不存在则创建 +RouterCodeModel.sync({ alter: true, logging: false }) + .then((res) => { + console.log('RouterCodeModel sync', res); + }) + .catch((e) => { + console.error('RouterCodeModel sync', e.message); + RouterCodeModel.sync({ force: true }) + .then((res) => { + console.log('RouterCodeModel force sync', res); + }) + .catch((e) => { + console.error('RouterCodeModel force sync error'); + }); + }); + +export const TableIsExist = async () => { + // 判断cf_router_code表是否存在 + const tableIsExist = await sequelize.getQueryInterface().showAllTables({ + logging: false, + }); + return tableIsExist.includes('cf_router_code'); +}; diff --git a/src/admin/modules/sequelize.ts b/src/admin/modules/sequelize.ts index 89a6601..04882c7 100644 --- a/src/admin/modules/sequelize.ts +++ b/src/admin/modules/sequelize.ts @@ -1,17 +1,34 @@ import { useConfig } from '@abearxiong/use-config'; import { Sequelize } from 'sequelize'; +import path from 'path'; +import os from 'os'; +import fs from 'fs'; -const config = useConfig(); +const checkFileExistsSync = (filePath: string) => { + try { + fs.accessSync(filePath, fs.constants.F_OK); + } catch (err) { + return false; + } + return true; +}; +const config = useConfig<{ flowPath: string }>(); +export const envisionPath = path.join(os.homedir(), '.config', 'envision'); +const configPath = path.join(os.homedir(), '.config', 'envision', 'flow.sqlite'); -const postgresConfig = config.postgres; - -if (!postgresConfig) { - console.error('postgres config is required'); - process.exit(1); +if (!checkFileExistsSync(envisionPath)) { + fs.mkdirSync(envisionPath, { recursive: true }); +} +let flowPath = config.flowPath || configPath; +if (!path.isAbsolute(flowPath)) { + flowPath = path.join(process.cwd(), flowPath); +} +if (!flowPath.endsWith('.sqlite')) { + flowPath = path.join(flowPath, 'flow.sqlite'); } // connect to db export const sequelize = new Sequelize({ dialect: 'sqlite', - storage: 'db.sqlite', + storage: flowPath, // logging: false, }); diff --git a/src/admin/npm.ts b/src/admin/npm.ts index 3f4a5fb..88108fd 100644 --- a/src/admin/npm.ts +++ b/src/admin/npm.ts @@ -1,5 +1,5 @@ import { Route } from '@kevisual/router'; -import { router } from '../modules/router.ts'; +import { app } from './app.ts'; import { getPackage, installPackage } from '../lib/npm.ts'; const install = new Route('admin', 'install'); @@ -15,7 +15,7 @@ install.validator = { required: true, }, }; -router.add(install); +install.addTo(app); const getNpm = new Route('admin', 'getNpm'); getNpm.run = async (ctx) => { @@ -23,4 +23,4 @@ getNpm.run = async (ctx) => { ctx.body = data['dependencies']; return ctx; }; -router.add(getNpm); +getNpm.addTo(app); diff --git a/src/admin/router.ts b/src/admin/router.ts index 75dbe8b..3db48e7 100644 --- a/src/admin/router.ts +++ b/src/admin/router.ts @@ -1,28 +1,30 @@ // admin router manger - import { CustomError, Route } from '@kevisual/router'; -import { router } from '../modules/router.ts'; +import { app } from './app.ts'; import { manager, updateNewCode, removeCode, stopCode, startCode } from './dashboard/manager.ts'; import { loadOne } from './dashboard/load.ts'; -import { RouterCodeModel } from '../models/code.ts'; +import { RouterCodeModel } from './models/code.ts'; import { nanoid } from 'nanoid'; import { convertTsToJs as transform } from '../lib/ts2js.ts'; export const getRouterList = new Route('admin', 'getRouterList'); getRouterList.run = async (ctx) => { - ctx.body = router.getList().filter((r) => !r.path.startsWith('admin')); + // TODO: + ctx.body = app.router.getList().filter((r) => !r.path.startsWith('admin')); // ctx.body = router.getList().filter((r) => r.path.startsWith('admin')); return ctx; }; -router.add(getRouterList); +getRouterList.addTo(app); // remove router export const removeRouter = new Route('admin', 'removeRouter'); removeRouter.run = async (ctx) => { const { path, key } = ctx.query; - router.remove({ path, key }); + // TODO: + // router.remove({ path, key }); + app.router.remove({ path, key }); const routerCode = await RouterCodeModel.findOne({ where: { path, key } }); if (routerCode) { const id = routerCode.id; @@ -42,13 +44,14 @@ removeRouter.validator = { required: true, }, }; -router.add(removeRouter); - +removeRouter.addTo(app); // remove router by id export const removeRouterById = new Route('admin', 'removeRouterById'); removeRouterById.run = async (ctx) => { const { id } = ctx.query; - router.removeById(id); + // router.removeById(id); + // TODO: + app.router.removeById(id); removeCode(id); await RouterCodeModel.destroy({ where: { id } }); ctx.body = 'success'; @@ -60,13 +63,13 @@ removeRouterById.validator = { required: true, }, }; -router.add(removeRouterById); - +removeRouterById.addTo(app); // stop router by id export const stopRouterById = new Route('admin', 'stopRouterById'); stopRouterById.run = async (ctx) => { const { id } = ctx.query; - router.removeById(id); + // TODO + app.router.removeById(id); const routerCode = await RouterCodeModel.findByPk(id); if (routerCode) { routerCode.active = false; @@ -82,7 +85,7 @@ stopRouterById.validator = { required: true, }, }; -router.add(stopRouterById); +stopRouterById.addTo(app); // start router by id export const startRouterById = new Route('admin', 'startRouterById'); @@ -104,7 +107,7 @@ startRouterById.validator = { required: true, }, }; -router.add(startRouterById); +startRouterById.addTo(app); // add or update router export const updateRouter = new Route('admin', 'updateRouter'); @@ -154,13 +157,15 @@ updateRouter.run = async (ctx) => { ctx.body = 'success'; return ctx; }; -router.add(updateRouter); +updateRouter.addTo(app); export const getRouterApi = new Route('admin', 'getRouterApi'); getRouterApi.description = 'get all router api list, and you can use this api to get router detail by path and key'; getRouterApi.run = async (ctx) => { const { origin = 'http://localhost:4000' } = ctx.query; - const routerList = router.getList(); + // const routerList = router.getList(); + // TODO: + const routerList = app.router.getList(); const apiList = routerList.map((item: any) => { return { path: item.path, @@ -192,4 +197,4 @@ getRouterApi.validator = { }, }; -router.add(getRouterApi); +getRouterApi.addTo(app); diff --git a/src/models/code.ts b/src/models/code.ts index 94a4146..f92badb 100644 --- a/src/models/code.ts +++ b/src/models/code.ts @@ -49,7 +49,7 @@ RouterCodeModel.init( }, key: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, }, active: { type: DataTypes.BOOLEAN, @@ -72,12 +72,12 @@ RouterCodeModel.init( defaultValue: RouterCodeType.route, }, middleware: { - type: DataTypes.ARRAY(DataTypes.STRING), + type: DataTypes.JSON, defaultValue: [], }, next: { - type: DataTypes.STRING, - defaultValue: '', + type: DataTypes.JSON, + defaultValue: {}, }, data: { type: DataTypes.JSON, @@ -94,11 +94,24 @@ RouterCodeModel.init( paranoid: true, }, ); +// RouterCodeModel 检测不存在,不存在则创建 RouterCodeModel.sync({ alter: true, logging: false }) .then((res) => { console.log('RouterCodeModel sync', res); }) .catch((e) => { - console.error('RouterCodeModel sync', e); + console.error('RouterCodeModel sync', e.message); + RouterCodeModel.sync({ force: true }) + .then((res) => { + console.log('RouterCodeModel force sync', res); + }) + .catch((e) => { + console.error('RouterCodeModel force sync error'); + }); }); -// RouterCodeModel.sync({force: true}); + +export const TableIsExist = async () => { + // 判断cf_router_code表是否存在 + const tableIsExist = await sequelize.getQueryInterface().showAllTables(); + return tableIsExist.includes('cf_router_code'); +};