diff --git a/package.json b/package.json
index 25dd846..b82ad10 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
},
"dependencies": {
"@ag-media/react-pdf-table": "^2.0.3",
+ "@inseefr/lunatic": "^3.6.15",
"@react-pdf/renderer": "^4.3.0",
"@react-pdf/stylesheet": "^6.1.0",
"dotenv": "^17.2.1",
@@ -38,5 +39,8 @@
"react-error-boundary": "^6.0.0",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1"
+ },
+ "volta": {
+ "node": "24.7.0"
}
}
diff --git a/patches/@react-pdf__render.patch b/patches/@react-pdf__render.patch
new file mode 100644
index 0000000..6587cdd
--- /dev/null
+++ b/patches/@react-pdf__render.patch
@@ -0,0 +1,29 @@
+diff --git a/lib/index.js b/lib/index.js
+index e4df914a22d4b13d26feb12ac0433c02f5861c12..3fc04e1b8a61b9c5910cfea10bc37e517dde6208 100644
+--- a/lib/index.js
++++ b/lib/index.js
+@@ -2055,19 +2055,15 @@ const addNodeBookmark = (ctx, node, pageNumber, registry) => {
+ return;
+ node.children.forEach((child) => addNodeBookmark(ctx, child, pageNumber, registry));
+ };
+-const addBookmarks = (ctx, root) => {
+- const registry = {};
+- const pages = root.children || [];
+- pages.forEach((page, i) => {
+- addNodeBookmark(ctx, page, i, registry);
+- });
+-};
+
+ const render = (ctx, doc) => {
+ const pages = doc.children || [];
+ const options = { imageCache: new Map(), fieldSets: [] };
+- pages.forEach((page) => renderNode(ctx, page, options));
+- addBookmarks(ctx, doc);
++ const registry = {};
++ pages.forEach((page, index) => {
++ renderNode(ctx, page, options);
++ addNodeBookmark(ctx, page, index, registry);
++ });
+ ctx.end();
+ return ctx;
+ };
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f3dc3aa..3a8eca5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,6 +4,11 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+patchedDependencies:
+ '@react-pdf/render':
+ hash: a70f813185d3cc56a3b77989a85256a3f5c857852503ad296f70eefba2eb3e7e
+ path: patches/@react-pdf__render.patch
+
importers:
.:
@@ -11,6 +16,9 @@ importers:
'@ag-media/react-pdf-table':
specifier: ^2.0.3
version: 2.0.3(@react-pdf/renderer@4.3.0(react@19.1.1))(@react-pdf/stylesheet@6.1.0)(react@19.1.1)
+ '@inseefr/lunatic':
+ specifier: ^3.6.15
+ version: 3.6.15(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@react-pdf/renderer':
specifier: ^4.3.0
version: 4.3.0(react@19.1.1)
@@ -19,7 +27,7 @@ importers:
version: 6.1.0
dotenv:
specifier: ^17.2.1
- version: 17.2.2
+ version: 17.2.1
express:
specifier: ^5.1.0
version: 5.1.0
@@ -44,10 +52,10 @@ importers:
version: 24.3.0
'@types/react':
specifier: ^19.1.10
- version: 19.1.12
+ version: 19.1.11
'@types/react-dom':
specifier: ^19.1.7
- version: 19.1.9(@types/react@19.1.12)
+ version: 19.1.7(@types/react@19.1.11)
'@types/swagger-jsdoc':
specifier: ^6.0.4
version: 6.0.4
@@ -56,7 +64,7 @@ importers:
version: 4.1.8
'@vitejs/plugin-react':
specifier: ^5.0.1
- version: 5.0.2(vite@7.1.4(@types/node@24.3.0)(tsx@4.20.5))
+ version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(sass@1.92.0)(tsx@4.20.5))
cross-env:
specifier: ^10.0.0
version: 10.0.0
@@ -77,7 +85,7 @@ importers:
version: 5.9.2
vite:
specifier: ^7.1.3
- version: 7.1.4(@types/node@24.3.0)(tsx@4.20.5)
+ version: 7.1.3(@types/node@24.3.0)(sass@1.92.0)(tsx@4.20.5)
packages:
@@ -194,6 +202,9 @@ packages:
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
engines: {node: '>=6.9.0'}
+ '@data-forge/serialization@1.0.1':
+ resolution: {integrity: sha512-EP7IWimh5JcDOISVoXvNIjUAqcPN1FkNWvuvjY3uzcswErxB8j93ldlUBvgvGEszqFRwMM3fpMF0HrISg5iBSQ==}
+
'@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
@@ -391,6 +402,15 @@ packages:
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@floating-ui/core@1.7.3':
+ resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
+
+ '@floating-ui/dom@1.7.4':
+ resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
+
+ '@floating-ui/utils@0.2.10':
+ resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -411,6 +431,17 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
+ '@inseefr/lunatic@3.6.15':
+ resolution: {integrity: sha512-12S+LTE8FEsW5IHNGwBmnmkA4TnqPSwhm1zz1VWd7DzAr3GizWitDalqTTkpDBqfOqRp6Bl/ZQIkaSrwXdrsDg==}
+ peerDependencies:
+ react: '^18.3.1 '
+
+ '@inseefr/trevas@0.1.21':
+ resolution: {integrity: sha512-k6FSuN62a7VKL1CJKSyEWneS7q2YsPGbNHjA1s7GS8jCGhw3r3ZPyZE1H7+fyBfsUx3rbK2/bqb14oINd8t/3Q==}
+
+ '@inseefr/vtl-2.0-antlr-tools@0.3.2':
+ resolution: {integrity: sha512-4k+zwpbYQtrMwnoWPx7O+AxR3b/7MAo8XGVTpE1UO0dRixI9k9iDpkU78tiPXbqxm+dstECd7nIx+bXToi6jXQ==}
+
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -427,6 +458,88 @@ packages:
'@jsdevtools/ono@7.1.3':
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
+ '@parcel/watcher-android-arm64@2.5.1':
+ resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ '@parcel/watcher-darwin-arm64@2.5.1':
+ resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-x64@2.5.1':
+ resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@parcel/watcher-freebsd-x64@2.5.1':
+ resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@parcel/watcher-linux-arm-glibc@2.5.1':
+ resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm-musl@2.5.1':
+ resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.1':
+ resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-musl@2.5.1':
+ resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-glibc@2.5.1':
+ resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-musl@2.5.1':
+ resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-win32-arm64@2.5.1':
+ resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@parcel/watcher-win32-ia32@2.5.1':
+ resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@parcel/watcher-win32-x64@2.5.1':
+ resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@parcel/watcher@2.5.1':
+ resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
+ engines: {node: '>= 10.0.0'}
+
'@react-pdf/fns@3.1.2':
resolution: {integrity: sha512-qTKGUf0iAMGg2+OsUcp9ffKnKi41RukM/zYIWMDJ4hRVYSr89Q7e3wSDW/Koqx3ea3Uy/z3h2y3wPX6Bdfxk6g==}
@@ -470,117 +583,116 @@ packages:
'@react-pdf/types@2.9.0':
resolution: {integrity: sha512-ckj80vZLlvl9oYrQ4tovEaqKWP3O06Eb1D48/jQWbdwz1Yh7Y9v1cEmwlP8ET+a1Whp8xfdM0xduMexkuPANCQ==}
- '@rolldown/pluginutils@1.0.0-beta.34':
- resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==}
+ '@rolldown/pluginutils@1.0.0-beta.32':
+ resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==}
- '@rollup/rollup-android-arm-eabi@4.50.0':
- resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==}
+ '@rollup/rollup-android-arm-eabi@4.48.1':
+ resolution: {integrity: sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.50.0':
- resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==}
+ '@rollup/rollup-android-arm64@4.48.1':
+ resolution: {integrity: sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.50.0':
- resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==}
+ '@rollup/rollup-darwin-arm64@4.48.1':
+ resolution: {integrity: sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.50.0':
- resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==}
+ '@rollup/rollup-darwin-x64@4.48.1':
+ resolution: {integrity: sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.50.0':
- resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==}
+ '@rollup/rollup-freebsd-arm64@4.48.1':
+ resolution: {integrity: sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.50.0':
- resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==}
+ '@rollup/rollup-freebsd-x64@4.48.1':
+ resolution: {integrity: sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.50.0':
- resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.48.1':
+ resolution: {integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.50.0':
- resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.48.1':
+ resolution: {integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.50.0':
- resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==}
+ '@rollup/rollup-linux-arm64-gnu@4.48.1':
+ resolution: {integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.50.0':
- resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==}
+ '@rollup/rollup-linux-arm64-musl@4.48.1':
+ resolution: {integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.50.0':
- resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==}
+ '@rollup/rollup-linux-loongarch64-gnu@4.48.1':
+ resolution: {integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.50.0':
- resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==}
+ '@rollup/rollup-linux-ppc64-gnu@4.48.1':
+ resolution: {integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.50.0':
- resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==}
+ '@rollup/rollup-linux-riscv64-gnu@4.48.1':
+ resolution: {integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.50.0':
- resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==}
+ '@rollup/rollup-linux-riscv64-musl@4.48.1':
+ resolution: {integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.50.0':
- resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==}
+ '@rollup/rollup-linux-s390x-gnu@4.48.1':
+ resolution: {integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.50.0':
- resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==}
+ '@rollup/rollup-linux-x64-gnu@4.48.1':
+ resolution: {integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.50.0':
- resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==}
+ '@rollup/rollup-linux-x64-musl@4.48.1':
+ resolution: {integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.50.0':
- resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==}
- cpu: [arm64]
- os: [openharmony]
-
- '@rollup/rollup-win32-arm64-msvc@4.50.0':
- resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==}
+ '@rollup/rollup-win32-arm64-msvc@4.48.1':
+ resolution: {integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.50.0':
- resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==}
+ '@rollup/rollup-win32-ia32-msvc@4.48.1':
+ resolution: {integrity: sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.50.0':
- resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==}
+ '@rollup/rollup-win32-x64-msvc@4.48.1':
+ resolution: {integrity: sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==}
cpu: [x64]
os: [win32]
'@scarf/scarf@1.4.0':
resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
+ '@sindresorhus/is@4.6.0':
+ resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
+ engines: {node: '>=10'}
+
'@swc/helpers@0.5.17':
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
@@ -602,6 +714,12 @@ packages:
'@types/connect@3.4.38':
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -611,15 +729,24 @@ packages:
'@types/express@5.0.3':
resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==}
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
'@types/http-errors@2.0.5':
resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
'@types/mime@1.3.5':
resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+
'@types/node@24.3.0':
resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
@@ -629,13 +756,13 @@ packages:
'@types/range-parser@1.2.7':
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
- '@types/react-dom@19.1.9':
- resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==}
+ '@types/react-dom@19.1.7':
+ resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==}
peerDependencies:
'@types/react': ^19.0.0
- '@types/react@19.1.12':
- resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==}
+ '@types/react@19.1.11':
+ resolution: {integrity: sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==}
'@types/send@0.17.5':
resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==}
@@ -649,8 +776,17 @@ packages:
'@types/swagger-ui-express@4.1.8':
resolution: {integrity: sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==}
- '@vitejs/plugin-react@5.0.2':
- resolution: {integrity: sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==}
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+ '@vitejs/plugin-react@5.0.1':
+ resolution: {integrity: sha512-DE4UNaBXwtVoDJ0ccBdLVjFTWL70NRuWNCxEieTI3lrq9ORB9aOCQEKstwDXBl87NvFdbqh/p7eINGyj0BthJA==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -679,9 +815,22 @@ packages:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
+ antlr4@4.13.2:
+ resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==}
+ engines: {node: '>=16'}
+
+ antlr4@4.8.0:
+ resolution: {integrity: sha512-en/MxQ4OkPgGJQ3wD/muzj1uDnFSzdFIhc2+c6bHZokWkuBb6RRvFjpWhPxWLbgQvaEzldJZ0GSQpfSAaE3hqg==}
+
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -692,6 +841,10 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+
bidi-js@1.0.3:
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
@@ -702,6 +855,10 @@ packages:
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
brotli@1.3.3:
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
@@ -735,10 +892,40 @@ packages:
caniuse-lite@1.0.30001737:
resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==}
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
clone@2.1.2:
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
engines: {node: '>=0.8'}
@@ -753,6 +940,9 @@ packages:
color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
commander@6.2.0:
resolution: {integrity: sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==}
engines: {node: '>= 6'}
@@ -783,6 +973,10 @@ packages:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
+ corser@2.0.1:
+ resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==}
+ engines: {node: '>= 0.4.0'}
+
cross-env@10.0.0:
resolution: {integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==}
engines: {node: '>=20'}
@@ -798,6 +992,16 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ data-forge@1.10.4:
+ resolution: {integrity: sha512-BZdw957xin6Yz3XK20Xv4wN1IqgqNnJp5dK4eaAh8o2rb+9eMS+TvI9Gt8KSsf+BbXjnIf+r2sqKuHCeY+dRkQ==}
+
+ date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+
+ dayjs@1.11.18:
+ resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==}
+
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
engines: {node: '>=6.0'}
@@ -807,13 +1011,31 @@ packages:
supports-color:
optional: true
+ decode-named-character-reference@1.2.0:
+ resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
+
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
depd@2.0.0:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ detect-libc@1.0.3:
+ resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
dfa@1.2.0:
resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
@@ -821,23 +1043,32 @@ packages:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
- dotenv@17.2.2:
- resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==}
+ dotenv@17.2.1:
+ resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==}
engines: {node: '>=12'}
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
+ easy-table@1.1.0:
+ resolution: {integrity: sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==}
+
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.211:
- resolution: {integrity: sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw==}
+ electron-to-chromium@1.5.208:
+ resolution: {integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
+ emojilib@2.4.0:
+ resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==}
+
+ emoticon@4.1.0:
+ resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==}
+
encodeurl@2.0.0:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
@@ -870,6 +1101,10 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -908,6 +1143,9 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -916,6 +1154,9 @@ packages:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
+ eventemitter3@4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
@@ -924,6 +1165,9 @@ packages:
resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
engines: {node: '>= 18'}
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -946,6 +1190,10 @@ packages:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
finalhandler@2.1.0:
resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
engines: {node: '>= 0.8'}
@@ -961,6 +1209,15 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
fontkit@2.0.4:
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
@@ -1026,16 +1283,42 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
hsl-to-hex@1.0.0:
resolution: {integrity: sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==}
hsl-to-rgb-for-reals@1.1.1:
resolution: {integrity: sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==}
+ html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+
+ html-url-attributes@3.0.1:
+ resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
+ http-proxy@1.18.1:
+ resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
+ engines: {node: '>=8.0.0'}
+
+ http-server@14.1.1:
+ resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==}
+ engines: {node: '>=12'}
+ hasBin: true
+
hyphen@1.10.6:
resolution: {integrity: sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw==}
@@ -1047,6 +1330,9 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
+ immutable@5.1.3:
+ resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==}
+
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
@@ -1062,13 +1348,25 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ inline-style-parser@0.2.4:
+ resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
+
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -1077,6 +1375,17 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
is-promise@4.0.0:
resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
@@ -1143,6 +1452,9 @@ packages:
lodash.mergewith@4.6.2:
resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -1154,6 +1466,36 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
+ mdast-util-find-and-replace@3.0.2:
+ resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
+
+ mdast-util-from-markdown@2.0.2:
+ resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ mdast-util-newline-to-break@2.0.0:
+ resolution: {integrity: sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==}
+
+ mdast-util-phrasing@4.1.0:
+ resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
+ mdast-util-to-hast@13.2.0:
+ resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
+
+ mdast-util-to-markdown@2.1.2:
+ resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
media-engine@1.0.3:
resolution: {integrity: sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==}
@@ -1165,6 +1507,73 @@ packages:
resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
engines: {node: '>=18'}
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
+
+ micromark-factory-destination@2.0.1:
+ resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+ micromark-factory-label@2.0.1:
+ resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+ micromark-factory-space@2.0.1:
+ resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+ micromark-factory-title@2.0.1:
+ resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+ micromark-factory-whitespace@2.0.1:
+ resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+ micromark-util-character@2.1.1:
+ resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+ micromark-util-chunked@2.0.1:
+ resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+ micromark-util-classify-character@2.0.1:
+ resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+ micromark-util-combine-extensions@2.0.1:
+ resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+ micromark-util-decode-string@2.0.1:
+ resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
+ micromark-util-encode@2.0.1:
+ resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+ micromark-util-html-tag-name@2.0.1:
+ resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+ micromark-util-normalize-identifier@2.0.1:
+ resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+ micromark-util-resolve-all@2.0.1:
+ resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+ micromark-util-sanitize-uri@2.0.1:
+ resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
+ micromark-util-symbol@2.0.1:
+ resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
mime-db@1.54.0:
resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
engines: {node: '>= 0.6'}
@@ -1173,9 +1582,20 @@ packages:
resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
engines: {node: '>= 0.6'}
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minisearch@7.1.2:
+ resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==}
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -1191,12 +1611,22 @@ packages:
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
engines: {node: '>= 0.6'}
+ node-addon-api@7.1.1:
+ resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+
+ node-emoji@2.2.0:
+ resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==}
+ engines: {node: '>=18'}
+
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
normalize-svg-path@1.1.0:
resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==}
+ numeral@2.0.6:
+ resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==}
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -1215,6 +1645,10 @@ packages:
openapi-types@12.1.3:
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
+ opener@1.5.2:
+ resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
+ hasBin: true
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -1233,10 +1667,16 @@ packages:
pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+ papaparse@5.2.0:
+ resolution: {integrity: sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
parse-svg-path@0.1.2:
resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==}
@@ -1263,10 +1703,18 @@ packages:
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
picomatch@4.0.3:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
+ portfinder@1.0.37:
+ resolution: {integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==}
+ engines: {node: '>= 10.12'}
+
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
@@ -1286,6 +1734,9 @@ packages:
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ property-information@7.1.0:
+ resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+
proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -1314,6 +1765,11 @@ packages:
peerDependencies:
react: ^19.1.1
+ react-error-boundary@4.1.2:
+ resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==}
+ peerDependencies:
+ react: '>=16.13.1'
+
react-error-boundary@6.0.0:
resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==}
peerDependencies:
@@ -1322,18 +1778,56 @@ packages:
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ react-markdown@9.1.0:
+ resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==}
+ peerDependencies:
+ '@types/react': '>=18'
+ react: '>=18'
+
+ react-number-format@5.4.4:
+ resolution: {integrity: sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==}
+ peerDependencies:
+ react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
react-refresh@0.17.0:
resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
engines: {node: '>=0.10.0'}
+ react-tooltip@5.29.1:
+ resolution: {integrity: sha512-rmJmEb/p99xWhwmVT7F7riLG08wwKykjHiMGbDPloNJk3tdI73oHsVOwzZ4SRjqMdd5/xwb/4nmz0RcoMfY7Bw==}
+ peerDependencies:
+ react: '>=16.14.0'
+ react-dom: '>=16.14.0'
+
react@19.1.1:
resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==}
engines: {node: '>=0.10.0'}
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
+
+ remark-breaks@4.0.0:
+ resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==}
+
+ remark-emoji@5.0.2:
+ resolution: {integrity: sha512-IyIqGELcyK5AVdLFafoiNww+Eaw/F+rGrNSXoKucjo95uL267zrddgxGM83GN1wFIb68pyDuAsY3m5t2Cav1pQ==}
+ engines: {node: '>=18'}
+
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ remark-rehype@11.1.2:
+ resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
+
require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1344,8 +1838,8 @@ packages:
restructure@3.0.2:
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
- rollup@4.50.0:
- resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==}
+ rollup@4.48.1:
+ resolution: {integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -1353,18 +1847,29 @@ packages:
resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
engines: {node: '>= 18'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ sass@1.92.0:
+ resolution: {integrity: sha512-KDNI0BxgIRDAfJgzNm5wuy+4yOCIZyrUbjSpiU/JItfih+KGXAVefKL53MTml054MmBA3DDKIBMSI/7XLxZJ3A==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
scheduler@0.25.0-rc-603e6108-20241029:
resolution: {integrity: sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA==}
scheduler@0.26.0:
resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
+ secure-compare@3.0.1:
+ resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==}
+
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -1407,10 +1912,17 @@ packages:
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ skin-tone@2.0.0:
+ resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==}
+ engines: {node: '>=8'}
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
statuses@2.0.1:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
@@ -1422,10 +1934,19 @@ packages:
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ style-to-js@1.1.17:
+ resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==}
+
+ style-to-object@1.0.9:
+ resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==}
+
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -1458,10 +1979,20 @@ packages:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -1483,15 +2014,44 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ typy@3.3.0:
+ resolution: {integrity: sha512-Du53deMF9X9pSM3gVXDjLBq14BUfZWSGKfmmR1kTlg953RaIZehfc8fQuoAiW+SRO6bJsP+59mv1tsH8vwKghg==}
+
undici-types@7.10.0:
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
+ unicode-emoji-modifier-base@1.0.0:
+ resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==}
+ engines: {node: '>=4'}
+
unicode-properties@1.4.1:
resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
unicode-trie@2.0.0:
resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+ union@0.5.0:
+ resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==}
+ engines: {node: '>= 0.8.0'}
+
+ unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
@@ -1505,6 +2065,9 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ url-join@4.0.1:
+ resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -1516,12 +2079,18 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
vite-compatible-readable-stream@3.6.1:
resolution: {integrity: sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==}
engines: {node: '>= 6'}
- vite@7.1.4:
- resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==}
+ vite@7.1.3:
+ resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -1560,6 +2129,13 @@ packages:
yaml:
optional: true
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
+ whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@@ -1591,6 +2167,9 @@ packages:
engines: {node: '>=8.0.0'}
hasBin: true
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
snapshots:
'@ag-media/react-pdf-table@2.0.3(@react-pdf/renderer@4.3.0(react@19.1.1))(@react-pdf/stylesheet@6.1.0)(react@19.1.1)':
@@ -1739,6 +2318,8 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
+ '@data-forge/serialization@1.0.1': {}
+
'@epic-web/invariant@1.0.0': {}
'@esbuild/aix-ppc64@0.25.9':
@@ -1863,6 +2444,17 @@ snapshots:
'@eslint/core': 0.15.2
levn: 0.4.1
+ '@floating-ui/core@1.7.3':
+ dependencies:
+ '@floating-ui/utils': 0.2.10
+
+ '@floating-ui/dom@1.7.4':
+ dependencies:
+ '@floating-ui/core': 1.7.3
+ '@floating-ui/utils': 0.2.10
+
+ '@floating-ui/utils@0.2.10': {}
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@@ -1876,6 +2468,39 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
+ '@inseefr/lunatic@3.6.15(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ dependencies:
+ '@inseefr/trevas': 0.1.21
+ '@inseefr/vtl-2.0-antlr-tools': 0.3.2
+ antlr4: 4.13.2
+ classnames: 2.5.1
+ http-server: 14.1.1
+ minisearch: 7.1.2
+ react: 19.1.1
+ react-error-boundary: 4.1.2(react@19.1.1)
+ react-markdown: 9.1.0(@types/react@19.1.11)(react@19.1.1)
+ react-number-format: 5.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ react-tooltip: 5.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ remark-breaks: 4.0.0
+ remark-emoji: 5.0.2
+ sass: 1.92.0
+ transitivePeerDependencies:
+ - '@types/react'
+ - debug
+ - react-dom
+ - supports-color
+
+ '@inseefr/trevas@0.1.21':
+ dependencies:
+ '@inseefr/vtl-2.0-antlr-tools': 0.3.2
+ antlr4: 4.8.0
+ data-forge: 1.10.4
+ date-fns: 2.30.0
+
+ '@inseefr/vtl-2.0-antlr-tools@0.3.2':
+ dependencies:
+ antlr4: 4.8.0
+
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -1892,19 +2517,80 @@ snapshots:
'@jsdevtools/ono@7.1.3': {}
- '@react-pdf/fns@3.1.2': {}
+ '@parcel/watcher-android-arm64@2.5.1':
+ optional: true
- '@react-pdf/font@4.0.2':
- dependencies:
- '@react-pdf/pdfkit': 4.0.3
- '@react-pdf/types': 2.9.0
- fontkit: 2.0.4
- is-url: 1.2.4
+ '@parcel/watcher-darwin-arm64@2.5.1':
+ optional: true
- '@react-pdf/image@3.0.3':
- dependencies:
- '@react-pdf/png-js': 3.0.0
- jay-peg: 1.1.1
+ '@parcel/watcher-darwin-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-freebsd-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-arm64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-ia32@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher@2.5.1':
+ dependencies:
+ detect-libc: 1.0.3
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+ node-addon-api: 7.1.1
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.5.1
+ '@parcel/watcher-darwin-arm64': 2.5.1
+ '@parcel/watcher-darwin-x64': 2.5.1
+ '@parcel/watcher-freebsd-x64': 2.5.1
+ '@parcel/watcher-linux-arm-glibc': 2.5.1
+ '@parcel/watcher-linux-arm-musl': 2.5.1
+ '@parcel/watcher-linux-arm64-glibc': 2.5.1
+ '@parcel/watcher-linux-arm64-musl': 2.5.1
+ '@parcel/watcher-linux-x64-glibc': 2.5.1
+ '@parcel/watcher-linux-x64-musl': 2.5.1
+ '@parcel/watcher-win32-arm64': 2.5.1
+ '@parcel/watcher-win32-ia32': 2.5.1
+ '@parcel/watcher-win32-x64': 2.5.1
+ optional: true
+
+ '@react-pdf/fns@3.1.2': {}
+
+ '@react-pdf/font@4.0.2':
+ dependencies:
+ '@react-pdf/pdfkit': 4.0.3
+ '@react-pdf/types': 2.9.0
+ fontkit: 2.0.4
+ is-url: 1.2.4
+
+ '@react-pdf/image@3.0.3':
+ dependencies:
+ '@react-pdf/png-js': 3.0.0
+ jay-peg: 1.1.1
'@react-pdf/layout@4.4.0':
dependencies:
@@ -1941,7 +2627,7 @@ snapshots:
react: 19.1.1
scheduler: 0.25.0-rc-603e6108-20241029
- '@react-pdf/render@4.3.0':
+ '@react-pdf/render@4.3.0(patch_hash=a70f813185d3cc56a3b77989a85256a3f5c857852503ad296f70eefba2eb3e7e)':
dependencies:
'@babel/runtime': 7.28.3
'@react-pdf/fns': 3.1.2
@@ -1963,7 +2649,7 @@ snapshots:
'@react-pdf/pdfkit': 4.0.3
'@react-pdf/primitives': 4.1.1
'@react-pdf/reconciler': 1.1.4(react@19.1.1)
- '@react-pdf/render': 4.3.0
+ '@react-pdf/render': 4.3.0(patch_hash=a70f813185d3cc56a3b77989a85256a3f5c857852503ad296f70eefba2eb3e7e)
'@react-pdf/types': 2.9.0
events: 3.3.0
object-assign: 4.1.1
@@ -1993,73 +2679,72 @@ snapshots:
'@react-pdf/primitives': 4.1.1
'@react-pdf/stylesheet': 6.1.0
- '@rolldown/pluginutils@1.0.0-beta.34': {}
+ '@rolldown/pluginutils@1.0.0-beta.32': {}
- '@rollup/rollup-android-arm-eabi@4.50.0':
+ '@rollup/rollup-android-arm-eabi@4.48.1':
optional: true
- '@rollup/rollup-android-arm64@4.50.0':
+ '@rollup/rollup-android-arm64@4.48.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.50.0':
+ '@rollup/rollup-darwin-arm64@4.48.1':
optional: true
- '@rollup/rollup-darwin-x64@4.50.0':
+ '@rollup/rollup-darwin-x64@4.48.1':
optional: true
- '@rollup/rollup-freebsd-arm64@4.50.0':
+ '@rollup/rollup-freebsd-arm64@4.48.1':
optional: true
- '@rollup/rollup-freebsd-x64@4.50.0':
+ '@rollup/rollup-freebsd-x64@4.48.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.50.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.48.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.50.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.48.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.50.0':
+ '@rollup/rollup-linux-arm64-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.50.0':
+ '@rollup/rollup-linux-arm64-musl@4.48.1':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.50.0':
+ '@rollup/rollup-linux-loongarch64-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.50.0':
+ '@rollup/rollup-linux-ppc64-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.50.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.50.0':
+ '@rollup/rollup-linux-riscv64-musl@4.48.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.50.0':
+ '@rollup/rollup-linux-s390x-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.50.0':
+ '@rollup/rollup-linux-x64-gnu@4.48.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.50.0':
+ '@rollup/rollup-linux-x64-musl@4.48.1':
optional: true
- '@rollup/rollup-openharmony-arm64@4.50.0':
+ '@rollup/rollup-win32-arm64-msvc@4.48.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.50.0':
+ '@rollup/rollup-win32-ia32-msvc@4.48.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.50.0':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.50.0':
+ '@rollup/rollup-win32-x64-msvc@4.48.1':
optional: true
'@scarf/scarf@1.4.0': {}
+ '@sindresorhus/is@4.6.0': {}
+
'@swc/helpers@0.5.17':
dependencies:
tslib: 2.8.1
@@ -2094,6 +2779,14 @@ snapshots:
dependencies:
'@types/node': 24.3.0
+ '@types/debug@4.1.12':
+ dependencies:
+ '@types/ms': 2.1.0
+
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.8
+
'@types/estree@1.0.8': {}
'@types/express-serve-static-core@5.0.7':
@@ -2109,12 +2802,22 @@ snapshots:
'@types/express-serve-static-core': 5.0.7
'@types/serve-static': 1.15.8
+ '@types/hast@3.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
'@types/http-errors@2.0.5': {}
'@types/json-schema@7.0.15': {}
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
'@types/mime@1.3.5': {}
+ '@types/ms@2.1.0': {}
+
'@types/node@24.3.0':
dependencies:
undici-types: 7.10.0
@@ -2123,11 +2826,11 @@ snapshots:
'@types/range-parser@1.2.7': {}
- '@types/react-dom@19.1.9(@types/react@19.1.12)':
+ '@types/react-dom@19.1.7(@types/react@19.1.11)':
dependencies:
- '@types/react': 19.1.12
+ '@types/react': 19.1.11
- '@types/react@19.1.12':
+ '@types/react@19.1.11':
dependencies:
csstype: 3.1.3
@@ -2149,15 +2852,21 @@ snapshots:
'@types/express': 5.0.3
'@types/serve-static': 1.15.8
- '@vitejs/plugin-react@5.0.2(vite@7.1.4(@types/node@24.3.0)(tsx@4.20.5))':
+ '@types/unist@2.0.11': {}
+
+ '@types/unist@3.0.3': {}
+
+ '@ungap/structured-clone@1.3.0': {}
+
+ '@vitejs/plugin-react@5.0.1(vite@7.1.3(@types/node@24.3.0)(sass@1.92.0)(tsx@4.20.5))':
dependencies:
'@babel/core': 7.28.3
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3)
'@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3)
- '@rolldown/pluginutils': 1.0.0-beta.34
+ '@rolldown/pluginutils': 1.0.0-beta.32
'@types/babel__core': 7.20.5
react-refresh: 0.17.0
- vite: 7.1.4(@types/node@24.3.0)(tsx@4.20.5)
+ vite: 7.1.3(@types/node@24.3.0)(sass@1.92.0)(tsx@4.20.5)
transitivePeerDependencies:
- supports-color
@@ -2185,14 +2894,26 @@ snapshots:
dependencies:
color-convert: 2.0.1
+ antlr4@4.13.2: {}
+
+ antlr4@4.8.0: {}
+
argparse@2.0.1: {}
+ async@3.2.6: {}
+
+ bail@2.0.2: {}
+
balanced-match@1.0.2: {}
base64-js@0.0.8: {}
base64-js@1.5.1: {}
+ basic-auth@2.0.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
bidi-js@1.0.3:
dependencies:
require-from-string: 2.0.2
@@ -2216,6 +2937,11 @@ snapshots:
balanced-match: 1.0.2
concat-map: 0.0.1
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+ optional: true
+
brotli@1.3.3:
dependencies:
base64-js: 1.5.1
@@ -2227,7 +2953,7 @@ snapshots:
browserslist@4.25.3:
dependencies:
caniuse-lite: 1.0.30001737
- electron-to-chromium: 1.5.211
+ electron-to-chromium: 1.5.208
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.25.3)
@@ -2249,11 +2975,32 @@ snapshots:
caniuse-lite@1.0.30001737: {}
+ ccount@2.0.1: {}
+
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ char-regex@1.0.2: {}
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ classnames@2.5.1: {}
+
+ clone@1.0.4:
+ optional: true
+
clone@2.1.2: {}
color-convert@2.0.1:
@@ -2267,6 +3014,8 @@ snapshots:
color-name: 1.1.4
simple-swizzle: 0.2.2
+ comma-separated-tokens@2.0.3: {}
+
commander@6.2.0: {}
commander@9.5.0:
@@ -2286,6 +3035,8 @@ snapshots:
cookie@0.7.2: {}
+ corser@2.0.1: {}
+
cross-env@10.0.0:
dependencies:
'@epic-web/invariant': 1.0.0
@@ -2301,21 +3052,55 @@ snapshots:
csstype@3.1.3: {}
+ data-forge@1.10.4:
+ dependencies:
+ '@data-forge/serialization': 1.0.1
+ dayjs: 1.11.18
+ easy-table: 1.1.0
+ json5: 2.2.3
+ numeral: 2.0.6
+ papaparse: 5.2.0
+ typy: 3.3.0
+
+ date-fns@2.30.0:
+ dependencies:
+ '@babel/runtime': 7.28.3
+
+ dayjs@1.11.18: {}
+
debug@4.4.1:
dependencies:
ms: 2.1.3
+ decode-named-character-reference@1.2.0:
+ dependencies:
+ character-entities: 2.0.2
+
deep-is@0.1.4: {}
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+ optional: true
+
depd@2.0.0: {}
+ dequal@2.0.3: {}
+
+ detect-libc@1.0.3:
+ optional: true
+
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
dfa@1.2.0: {}
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
- dotenv@17.2.2: {}
+ dotenv@17.2.1: {}
dunder-proto@1.0.1:
dependencies:
@@ -2323,12 +3108,20 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
+ easy-table@1.1.0:
+ optionalDependencies:
+ wcwidth: 1.0.1
+
ee-first@1.1.1: {}
- electron-to-chromium@1.5.211: {}
+ electron-to-chromium@1.5.208: {}
emoji-regex@10.4.0: {}
+ emojilib@2.4.0: {}
+
+ emoticon@4.1.0: {}
+
encodeurl@2.0.0: {}
es-define-property@1.0.1: {}
@@ -2374,6 +3167,8 @@ snapshots:
escape-string-regexp@4.0.0: {}
+ escape-string-regexp@5.0.0: {}
+
eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
@@ -2439,10 +3234,14 @@ snapshots:
estraverse@5.3.0: {}
+ estree-util-is-identifier-name@3.0.0: {}
+
esutils@2.0.3: {}
etag@1.8.1: {}
+ eventemitter3@4.0.7: {}
+
events@3.3.0: {}
express@5.1.0:
@@ -2477,6 +3276,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ extend@3.0.2: {}
+
fast-deep-equal@3.1.3: {}
fast-json-stable-stringify@2.1.0: {}
@@ -2491,6 +3292,11 @@ snapshots:
dependencies:
flat-cache: 4.0.1
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+ optional: true
+
finalhandler@2.1.0:
dependencies:
debug: 4.4.1
@@ -2514,6 +3320,8 @@ snapshots:
flatted@3.3.3: {}
+ follow-redirects@1.15.11: {}
+
fontkit@2.0.4:
dependencies:
'@swc/helpers': 0.5.17
@@ -2586,12 +3394,44 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hast-util-to-jsx-runtime@2.3.6:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.17
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ he@1.2.0: {}
+
hsl-to-hex@1.0.0:
dependencies:
hsl-to-rgb-for-reals: 1.1.1
hsl-to-rgb-for-reals@1.1.1: {}
+ html-encoding-sniffer@3.0.0:
+ dependencies:
+ whatwg-encoding: 2.0.0
+
+ html-url-attributes@3.0.1: {}
+
http-errors@2.0.0:
dependencies:
depd: 2.0.0
@@ -2600,6 +3440,33 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
+ http-proxy@1.18.1:
+ dependencies:
+ eventemitter3: 4.0.7
+ follow-redirects: 1.15.11
+ requires-port: 1.0.0
+ transitivePeerDependencies:
+ - debug
+
+ http-server@14.1.1:
+ dependencies:
+ basic-auth: 2.0.1
+ chalk: 4.1.2
+ corser: 2.0.1
+ he: 1.2.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy: 1.18.1
+ mime: 1.6.0
+ minimist: 1.2.8
+ opener: 1.5.2
+ portfinder: 1.0.37
+ secure-compare: 3.0.1
+ union: 0.5.0
+ url-join: 4.0.1
+ transitivePeerDependencies:
+ - debug
+ - supports-color
+
hyphen@1.10.6: {}
iconv-lite@0.6.3:
@@ -2608,6 +3475,8 @@ snapshots:
ignore@5.3.2: {}
+ immutable@5.1.3: {}
+
import-fresh@3.3.1:
dependencies:
parent-module: 1.0.1
@@ -2622,16 +3491,34 @@ snapshots:
inherits@2.0.4: {}
+ inline-style-parser@0.2.4: {}
+
ipaddr.js@1.9.1: {}
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
is-arrayish@0.3.2: {}
+ is-decimal@2.0.1: {}
+
is-extglob@2.1.1: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
+ is-hexadecimal@2.0.1: {}
+
+ is-number@7.0.0:
+ optional: true
+
+ is-plain-obj@4.1.0: {}
+
is-promise@4.0.0: {}
is-url@1.2.4: {}
@@ -2684,6 +3571,8 @@ snapshots:
lodash.mergewith@4.6.2: {}
+ longest-streak@3.1.0: {}
+
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
@@ -2694,22 +3583,268 @@ snapshots:
math-intrinsics@1.1.0: {}
+ mdast-util-find-and-replace@3.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
+ mdast-util-from-markdown@2.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.2.0
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.2
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-newline-to-break@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-find-and-replace: 3.0.2
+
+ mdast-util-phrasing@4.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.0
+
+ mdast-util-to-hast@13.2.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.3.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+
+ mdast-util-to-markdown@2.1.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.0.0
+ zwitch: 2.0.4
+
+ mdast-util-to-string@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+
media-engine@1.0.3: {}
media-typer@1.1.0: {}
merge-descriptors@2.0.0: {}
+ micromark-core-commonmark@2.0.3:
+ dependencies:
+ decode-named-character-reference: 1.2.0
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-destination@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-label@2.0.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-space@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-title@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-whitespace@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-character@2.1.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-chunked@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-classify-character@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-combine-extensions@2.0.1:
+ dependencies:
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-decode-string@2.0.1:
+ dependencies:
+ decode-named-character-reference: 1.2.0
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-encode@2.0.1: {}
+
+ micromark-util-html-tag-name@2.0.1: {}
+
+ micromark-util-normalize-identifier@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-resolve-all@2.0.1:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-util-sanitize-uri@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-subtokenize@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-symbol@2.0.1: {}
+
+ micromark-util-types@2.0.2: {}
+
+ micromark@4.0.2:
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.4.1
+ decode-named-character-reference: 1.2.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+ optional: true
+
mime-db@1.54.0: {}
mime-types@3.0.1:
dependencies:
mime-db: 1.54.0
+ mime@1.6.0: {}
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.12
+ minimist@1.2.8: {}
+
+ minisearch@7.1.2: {}
+
ms@2.1.3: {}
nanoid@3.3.11: {}
@@ -2718,12 +3853,24 @@ snapshots:
negotiator@1.0.0: {}
+ node-addon-api@7.1.1:
+ optional: true
+
+ node-emoji@2.2.0:
+ dependencies:
+ '@sindresorhus/is': 4.6.0
+ char-regex: 1.0.2
+ emojilib: 2.4.0
+ skin-tone: 2.0.0
+
node-releases@2.0.19: {}
normalize-svg-path@1.1.0:
dependencies:
svg-arc-to-cubic-bezier: 3.2.0
+ numeral@2.0.6: {}
+
object-assign@4.1.1: {}
object-inspect@1.13.4: {}
@@ -2738,6 +3885,8 @@ snapshots:
openapi-types@12.1.3: {}
+ opener@1.5.2: {}
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -2759,10 +3908,22 @@ snapshots:
pako@1.0.11: {}
+ papaparse@5.2.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
+ parse-entities@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.2.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
parse-svg-path@0.1.2: {}
parseurl@1.3.3: {}
@@ -2777,8 +3938,18 @@ snapshots:
picocolors@1.1.1: {}
+ picomatch@2.3.1:
+ optional: true
+
picomatch@4.0.3: {}
+ portfinder@1.0.37:
+ dependencies:
+ async: 3.2.6
+ debug: 4.4.1
+ transitivePeerDependencies:
+ - supports-color
+
postcss-value-parser@4.2.0: {}
postcss@8.5.6:
@@ -2797,6 +3968,8 @@ snapshots:
object-assign: 4.1.1
react-is: 16.13.1
+ property-information@7.1.0: {}
+
proxy-addr@2.0.7:
dependencies:
forwarded: 0.2.0
@@ -2826,6 +3999,11 @@ snapshots:
react: 19.1.1
scheduler: 0.26.0
+ react-error-boundary@4.1.2(react@19.1.1):
+ dependencies:
+ '@babel/runtime': 7.28.3
+ react: 19.1.1
+
react-error-boundary@6.0.0(react@19.1.1):
dependencies:
'@babel/runtime': 7.28.3
@@ -2833,43 +4011,107 @@ snapshots:
react-is@16.13.1: {}
+ react-markdown@9.1.0(@types/react@19.1.11)(react@19.1.1):
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/react': 19.1.11
+ devlop: 1.1.0
+ hast-util-to-jsx-runtime: 2.3.6
+ html-url-attributes: 3.0.1
+ mdast-util-to-hast: 13.2.0
+ react: 19.1.1
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.2
+ unified: 11.0.5
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ react-number-format@5.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ dependencies:
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+
react-refresh@0.17.0: {}
+ react-tooltip@5.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ dependencies:
+ '@floating-ui/dom': 1.7.4
+ classnames: 2.5.1
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+
react@19.1.1: {}
+ readdirp@4.1.2: {}
+
+ remark-breaks@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-newline-to-break: 2.0.0
+ unified: 11.0.5
+
+ remark-emoji@5.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ emoticon: 4.1.0
+ mdast-util-find-and-replace: 3.0.2
+ node-emoji: 2.2.0
+ unified: 11.0.5
+
+ remark-parse@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ micromark-util-types: 2.0.2
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@11.1.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.0
+ unified: 11.0.5
+ vfile: 6.0.3
+
require-from-string@2.0.2: {}
+ requires-port@1.0.0: {}
+
resolve-from@4.0.0: {}
resolve-pkg-maps@1.0.0: {}
restructure@3.0.2: {}
- rollup@4.50.0:
+ rollup@4.48.1:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.50.0
- '@rollup/rollup-android-arm64': 4.50.0
- '@rollup/rollup-darwin-arm64': 4.50.0
- '@rollup/rollup-darwin-x64': 4.50.0
- '@rollup/rollup-freebsd-arm64': 4.50.0
- '@rollup/rollup-freebsd-x64': 4.50.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.50.0
- '@rollup/rollup-linux-arm-musleabihf': 4.50.0
- '@rollup/rollup-linux-arm64-gnu': 4.50.0
- '@rollup/rollup-linux-arm64-musl': 4.50.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.50.0
- '@rollup/rollup-linux-ppc64-gnu': 4.50.0
- '@rollup/rollup-linux-riscv64-gnu': 4.50.0
- '@rollup/rollup-linux-riscv64-musl': 4.50.0
- '@rollup/rollup-linux-s390x-gnu': 4.50.0
- '@rollup/rollup-linux-x64-gnu': 4.50.0
- '@rollup/rollup-linux-x64-musl': 4.50.0
- '@rollup/rollup-openharmony-arm64': 4.50.0
- '@rollup/rollup-win32-arm64-msvc': 4.50.0
- '@rollup/rollup-win32-ia32-msvc': 4.50.0
- '@rollup/rollup-win32-x64-msvc': 4.50.0
+ '@rollup/rollup-android-arm-eabi': 4.48.1
+ '@rollup/rollup-android-arm64': 4.48.1
+ '@rollup/rollup-darwin-arm64': 4.48.1
+ '@rollup/rollup-darwin-x64': 4.48.1
+ '@rollup/rollup-freebsd-arm64': 4.48.1
+ '@rollup/rollup-freebsd-x64': 4.48.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.48.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.48.1
+ '@rollup/rollup-linux-arm64-gnu': 4.48.1
+ '@rollup/rollup-linux-arm64-musl': 4.48.1
+ '@rollup/rollup-linux-loongarch64-gnu': 4.48.1
+ '@rollup/rollup-linux-ppc64-gnu': 4.48.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.48.1
+ '@rollup/rollup-linux-riscv64-musl': 4.48.1
+ '@rollup/rollup-linux-s390x-gnu': 4.48.1
+ '@rollup/rollup-linux-x64-gnu': 4.48.1
+ '@rollup/rollup-linux-x64-musl': 4.48.1
+ '@rollup/rollup-win32-arm64-msvc': 4.48.1
+ '@rollup/rollup-win32-ia32-msvc': 4.48.1
+ '@rollup/rollup-win32-x64-msvc': 4.48.1
fsevents: 2.3.3
router@2.2.0:
@@ -2882,14 +4124,26 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ safe-buffer@5.1.2: {}
+
safe-buffer@5.2.1: {}
safer-buffer@2.1.2: {}
+ sass@1.92.0:
+ dependencies:
+ chokidar: 4.0.3
+ immutable: 5.1.3
+ source-map-js: 1.2.1
+ optionalDependencies:
+ '@parcel/watcher': 2.5.1
+
scheduler@0.25.0-rc-603e6108-20241029: {}
scheduler@0.26.0: {}
+ secure-compare@3.0.1: {}
+
semver@6.3.1: {}
send@1.2.0:
@@ -2957,8 +4211,14 @@ snapshots:
dependencies:
is-arrayish: 0.3.2
+ skin-tone@2.0.0:
+ dependencies:
+ unicode-emoji-modifier-base: 1.0.0
+
source-map-js@1.2.1: {}
+ space-separated-tokens@2.0.2: {}
+
statuses@2.0.1: {}
statuses@2.0.2: {}
@@ -2967,8 +4227,21 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
strip-json-comments@3.1.1: {}
+ style-to-js@1.1.17:
+ dependencies:
+ style-to-object: 1.0.9
+
+ style-to-object@1.0.9:
+ dependencies:
+ inline-style-parser: 0.2.4
+
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -3008,8 +4281,17 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+ optional: true
+
toidentifier@1.0.1: {}
+ trim-lines@3.0.1: {}
+
+ trough@2.2.0: {}
+
tslib@2.8.1: {}
tsx@4.20.5:
@@ -3031,8 +4313,12 @@ snapshots:
typescript@5.9.2: {}
+ typy@3.3.0: {}
+
undici-types@7.10.0: {}
+ unicode-emoji-modifier-base@1.0.0: {}
+
unicode-properties@1.4.1:
dependencies:
base64-js: 1.5.1
@@ -3043,6 +4329,43 @@ snapshots:
pako: 0.2.9
tiny-inflate: 1.0.3
+ unified@11.0.5:
+ dependencies:
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
+
+ union@0.5.0:
+ dependencies:
+ qs: 6.14.0
+
+ unist-util-is@6.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-stringify-position@4.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-visit-parents@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+
+ unist-util-visit@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
unpipe@1.0.0: {}
update-browserslist-db@1.1.3(browserslist@4.25.3):
@@ -3055,31 +4378,53 @@ snapshots:
dependencies:
punycode: 2.3.1
+ url-join@4.0.1: {}
+
util-deprecate@1.0.2: {}
validator@13.15.15: {}
vary@1.1.2: {}
+ vfile-message@4.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
+
+ vfile@6.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.3
+
vite-compatible-readable-stream@3.6.1:
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
- vite@7.1.4(@types/node@24.3.0)(tsx@4.20.5):
+ vite@7.1.3(@types/node@24.3.0)(sass@1.92.0)(tsx@4.20.5):
dependencies:
esbuild: 0.25.9
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.50.0
+ rollup: 4.48.1
tinyglobby: 0.2.14
optionalDependencies:
'@types/node': 24.3.0
fsevents: 2.3.3
+ sass: 1.92.0
tsx: 4.20.5
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+ optional: true
+
+ whatwg-encoding@2.0.0:
+ dependencies:
+ iconv-lite: 0.6.3
+
which@2.0.2:
dependencies:
isexe: 2.0.0
@@ -3103,3 +4448,5 @@ snapshots:
validator: 13.15.15
optionalDependencies:
commander: 9.5.0
+
+ zwitch@2.0.4: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..1d28aed
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,2 @@
+patchedDependencies:
+ '@react-pdf/render': patches/@react-pdf__render.patch
diff --git a/src/components/CheckboxBoolean.tsx b/src/components/CheckboxBoolean.tsx
new file mode 100644
index 0000000..e3f74cc
--- /dev/null
+++ b/src/components/CheckboxBoolean.tsx
@@ -0,0 +1,16 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { Text } from "@react-pdf/renderer";
+import { styles } from "./styles";
+
+type Props = LunaticComponentProps<"CheckboxBoolean">;
+
+export function CheckboxBoolean({ interpret, label, response }: Props) {
+ return (
+
+
+ {interpret(response.name) ? "Oui" : "Non"}
+
+
+ );
+}
diff --git a/src/components/CheckboxGroup.tsx b/src/components/CheckboxGroup.tsx
new file mode 100644
index 0000000..a92f894
--- /dev/null
+++ b/src/components/CheckboxGroup.tsx
@@ -0,0 +1,22 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { Text, View } from "@react-pdf/renderer";
+import { styles } from "./styles";
+
+type Props = LunaticComponentProps<"CheckboxGroup">;
+
+export function CheckboxGroup({ interpret, label, responses }: Props) {
+ return (
+
+
+ {responses
+ .filter((r) => interpret(r.response.name))
+ .map((r, k) => (
+
+ - {interpret(r.label)}
+
+ ))}
+
+
+ );
+}
diff --git a/src/components/DummyPdf.tsx b/src/components/DummyPdf.tsx
deleted file mode 100644
index 4f42b75..0000000
--- a/src/components/DummyPdf.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Document, Page, Text, View } from "@react-pdf/renderer";
-import { pdfStyles } from "./style";
-import { FirstPage } from "./FirstPage";
-
-export const DummyPdf = ({ source, data }: { source: string; data: any }) => {
- return (
-
-
-
-
- Source :
- {source}
- Data :
- {JSON.stringify(data)}
-
-
-
- );
-};
diff --git a/src/components/Duration.tsx b/src/components/Duration.tsx
new file mode 100644
index 0000000..046ebbb
--- /dev/null
+++ b/src/components/Duration.tsx
@@ -0,0 +1,44 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { styles } from "./styles";
+import { Text } from "@react-pdf/renderer";
+
+type Props = LunaticComponentProps<"Duration">;
+
+function periodToString(duration?: string): string | null {
+ if (!duration) {
+ return null;
+ }
+ const regex =
+ /^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/;
+ const match = regex.exec(duration);
+
+ if (!match) {
+ throw new Error(`Durée ISO 8601 invalide : ${duration}`);
+ }
+
+ const [_, years, months, days, hours, minutes, seconds] = match;
+
+ const parts: string[] = [];
+
+ if (years) parts.push(`${years} ${Number(years) > 1 ? "ans" : "an"}`);
+ if (months) parts.push(`${months} mois`); // 'mois' same plural otherwise : ${Number(months) > 1 ? "mois" : "mois"}
+ if (days) parts.push(`${days} ${Number(days) > 1 ? "jours" : "jour"}`);
+ if (hours) parts.push(`${hours} ${Number(hours) > 1 ? "heures" : "heure"}`);
+ if (minutes)
+ parts.push(`${minutes} ${Number(minutes) > 1 ? "minutes" : "minute"}`);
+ if (seconds)
+ parts.push(`${seconds} ${Number(seconds) > 1 ? "secondes" : "seconde"}`);
+
+ return parts.join(" ");
+}
+
+export function Duration({ interpret, label, response }: Props) {
+ return (
+
+
+ {periodToString(interpret(response.name) as string)}
+
+
+ );
+}
diff --git a/src/components/Empty.tsx b/src/components/Empty.tsx
new file mode 100644
index 0000000..b6ec219
--- /dev/null
+++ b/src/components/Empty.tsx
@@ -0,0 +1,3 @@
+export function Empty() {
+ return null;
+}
diff --git a/src/components/FirstPage.tsx b/src/components/FirstPage.tsx
deleted file mode 100644
index 71961e0..0000000
--- a/src/components/FirstPage.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Page, Text, View } from "@react-pdf/renderer";
-import { pdfStyles } from "./style";
-
-export const FirstPage = () => {
- return (
-
-
- Récapitulatif des données saisies
-
-
- );
-};
diff --git a/src/components/Input.tsx b/src/components/Input.tsx
new file mode 100644
index 0000000..de1e08d
--- /dev/null
+++ b/src/components/Input.tsx
@@ -0,0 +1,17 @@
+import type { LunaticComponentProps } from '../types';
+import { ValueWithLabel } from './ValueWithLabel';
+import { Text } from '@react-pdf/renderer';
+import { styles } from './styles';
+
+type Props = LunaticComponentProps<'InputNumber'>;
+
+export function Input({ interpret, label, response, unit }: Props) {
+ return (
+
+
+ {interpret(response.name) ?? '__'}{' '}
+ {typeof unit === 'string' ? unit : interpret(unit)}
+
+
+ );
+}
diff --git a/src/components/Loop.tsx b/src/components/Loop.tsx
new file mode 100644
index 0000000..5200522
--- /dev/null
+++ b/src/components/Loop.tsx
@@ -0,0 +1,60 @@
+import type { LunaticComponentProps, VTLExpression } from "../types";
+import { LunaticComponents } from "./LunaticComponent";
+import { Text, View } from "@react-pdf/renderer";
+import { forceInt } from "../utils/number";
+import { decorateInterpretIteration } from "../utils/vtl";
+import { styles } from "./styles";
+import { hasResponse } from "../utils/lunatic";
+
+type Props = LunaticComponentProps<"Loop"> & { iterations?: VTLExpression };
+
+export function Loop({
+ id,
+ label,
+ interpret,
+ components,
+ iterations: iterationsExpr,
+}: Props) {
+ if (components.length === 0) {
+ return null;
+ }
+
+ const getIterations = () => {
+ // We have an iteration expression we can use to resolve the number of iteration
+ if (iterationsExpr) {
+ return forceInt(
+ interpret(iterationsExpr),
+ `Cannot interpret ${iterationsExpr} to get loop size ${label}`
+ );
+ }
+
+ // Otherwise, look for the first variable inside the children
+ for (const component of components) {
+ if (hasResponse(component)) {
+ // @ts-expect-error component.response is a known value
+ const value = interpret(component.response);
+ if (Array.isArray(value)) {
+ return value.length;
+ }
+ }
+ }
+ return 0;
+ };
+
+ return (
+ <>
+ {Array.from({ length: getIterations() }).map((_, k) => {
+ const interpretAtIteration = decorateInterpretIteration(interpret, [k]);
+ return (
+
+ Iteration #{k + 1}
+
+
+ );
+ })}
+ >
+ );
+}
diff --git a/src/components/LunaticComponent.tsx b/src/components/LunaticComponent.tsx
new file mode 100644
index 0000000..527e8c1
--- /dev/null
+++ b/src/components/LunaticComponent.tsx
@@ -0,0 +1,156 @@
+import { Sequence } from "./Sequence";
+import { Question } from "./Question";
+import { Input } from "./Input";
+import { CheckboxBoolean } from "./CheckboxBoolean";
+import { Duration } from "./Duration";
+import { Radio } from "./Radio";
+import { CheckboxGroup } from "./CheckboxGroup";
+import { Table } from "./Table";
+import { RosterForLoop } from "./RosterForLoop";
+import { Loop } from "./Loop";
+import type { Interpreter } from "../utils/vtl";
+import { ErrorBoundary, type FallbackProps } from "react-error-boundary";
+import { Text, View } from "@react-pdf/renderer";
+import { depth, styles } from "./styles";
+import { Empty } from "./Empty";
+import type { ReactNode } from "react";
+import type { LunaticComponentDefinition } from "@inseefr/lunatic";
+
+const componentTypes = {
+ Sequence: Sequence,
+ Question: Question,
+ Textarea: Input,
+ Input: Input,
+ InputNumber: Input,
+ Datepicker: Input,
+ Duration: Duration,
+ CheckboxBoolean: CheckboxBoolean,
+ Radio: Radio,
+ CheckboxOne: Radio,
+ Dropdown: Radio,
+ CheckboxGroup: CheckboxGroup,
+ Table: Table,
+ Subsequence: Sequence,
+ RosterForLoop: RosterForLoop,
+ Loop: Loop,
+ FilterDescription: Empty,
+};
+
+/**
+ * Renders a single component
+ */
+export const LunaticComponent = ({
+ component,
+ interpret,
+}: {
+ component: LunaticComponentDefinition;
+ interpret: Interpreter;
+}) => {
+ if (component.componentType === "Sequence") {
+ depth.current = 1;
+ }
+ if (component.componentType === "Subsequence") {
+ depth.current = 2;
+ }
+ const visible =
+ "conditionFilter" in component
+ ? interpret(component.conditionFilter)
+ : true;
+
+ if (!visible) {
+ return null;
+ }
+
+ if (!(component.componentType in componentTypes)) {
+ return {component.componentType};
+ }
+ const Component =
+ componentTypes[component.componentType as keyof typeof componentTypes];
+ return (
+
+ {/* @ts-expect-error Component is too dynamic here*/}
+
+
+ );
+};
+
+/**
+ * Renders a list of component using grouping them using sequence
+ */
+export const LunaticComponents = ({
+ components,
+ interpret,
+}: {
+ components: LunaticComponentDefinition[];
+ interpret: Interpreter;
+}) => {
+ // We need to group components per sequence.
+ const items: ReactNode[] = [];
+ const sequenceType = ["Subsequence", "Sequence"];
+ let previousParent = null as LunaticComponentDefinition | null;
+ let children: LunaticComponentDefinition[] | null = null;
+
+ for (const component of components) {
+ // The component is not a sequence, or is a different type from the current grouping
+ if (
+ !sequenceType.includes(component.componentType) ||
+ (previousParent &&
+ previousParent.componentType !== component.componentType)
+ ) {
+ if (children) {
+ children.push(component);
+ } else {
+ items.push(
+
+
+ ,
+ );
+ }
+ continue;
+ }
+
+ // We encountered a Sequence or subsequence
+ // If we have collected children, create a new component
+ if (children && children.length > 0) {
+ items.push(
+
+
+ ,
+ );
+ }
+
+ children = [];
+ previousParent = component;
+ }
+
+ if (children && children.length > 0) {
+ items.push(
+
+
+ ,
+ );
+ }
+
+ return <>{items}>;
+};
+
+const fallbackRenderer = ({ error }: FallbackProps) => {
+ return (
+
+ Error rendering {component.componentType} : {error.toString()} #
+ {component.id}
+
+ );
+};
diff --git a/src/components/LunaticQuestionnaire.tsx b/src/components/LunaticQuestionnaire.tsx
new file mode 100644
index 0000000..5a292de
--- /dev/null
+++ b/src/components/LunaticQuestionnaire.tsx
@@ -0,0 +1,34 @@
+import { useMemo } from "react";
+import {
+ type LunaticData,
+ type LunaticSource,
+ LunaticVariablesStore,
+} from "@inseefr/lunatic";
+import { Document, Page } from "@react-pdf/renderer";
+import { styles } from "./styles";
+import { makeInterpret } from "../utils/vtl";
+import { LunaticComponents } from "./LunaticComponent";
+
+type Props = {
+ source: LunaticSource;
+ data: LunaticData;
+};
+
+// Create Document Component
+export const LunaticQuestionnaire = ({ source, data }: Props) => {
+ const store = useMemo(
+ () => LunaticVariablesStore.makeFromSource(source, data),
+ [source, data],
+ );
+ const interpret = useMemo(() => makeInterpret(store), [store]);
+ return (
+
+
+
+
+
+ );
+};
diff --git a/src/components/Question.tsx b/src/components/Question.tsx
new file mode 100644
index 0000000..44f830f
--- /dev/null
+++ b/src/components/Question.tsx
@@ -0,0 +1,15 @@
+import type { LunaticComponentProps } from "../types";
+import { LunaticComponent } from "./LunaticComponent";
+import { ValueWithLabel } from "./ValueWithLabel";
+
+type Props = LunaticComponentProps<"Question">;
+
+export function Question({ interpret, label, components }: Props) {
+ return (
+
+ {components.map((component, k) => (
+
+ ))}
+
+ );
+}
diff --git a/src/components/Radio.tsx b/src/components/Radio.tsx
new file mode 100644
index 0000000..78debc5
--- /dev/null
+++ b/src/components/Radio.tsx
@@ -0,0 +1,22 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { Text } from "@react-pdf/renderer";
+import { styles } from "./styles";
+
+type Props = LunaticComponentProps<"Radio">;
+
+export function Radio({ interpret, label, response, options }: Props) {
+ const value = interpret(response.name);
+ const selectedOption = options.find((o) => o.value === value);
+
+ return (
+
+
+ {value} -{" "}
+ {selectedOption
+ ? interpret(selectedOption.label)
+ : "Aucune option sélectionnée"}
+
+
+ );
+}
diff --git a/src/components/RosterForLoop.tsx b/src/components/RosterForLoop.tsx
new file mode 100644
index 0000000..5a1e044
--- /dev/null
+++ b/src/components/RosterForLoop.tsx
@@ -0,0 +1,46 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { decorateInterpretIteration } from "../utils/vtl";
+import { LunaticComponent } from "./LunaticComponent";
+import { Table, TR as PDFTr, TD as PDFTd } from "@ag-media/react-pdf-table";
+
+type Props = LunaticComponentProps<"RosterForLoop">;
+
+export function RosterForLoop({ interpret, label, components }: Props) {
+ // There is no subcomponents for this roster for loop
+ if (components.length === 0) {
+ return null;
+ }
+ const firstComponent = components.filter((c) => "response" in c).at(0);
+ if (!firstComponent) {
+ return "Cannot find a component with a variable inside this RosterForLoop";
+ }
+ const firstComponentValue = interpret(firstComponent.response.name);
+ if (!Array.isArray(firstComponentValue)) {
+ return "Expected an array for the value of the first component";
+ }
+ const iterations = firstComponentValue.length;
+ return (
+
+
+ {Array.from({ length: iterations }).map((_, k) => {
+ const interpretAtIteration = decorateInterpretIteration(interpret, [
+ k,
+ ]);
+ return (
+
+ {components.map((component, j) => (
+
+
+
+ ))}
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/Sequence.tsx b/src/components/Sequence.tsx
new file mode 100644
index 0000000..18d7375
--- /dev/null
+++ b/src/components/Sequence.tsx
@@ -0,0 +1,20 @@
+import type { LunaticComponentProps } from "../types";
+import { Text, View } from "@react-pdf/renderer";
+import { styles } from "./styles";
+import type { PropsWithChildren } from "react";
+
+type Props = PropsWithChildren<
+ LunaticComponentProps<"Sequence" | "Subsequence">
+>;
+
+export function Sequence({ interpret, label, componentType, children }: Props) {
+ const text = interpret(label);
+ const textStyle = componentType === "Sequence" ? styles.h1 : styles.h2;
+
+ return (
+
+ {text}
+ {children}
+
+ );
+}
diff --git a/src/components/Table.tsx b/src/components/Table.tsx
new file mode 100644
index 0000000..a2a427a
--- /dev/null
+++ b/src/components/Table.tsx
@@ -0,0 +1,40 @@
+import type { LunaticComponentProps } from "../types";
+import { ValueWithLabel } from "./ValueWithLabel";
+import { ErrorBoundary } from "react-error-boundary";
+import { LunaticComponent } from "./LunaticComponent";
+
+import {
+ Table as PDFTable,
+ TR as PDFTr,
+ TD as PDFTd,
+} from "@ag-media/react-pdf-table";
+import { Text } from "@react-pdf/renderer";
+import { styles } from "./styles";
+type Props = LunaticComponentProps<"Table">;
+
+export function Table({ interpret, label, body }: Props) {
+ return (
+
+
+ {body.map((row, y) => (
+
+ {row.map((col, x) => (
+
+ {"componentType" in col ? (
+ Error {col.componentType}}
+ key={x}
+ >
+
+
+ ) : (
+ {interpret(col.label)}
+ )}
+
+ ))}
+
+ ))}
+
+
+ );
+}
diff --git a/src/components/ValueWithLabel.tsx b/src/components/ValueWithLabel.tsx
new file mode 100644
index 0000000..c29cd4b
--- /dev/null
+++ b/src/components/ValueWithLabel.tsx
@@ -0,0 +1,28 @@
+import type { PropsWithChildren, ReactNode } from "react";
+import { Text, View } from "@react-pdf/renderer";
+import { depth, styles } from "./styles";
+
+type Props = PropsWithChildren<{
+ label: ReactNode;
+}>;
+export function ValueWithLabel({ label, children }: Props) {
+ if (!label) {
+ return children;
+ }
+ if (depth.current === 2) {
+ return (
+
+
+ {label}
+ {children}
+
+
+ );
+ }
+ return (
+
+ {label}
+ {children}
+
+ );
+}
diff --git a/src/components/style.ts b/src/components/style.ts
deleted file mode 100644
index 51fb0d8..0000000
--- a/src/components/style.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import type { Style } from '@react-pdf/stylesheet';
-
-const rem = (v: number = 1) => Math.round(v * 16);
-
-const colors = {
- foreground: '#0a0a0a',
- muted: '#737373',
- border: '#e5e5e5',
-};
-
-export const pdfStyles = {
- page: {
- paddingVertical: rem(),
- paddingHorizontal: rem(2),
-
- // fontFamily: 'Geist',
- },
- title: {
- color: colors.foreground,
- fontWeight: 'bold', fontSize: rem(3),
- textAlign: 'center'
- },
-
- h1: {
- color: colors.foreground,
- fontWeight: 'semibold',
- fontSize: rem(1.5),
- lineHeight: 1.3,
- marginTop: rem(2),
- marginBottom: rem(1),
- },
- h2: {
- color: colors.foreground,
- fontWeight: 'semibold',
- fontSize: rem(1.25),
- marginBottom: rem(1),
- },
- h3: {
- color: colors.foreground,
- fontWeight: 'semibold',
- fontSize: rem(1.15),
- marginTop: rem(1.2),
- marginBottom: rem(1),
- },
- question: {
- marginBottom: rem(0.5),
- },
- sequence: {
- paddingLeft: rem(1),
- borderLeftWidth: 1,
- borderLeftStyle: 'solid',
- borderLeftColor: colors.border,
- marginBottom: rem(1),
- },
- answer: {
- color: colors.muted,
- fontSize: rem(0.75),
- lineHeight: 1.25,
- },
- label: {
- color: colors.foreground,
- fontWeight: 'semibold',
- fontSize: rem(0.75),
- lineHeight: 1.2,
- marginBottom: rem(0.25),
- },
- error: {
- color: 'red',
- },
- td: {
- padding: rem(0.2),
- },
- table: {
- marginBottom: rem(1),
- },
-} as Record;
\ No newline at end of file
diff --git a/src/components/styles.ts b/src/components/styles.ts
new file mode 100644
index 0000000..1fcf83f
--- /dev/null
+++ b/src/components/styles.ts
@@ -0,0 +1,71 @@
+import type { Style } from '@react-pdf/stylesheet';
+
+const colors = {
+ foreground: '#0a0a0a',
+ muted: '#737373',
+ border: '#e5e5e5',
+};
+
+const rem = (v: number = 1) => Math.round(v * 16);
+
+export const depth = { current: 1 as 1 | 2 };
+
+export const styles = {
+ page: {
+ paddingVertical: rem(),
+ paddingHorizontal: rem(2),
+ // fontFamily: 'Geist',
+ },
+ h1: {
+ color: colors.foreground,
+ fontWeight: 'semibold',
+ fontSize: rem(1.5),
+ lineHeight: 1.3,
+ marginTop: rem(2),
+ marginBottom: rem(1),
+ },
+ h2: {
+ color: colors.foreground,
+ fontWeight: 'semibold',
+ fontSize: rem(1.25),
+ marginBottom: rem(1),
+ },
+ h3: {
+ color: colors.foreground,
+ fontWeight: 'semibold',
+ fontSize: rem(1.15),
+ marginTop: rem(1.2),
+ marginBottom: rem(1),
+ },
+ question: {
+ marginBottom: rem(0.5),
+ },
+ sequence: {
+ paddingLeft: rem(1),
+ borderLeftWidth: 1,
+ borderLeftStyle: 'solid',
+ borderLeftColor: colors.border,
+ marginBottom: rem(1),
+ },
+ answer: {
+ color: colors.muted,
+ fontSize: rem(0.75),
+ lineHeight: 1.25,
+ },
+ label: {
+ color: colors.foreground,
+ fontWeight: 'semibold',
+ fontSize: rem(0.75),
+ lineHeight: 1.2,
+ marginBottom: rem(0.25),
+ },
+ error: {
+ color: 'red',
+ },
+ td: {
+ padding: rem(0.2),
+ },
+ table: {
+ marginBottom: rem(1),
+ },
+} as Record;
diff --git a/src/controllers/pdf.controller.tsx b/src/controllers/pdf.controller.tsx
index 1222180..8c49b6e 100644
--- a/src/controllers/pdf.controller.tsx
+++ b/src/controllers/pdf.controller.tsx
@@ -1,23 +1,23 @@
import { renderToStream } from "@react-pdf/renderer";
import { Request, Response } from "express";
-import { DummyPdf } from "../components/DummyPdf";
+import type { LunaticData, LunaticSource } from "@inseefr/lunatic";
+import { LunaticQuestionnaire } from "../components/LunaticQuestionnaire";
export const generatePdf = async (req: Request, res: Response) => {
- const source = req.query.source as string;
- const data = req.body;
+ const data = req.body as { data: LunaticData };
+ let source: LunaticSource;
try {
- const responseSource = await fetch(source);
- const sourceData = await responseSource.json();
+ // TODO : prevent loading arbitrary code from the query (whitelist domains ?)
+ const responseSource = await fetch(req.query.source as string);
+ source = await responseSource.json();
console.log("data fetched from source");
- console.log(sourceData);
} catch (e) {
console.error(e);
- // return res.status(500).send("KO");
+ return res.status(500).send("Cannot fetch source");
}
-
const pdfResult = await renderToStream(
-
+ ,
);
res.setHeader("Content-Type", "application/pdf");
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..aea8d49
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,12 @@
+import type { LunaticComponentDefinition } from "@inseefr/lunatic";
+import type { ReactNode } from "react";
+
+export type LunaticComponentProps = {
+ interpret: (expr: VTLExpression | string | undefined) => ReactNode;
+} & LunaticComponentDefinition;
+
+export type VTLExpression = {
+ value: string;
+ bindingDependencies?: string[];
+ type: "VTL" | "VTL|MD" | "TXT";
+};
diff --git a/src/utils/lunatic.ts b/src/utils/lunatic.ts
new file mode 100644
index 0000000..232710b
--- /dev/null
+++ b/src/utils/lunatic.ts
@@ -0,0 +1,10 @@
+export function hasResponse(
+ component: unknown
+): component is { response: { name: string } } {
+ return (
+ !!component &&
+ typeof component === 'object' &&
+ 'response' in component &&
+ 'name' in (component.response as object)
+ );
+}
diff --git a/src/utils/number.ts b/src/utils/number.ts
new file mode 100644
index 0000000..6974325
--- /dev/null
+++ b/src/utils/number.ts
@@ -0,0 +1,13 @@
+export function forceInt(n: unknown, message: string): number {
+ if (typeof n === 'string') {
+ const casted = parseInt(n, 10);
+ if (Number.isNaN(casted)) {
+ throw new Error(message ?? `Cannot cast ${n} to int`);
+ }
+ return casted;
+ }
+ if (typeof n === 'number') {
+ return n;
+ }
+ throw new Error(message ?? `Cannot cast ${typeof n} to int`);
+}
diff --git a/src/utils/vtl.ts b/src/utils/vtl.ts
new file mode 100644
index 0000000..bf54b6e
--- /dev/null
+++ b/src/utils/vtl.ts
@@ -0,0 +1,32 @@
+import type { LunaticVariablesStore } from "@inseefr/lunatic";
+import type { ReactNode } from "react";
+import type { VTLExpression } from "../types";
+
+export type Interpreter = ReturnType;
+
+/**
+ * Generate an interpret function that will execute VTL expression
+ */
+export function makeInterpret(store: LunaticVariablesStore) {
+ return (expr: VTLExpression | string | undefined, iteration?: number[]) => {
+ if (!expr) {
+ return null;
+ }
+ if (typeof expr === "string") {
+ return store.run(expr, { iteration }) as ReactNode;
+ }
+ return store.run(expr.value, { iteration }) as ReactNode;
+ };
+}
+
+/**
+ * Decorate the interpet function to automatically pass the iteration
+ */
+export function decorateInterpretIteration(
+ interpreter: Interpreter,
+ iteration: number[],
+) {
+ return (...args: Parameters) => {
+ return interpreter(args[0], args[1] ?? iteration);
+ };
+}