diff --git a/client-tauri/src/App.tsx b/client-tauri/src/App.tsx index 338324903..ce88cddae 100644 --- a/client-tauri/src/App.tsx +++ b/client-tauri/src/App.tsx @@ -12,22 +12,16 @@ import NavBar from "./components/NavBar"; import "bootstrap/dist/css/bootstrap.min.css"; import { Container } from "react-bootstrap"; -import i18n from "i18next"; import { useTranslation, initReactI18next } from "react-i18next"; import LanguageDetector from "i18next-browser-languagedetector"; -import ar from "./locales/ar.json"; -import en from "./locales/en.json"; + +import i18n, { options } from "@stirling-pdf/shared-operations/src/i18next.config"; + +i18n.use(LanguageDetector) + .use(initReactI18next).init(options) // passes i18n down to react-i18next import "./general.css"; -i18n - .use(LanguageDetector) - .use(initReactI18next) // passes i18n down to react-i18next - .init({ - fallbackLng: "en", - resources: { ar,en }, - }); - export default function App() { return ( diff --git a/client-tauri/src/components/toolbar/LanguagePicker.tsx b/client-tauri/src/components/toolbar/LanguagePicker.tsx index 16b5bb866..8680450ab 100644 --- a/client-tauri/src/components/toolbar/LanguagePicker.tsx +++ b/client-tauri/src/components/toolbar/LanguagePicker.tsx @@ -7,6 +7,7 @@ function generateSublist() { const { i18n } = useTranslation(); const out: JSX.Element[] = []; const languages = i18n.options.resources; + for (const key in languages) { const lang: any = languages[key].translation; const staticKey = key; diff --git a/client-tauri/src/locales/ar.json b/client-tauri/src/locales/ar.json deleted file mode 100644 index c18135482..000000000 --- a/client-tauri/src/locales/ar.json +++ /dev/null @@ -1,853 +0,0 @@ -{ - "translation": { - "language": { - "name":"العربية", - "flag": "🇸🇦", - "direction": "rtl" - }, - "pdfPrompt": "اختر PDF", - "multiPdfPrompt": "اختر ملفات PDF (2+)", - "multiPdfDropPrompt": "حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها", - "imgPrompt": "اختر صورة", - "genericSubmit": "إرسال", - "processTimeWarning": "تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف", - "pageOrderPrompt": "ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):", - "goToPage": "اذهب", - "true": "\u0635\u062D\u064A\u062D", - "false": "\u062E\u0637\u0623", - "unknown": "\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641", - "save": "\u062D\u0641\u0638", - "close": "\u0625\u063A\u0644\u0627\u0642", - "filesSelected": "الملفات المحددة", - "noFavourites": "لم تتم إضافة أي مفضلات", - "bored": "الانتظار بالملل؟", - "alphabet": "\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629", - "downloadPdf": "تنزيل PDF", - "text": "نص", - "font": "الخط", - "selectFillter": "- حدد -", - "pageNum": "رقم الصفحة", - "sizes": { - "small": "Small", - "medium": "Medium", - "large": "Large", - "x-large": "X-Large" - }, - "error": { - "pdfPassword": "The PDF Document is passworded and either the password was not provided or was incorrect" - }, - "delete": "Delete", - "username": "Username", - "password": "Password", - "welcome": "Welcome", - "property": "Property", - "black": "Black", - "white": "White", - "red": "Red", - "green": "Green", - "blue": "Blue", - "custom": "Custom...", - "changedCredsMessage": "Credentials changed!", - "notAuthenticatedMessage": "User not authenticated.", - "userNotFoundMessage": "User not found.", - "incorrectPasswordMessage": "Current password is incorrect.", - "usernameExistsMessage": "New Username already exists.", - "navbar": { - "convert": "تحويل", - "security": "الأمان", - "other": "أخرى", - "darkmode": "الوضع الداكن", - "pageOps": "عمليات الصفحة", - "settings": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A" - }, - "settings": { - "title": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A", - "update": "\u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0645\u062A\u0627\u062D", - "appVersion": "\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u062A\u0637\u0628\u064A\u0642:", - "downloadOption": { - "1": "\u0641\u062A\u062D \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0629", - "2": "\u0641\u062A\u062D \u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629", - "3": "\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0645\u0644\u0641", - "title": "\u062A\u062D\u062F\u064A\u062F \u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 (\u0644\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0630\u0627\u062A \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0648\u0627\u062D\u062F \u063A\u064A\u0631 \u0627\u0644\u0645\u0636\u063A\u0648\u0637):" - }, - "zipThreshold": "\u0645\u0644\u0641\u0627\u062A \u0645\u0636\u063A\u0648\u0637\u0629 \u0639\u0646\u062F \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u0646\u0632\u064A\u0644\u0647\u0627", - "signOut": "Sign Out", - "accountSettings": "Account Settings" - }, - "changeCreds": { - "title": "Change Credentials", - "header": "Update Your Account Details", - "changeUserAndPassword": "You are using default login credentials. Please enter a new password (and username if wanted)", - "newUsername": "New Username", - "oldPassword": "Current Password", - "newPassword": "New Password", - "confirmNewPassword": "Confirm New Password", - "submit": "Submit Changes" - }, - "account": { - "title": "Account Settings", - "accountSettings": "Account Settings", - "adminSettings": "Admin Settings - View and Add Users", - "userControlSettings": "User Control Settings", - "changeUsername": "Change Username", - "password": "Confirmation Password", - "oldPassword": "Old password", - "newPassword": "New Password", - "changePassword": "Change Password", - "confirmNewPassword": "Confirm New Password", - "signOut": "Sign Out", - "yourApiKey": "Your API Key", - "syncTitle": "Sync browser settings with Account", - "settingsCompare": "Settings Comparison:", - "property": "Property", - "webBrowserSettings": "Web Browser Setting", - "syncToBrowser": "Sync Account -> Browser", - "syncToAccount": "Sync Account <- Browser" - }, - "adminUserSettings": { - "title": "User Control Settings", - "header": "Admin User Control Settings", - "admin": "Admin", - "user": "User", - "addUser": "Add New User", - "roles": "Roles", - "role": "Role", - "actions": "Actions", - "apiUser": "Limited API User", - "webOnlyUser": "Web Only User", - "forceChange": "Force user to change username/password on login", - "submit": "Save User" - }, - "home": { - "desc": "متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك.", - "searchBar": "Search for features...", - "viewPdf": { - "title": "View PDF", - "desc": "View, annotate, add text or images" - }, - "multiTool": { - "title": "أداة متعددة PDF", - "desc": "دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها" - }, - "merge": { - "title": "دمج ملفات", - "desc": "دمج ملفات PDF متعددة في ملف واحد بسهولة." - }, - "split": { - "title": "انقسام ملفات", - "desc": "تقسيم ملفات PDF إلى مستندات متعددة" - }, - "rotate": { - "title": "تدوير ملفات", - "desc": "قم بتدوير ملفات PDF الخاصة بك بسهولة." - }, - "imageToPdf": { - "title": "صورة إلى PDF", - "desc": "تحويل الصور (PNG ، JPEG ، GIF) إلى PDF." - }, - "pdfToImage": { - "title": "تحويل PDF إلى صورة", - "desc": "تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF)" - }, - "pdfOrganiser": { - "title": "منظم", - "desc": "إزالة / إعادة ترتيب الصفحات بأي ترتيب" - }, - "addImage": { - "title": "إضافة صورة إلى ملف PDF", - "desc": "إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم)" - }, - "watermark": { - "title": "إضافة علامة مائية", - "desc": "أضف علامة مائية مخصصة إلى مستند PDF الخاص بك." - }, - "permissions": { - "title": "تغيير الأذونات", - "desc": "قم بتغيير أذونات مستند PDF الخاص بك" - }, - "removePages": { - "title": "إزالة الصفحات", - "desc": "حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك." - }, - "addPassword": { - "title": "إضافة كلمة مرور", - "desc": "تشفير مستند PDF الخاص بك بكلمة مرور." - }, - "removePassword": { - "title": "إزالة كلمة المرور", - "desc": "إزالة الحماية بكلمة مرور من مستند PDF الخاص بك." - }, - "compressPdfs": { - "title": "ضغط ملفات", - "desc": "ضغط ملفات PDF لتقليل حجم الملف." - }, - "changeMetadata": { - "title": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629", - "desc": "\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF" - }, - "fileToPDF": { - "title": "\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF", - "desc": "\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F)" - }, - "ocr": { - "title": "\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A", - "desc": "\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635" - }, - "extractImages": { - "title": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631", - "desc": "\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A" - }, - "pdfToPDFA": { - "title": "\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A", - "desc": "\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649" - }, - "PDFToWord": { - "title": "تحويل PDF إلى Word", - "desc": "تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT)" - }, - "PDFToPresentation": { - "title": "PDF للعرض التقديمي", - "desc": "تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP)" - }, - "PDFToText": { - "title": "تحويل PDF إلى نص / RTF", - "desc": "تحويل PDF إلى تنسيق نص أو RTF" - }, - "PDFToHTML": { - "title": "تحويل PDF إلى HTML", - "desc": "تحويل PDF إلى تنسيق HTML" - }, - "PDFToXML": { - "title": "تحويل PDF إلى XML", - "desc": "تحويل PDF إلى تنسيق XML" - }, - "ScannerImageSplit": { - "title": "كشف / انقسام الصور الممسوحة ضوئيًا", - "desc": "تقسيم عدة صور من داخل صورة / ملف PDF" - }, - "sign": { - "title": "تسجيل الدخول", - "desc": "إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة" - }, - "flatten": { - "title": "تسطيح", - "desc": "قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF" - }, - "repair": { - "title": "إصلاح", - "desc": "يحاول إصلاح ملف PDF تالف / معطل" - }, - "removeBlanks": { - "title": "إزالة الصفحات الفارغة", - "desc": "يكتشف ويزيل الصفحات الفارغة من المستند" - }, - "compare": { - "title": "قارن", - "desc": "يقارن ويظهر الاختلافات بين 2 من مستندات PDF" - }, - "certSign": { - "title": "Sign with Certificate", - "desc": "Signs a PDF with a Certificate/Key (PEM/P12)" - }, - "pageLayout": { - "title": "Multi-Page Layout", - "desc": "Merge multiple pages of a PDF document into a single page" - }, - "scalePages": { - "title": "Adjust page size/scale", - "desc": "Change the size/scale of page and/or its contents." - }, - "pipeline": { - "title": "Pipeline (Advanced)", - "desc": "Run multiple actions on PDFs by defining pipeline scripts" - }, - "add-page-numbers": { - "title": "Add Page Numbers", - "desc": "Add Page numbers throughout a document in a set location" - }, - "auto-rename": { - "title": "Auto Rename PDF File", - "desc": "Auto renames a PDF file based on its detected header" - }, - "adjust-contrast": { - "title": "Adjust Colors/Contrast", - "desc": "Adjust Contrast, Saturation and Brightness of a PDF" - }, - "crop": { - "title": "Crop PDF", - "desc": "Crop a PDF to reduce its size (maintains text!)" - }, - "autoSplitPDF": { - "title": "Auto Split Pages", - "desc": "Auto Split Scanned PDF with physical scanned page splitter QR Code" - }, - "sanitizePdf": { - "title": "Sanitize", - "desc": "Remove scripts and other elements from PDF files" - }, - "URLToPDF": { - "title": "URL/Website To PDF", - "desc": "Converts any http(s)URL to PDF" - }, - "HTMLToPDF": { - "title": "HTML to PDF", - "desc": "Converts any HTML file or zip to PDF" - }, - "MarkdownToPDF": { - "title": "Markdown to PDF", - "desc": "Converts any Markdown file to PDF" - }, - "getPdfInfo": { - "title": "Get ALL Info on PDF", - "desc": "Grabs any and all information possible on PDFs" - }, - "extractPage": { - "title": "Extract page(s)", - "desc": "Extracts select pages from PDF" - }, - "PdfToSinglePage": { - "title": "PDF to Single Large Page", - "desc": "Merges all PDF pages into one large single page" - }, - "showJS": { - "title": "Show Javascript", - "desc": "Searches and displays any JS injected into a PDF" - }, - "autoRedact": { - "title": "Auto Redact", - "desc": "Auto Redacts(Blacks out) text in a PDF based on input text" - } - }, - "viewPdf": { - "tags": "view,read,annotate,text,image", - "title": "View PDF", - "header": "View PDF" - }, - "multiTool": { - "tags": "Multi Tool,Multi operation,UI,click drag,front end,client side", - "title": "أداة متعددة PDF", - "header": "أداة متعددة PDF" - }, - "merge": { - "tags": "merge,Page operations,Back end,server side", - "title": "دمج", - "header": "دمج ملفات PDF متعددة (2+)", - "sortByName": "Sort by name", - "sortByDate": "Sort by date", - "submit": "دمج" - }, - "split": { - "tags": "Page operations,divide,Multi Page,cut,server side", - "title": "انقسام PDF", - "header": "تقسيم PDF", - "desc": { - "1": "الأرقام التي تحددها هي رقم الصفحة التي تريد تقسيمها", - "2": "على هذا النحو ، سيؤدي تحديد 1،3،7-8 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:", - "3": "المستند رقم 1: الصفحة 1", - "4": "المستند رقم 2: الصفحتان 2 و 3", - "5": "المستند رقم 3: الصفحة 4 و 5 و 6", - "6": "المستند رقم 4: الصفحة 7", - "7": "المستند رقم 5: الصفحة 8", - "8": "المستند رقم 6: الصفحتان 9 و 10" - }, - "splitPages": "أدخل الصفحات المراد تقسيمها:", - "submit": "Split" - }, - "rotate": { - "tags": "server side", - "title": "تدوير PDF", - "header": "تدوير PDF", - "selectAngle": "حدد زاوية الدوران (بمضاعفات 90 درجة):", - "submit": "استدارة" - }, - "imageToPdf": { - "tags": "conversion,img,jpg,picture,photo" - }, - "pdfToImage": { - "tags": "conversion,img,jpg,picture,photo", - "title": "تحويل PDF إلى صورة", - "header": "تحويل PDF إلى صورة", - "selectText": "تنسيق الصورة", - "singleOrMultiple": "\u0646\u0648\u0639 \u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0635\u0648\u0631\u0629", - "single": "\u0635\u0648\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0643\u0628\u064A\u0631\u0629", - "multi": "\u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629", - "colorType": "\u0646\u0648\u0639 \u0627\u0644\u0644\u0648\u0646", - "color": "\u0627\u0644\u0644\u0648\u0646", - "grey": "\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A", - "blackwhite": "\u0623\u0628\u064A\u0636 \u0648\u0623\u0633\u0648\u062F (\u0642\u062F \u064A\u0641\u0642\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A!)", - "submit": "تحول" - }, - "pdfOrganiser": { - "tags": "duplex,even,odd,sort,move", - "title": "منظم الصفحة", - "header": "منظم صفحات PDF", - "submit": "إعادة ترتيب الصفحات" - }, - "addImage": { - "tags": "img,jpg,picture,photo", - "title": "إضافة صورة", - "header": "إضافة صورة إلى PDF", - "everyPage": "كل صفحة؟", - "upload": "إضافة صورة", - "submit": "إضافة صورة" - }, - "watermark": { - "tags": "Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo", - "title": "إضافة علامة مائية", - "header": "إضافة علامة مائية", - "selectText": { - "1": "حدد PDF لإضافة العلامة المائية إلى:", - "2": "نص العلامة المائية:", - "3": "حجم الخط:", - "4": "دوران (0-360):", - "5": "widthSpacer (مسافة بين كل علامة مائية أفقيًا):", - "6": "heightSpacer (مسافة بين كل علامة مائية عموديًا):", - "7": "\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A):", - "8": "Watermark Type:", - "9": "Watermark Image:" - }, - "submit": "إضافة علامة مائية" - }, - "permissions": { - "tags": "read,write,edit,print", - "title": "تغيير الأذونات", - "header": "تغيير الأذونات", - "warning": "تحذير من أن تكون هذه الأذونات غير قابلة للتغيير ، يوصى بتعيينها بكلمة مرور عبر صفحة إضافة كلمة المرور", - "selectText": { - "1": "حدد ملف PDF لتغيير الأذونات", - "2": "أذونات لتعيينها", - "3": "منع تجميع المستند", - "4": "منع استخراج المحتوى", - "5": "منع الاستخراج للوصول", - "6": "منع ملء النموذج", - "7": "منع التعديل", - "8": "منع تعديل التعليق التوضيحي", - "9": "منع الطباعة", - "10": "منع طباعة التنسيقات المختلفة" - }, - "submit": "تغيير" - }, - "removePages": { - "tags": "Remove pages,delete pages" - }, - "addPassword": { - "tags": "secure,security", - "title": "إضافة كلمة مرور", - "header": "إضافة كلمة مرور (تشفير)", - "selectText": { - "1": "حدد ملف PDF للتشفير", - "2": "كلمة المرور", - "3": "طول مفتاح التشفير", - "4": "القيم الأعلى تكون أقوى ، لكن القيم الأقل لها توافق أفضل.", - "5": "أذونات للتعيين", - "6": "منع تجميع المستند", - "7": "منع استخراج المحتوى", - "8": "منع الاستخراج للوصول", - "9": "منع ملء النموذج", - "10": "منع التعديل", - "11": "منع تعديل التعليقات التوضيحية", - "12": "منع الطباعة", - "13": "منع طباعة تنسيقات مختلفة", - "14": "Owner Password", - "15": "Restricts what can be done with the document once it is opened (Not supported by all readers)", - "16": "Restricts the opening of the document itself" - }, - "submit": "تشفير" - }, - "removePassword": { - "tags": "secure,Decrypt,security,unpassword,delete password", - "title": "إزالة كلمة المرور", - "header": "إزالة كلمة المرور (فك التشفير)", - "selectText": { - "1": "حدد PDF لفك التشفير", - "2": "كلمة المرور" - }, - "submit": "إزالة" - }, - "compressPdfs": { - "tags": "squish,small,tiny" - }, - "fileToPDF": { - "tags": "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint", - "title": "\u0645\u0644\u0641 \u0625\u0644\u0649 PDF", - "header": "\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u0625\u0644\u0649 PDF", - "credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u0644\u064A\u0628\u0631 \u0623\u0648\u0641\u064A\u0633 \u0648\u0623\u0648\u0646\u0648\u0643\u0648\u0646\u0641 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A.", - "supportedFileTypes": "\u064A\u062C\u0628 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u0645\u0627 \u064A\u0644\u064A \u0648\u0644\u0643\u0646 \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0645\u062D\u062F\u062B\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u0627\u0644\u062A\u0646\u0633\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u060C \u064A\u0631\u062C\u0649 \u0627\u0644\u0631\u062C\u0648\u0639 \u0625\u0644\u0649 \u0648\u062B\u0627\u0626\u0642 LibreOffice", - "submit": "\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 PDF" - }, - "ocr": { - "tags": "recognition,text,image,scan,read,identify,detection,editable", - "title": "\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A", - "header": "\u0645\u0633\u062D \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A / \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 (\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641)", - "selectText": { - "1": "\u062D\u062F\u062F \u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u062A\u064A \u0633\u064A\u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF (\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0647\u064A \u062A\u0644\u0643 \u0627\u0644\u062A\u064A \u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062D\u0627\u0644\u064A\u064B\u0627):", - "2": "\u0625\u0646\u062A\u0627\u062C \u0645\u0644\u0641 \u0646\u0635\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 OCR \u0628\u062C\u0627\u0646\u0628 \u0645\u0644\u0641 PDF \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0639\u062F\u0627\u062F\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 OCR", - "3": "\u062A\u0645 \u0645\u0633\u062D \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0635\u062D\u064A\u062D\u0629 \u0636\u0648\u0626\u064A\u064B\u0627 \u0628\u0632\u0627\u0648\u064A\u0629 \u0645\u0646\u062D\u0631\u0641\u0629 \u0639\u0646 \u0637\u0631\u064A\u0642 \u062A\u062F\u0648\u064A\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A \u0645\u0643\u0627\u0646\u0647\u0627", - "4": "\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629. (\u0644\u0627 \u064A\u0648\u062C\u062F \u062A\u063A\u064A\u064A\u0631 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C)", - "5": "\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u060C \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u060C \u0648\u064A\u062D\u0627\u0641\u0638 \u0639\u0644\u0649 \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C.", - "6": "\u064A\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 \u062A\u0641\u0627\u0639\u0644\u064A \u060C \u0641\u0642\u0637 \u0635\u0641\u062D\u0627\u062A OCRs \u0627\u0644\u062A\u064A \u0647\u064A \u0635\u0648\u0631", - "7": "\u0641\u0631\u0636 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u060C \u0633\u064A\u0624\u062F\u064A \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u0639\u0644\u0649 \u0643\u0644 \u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062C\u0645\u064A\u0639 \u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0635\u0644\u064A", - "8": "\u0639\u0627\u062F\u064A (\u062E\u0637\u0623 \u0625\u0630\u0627 \u0643\u0627\u0646 PDF \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635)", - "9": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629", - "10": "\u0648\u0636\u0639 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641", - "11": "إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل)", - "12": "نوع العرض (متقدم)" - }, - "help": "\u064A\u0631\u062C\u0649 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0647 \u0627\u0644\u0648\u062B\u0627\u0626\u0642 \u062D\u0648\u0644 \u0643\u064A\u0641\u064A\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0644\u0644\u063A\u0627\u062A \u0623\u062E\u0631\u0649 \u0648 / \u0623\u0648 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0644\u064A\u0633 \u0641\u064A \u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0621", - "credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0648 Tesseract \u0644 OCR.", - "submit": "\u0645\u0639\u0627\u0644\u062C\u0629 PDF \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 OCR" - }, - "extractImages": { - "tags": "picture,photo,save,archive,zip,capture,grab", - "title": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631", - "header": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631", - "selectText": "\u062D\u062F\u062F \u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u0635\u0648\u0631\u0629 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0633\u062A\u062E\u0631\u062C\u0629 \u0625\u0644\u0649", - "submit": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C" - }, - "pdfToPDFA": { - "tags": "archive,long-term,standard,conversion,storage,preservation", - "title": "PDF \u0625\u0644\u0649 PDF / A", - "header": "PDF \u0625\u0644\u0649 PDF / A", - "credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0644\u062A\u062D\u0648\u064A\u0644 PDF / A.", - "submit": "\u062A\u062D\u0648\u064A\u0644" - }, - "PDFToWord": { - "tags": "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile", - "title": "تحويل PDF إلى Word", - "header": "تحويل PDF إلى Word", - "selectText": { - "1": "تنسيق ملف الإخراج" - }, - "credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.", - "submit": "تحويل" - }, - "PDFToPresentation": { - "tags": "slides,show,office,microsoft", - "title": "PDF للعرض التقديمي", - "header": "PDF للعرض التقديمي", - "selectText": { - "1": "تنسيق ملف الإخراج" - }, - "credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملف.", - "submit": "تحويل" - }, - "PDFToText": { - "tags": "richformat,richtextformat,rich text format", - "title": "تحويل PDF إلى نص / RTF", - "header": "تحويل PDF إلى نص / RTF", - "selectText": { - "1": "تنسيق ملف الإخراج" - }, - "credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.", - "submit": "تحويل" - }, - "PDFToHTML": { - "tags": "web content,browser friendly", - "title": "PDF إلى HTML", - "header": "PDF إلى HTML", - "credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.", - "submit": "تحويل" - }, - "PDFToXML": { - "tags": "data-extraction,structured-content,interop,transformation,convert", - "title": "تحويل PDF إلى XML", - "header": "تحويل PDF إلى XML", - "credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.", - "submit": "تحويل" - }, - "ScannerImageSplit": { - "tags": "separate,auto-detect,scans,multi-photo,organize", - "selectText": { - "1": "عتبة الزاوية:", - "2": "تعيين الحد الأدنى للزاوية المطلقة المطلوبة لتدوير الصورة (افتراضي: 10).", - "3": "التسامح:", - "4": "يحدد نطاق تباين اللون حول لون الخلفية المقدر (الافتراضي: 30).", - "5": "أدنى مساحة:", - "6": "تعيين الحد الأدنى لمنطقة الصورة (الافتراضي: 10000).", - "7": "الحد الأدنى لمنطقة المحيط:", - "8": "تعيين الحد الأدنى لمنطقة المحيط للصورة", - "9": "حجم الحدود:", - "10": "يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1)." - } - }, - "sign": { - "tags": "authorize,initials,drawn-signature,text-sign,image-signature", - "title": "تسجيل الدخول", - "header": "توقيع ملفات PDF", - "upload": "تحميل الصورة", - "draw": "رسم التوقيع", - "text": "Text Input", - "clear": "واضح", - "add": "إضافة" - }, - "flatten": { - "tags": "static,deactivate,non-interactive,streamline", - "title": "تسطيح", - "header": "تسوية ملفات PDF", - "submit": "تسطيح" - }, - "repair": { - "tags": "fix,restore,correction,recover", - "title": "إصلاح", - "header": "إصلاح ملفات PDF", - "submit": "الإصلاح" - }, - "removeBlanks": { - "tags": "cleanup,streamline,non-content,organize", - "title": "إزالة الفراغات", - "header": "إزالة الصفحات الفارغة", - "threshold": "العتبة:", - "thresholdDesc": "الحد الفاصل لتحديد مدى بياض البكسل الأبيض", - "whitePercent": "نسبة الأبيض (٪):", - "whitePercentDesc": "النسبة المئوية للصفحة التي يجب أن تكون بيضاء لتتم إزالتها", - "submit": "إزالة الفراغات" - }, - "compare": { - "tags": "differentiate,contrast,changes,analysis", - "title": "يقارن", - "header": "قارن ملفات PDF", - "document": { - "1": "المستند 1", - "2": "المستند 2" - }, - "submit": "يقارن" - }, - "certSign": { - "tags": "authenticate,PEM,P12,official,encrypt", - "title": "توقيع الشهادة", - "header": "قم بتوقيع ملف PDF بشهادتك (العمل قيد التقدم)", - "selectPDF": "حدد ملف PDF للتوقيع:", - "selectKey": "حدد ملف المفتاح الخاص (تنسيق PKCS ", - "selectCert": "حدد ملف الشهادة الخاص بك (تنسيق X.509 ، يمكن أن يكون .pem أو .der):", - "selectP12": "حدد ملف تخزين المفاتيح PKCS ", - "certType": "نوع الشهادة", - "password": "أدخل ملف تخزين المفاتيح أو كلمة المرور الخاصة (إن وجدت):", - "showSig": "إظهار التوقيع", - "reason": "السبب", - "location": "الموقع", - "name": "الاسم", - "submit": "تسجيل PDF" - }, - "pageLayout": { - "tags": "merge,composite,single-view,organize", - "title": "Multi Page Layout", - "header": "Multi Page Layout", - "pagesPerSheet": "Pages per sheet:", - "addBorder": "Add Borders", - "submit": "Submit" - }, - "scalePages": { - "tags": "resize,modify,dimension,adapt", - "title": "Adjust page-scale", - "header": "Adjust page-scale", - "pageSize": "Size of a page of the document.", - "scaleFactor": "Zoom level (crop) of a page.", - "submit": "Submit" - }, - "pipeline": { - "tags": "automate,sequence,scripted,batch-process", - "title": "Pipeline" - }, - "add-page-numbers": { - "tags": "paginate,label,organize,index" - }, - "auto-rename": { - "tags": "auto-detect,header-based,organize,relabel", - "title": "Auto Rename", - "header": "Auto Rename PDF", - "submit": "Auto Rename" - }, - "adjust-contrast": { - "tags": "color-correction,tune,modify,enhance" - }, - "crop": { - "tags": "trim,shrink,edit,shape", - "title": "Crop", - "header": "Crop Image", - "submit": "Submit" - }, - "autoSplitPDF": { - "tags": "QR-based,separate,scan-segment,organize", - "title": "Auto Split PDF", - "header": "Auto Split PDF", - "description": "Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.", - "selectText": { - "1": "Print out some divider sheets from below (Black and white is fine).", - "2": "Scan all your documents at once by inserting the divider sheet between them.", - "3": "Upload the single large scanned PDF file and let Stirling PDF handle the rest.", - "4": "Divider pages are automatically detected and removed, guaranteeing a neat final document." - }, - "formPrompt": "Submit PDF containing Stirling-PDF Page dividers:", - "duplexMode": "Duplex Mode (Front and back scanning)", - "dividerDownload1": "Download 'Auto Splitter Divider (minimal).pdf'", - "dividerDownload2": "Download 'Auto Splitter Divider (with instructions).pdf'", - "submit": "Submit" - }, - "sanitizePdf": { - "tags": "clean,secure,safe,remove-threats" - }, - "URLToPDF": { - "tags": "web-capture,save-page,web-to-doc,archive", - "title": "URL To PDF", - "header": "URL To PDF", - "submit": "Convert", - "credit": "Uses WeasyPrint" - }, - "HTMLToPDF": { - "tags": "markup,web-content,transformation,convert", - "title": "HTML To PDF", - "header": "HTML To PDF", - "help": "Accepts HTML files and ZIPs containing html/css/images etc required", - "submit": "Convert", - "credit": "Uses WeasyPrint" - }, - "MarkdownToPDF": { - "tags": "markup,web-content,transformation,convert", - "title": "Markdown To PDF", - "header": "Markdown To PDF", - "submit": "Convert", - "help": "Work in progress", - "credit": "Uses WeasyPrint" - }, - "getPdfInfo": { - "tags": "infomation,data,stats,statistics", - "title": "Get Info on PDF", - "header": "Get Info on PDF", - "submit": "Get Info", - "downloadJson": "Download JSON" - }, - "extractPage": { - "tags": "extract" - }, - "PdfToSinglePage": { - "tags": "single page" - }, - "showJS": { - "tags": "JS", - "title": "Show Javascript", - "header": "Show Javascript", - "downloadJS": "Download Javascript", - "submit": "Show" - }, - "login": { - "title": "Sign in", - "signin": "Sign in", - "rememberme": "Remember me", - "invalid": "Invalid username or password.", - "locked": "Your account has been locked.", - "signinTitle": "Please sign in" - }, - "autoRedact": { - "title": "Auto Redact", - "header": "Auto Redact", - "colorLabel": "Colour", - "textsToRedactLabel": "Text to Redact (line-separated)", - "textsToRedactPlaceholder": "e.g. \\nConfidential \\nTop-Secret", - "useRegexLabel": "Use Regex", - "wholeWordSearchLabel": "Whole Word Search", - "customPaddingLabel": "Custom Extra Padding", - "convertPDFToImageLabel": "Convert PDF to PDF-Image (Used to remove text behind the box)", - "submitButton": "Submit" - }, - "pdfToSinglePage": { - "title": "PDF To Single Page", - "header": "PDF To Single Page", - "submit": "Convert To Single Page" - }, - "pageExtracter": { - "title": "Extract Pages", - "header": "Extract Pages", - "submit": "Extract" - }, - "sanitizePDF": { - "title": "Sanitize PDF", - "header": "Sanitize a PDF file", - "selectText": { - "1": "Remove JavaScript actions", - "2": "Remove embedded files", - "3": "Remove metadata", - "4": "Remove links", - "5": "Remove fonts" - }, - "submit": "Sanitize PDF" - }, - "addPageNumbers": { - "title": "Add Page Numbers", - "header": "Add Page Numbers", - "selectText": { - "1": "Select PDF file:", - "2": "Margin Size", - "3": "Position", - "4": "Starting Number", - "5": "Pages to Number", - "6": "Custom Text" - }, - "customTextDesc": "Custom Text", - "numberPagesDesc": "Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc", - "customNumberDesc": "Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}", - "submit": "Add Page Numbers" - }, - "adjustContrast": { - "title": "Adjust Contrast", - "header": "Adjust Contrast", - "contrast": "Contrast:", - "brightness": "Brightness:", - "saturation": "Saturation:", - "download": "Download" - }, - "compress": { - "title": "ضغط", - "header": "ضغط ملف PDF", - "credit": "تستخدم هذه الخدمة OCRmyPDF لضغط / تحسين PDF.", - "selectText": { - "1": "الوضع اليدوي - من 1 إلى 4", - "2": "مستوى التحسين:", - "3": "4 (رهيب للصور النصية)", - "4": "الوضع التلقائي - يضبط الجودة تلقائيًا للحصول على ملف PDF بالحجم المحدد", - "5": "حجم PDF المتوقع (على سبيل المثال 25 ميجا بايت ، 10.8 ميجا بايت ، 25 كيلو بايت)" - }, - "submit": "ضغطضغط" - }, - "pageRemover": { - "title": "مزيل الصفحة", - "header": "مزيل صفحة PDF", - "pagesToDelete": "الصفحات المراد حذفها (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):", - "submit": "حذف الصفحات" - }, - "imageToPDF": { - "title": "صورة إلى PDF", - "header": "صورة إلى PDF", - "submit": "تحول", - "selectLabel": "Image Fit Options", - "fillPage": "Fill Page", - "fitDocumentToImage": "Fit Page to Image", - "maintainAspectRatio": "Maintain Aspect Ratios", - "selectText": { - "2": "\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627", - "3": "\u0627\u0644\u0645\u0646\u0637\u0642 \u0627\u0644\u0645\u062A\u0639\u062F\u062F \u0644\u0644\u0645\u0644\u0641\u0627\u062A (\u0645\u0641\u0639\u0651\u0644 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0646\u062A \u062A\u0639\u0645\u0644 \u0645\u0639 \u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629)", - "4": "\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F", - "5": "\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629" - } - }, - "changeMetadata": { - "title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646:", - "header": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629", - "selectText": { - "1": "\u064A\u0631\u062C\u0649 \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0631\u063A\u0628 \u0641\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627", - "2": "\u062D\u0630\u0641 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629", - "3": "\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 \u0627\u0644\u0645\u062E\u0635\u0635\u0629:", - "4": "\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649:", - "5": "\u0625\u0636\u0627\u0641\u0629 \u0625\u062F\u062E\u0627\u0644 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u062E\u0635\u0635" - }, - "author": "\u0627\u0644\u0645\u0624\u0644\u0641:", - "creationDate": "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u0634\u0627\u0621 (yyyy / MM / dd HH: mm: ss):", - "creator": "\u0627\u0644\u0645\u0646\u0634\u0626:", - "keywords": "\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629:", - "modDate": "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss):", - "producer": "\u0627\u0644\u0645\u0646\u062A\u062C:", - "subject": "\u0627\u0644\u0645\u0648\u0636\u0648\u0639:", - "trapped": "\u0645\u062D\u0627\u0635\u0631:", - "submit": "\u062A\u063A\u064A\u064A\u0631" - } - } -} \ No newline at end of file diff --git a/client-tauri/src/locales/en.json b/client-tauri/src/locales/en.json deleted file mode 100644 index 806f4a451..000000000 --- a/client-tauri/src/locales/en.json +++ /dev/null @@ -1,854 +0,0 @@ -{ - "translation": { - "language": { - "name":"English (UK)", - "flag": "🇬🇧", - "direction": "ltr" - }, - "pdfPrompt": "Select PDF(s)", - "multiPdfPrompt": "Select PDFs (2+)", - "multiPdfDropPrompt": "Select (or drag & drop) all PDFs you require", - "imgPrompt": "Select Image(s)", - "genericSubmit": "Submit", - "processTimeWarning": "Warning: This process can take up to a minute depending on file-size", - "pageOrderPrompt": "Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :", - "goToPage": "Go", - "true": "True", - "false": "False", - "unknown": "Unknown", - "save": "Save", - "close": "Close", - "filesSelected": "files selected", - "noFavourites": "No favourites added", - "bored": "Bored Waiting?", - "alphabet": "Alphabet", - "downloadPdf": "Download PDF", - "text": "Text", - "font": "Font", - "selectFillter": "-- Select --", - "pageNum": "Page Number ", - "sizes": { - "small": "Small", - "medium": "Medium", - "large": "Large", - "x-large": "X-Large" - }, - "error": { - "pdfPassword": "The PDF Document is passworded and either the password was not provided or was incorrect" - }, - "delete": "Delete", - "username": "Username", - "password": "Password", - "welcome": "Welcome", - "property": "Property", - "black": "Black", - "white": "White", - "red": "Red", - "green": "Green", - "blue": "Blue", - "custom": "Custom...", - "changedCredsMessage": "Credentials changed!", - "notAuthenticatedMessage": "User not authenticated.", - "userNotFoundMessage": "User not found.", - "incorrectPasswordMessage": "Current password is incorrect.", - "usernameExistsMessage": "New Username already exists.", - "navbar": { - "convert": "Convert", - "security": "Security", - "other": "Miscellaneous", - "darkmode": "Dark Mode", - "pageOps": "Page Operations", - "settings": "Settings" - }, - "settings": { - "title": "Settings", - "update": "Update available", - "appVersion": "App Version:", - "downloadOption": { - "1": "Open in same window", - "2": "Open in new window", - "3": "Download file", - "title": "Choose download option (For single file non zip downloads):" - }, - "zipThreshold": "Zip files when the number of downloaded files exceeds", - "signOut": "Sign Out", - "accountSettings": "Account Settings" - }, - "changeCreds": { - "title": "Change Credentials", - "header": "Update Your Account Details", - "changeUserAndPassword": "You are using default login credentials. Please enter a new password (and username if wanted)", - "newUsername": "New Username", - "oldPassword": "Current Password", - "newPassword": "New Password", - "confirmNewPassword": "Confirm New Password", - "submit": "Submit Changes" - }, - "account": { - "title": "Account Settings", - "accountSettings": "Account Settings", - "adminSettings": "Admin Settings - View and Add Users", - "userControlSettings": "User Control Settings", - "changeUsername": "Change Username", - "password": "Confirmation Password", - "oldPassword": "Old password", - "newPassword": "New Password", - "changePassword": "Change Password", - "confirmNewPassword": "Confirm New Password", - "signOut": "Sign Out", - "yourApiKey": "Your API Key", - "syncTitle": "Sync browser settings with Account", - "settingsCompare": "Settings Comparison:", - "property": "Property", - "webBrowserSettings": "Web Browser Setting", - "syncToBrowser": "Sync Account -> Browser", - "syncToAccount": "Sync Account <- Browser" - }, - "adminUserSettings": { - "title": "User Control Settings", - "header": "Admin User Control Settings", - "admin": "Admin", - "user": "User", - "addUser": "Add New User", - "roles": "Roles", - "role": "Role", - "actions": "Actions", - "apiUser": "Limited API User", - "webOnlyUser": "Web Only User", - "forceChange": "Force user to change username/password on login", - "submit": "Save User" - }, - "home": { - "desc": "Your locally hosted one-stop-shop for all your PDF needs.", - "searchBar": "Search for features...", - "viewPdf": { - "title": "View PDF", - "desc": "View, annotate, add text or images" - }, - "multiTool": { - "title": "PDF Multi Tool", - "desc": "Merge, Rotate, Rearrange, and Remove pages" - }, - "merge": { - "title": "Merge", - "desc": "Easily merge multiple PDFs into one." - }, - "split": { - "title": "Split", - "desc": "Split PDFs into multiple documents" - }, - "rotate": { - "title": "Rotate", - "desc": "Easily rotate your PDFs." - }, - "imageToPdf": { - "title": "Image to PDF", - "desc": "Convert a image (PNG, JPEG, GIF) to PDF." - }, - "pdfToImage": { - "title": "PDF to Image", - "desc": "Convert a PDF to a image. (PNG, JPEG, GIF)" - }, - "pdfOrganiser": { - "title": "Organise", - "desc": "Remove/Rearrange pages in any order" - }, - "addImage": { - "title": "Add image", - "desc": "Adds a image onto a set location on the PDF" - }, - "watermark": { - "title": "Add Watermark", - "desc": "Add a custom watermark to your PDF document." - }, - "permissions": { - "title": "Change Permissions", - "desc": "Change the permissions of your PDF document" - }, - "removePages": { - "title": "Remove", - "desc": "Delete unwanted pages from your PDF document." - }, - "addPassword": { - "title": "Add Password", - "desc": "Encrypt your PDF document with a password." - }, - "removePassword": { - "title": "Remove Password", - "desc": "Remove password protection from your PDF document." - }, - "compressPdfs": { - "title": "Compress", - "desc": "Compress PDFs to reduce their file size." - }, - "changeMetadata": { - "title": "Change Metadata", - "desc": "Change/Remove/Add metadata from a PDF document" - }, - "fileToPDF": { - "title": "Convert file to PDF", - "desc": "Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more)" - }, - "ocr": { - "title": "OCR / Cleanup scans", - "desc": "Cleanup scans and detects text from images within a PDF and re-adds it as text." - }, - "extractImages": { - "title": "Extract Images", - "desc": "Extracts all images from a PDF and saves them to zip" - }, - "pdfToPDFA": { - "title": "PDF to PDF/A", - "desc": "Convert PDF to PDF/A for long-term storage" - }, - "PDFToWord": { - "title": "PDF to Word", - "desc": "Convert PDF to Word formats (DOC, DOCX and ODT)" - }, - "PDFToPresentation": { - "title": "PDF to Presentation", - "desc": "Convert PDF to Presentation formats (PPT, PPTX and ODP)" - }, - "PDFToText": { - "title": "PDF to RTF (Text)", - "desc": "Convert PDF to Text or RTF format" - }, - "PDFToHTML": { - "title": "PDF to HTML", - "desc": "Convert PDF to HTML format" - }, - "PDFToXML": { - "title": "PDF to XML", - "desc": "Convert PDF to XML format" - }, - "ScannerImageSplit": { - "title": "Detect/Split Scanned photos", - "desc": "Splits multiple photos from within a photo/PDF" - }, - "sign": { - "title": "Sign", - "desc": "Adds signature to PDF by drawing, text or image" - }, - "flatten": { - "title": "Flatten", - "desc": "Remove all interactive elements and forms from a PDF" - }, - "repair": { - "title": "Repair", - "desc": "Tries to repair a corrupt/broken PDF" - }, - "removeBlanks": { - "title": "Remove Blank pages", - "desc": "Detects and removes blank pages from a document" - }, - "compare": { - "title": "Compare", - "desc": "Compares and shows the differences between 2 PDF Documents" - }, - "certSign": { - "title": "Sign with Certificate", - "desc": "Signs a PDF with a Certificate/Key (PEM/P12)" - }, - "pageLayout": { - "title": "Multi-Page Layout", - "desc": "Merge multiple pages of a PDF document into a single page" - }, - "scalePages": { - "title": "Adjust page size/scale", - "desc": "Change the size/scale of a page and/or its contents." - }, - "pipeline": { - "title": "Pipeline (Advanced)", - "desc": "Run multiple actions on PDFs by defining pipeline scripts" - }, - "add-page-numbers": { - "title": "Add Page Numbers", - "desc": "Add Page numbers throughout a document in a set location" - }, - "auto-rename": { - "title": "Auto Rename PDF File", - "desc": "Auto renames a PDF file based on its detected header " - }, - "adjust-contrast": { - "title": "Adjust Colors/Contrast", - "desc": "Adjust Contrast, Saturation and Brightness of a PDF" - }, - "crop": { - "title": "Crop PDF", - "desc": "Crop a PDF to reduce its size (maintains text!)" - }, - "autoSplitPDF": { - "title": "Auto Split Pages", - "desc": "Auto Split Scanned PDF with physical scanned page splitter QR Code" - }, - "sanitizePdf": { - "title": "Sanitize", - "desc": "Remove scripts and other elements from PDF files" - }, - "URLToPDF": { - "title": "URL/Website To PDF", - "desc": "Converts any http(s)URL to PDF" - }, - "HTMLToPDF": { - "title": "HTML to PDF", - "desc": "Converts any HTML file or zip to PDF" - }, - "MarkdownToPDF": { - "title": "Markdown to PDF", - "desc": "Converts any Markdown file to PDF" - }, - "getPdfInfo": { - "title": "Get ALL Info on PDF", - "desc": "Grabs any and all information possible on PDFs" - }, - "extractPage": { - "title": "Extract page(s)", - "desc": "Extracts select pages from PDF" - }, - "PdfToSinglePage": { - "title": "PDF to Single Large Page", - "desc": "Merges all PDF pages into one large single page" - }, - "showJS": { - "title": "Show Javascript", - "desc": "Searches and displays any JS injected into a PDF" - }, - "autoRedact": { - "title": "Auto Redact", - "desc": "Auto Redacts(Blacks out) text in a PDF based on input text" - } - }, - "viewPdf": { - "tags": "view,read,annotate,text,image", - "title": "View PDF", - "header": "View PDF" - }, - "multiTool": { - "tags": "Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move", - "title": "PDF Multi Tool", - "header": "PDF Multi Tool" - }, - "merge": { - "tags": "merge,Page operations,Back end,server side", - "title": "Merge", - "header": "Merge multiple PDFs (2+)", - "sortByName": "Sort by name", - "sortByDate": "Sort by date", - "submit": "Merge" - }, - "split": { - "tags": "Page operations,divide,Multi Page,cut,server side ", - "title": "Split PDF", - "header": "Split PDF", - "desc": { - "1": "The numbers you select are the page number you wish to do a split on", - "2": "As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:", - "3": "Document ", - "4": "Document ", - "5": "Document ", - "6": "Document ", - "7": "Document ", - "8": "Document " - }, - "splitPages": "Enter pages to split on:", - "submit": "Split" - }, - "rotate": { - "tags": "server side", - "title": "Rotate PDF", - "header": "Rotate PDF", - "selectAngle": "Select rotation angle (in multiples of 90 degrees):", - "submit": "Rotate" - }, - "imageToPdf": { - "tags": "conversion,img,jpg,picture,photo" - }, - "pdfToImage": { - "tags": "conversion,img,jpg,picture,photo", - "title": "PDF to Image", - "header": "PDF to Image", - "selectText": "Image Format", - "singleOrMultiple": "Page to Image result type", - "single": "Single Big Image Combing all pages", - "multi": "Multiple Images, one image per page", - "colorType": "Colour type", - "color": "Colour", - "grey": "Greyscale", - "blackwhite": "Black and White (May lose data!)", - "submit": "Convert" - }, - "pdfOrganiser": { - "tags": "duplex,even,odd,sort,move", - "title": "Page Organiser", - "header": "PDF Page Organiser", - "submit": "Rearrange Pages" - }, - "addImage": { - "tags": "img,jpg,picture,photo", - "title": "Add Image", - "header": "Add image to PDF", - "everyPage": "Every Page?", - "upload": "Add image", - "submit": "Add image" - }, - "watermark": { - "tags": "Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo", - "title": "Add Watermark", - "header": "Add Watermark", - "selectText": { - "1": "Select PDF to add watermark to:", - "2": "Watermark Text:", - "3": "Font Size:", - "4": "Rotation (0-360):", - "5": "widthSpacer (Space between each watermark horizontally):", - "6": "heightSpacer (Space between each watermark vertically):", - "7": "Opacity (0% - 100%):", - "8": "Watermark Type:", - "9": "Watermark Image:" - }, - "submit": "Add Watermark" - }, - "permissions": { - "tags": "read,write,edit,print", - "title": "Change Permissions", - "header": "Change Permissions", - "warning": "Warning to have these permissions be unchangeable it is recommended to set them with a password via the add-password page", - "selectText": { - "1": "Select PDF to change permissions", - "2": "Permissions to set", - "3": "Prevent assembly of document", - "4": "Prevent content extraction", - "5": "Prevent extraction for accessibility", - "6": "Prevent filling in form", - "7": "Prevent modification", - "8": "Prevent annotation modification", - "9": "Prevent printing", - "10": "Prevent printing different formats" - }, - "submit": "Change" - }, - "removePages": { - "tags": "Remove pages,delete pages" - }, - "addPassword": { - "tags": "secure,security", - "title": "Add Password", - "header": "Add password (Encrypt)", - "selectText": { - "1": "Select PDF to encrypt", - "2": "User Password", - "3": "Encryption Key Length", - "4": "Higher values are stronger, but lower values have better compatibility.", - "5": "Permissions to set (Recommended to be used along with Owner password)", - "6": "Prevent assembly of document", - "7": "Prevent content extraction", - "8": "Prevent extraction for accessibility", - "9": "Prevent filling in form", - "10": "Prevent modification", - "11": "Prevent annotation modification", - "12": "Prevent printing", - "13": "Prevent printing different formats", - "14": "Owner Password", - "15": "Restricts what can be done with the document once it is opened (Not supported by all readers)", - "16": "Restricts the opening of the document itself" - }, - "submit": "Encrypt" - }, - "removePassword": { - "tags": "secure,Decrypt,security,unpassword,delete password", - "title": "Remove password", - "header": "Remove password (Decrypt)", - "selectText": { - "1": "Select PDF to Decrypt", - "2": "Password" - }, - "submit": "Remove" - }, - "compressPdfs": { - "tags": "squish,small,tiny" - }, - "fileToPDF": { - "tags": "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint", - "title": "File to PDF", - "header": "Convert any file to PDF", - "credit": "This service uses LibreOffice and Unoconv for file conversion.", - "supportedFileTypes": "Supported file types should include the below however for a full updated list of supported formats, please refer to the LibreOffice documentation", - "submit": "Convert to PDF" - }, - "ocr": { - "tags": "recognition,text,image,scan,read,identify,detection,editable", - "title": "OCR / Scan Cleanup", - "header": "Cleanup Scans / OCR (Optical Character Recognition)", - "selectText": { - "1": "Select languages that are to be detected within the PDF (Ones listed are the ones currently detected):", - "2": "Produce text file containing OCR text alongside the OCR'ed PDF", - "3": "Correct pages were scanned at a skewed angle by rotating them back into place", - "4": "Clean page so its less likely that OCR will find text in background noise. (No output change)", - "5": "Clean page so its less likely that OCR will find text in background noise, maintains cleanup in output.", - "6": "Ignores pages that have interactive text on them, only OCRs pages that are images", - "7": "Force OCR, will OCR Every page removing all original text elements", - "8": "Normal (Will error if PDF contains text)", - "9": "Additional Settings", - "10": "OCR Mode", - "11": "Remove images after OCR (Removes ALL images, only useful if part of conversion step)", - "12": "Render Type (Advanced)" - }, - "help": "Please read this documentation on how to use this for other languages and/or use not in docker", - "credit": "This service uses OCRmyPDF and Tesseract for OCR.", - "submit": "Process PDF with OCR" - }, - "extractImages": { - "tags": "picture,photo,save,archive,zip,capture,grab", - "title": "Extract Images", - "header": "Extract Images", - "selectText": "Select image format to convert extracted images to", - "submit": "Extract" - }, - "pdfToPDFA": { - "tags": "archive,long-term,standard,conversion,storage,preservation", - "title": "PDF To PDF/A", - "header": "PDF To PDF/A", - "credit": "This service uses OCRmyPDF for PDF/A conversion", - "submit": "Convert" - }, - "PDFToWord": { - "tags": "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile", - "title": "PDF to Word", - "header": "PDF to Word", - "selectText": { - "1": "Output file format" - }, - "credit": "This service uses LibreOffice for file conversion.", - "submit": "Convert" - }, - "PDFToPresentation": { - "tags": "slides,show,office,microsoft", - "title": "PDF to Presentation", - "header": "PDF to Presentation", - "selectText": { - "1": "Output file format" - }, - "credit": "This service uses LibreOffice for file conversion.", - "submit": "Convert" - }, - "PDFToText": { - "tags": "richformat,richtextformat,rich text format", - "title": "PDF to RTF (Text)", - "header": "PDF to RTF (Text)", - "selectText": { - "1": "Output file format" - }, - "credit": "This service uses LibreOffice for file conversion.", - "submit": "Convert" - }, - "PDFToHTML": { - "tags": "web content,browser friendly", - "title": "PDF to HTML", - "header": "PDF to HTML", - "credit": "This service uses LibreOffice for file conversion.", - "submit": "Convert" - }, - "PDFToXML": { - "tags": "data-extraction,structured-content,interop,transformation,convert", - "title": "PDF to XML", - "header": "PDF to XML", - "credit": "This service uses LibreOffice for file conversion.", - "submit": "Convert" - }, - "ScannerImageSplit": { - "tags": "separate,auto-detect,scans,multi-photo,organize", - "selectText": { - "1": "Angle Threshold:", - "2": "Sets the minimum absolute angle required for the image to be rotated (default: 10).", - "3": "Tolerance:", - "4": "Determines the range of color variation around the estimated background color (default: 30).", - "5": "Minimum Area:", - "6": "Sets the minimum area threshold for a photo (default: 10000).", - "7": "Minimum Contour Area:", - "8": "Sets the minimum contour area threshold for a photo", - "9": "Border Size:", - "10": "Sets the size of the border added and removed to prevent white borders in the output (default: 1)." - } - }, - "sign": { - "tags": "authorize,initials,drawn-signature,text-sign,image-signature", - "title": "Sign", - "header": "Sign PDFs", - "upload": "Upload Image", - "draw": "Draw Signature", - "text": "Text Input", - "clear": "Clear", - "add": "Add" - }, - "flatten": { - "tags": "static,deactivate,non-interactive,streamline", - "title": "Flatten", - "header": "Flatten PDFs", - "submit": "Flatten" - }, - "repair": { - "tags": "fix,restore,correction,recover", - "title": "Repair", - "header": "Repair PDFs", - "submit": "Repair" - }, - "removeBlanks": { - "tags": "cleanup,streamline,non-content,organize", - "title": "Remove Blanks", - "header": "Remove Blank Pages", - "threshold": "Pixel Whiteness Threshold:", - "thresholdDesc": "Threshold for determining how white a white pixel must be to be classed as 'White'. 0 ", - "whitePercent": "White Percent (%):", - "whitePercentDesc": "Percent of page that must be 'white' pixels to be removed", - "submit": "Remove Blanks" - }, - "compare": { - "tags": "differentiate,contrast,changes,analysis", - "title": "Compare", - "header": "Compare PDFs", - "document": { - "1": "Document 1", - "2": "Document 2" - }, - "submit": "Compare" - }, - "certSign": { - "tags": "authenticate,PEM,P12,official,encrypt", - "title": "Certificate Signing", - "header": "Sign a PDF with your certificate (Work in progress)", - "selectPDF": "Select a PDF File for Signing: ", - "selectKey": "Select Your Private Key File (PKCS", - "selectCert": "Select Your Certificate File (X.509 format, could be .pem or .der): ", - "selectP12": "Select Your PKCS", - "certType": "Certificate Type", - "password": "Enter Your Keystore or Private Key Password (If Any): ", - "showSig": "Show Signature", - "reason": "Reason", - "location": "Location", - "name": "Name ", - "submit": "Sign PDF" - }, - "pageLayout": { - "tags": "merge,composite,single-view,organize", - "title": "Multi Page Layout", - "header": "Multi Page Layout", - "pagesPerSheet": "Pages per sheet:", - "addBorder": "Add Borders", - "submit": "Submit" - }, - "scalePages": { - "tags": "resize,modify,dimension,adapt", - "title": "Adjust page-scale", - "header": "Adjust page-scale", - "pageSize": "Size of a page of the document.", - "scaleFactor": "Zoom level (crop) of a page.", - "submit": "Submit" - }, - "pipeline": { - "tags": "automate,sequence,scripted,batch-process", - "title": "Pipeline" - }, - "add-page-numbers": { - "tags": "paginate,label,organize,index" - }, - "auto-rename": { - "tags": "auto-detect,header-based,organize,relabel", - "title": "Auto Rename", - "header": "Auto Rename PDF", - "submit": "Auto Rename" - }, - "adjust-contrast": { - "tags": "color-correction,tune,modify,enhance" - }, - "crop": { - "tags": "trim,shrink,edit,shape", - "title": "Crop", - "header": "Crop Image", - "submit": "Submit" - }, - "autoSplitPDF": { - "tags": "QR-based,separate,scan-segment,organize", - "title": "Auto Split PDF", - "header": "Auto Split PDF", - "description": "Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.", - "selectText": { - "1": "Print out some divider sheets from below (Black and white is fine).", - "2": "Scan all your documents at once by inserting the divider sheet between them.", - "3": "Upload the single large scanned PDF file and let Stirling PDF handle the rest.", - "4": "Divider pages are automatically detected and removed, guaranteeing a neat final document." - }, - "formPrompt": "Submit PDF containing Stirling-PDF Page dividers:", - "duplexMode": "Duplex Mode (Front and back scanning)", - "dividerDownload1": "Download 'Auto Splitter Divider (minimal).pdf'", - "dividerDownload2": "Download 'Auto Splitter Divider (with instructions).pdf'", - "submit": "Submit" - }, - "sanitizePdf": { - "tags": "clean,secure,safe,remove-threats" - }, - "URLToPDF": { - "tags": "web-capture,save-page,web-to-doc,archive", - "title": "URL To PDF", - "header": "URL To PDF", - "submit": "Convert", - "credit": "Uses WeasyPrint" - }, - "HTMLToPDF": { - "tags": "markup,web-content,transformation,convert", - "title": "HTML To PDF", - "header": "HTML To PDF", - "help": "Accepts HTML files and ZIPs containing html/css/images etc required", - "submit": "Convert", - "credit": "Uses WeasyPrint" - }, - "MarkdownToPDF": { - "tags": "markup,web-content,transformation,convert", - "title": "Markdown To PDF", - "header": "Markdown To PDF", - "submit": "Convert", - "help": "Work in progress", - "credit": "Uses WeasyPrint" - }, - "getPdfInfo": { - "tags": "infomation,data,stats,statistics", - "title": "Get Info on PDF", - "header": "Get Info on PDF", - "submit": "Get Info", - "downloadJson": "Download JSON" - }, - "extractPage": { - "tags": "extract" - }, - "PdfToSinglePage": { - "tags": "single page" - }, - "showJS": { - "tags": "Redact,Hide,black out,black,marker,hidden", - "title": "Show Javascript", - "header": "Show Javascript", - "downloadJS": "Download Javascript", - "submit": "Show" - }, - "login": { - "title": "Sign in", - "signin": "Sign in", - "rememberme": "Remember me", - "invalid": "Invalid username or password.", - "locked": "Your account has been locked.", - "signinTitle": "Please sign in" - }, - "autoRedact": { - "title": "Auto Redact", - "header": "Auto Redact", - "colorLabel": "Colour", - "textsToRedactLabel": "Text to Redact (line-separated)", - "textsToRedactPlaceholder": "e.g. \\nConfidential \\nTop-Secret", - "useRegexLabel": "Use Regex", - "wholeWordSearchLabel": "Whole Word Search", - "customPaddingLabel": "Custom Extra Padding", - "convertPDFToImageLabel": "Convert PDF to PDF-Image (Used to remove text behind the box)", - "submitButton": "Submit" - }, - "pdfToSinglePage": { - "title": "PDF To Single Page", - "header": "PDF To Single Page", - "submit": "Convert To Single Page" - }, - "pageExtracter": { - "title": "Extract Pages", - "header": "Extract Pages", - "submit": "Extract" - }, - "sanitizePDF": { - "title": "Sanitize PDF", - "header": "Sanitize a PDF file", - "selectText": { - "1": "Remove JavaScript actions", - "2": "Remove embedded files", - "3": "Remove metadata", - "4": "Remove links", - "5": "Remove fonts" - }, - "submit": "Sanitize PDF" - }, - "addPageNumbers": { - "title": "Add Page Numbers", - "header": "Add Page Numbers", - "selectText": { - "1": "Select PDF file:", - "2": "Margin Size", - "3": "Position", - "4": "Starting Number", - "5": "Pages to Number", - "6": "Custom Text" - }, - "customTextDesc": "Custom Text", - "numberPagesDesc": "Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc", - "customNumberDesc": "Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}", - "submit": "Add Page Numbers" - }, - "adjustContrast": { - "title": "Adjust Contrast", - "header": "Adjust Contrast", - "contrast": "Contrast:", - "brightness": "Brightness:", - "saturation": "Saturation:", - "download": "Download" - }, - "compress": { - "title": "Compress", - "header": "Compress PDF", - "credit": "This service uses Ghostscript for PDF Compress/Optimisation.", - "selectText": { - "1": "Manual Mode - From 1 to 4", - "2": "Optimization level:", - "3": "4 (Terrible for text images)", - "4": "Auto mode - Auto adjusts quality to get PDF to exact size", - "5": "Expected PDF Size (e.g. 25MB, 10.8MB, 25KB) " - }, - "submit": "Compress" - }, - "pageRemover": { - "title": "Page Remover", - "header": "PDF Page remover", - "pagesToDelete": "Pages to delete (Enter a comma-separated list of page numbers) :", - "submit": "Delete Pages" - }, - "imageToPDF": { - "title": "Image to PDF", - "header": "Image to PDF", - "submit": "Convert", - "selectLabel": "Image Fit Options", - "fillPage": "Fill Page", - "fitDocumentToImage": "Fit Page to Image", - "maintainAspectRatio": "Maintain Aspect Ratios", - "selectText": { - "2": "Auto rotate PDF", - "3": "Multi file logic (Only enabled if working with multiple images)", - "4": "Merge into single PDF", - "5": "Convert to separate PDFs" - } - }, - "changeMetadata": { - "title": "Title:", - "header": "Change Metadata", - "selectText": { - "1": "Please edit the variables you wish to change", - "2": "Delete all metadata", - "3": "Show Custom Metadata:", - "4": "Other Metadata:", - "5": "Add Custom Metadata Entry" - }, - "author": "Author:", - "creationDate": "Creation Date (yyyy/MM/dd HH:mm:ss):", - "creator": "Creator:", - "keywords": "Keywords:", - "modDate": "Modification Date (yyyy/MM/dd HH:mm:ss):", - "producer": "Producer:", - "subject": "Subject:", - "trapped": "Trapped:", - "submit": "Change" - } - } -} - diff --git a/client-tauri/src/pages/page-operations/Impose.tsx b/client-tauri/src/pages/page-operations/Impose.tsx index 5700b427e..9120faeb6 100644 --- a/client-tauri/src/pages/page-operations/Impose.tsx +++ b/client-tauri/src/pages/page-operations/Impose.tsx @@ -1,6 +1,6 @@ import DynamicParameterFields from "../../components/DynamicParameterFields"; -import { ImposeParamConstraints } from "@stirling-pdf/shared-operations/src/functions/impose"; +// import { ImposeParamConstraints } from "@stirling-pdf/shared-operations/src/functions/impose"; import { useTranslation } from "react-i18next"; function Impose() { @@ -9,7 +9,7 @@ function Impose() {

