diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 6a20bda1..06cbb6e7 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -46,8 +46,9 @@ "form-data": "^4.0.0", "hotkeys-js": "^3.11.2", "html-to-image": "^1.11.11", - "html2pdf.js": "^0.10.2", "js-yaml": "^4.1.0", + "jspdf": "^2.5.1", + "jspdf-autotable": "^3.8.2", "lodash": "^4.17.21", "openai-edge": "^1.2.2", "papaparse": "^5.4.1", diff --git a/apps/dashboard/src/lib/components/Course/components/Navigation/NavIcons.svelte b/apps/dashboard/src/lib/components/Course/components/Navigation/NavIcons.svelte index aab951ff..34e06f0e 100644 --- a/apps/dashboard/src/lib/components/Course/components/Navigation/NavIcons.svelte +++ b/apps/dashboard/src/lib/components/Course/components/Navigation/NavIcons.svelte @@ -17,7 +17,7 @@ {#if name === NAV_IDS.SECTION} {:else if name === NAV_IDS.NEWS_FEED} - + {:else if name === NAV_IDS.LESSONS} {:else if name === NAV_IDS.ATTENDANCE} diff --git a/apps/dashboard/src/routes/courses/[id]/marks/+page.svelte b/apps/dashboard/src/routes/courses/[id]/marks/+page.svelte index 8f01a89a..d1f0d1f1 100644 --- a/apps/dashboard/src/routes/courses/[id]/marks/+page.svelte +++ b/apps/dashboard/src/routes/courses/[id]/marks/+page.svelte @@ -2,7 +2,6 @@ import { goto } from '$app/navigation'; import AudioConsoleIcon from 'carbon-icons-svelte/lib/AudioConsole.svelte'; import Papa from 'papaparse'; - import html2pdf from 'html2pdf.js'; import { OverflowMenu, OverflowMenuItem, Loading } from 'carbon-components-svelte'; import Download from 'carbon-icons-svelte/lib/Download.svelte'; import CourseContainer from '$lib/components/CourseContainer/index.svelte'; @@ -25,6 +24,8 @@ import { currentOrg } from '$lib/utils/store/org'; import type { CurrentOrg } from '$lib/utils/types/org'; import type { GroupPerson } from '$lib/utils/types'; + import jsPDF from 'jspdf'; + import autoTable from 'jspdf-autotable'; export let data; @@ -140,36 +141,70 @@ isDownloading = false; }; - const downloadPDF = () => { + function downloadPDF() { isDownloading = true; - const element = document.getElementById('tableContainer'); - if (!element) { - console.error('Table container not found'); - return; - } - - const options = { - margin: 0.5, - filename: `${$course?.title}-marks.pdf`, - image: { type: 'jpeg', quality: 0.98 }, - html2canvas: { scale: 2 }, - jsPDF: { unit: 'in', format: 'a4', orientation: 'portrait' } - }; - - // Start the PDF generation - html2pdf() - .from(element) - .set(options) - .save() - .then(() => { - isDownloading = false; - }) - .catch((error) => { - console.error('Error generating PDF:', error); - isDownloading = false; + try { + const doc = new jsPDF({ + orientation: 'landscape' }); - }; + + // Construct Headers + const head = [['Student']]; // Starting with 'Student' as the first header + $lessons.forEach((lesson, lessonIndex) => { + if (lessonMapping[lesson.id]) { + Object.values(lessonMapping[lesson.id]).forEach((exercise) => { + head[0].push(`${getLectureNo(lessonIndex + 1)} - ${exercise.title} (${lesson.title})`); + }); + } + }); + head[0].push('Total'); // Add 'Total' as the last header + + // Construct Rows + const body = students.map((student) => { + const row: string[] = []; + row.push(student?.profile?.fullname ?? ''); // Student name + + $lessons.forEach((lesson) => { + if (lessonMapping[lesson.id]) { + Object.keys(lessonMapping[lesson.id]).forEach((exerciseId) => { + const mark: string = studentMarksByExerciseId?.[student.id]?.[exerciseId] || '-'; + row.push(mark); + }); + } + }); + + // Calculate total + const total = '' + calculateStudentTotal(studentMarksByExerciseId[student.id]); + row.push(total); + + return row; + }); + + // Generate the table in PDF + autoTable(doc, { + head, + body, + startY: 20, + styles: { fontSize: 8 }, + headStyles: { fillColor: [22, 160, 133] }, + footStyles: { fillColor: [22, 160, 133] }, + didDrawPage: function (data) { + // Header + doc.setFontSize(14); + doc.setTextColor(40); + doc.text(`${$course?.title} - Marks`, data.settings.margin.left, 10); + } + }); + + // Save the PDF + doc.save(`${$course?.title}-marks.pdf`); + } catch (error) { + console.error('Error generating PDF:', error); + } finally { + isDownloading = false; + } + } $: students = $globalStore.isStudent ? $group.people.filter((person) => !!person.profile && person.profile.id === $profile.id) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87486f77..596d3f02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -243,12 +243,15 @@ importers: html-to-image: specifier: ^1.11.11 version: 1.11.11 - html2pdf.js: - specifier: ^0.10.2 - version: 0.10.2 js-yaml: specifier: ^4.1.0 version: 4.1.0 + jspdf: + specifier: ^2.5.1 + version: 2.5.1 + jspdf-autotable: + specifier: ^3.8.2 + version: 3.8.2(jspdf@2.5.1) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -1640,7 +1643,7 @@ packages: '@babel/traverse': 7.23.4 '@babel/types': 7.23.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1663,7 +1666,7 @@ packages: '@babel/traverse': 7.23.4 '@babel/types': 7.23.4 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1686,7 +1689,7 @@ packages: '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1820,7 +1823,7 @@ packages: '@babel/core': 7.22.9 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -3140,7 +3143,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.4 '@babel/types': 7.23.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3158,7 +3161,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3517,7 +3520,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.23.0 ignore: 5.3.0 @@ -3587,7 +3590,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -4349,8 +4352,8 @@ packages: typescript: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) - extract-zip: 2.0.1(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) + extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.3.0 tar-fs: 3.0.4 @@ -5863,7 +5866,7 @@ packages: vite: ^4.0.0 dependencies: '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.1.2)(vite@4.4.8) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 svelte: 4.1.2 vite: 4.4.8(@types/node@18.11.10)(sass@1.64.2) transitivePeerDependencies: @@ -5877,7 +5880,7 @@ packages: vite: ^4.0.0 dependencies: '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.1.2)(vite@4.4.8) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 @@ -6296,7 +6299,7 @@ packages: '@typescript-eslint/type-utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.0 @@ -6322,7 +6325,7 @@ packages: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.57.0 typescript: 5.3.2 transitivePeerDependencies: @@ -6357,7 +6360,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) '@typescript-eslint/utils': 6.12.0(eslint@8.57.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.57.0 ts-api-utils: 1.0.3(typescript@5.3.2) typescript: 5.3.2 @@ -6386,7 +6389,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -6407,7 +6410,7 @@ packages: dependencies: '@typescript-eslint/types': 6.12.0 '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -6682,7 +6685,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false @@ -6691,7 +6694,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -7287,7 +7290,9 @@ packages: /base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} + requiresBuild: true dev: false + optional: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -8280,9 +8285,11 @@ packages: /css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + requiresBuild: true dependencies: utrie: 1.0.2 dev: false + optional: true /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} @@ -8741,6 +8748,17 @@ packages: supports-color: 8.1.1 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8752,7 +8770,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 5.5.0 - dev: false /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -8765,6 +8782,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /debug@4.3.6: resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} @@ -9306,10 +9324,6 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: false - /es6-symbol@3.1.3: resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: @@ -9438,7 +9452,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 eslint: 8.57.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) @@ -9635,7 +9649,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 8.57.0 eslint-compat-utils: 0.1.2(eslint@8.57.0) esutils: 2.0.3 @@ -9747,7 +9761,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -10089,6 +10103,20 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: false + /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -10101,6 +10129,7 @@ packages: '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color + dev: true /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} @@ -10477,7 +10506,7 @@ packages: dependencies: basic-ftp: 5.0.4 data-uri-to-buffer: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -10722,6 +10751,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} @@ -10953,18 +10983,12 @@ packages: /html2canvas@1.4.1: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} + requiresBuild: true dependencies: css-line-break: 2.1.0 text-segmentation: 1.0.3 dev: false - - /html2pdf.js@0.10.2: - resolution: {integrity: sha512-WyHVeMb18Bp7vYTmBv1GVsThH//K7SRfHdSdhHPkl4JvyQarNQXnailkYn0QUbRRmnN5rdbbmSIGEsPZtzPy2Q==} - dependencies: - es6-promise: 4.2.8 - html2canvas: 1.4.1 - jspdf: 2.5.1 - dev: false + optional: true /htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} @@ -10991,7 +11015,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -11010,7 +11034,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false @@ -11020,7 +11044,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -11155,7 +11179,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -11569,7 +11593,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -12143,6 +12167,14 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /jspdf-autotable@3.8.2(jspdf@2.5.1): + resolution: {integrity: sha512-zW1ix99/mtR4MbIni7IqvrpfHmuTaICl6iv6wqjRN86Nxtwaw/QtOeDbpXqYSzHIJK9JvgtLM283sc5x+ipkJg==} + peerDependencies: + jspdf: ^2.5.1 + dependencies: + jspdf: 2.5.1 + dev: false + /jspdf@2.5.1: resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==} dependencies: @@ -13194,7 +13226,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -14005,7 +14037,7 @@ packages: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) get-uri: 6.0.3 http-proxy-agent: 7.0.1 https-proxy-agent: 7.0.4 @@ -14163,6 +14195,7 @@ packages: /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + requiresBuild: true /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} @@ -14579,7 +14612,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) http-proxy-agent: 7.0.1 https-proxy-agent: 7.0.4 lru-cache: 7.18.3 @@ -14633,7 +14666,7 @@ packages: '@puppeteer/browsers': 1.4.6(typescript@5.3.2) chromium-bidi: 0.4.16(devtools-protocol@0.0.1147663) cross-fetch: 4.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) devtools-protocol: 0.0.1147663 typescript: 5.3.2 ws: 8.13.0 @@ -15505,7 +15538,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) socks: 2.7.3 transitivePeerDependencies: - supports-color @@ -15985,6 +16018,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -16434,9 +16468,11 @@ packages: /text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + requiresBuild: true dependencies: utrie: 1.0.2 dev: false + optional: true /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -17199,9 +17235,11 @@ packages: /utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + requiresBuild: true dependencies: base64-arraybuffer: 1.0.2 dev: false + optional: true /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}