{t("pageLayout.header")}

- + {/* */}
); diff --git a/package-lock.json b/package-lock.json index 479de5d32..91e8bd86a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1094,8 +1094,7 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.21", @@ -1338,7 +1337,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1351,7 +1349,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -1360,7 +1357,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1469,7 +1465,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz", "integrity": "sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==", - "dev": true, "dependencies": { "slash": "^4.0.0" }, @@ -1489,7 +1484,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, "engines": { "node": ">=12" }, @@ -1501,7 +1495,6 @@ "version": "25.0.7", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", - "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -1526,7 +1519,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", - "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", @@ -1548,7 +1540,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, "dependencies": { "@rollup/pluginutils": "^5.1.0" }, @@ -1610,6 +1601,58 @@ } } }, + "node_modules/@rollup/plugin-run": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-run/-/plugin-run-3.0.2.tgz", + "integrity": "sha512-pgQcDA34u6C+8Yr0FSd2T7iN2UTQe8zJ+1pbceNJ9MkvGrN0sz4D6Mzg3eYkGrbV4zC7H5QvwlzC1GqH4PrSrg==", + "dev": true, + "dependencies": { + "@types/node": "14.18.30" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-run/node_modules/@types/node": { + "version": "14.18.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.30.tgz", + "integrity": "sha512-8OEyg4oc/CqN5+LbInKNLA8MfbGzbC+k8lVPePXazuwEVrVeQ9gwMDX00HJwWbC7syc1FWRU6Mow0Lm+mibHAQ==", + "dev": true + }, + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-virtual": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", @@ -1630,7 +1673,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1648,6 +1690,175 @@ } } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -2187,8 +2398,7 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { "version": "4.17.21", @@ -2212,6 +2422,23 @@ "@types/send": "*" } }, + "node_modules/@types/fs-extra": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", @@ -2237,6 +2464,11 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, "node_modules/@types/multer": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", @@ -2793,16 +3025,54 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", @@ -2856,6 +3126,11 @@ "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -2922,7 +3197,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2930,6 +3204,89 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", @@ -2998,6 +3355,11 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -3010,6 +3372,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -3152,6 +3519,15 @@ "node": ">=10" } }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -3201,11 +3577,15 @@ "color-support": "bin.js" } }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/compress-commons": { "version": "5.0.1", @@ -3224,8 +3604,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -3380,12 +3759,22 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "optional": true }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -3561,11 +3950,49 @@ "node": ">= 12.0.0" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -3581,6 +4008,27 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -3659,6 +4107,22 @@ "node": ">= 0.4" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -3681,6 +4145,15 @@ "node": ">=6" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -3708,11 +4181,25 @@ "node": ">=0.3.1" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -3741,6 +4228,17 @@ "csstype": "^3.0.2" } }, + "node_modules/domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/dynamic-dedupe": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", @@ -3767,6 +4265,25 @@ "integrity": "sha512-5UUkr3k3CZ/k+9Sw7vaaIMyOzMC0XbPyprKI3n0tbKDqkzTDOjK4izm7DxlkueRMim6ZZQ1ja9F7hoFVplHihA==", "dev": true }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -4118,8 +4635,7 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", @@ -4138,6 +4654,23 @@ "node": ">= 0.6" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -4231,7 +4764,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4247,7 +4779,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -4313,7 +4844,6 @@ "version": "1.16.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -4347,7 +4877,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4389,7 +4918,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4478,6 +5006,14 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -4527,6 +5063,19 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -4785,12 +5334,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "optional": true }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", @@ -4802,6 +5387,16 @@ "node": ">= 0.4" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -4833,6 +5428,11 @@ "node": ">= 0.8" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4923,7 +5523,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, "engines": { "node": ">= 4" } @@ -5039,6 +5638,21 @@ "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==" }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-type": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-array-type/-/is-array-type-1.0.0.tgz", @@ -5071,11 +5685,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -5087,7 +5711,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5112,11 +5735,24 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -5138,11 +5774,25 @@ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -5156,15 +5806,36 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, "dependencies": { "@types/estree": "*" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -5176,6 +5847,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/jackspeak": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", @@ -5279,6 +5958,14 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsqr": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", @@ -5348,7 +6035,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -5394,7 +6080,6 @@ "version": "0.30.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -5432,6 +6117,16 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -5463,7 +6158,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -5480,7 +6174,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -5489,6 +6182,23 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -5531,6 +6241,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -5998,6 +6718,48 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, "node_modules/noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", @@ -6083,6 +6845,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -6119,11 +6921,15 @@ "node": ">= 0.8.0" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6138,7 +6944,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -6166,6 +6971,18 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -6183,7 +7000,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -6192,7 +7008,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -6209,8 +7024,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", @@ -6246,7 +7060,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -6260,6 +7073,21 @@ "node": ">=8" } }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/pdf-lib": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", @@ -6297,7 +7125,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -6305,6 +7132,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/pkgroll": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pkgroll/-/pkgroll-2.0.1.tgz", @@ -6376,6 +7214,14 @@ "node": ">= 0.8.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -6415,6 +7261,24 @@ "node": ">= 0.10" } }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -6438,11 +7302,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -6463,6 +7334,23 @@ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -6705,7 +7593,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -6731,7 +7618,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -6777,6 +7663,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/robust-orientation": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/robust-orientation/-/robust-orientation-1.2.1.tgz", @@ -6830,11 +7725,82 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-copy/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rollup-plugin-copy/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup-plugin-copy/node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -7002,11 +7968,28 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7091,7 +8074,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -7137,6 +8119,26 @@ "node": ">= 0.8" } }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -7275,7 +8277,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -7381,6 +8382,17 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7394,7 +8406,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -7607,6 +8618,11 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, "node_modules/two-product": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/two-product/-/two-product-1.0.2.tgz", @@ -7690,6 +8706,14 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7746,6 +8770,46 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/url/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7839,6 +8903,21 @@ } } }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.19.0.tgz", + "integrity": "sha512-AhdVxAmVnd1doUlIRGUGV6ZRPfB9BvIwDF10oCOmL742IsvsFIAV4tSMxSfu5e0Px0QeJLgWVOSbtHIvblzqMw==", + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, "node_modules/vite-plugin-top-level-await": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.1.tgz", @@ -7852,6 +8931,11 @@ "vite": ">=2.8" } }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -7917,6 +9001,24 @@ "node": ">= 8" } }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -8095,7 +9197,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -8122,6 +9223,9 @@ "license": "ISC", "dependencies": { "@esbuild/win32-x64": "^0.19.10", + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-json": "^6.1.0", "@types/archiver": "^6.0.1", "@types/express": "^4.17.21", "@types/multer": "^1.4.10", @@ -8133,12 +9237,18 @@ "jsqr": "^1.4.0", "multer": "^1.4.5-lts.1", "pdf-lib": "^1.17.1", - "tsconfig-paths": "^4.2.0" + "rollup-plugin-copy": "^3.5.0", + "tsconfig-paths": "^4.2.0", + "vite-plugin-node-polyfills": "^0.19.0", + "vite-plugin-top-level-await": "^1.4.1" }, "devDependencies": { + "@rollup/plugin-run": "^3.0.2", + "@rollup/plugin-typescript": "^11.1.6", "copyfiles": "^2.4.1", "pkgroll": "^2.0.1", "rimraf": "^5.0.5", + "rollup": "^4.9.6", "ts-node-dev": "^2.0.0", "typescript": "^5.2.2" }, @@ -8154,6 +9264,38 @@ "@types/readdir-glob": "*" } }, + "server-node/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, "shared-operations": { "name": "@stirling-pdf/shared-operations", "version": "0.0.0", diff --git a/server-node/package.json b/server-node/package.json index dd862aa1c..554d002a2 100644 --- a/server-node/package.json +++ b/server-node/package.json @@ -5,45 +5,48 @@ "type": "module", "exports": "./dist/index.js", "imports": { - "#pdfcpu": "../../shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js" + "#pdfcpu": "@stirling-pdf/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js" }, "optionalDependencies": { - "canvas": "^2.11.2" + "canvas": "^2.11.2" }, "scripts": { - "dev": "npx tsx watch src/index.ts", - "build": "npm run prebuild && pkgroll && npm run postbuild", - "start": "node ./dist/index.js", - - "prebuild": "rimraf ./dist", - "postbuild": "npm run copy-locales && npm run copy-pdfcpu", - "copy-locales": "copyfiles -u 3 ../shared-operations/src/locales/**/*.json dist", - "copy-pdfcpu": "copyfiles -u 5 ../shared-operations/src/wasm/pdfcpu/pdfcpu.wasm dist" + "dev": "rollup -c -w", + "build": "rollup -c --forceExit", + "start": "node ./dist/bundle.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { - "@esbuild/win32-x64": "^0.19.10", - "@types/archiver": "^6.0.1", - "@types/express": "^4.17.21", - "@types/multer": "^1.4.10", - "@wasmer/wasmfs": "^0.12.0", - "archiver": "^6.0.1", - "express": "^4.18.2", - "express-fileupload": "^1.4.2", - "joi": "^17.11.0", - "jsqr": "^1.4.0", - "multer": "^1.4.5-lts.1", - "pdf-lib": "^1.17.1", - "tsconfig-paths": "^4.2.0" + "@esbuild/win32-x64": "^0.19.10", + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-json": "^6.1.0", + "@types/archiver": "^6.0.1", + "@types/express": "^4.17.21", + "@types/multer": "^1.4.10", + "@wasmer/wasmfs": "^0.12.0", + "archiver": "^6.0.1", + "express": "^4.18.2", + "express-fileupload": "^1.4.2", + "joi": "^17.11.0", + "jsqr": "^1.4.0", + "multer": "^1.4.5-lts.1", + "pdf-lib": "^1.17.1", + "rollup-plugin-copy": "^3.5.0", + "tsconfig-paths": "^4.2.0", + "vite-plugin-node-polyfills": "^0.19.0", + "vite-plugin-top-level-await": "^1.4.1" }, "devDependencies": { - "copyfiles": "^2.4.1", - "pkgroll": "^2.0.1", - "rimraf": "^5.0.5", - "ts-node-dev": "^2.0.0", - "typescript": "^5.2.2" + "@rollup/plugin-run": "^3.0.2", + "@rollup/plugin-typescript": "^11.1.6", + "copyfiles": "^2.4.1", + "pkgroll": "^2.0.1", + "rimraf": "^5.0.5", + "rollup": "^4.9.6", + "ts-node-dev": "^2.0.0", + "typescript": "^5.2.2" } - } - \ No newline at end of file +} diff --git a/server-node/rollup.config.js b/server-node/rollup.config.js new file mode 100644 index 000000000..615b9a5d6 --- /dev/null +++ b/server-node/rollup.config.js @@ -0,0 +1,28 @@ +import run from "@rollup/plugin-run"; +import typescript from '@rollup/plugin-typescript'; +import json from '@rollup/plugin-json'; +import copy from 'rollup-plugin-copy' + + +const isDev = process.env.NODE_ENV !== "production"; + +export default { + input: "src/index.ts", + output: { + file: "dist/bundle.js", + format: "es", + }, + watch: { + include: [ './src/**', '../shared-operations/src/**' ] + }, + plugins: [ + json(), + typescript(), + copy({ + targets: [ + { src: '../shared-operations/public', dest: 'dist' }, + ] + }), + isDev && run() + ], +}; \ No newline at end of file diff --git a/server-node/src/index.ts b/server-node/src/index.ts index cfd8928ec..0e1a85c85 100644 --- a/server-node/src/index.ts +++ b/server-node/src/index.ts @@ -14,5 +14,5 @@ app.listen(PORT, () => { }); process.on('unhandledRejection', (reason, promise) => { - console.error('Unhandled Rejection at:', promise, 'reason:', reason); + console.error('Unhandled Rejection at:', promise, 'reason:', reason); }); diff --git a/server-node/tsconfig.json b/server-node/tsconfig.json index 907983c38..c32ef5428 100644 --- a/server-node/tsconfig.json +++ b/server-node/tsconfig.json @@ -11,7 +11,7 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ @@ -26,11 +26,12 @@ /* Modules */ "module": "ES2020", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ + "rootDir": "../", /* Specify the root folder within your source files. */ "moduleResolution": "Node", /* Specify how TypeScript looks up a file from a given module specifier. */ "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ "paths": { - "#pdfcpu": ["../../shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server"], + "#pdfcpu": ["@stirling-pdf/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server"], + "@stirling-pdf/*": [ "../../*" ] }, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ @@ -46,7 +47,7 @@ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ @@ -111,11 +112,12 @@ }, "include": [ "src", - "declarations/*.d.ts" -, "../shared-operations/src/wasm/pdfcpu/PdfcpuWrapper.d.ts" ], + "declarations/*.d.ts", + "../shared-operations/src/wasm/pdfcpu/PdfcpuWrapper.d.ts" + ], "ts-node": { "experimentalSpecifierResolution": "node", "transpileOnly": true, - "esm": true, - }, + "esm": true + } } diff --git a/shared-operations/package.json b/shared-operations/package.json index 8e8f38c8c..ea4c3e36c 100644 --- a/shared-operations/package.json +++ b/shared-operations/package.json @@ -3,9 +3,6 @@ "version": "0.0.0", "main": "index.ts", "type": "module", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "imports": { "#pdfcpu": "./src/wasm/pdfcpu/pdfcpu-wrapper.server.js" }, diff --git a/shared-operations/src/locales/common/en.json b/shared-operations/public/locales/common/en.json similarity index 100% rename from shared-operations/src/locales/common/en.json rename to shared-operations/public/locales/common/en.json diff --git a/shared-operations/src/locales/impose/en.json b/shared-operations/public/locales/impose/en.json similarity index 100% rename from shared-operations/src/locales/impose/en.json rename to shared-operations/public/locales/impose/en.json diff --git a/shared-operations/src/wasm/pdfcpu/pdfcpu.wasm b/shared-operations/public/wasm/pdfcpu/pdfcpu.wasm similarity index 100% rename from shared-operations/src/wasm/pdfcpu/pdfcpu.wasm rename to shared-operations/public/wasm/pdfcpu/pdfcpu.wasm diff --git a/shared-operations/src/i18next.config.ts b/shared-operations/src/i18next.config.ts index 4bd9a3de7..ef0f9a911 100644 --- a/shared-operations/src/i18next.config.ts +++ b/shared-operations/src/i18next.config.ts @@ -2,7 +2,9 @@ import i18next from "i18next"; import resourcesToBackend from "i18next-resources-to-backend"; i18next - .use(resourcesToBackend((language, namespace) => import(`./locales/${namespace}/${language}.json`))) + .use(resourcesToBackend((language, namespace) => import(`./public/locales/${namespace}/${language}.json`, { + assert: { type: "json" }, + }))) .init({ // debug: true, ns: ["common"], // Preload this namespace, no need to add the others, they will load once their module is loaded diff --git a/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js b/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js index 8001daff9..e3539ae68 100644 --- a/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js +++ b/shared-operations/src/wasm/pdfcpu/pdfcpu-wrapper.server.js @@ -2,7 +2,7 @@ import { WasmFs } from '@wasmer/wasmfs'; import path from "path"; import { fileURLToPath } from 'url'; -let nodeWasmLocation = path.dirname(fileURLToPath(import.meta.url)); +let nodeWasmLocation = "./dist/public/wasm/pdfcpu/"; // TODO: Replace with __dirname let fs; const wasmfs = new WasmFs(); diff --git a/shared-operations/tsconfig.json b/shared-operations/tsconfig.json index 34721fe9d..5ea10b16c 100644 --- a/shared-operations/tsconfig.json +++ b/shared-operations/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "module": "Node16", "esModuleInterop": true, "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ "paths": {