diff --git a/docs/development.md b/docs/development.md index ceec2870..6061da4a 100644 --- a/docs/development.md +++ b/docs/development.md @@ -143,3 +143,31 @@ git push -u origin feature/my-feature # Open a PR to development ``` + +## Local Mail Integration (Greenmail) + +Procest's mail-driven flows (case intake from citizen emails, notifications to behandelaars) can be demoed locally against the [Greenmail](https://greenmail-mail-test.github.io/greenmail/) container that ships with the OpenRegister dev stack. + +**Seed test data:** +```bash +bash ../openregister/docker/mail/seed-mail.sh +bash ../openregister/docker/mail/seed-cases.sh +``` + +`seed-mail.sh` sends 11 realistic Dutch case-management emails (omgevingsvergunning, kapvergunning, welstandsadvies, klachten, deadline-herinneringen) across 5 auto-created accounts. + +`seed-cases.sh` creates matching procest cases (`ZK-2026-0142` dakkapel Kerkstraat 42, `ZK-2026-0034` kapvergunning Wilhelminastraat) + their caseTypes in the Procest register, so the OpenRegister mail sidebar can link incoming emails to existing cases. + +**Configure the Nextcloud Mail app** (Settings → Mail → Add account → Manual): + +| Setting | Value | +|---------|-------| +| IMAP host | `greenmail` (from container) or `localhost` (from host) | +| IMAP port | `3143` | +| SMTP host | same as IMAP | +| SMTP port | `3025` | +| Security | None | +| Username | email address (e.g. `behandelaar@test.local`) | +| Password | same as username | + +Accounts created by the seed: `admin@test.local`, `behandelaar@test.local`, `coordinator@test.local`, `burger@test.local`, `leverancier@test.local`. diff --git a/l10n/en.js b/l10n/en.js index 98d51c52..948b68ab 100644 --- a/l10n/en.js +++ b/l10n/en.js @@ -19,6 +19,7 @@ OC.L10N.register( "Add document" : "Add document", "Add note" : "Add note", "All" : "All", + "All cases active" : "All cases active", "All caught up!" : "All caught up!", "All your items are completed" : "All your items are completed", "Are you sure you want to delete this case?" : "Are you sure you want to delete this case?", @@ -41,15 +42,14 @@ OC.L10N.register( "Cannot publish:" : "Cannot publish:", "Case" : "Case", "Case Information" : "Case Information", + "Case Map" : "Case Map", "Case Type" : "Case Type", "Case Type Management" : "Case Type Management", "Case Types" : "Case Types", - "Case created with type \" : "Case created with type \", "Case handler" : "Case handler", "Case schema" : "Case schema", "Case sensitive" : "Case sensitive", "Case type" : "Case type", - "Case type \" : "Case type \", "Case type has expired (valid until {date})" : "Case type has expired (valid until {date})", "Case type is not yet valid (valid from {date})" : "Case type is not yet valid (valid from {date})", "Case type is required" : "Case type is required", @@ -58,6 +58,7 @@ OC.L10N.register( "Cases" : "Cases", "Cases and tasks assigned to you will appear here" : "Cases and tasks assigned to you will appear here", "Cases by Status" : "Cases by Status", + "Cases by status" : "Cases by status", "Cases overview" : "Cases overview", "Change status" : "Change status", "Change status..." : "Change status...", @@ -81,6 +82,7 @@ OC.L10N.register( "Days elapsed" : "Days elapsed", "Deadline" : "Deadline", "Deadline & Timing" : "Deadline & Timing", + "Deadline Alerts" : "Deadline Alerts", "Deadline extended from {old} to {new}. Reason: {reason}" : "Deadline extended from {old} to {new}. Reason: {reason}", "Deadline: {date}" : "Deadline: {date}", "Decision schema" : "Decision schema", @@ -155,6 +157,7 @@ OC.L10N.register( "Make decision" : "Make decision", "Manage case types and their configurations" : "Manage case types and their configurations", "Manage cases and workflows" : "Manage cases and workflows", + "Map" : "Map", "Mapping saved successfully" : "Mapping saved successfully", "Missing required fields: {fields}" : "Missing required fields: {fields}", "Must be a valid ISO 8601 duration (e.g., P28D)" : "Must be a valid ISO 8601 duration (e.g., P28D)", @@ -175,7 +178,9 @@ OC.L10N.register( "No cases found" : "No cases found", "No deadline" : "No deadline", "No file content received." : "No file content received.", + "No SLA targets" : "No SLA targets", "No items assigned to you" : "No items assigned to you", + "No items found" : "No items found", "No mapping configured for %s" : "No mapping configured for %s", "No open cases" : "No open cases", "No overdue cases" : "No overdue cases", @@ -185,6 +190,7 @@ OC.L10N.register( "No result recorded yet" : "No result recorded yet", "No settings available yet" : "No settings available yet", "No status types defined. Add at least one to publish this case type." : "No status types defined. Add at least one to publish this case type.", + "No task reminders" : "No task reminders", "No tasks found" : "No tasks found", "No tasks yet" : "No tasks yet", "No widgets configured" : "No widgets configured", @@ -198,6 +204,7 @@ OC.L10N.register( "Only locked documents may be edited." : "Only locked documents may be edited.", "Only published case types can be set as default" : "Only published case types can be set as default", "Open Cases" : "Open Cases", + "Open cases" : "Open cases", "OpenRegister is required" : "OpenRegister is required", "Optional description..." : "Optional description...", "Order" : "Order", @@ -253,6 +260,7 @@ OC.L10N.register( "Role type" : "Role type", "Save" : "Save", "Save the case type first before adding status types." : "Save the case type first before adding status types.", + "SLA Compliance" : "SLA Compliance", "Saved successfully" : "Saved successfully", "Schema ID" : "Schema ID", "Secret" : "Secret", @@ -269,13 +277,12 @@ OC.L10N.register( "Source Register" : "Source Register", "Source Schema" : "Source Schema", "Stakeholder" : "Stakeholder", + "Stalled Cases" : "Stalled Cases", "Start" : "Start", "Start date" : "Start date", "Started" : "Started", "Status" : "Status", "Status Timeline" : "Status Timeline", - "Status changed from \" : "Status changed from \", - "Status changed to \" : "Status changed to \", "Status schema" : "Status schema", "Status type" : "Status type", "Status type name is required" : "Status type name is required", @@ -284,6 +291,7 @@ OC.L10N.register( "Subject" : "Subject", "TASK" : "TASK", "Task" : "Task", + "Task Due Reminders" : "Task Due Reminders", "Task Information" : "Task Information", "Task schema" : "Task schema", "Tasks" : "Tasks", @@ -318,12 +326,15 @@ OC.L10N.register( "Valid from" : "Valid from", "Valid until" : "Valid until", "Value Mappings (enum translations)" : "Value Mappings (enum translations)", + "View all" : "View all", "View all activity" : "View all activity", + "View all deadline alerts" : "View all deadline alerts", "View all my work" : "View all my work", "View all overdue" : "View all overdue", "View case" : "View case", "View task" : "View task", "Welcome to Procest! Get started by creating your first case or task using the buttons above." : "Welcome to Procest! Get started by creating your first case or task using the buttons above.", + "Work Queue" : "Work Queue", "Welcome to Procest! Get started by creating your first case type in Settings." : "Welcome to Procest! Get started by creating your first case type in Settings.", "When heeftAlleAutorisaties is false, autorisaties must be specified." : "When heeftAlleAutorisaties is false, autorisaties must be specified.", "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified." : "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.", diff --git a/l10n/en.json b/l10n/en.json index a62343e1..c6e0f7f5 100644 --- a/l10n/en.json +++ b/l10n/en.json @@ -18,6 +18,7 @@ "Add document": "Add document", "Add note": "Add note", "All": "All", + "All cases active": "All cases active", "All caught up!": "All caught up!", "All your items are completed": "All your items are completed", "Are you sure you want to delete this case?": "Are you sure you want to delete this case?", @@ -40,15 +41,14 @@ "Cannot publish:": "Cannot publish:", "Case": "Case", "Case Information": "Case Information", + "Case Map": "Case Map", "Case Type": "Case Type", "Case Type Management": "Case Type Management", "Case Types": "Case Types", - "Case created with type \\": "Case created with type \\", "Case handler": "Case handler", "Case schema": "Case schema", "Case sensitive": "Case sensitive", "Case type": "Case type", - "Case type \\": "Case type \\", "Case type has expired (valid until {date})": "Case type has expired (valid until {date})", "Case type is not yet valid (valid from {date})": "Case type is not yet valid (valid from {date})", "Case type is required": "Case type is required", @@ -57,6 +57,7 @@ "Cases": "Cases", "Cases and tasks assigned to you will appear here": "Cases and tasks assigned to you will appear here", "Cases by Status": "Cases by Status", + "Cases by status": "Cases by status", "Cases overview": "Cases overview", "Change status": "Change status", "Change status...": "Change status...", @@ -80,6 +81,7 @@ "Days elapsed": "Days elapsed", "Deadline": "Deadline", "Deadline & Timing": "Deadline & Timing", + "Deadline Alerts": "Deadline Alerts", "Deadline extended from {old} to {new}. Reason: {reason}": "Deadline extended from {old} to {new}. Reason: {reason}", "Deadline: {date}": "Deadline: {date}", "Decision schema": "Decision schema", @@ -154,6 +156,7 @@ "Make decision": "Make decision", "Manage case types and their configurations": "Manage case types and their configurations", "Manage cases and workflows": "Manage cases and workflows", + "Map": "Map", "Mapping saved successfully": "Mapping saved successfully", "Missing required fields: {fields}": "Missing required fields: {fields}", "Must be a valid ISO 8601 duration (e.g., P28D)": "Must be a valid ISO 8601 duration (e.g., P28D)", @@ -174,7 +177,9 @@ "No cases found": "No cases found", "No deadline": "No deadline", "No file content received.": "No file content received.", + "No SLA targets": "No SLA targets", "No items assigned to you": "No items assigned to you", + "No items found": "No items found", "No mapping configured for %s": "No mapping configured for %s", "No open cases": "No open cases", "No overdue cases": "No overdue cases", @@ -184,6 +189,7 @@ "No result recorded yet": "No result recorded yet", "No settings available yet": "No settings available yet", "No status types defined. Add at least one to publish this case type.": "No status types defined. Add at least one to publish this case type.", + "No task reminders": "No task reminders", "No tasks found": "No tasks found", "No tasks yet": "No tasks yet", "No widgets configured": "No widgets configured", @@ -197,6 +203,7 @@ "Only locked documents may be edited.": "Only locked documents may be edited.", "Only published case types can be set as default": "Only published case types can be set as default", "Open Cases": "Open Cases", + "Open cases": "Open cases", "OpenRegister is required": "OpenRegister is required", "Optional description...": "Optional description...", "Order": "Order", @@ -252,6 +259,7 @@ "Role type": "Role type", "Save": "Save", "Save the case type first before adding status types.": "Save the case type first before adding status types.", + "SLA Compliance": "SLA Compliance", "Saved successfully": "Saved successfully", "Schema ID": "Schema ID", "Secret": "Secret", @@ -268,13 +276,12 @@ "Source Register": "Source Register", "Source Schema": "Source Schema", "Stakeholder": "Stakeholder", + "Stalled Cases": "Stalled Cases", "Start": "Start", "Start date": "Start date", "Started": "Started", "Status": "Status", "Status Timeline": "Status Timeline", - "Status changed from \\": "Status changed from \\", - "Status changed to \\": "Status changed to \\", "Status schema": "Status schema", "Status type": "Status type", "Status type name is required": "Status type name is required", @@ -283,6 +290,7 @@ "Subject": "Subject", "TASK": "TASK", "Task": "Task", + "Task Due Reminders": "Task Due Reminders", "Task Information": "Task Information", "Task schema": "Task schema", "Tasks": "Tasks", @@ -317,12 +325,15 @@ "Valid from": "Valid from", "Valid until": "Valid until", "Value Mappings (enum translations)": "Value Mappings (enum translations)", + "View all": "View all", "View all activity": "View all activity", + "View all deadline alerts": "View all deadline alerts", "View all my work": "View all my work", "View all overdue": "View all overdue", "View case": "View case", "View task": "View task", "Welcome to Procest! Get started by creating your first case or task using the buttons above.": "Welcome to Procest! Get started by creating your first case or task using the buttons above.", + "Work Queue": "Work Queue", "Welcome to Procest! Get started by creating your first case type in Settings.": "Welcome to Procest! Get started by creating your first case type in Settings.", "When heeftAlleAutorisaties is false, autorisaties must be specified.": "When heeftAlleAutorisaties is false, autorisaties must be specified.", "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.": "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.", diff --git a/l10n/nl.js b/l10n/nl.js index 07a3d086..2f99608d 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -19,6 +19,7 @@ OC.L10N.register( "Add document" : "Document toevoegen", "Add note" : "Notitie toevoegen", "All" : "Alle", + "All cases active" : "Alle zaken actief", "All caught up!" : "Alles bijgewerkt!", "All your items are completed" : "Al uw items zijn afgerond", "Are you sure you want to delete this case?" : "Weet u zeker dat u deze zaak wilt verwijderen?", @@ -41,15 +42,14 @@ OC.L10N.register( "Cannot publish:" : "Kan niet publiceren:", "Case" : "Zaak", "Case Information" : "Zaak informatie", + "Case Map" : "Zakenkaart", "Case Type" : "Zaaktype", "Case Type Management" : "Zaaktype beheer", "Case Types" : "Zaaktypen", - "Case created with type \" : "Zaak aangemaakt met type \", "Case handler" : "Behandelaar", "Case schema" : "Zaak schema", "Case sensitive" : "Hoofdlettergevoelig", "Case type" : "Zaaktype", - "Case type \" : "Zaaktype \", "Case type has expired (valid until {date})" : "Zaaktype is verlopen (geldig tot {date})", "Case type is not yet valid (valid from {date})" : "Zaaktype is nog niet geldig (geldig vanaf {date})", "Case type is required" : "Zaaktype is verplicht", @@ -58,6 +58,7 @@ OC.L10N.register( "Cases" : "Zaken", "Cases and tasks assigned to you will appear here" : "Zaken en taken die aan u zijn toegewezen verschijnen hier", "Cases by Status" : "Zaken per status", + "Cases by status" : "Zaken per status", "Cases overview" : "Zaken overzicht", "Change status" : "Status wijzigen", "Change status..." : "Status wijzigen...", @@ -81,6 +82,7 @@ OC.L10N.register( "Days elapsed" : "Dagen verstreken", "Deadline" : "Deadline", "Deadline & Timing" : "Deadline & Timing", + "Deadline Alerts" : "Deadline-waarschuwingen", "Deadline extended from {old} to {new}. Reason: {reason}" : "Deadline verlengd van {old} naar {new}. Reden: {reason}", "Deadline: {date}" : "Deadline: {date}", "Decision schema" : "Besluit schema", @@ -155,6 +157,7 @@ OC.L10N.register( "Make decision" : "Besluit nemen", "Manage case types and their configurations" : "Beheer zaaktypen en hun configuraties", "Manage cases and workflows" : "Beheer zaken en workflows", + "Map" : "Kaart", "Mapping saved successfully" : "Mapping succesvol opgeslagen", "Missing required fields: {fields}" : "Verplichte velden ontbreken: {fields}", "Must be a valid ISO 8601 duration (e.g., P28D)" : "Moet een geldige ISO 8601 duur zijn (bijv. P28D)", @@ -175,7 +178,9 @@ OC.L10N.register( "No cases found" : "Geen zaken gevonden", "No deadline" : "Geen deadline", "No file content received." : "Geen bestandsinhoud ontvangen.", + "No SLA targets" : "Geen SLA-doelen", "No items assigned to you" : "Geen items aan u toegewezen", + "No items found" : "Geen items gevonden", "No mapping configured for %s" : "Geen mapping geconfigureerd voor %s", "No open cases" : "Geen openstaande zaken", "No overdue cases" : "Geen openstaande zaken", @@ -185,6 +190,7 @@ OC.L10N.register( "No result recorded yet" : "Nog geen resultaat geregistreerd", "No settings available yet" : "Nog geen instellingen beschikbaar", "No status types defined. Add at least one to publish this case type." : "Geen statustypen gedefinieerd. Voeg er ten minste één toe om dit zaaktype te publiceren.", + "No task reminders" : "Geen taakherinneringen", "No tasks found" : "Geen taken gevonden", "No tasks yet" : "Nog geen taken", "No widgets configured" : "Geen widgets geconfigureerd", @@ -198,6 +204,7 @@ OC.L10N.register( "Only locked documents may be edited." : "Alleen vergrendelde documenten mogen bewerkt worden.", "Only published case types can be set as default" : "Alleen gepubliceerde zaaktypen kunnen als standaard worden ingesteld", "Open Cases" : "Open zaken", + "Open cases" : "Open zaken", "OpenRegister is required" : "OpenRegister is vereist", "Optional description..." : "Optionele omschrijving...", "Order" : "Volgorde", @@ -253,6 +260,7 @@ OC.L10N.register( "Role type" : "Roltype", "Save" : "Opslaan", "Save the case type first before adding status types." : "Sla het zaaktype eerst op voordat u statustypen toevoegt.", + "SLA Compliance" : "SLA-naleving", "Saved successfully" : "Succesvol opgeslagen", "Schema ID" : "Schema ID", "Secret" : "Geheim", @@ -269,13 +277,12 @@ OC.L10N.register( "Source Register" : "Bronregister", "Source Schema" : "Bronschema", "Stakeholder" : "Belanghebbende", + "Stalled Cases" : "Vastgelopen zaken", "Start" : "Start", "Start date" : "Startdatum", "Started" : "Gestart", "Status" : "Status", "Status Timeline" : "Status tijdlijn", - "Status changed from \" : "Status gewijzigd van \", - "Status changed to \" : "Status gewijzigd naar \", "Status schema" : "Status schema", "Status type" : "Statustype", "Status type name is required" : "Statustype naam is verplicht", @@ -284,6 +291,7 @@ OC.L10N.register( "Subject" : "Onderwerp", "TASK" : "TAAK", "Task" : "Taak", + "Task Due Reminders" : "Taakherinneringen", "Task Information" : "Taak informatie", "Task schema" : "Taak schema", "Tasks" : "Taken", @@ -318,12 +326,15 @@ OC.L10N.register( "Valid from" : "Geldig vanaf", "Valid until" : "Geldig tot", "Value Mappings (enum translations)" : "Waarde mappings (enum vertalingen)", + "View all" : "Alles bekijken", "View all activity" : "Alle activiteit bekijken", + "View all deadline alerts" : "Alle deadlines bekijken", "View all my work" : "Al mijn werk bekijken", "View all overdue" : "Alle openstaande bekijken", "View case" : "Bekijk zaak", "View task" : "Bekijk taak", "Welcome to Procest! Get started by creating your first case or task using the buttons above." : "Welkom bij Procest! Begin door uw eerste zaak of taak aan te maken met de knoppen hierboven.", + "Work Queue" : "Werkvoorraad", "Welcome to Procest! Get started by creating your first case type in Settings." : "Welkom bij Procest! Begin door uw eerste zaaktype aan te maken in Instellingen.", "When heeftAlleAutorisaties is false, autorisaties must be specified." : "Wanneer heeftAlleAutorisaties false is, dan moet autorisaties opgegeven worden.", "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified." : "Wanneer heeftAlleAutorisaties op true staat, mag autorisaties niet opgegeven worden. Indien heeftAlleAutorisaties false is, dan moet autorisaties opgegeven worden.", diff --git a/l10n/nl.json b/l10n/nl.json index 90b22c7f..82a645cb 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -18,6 +18,7 @@ "Add document": "Document toevoegen", "Add note": "Notitie toevoegen", "All": "Alle", + "All cases active": "Alle zaken actief", "All caught up!": "Alles bijgewerkt!", "All your items are completed": "Al uw items zijn afgerond", "Are you sure you want to delete this case?": "Weet u zeker dat u deze zaak wilt verwijderen?", @@ -40,15 +41,14 @@ "Cannot publish:": "Kan niet publiceren:", "Case": "Zaak", "Case Information": "Zaak informatie", + "Case Map": "Zakenkaart", "Case Type": "Zaaktype", "Case Type Management": "Zaaktype beheer", "Case Types": "Zaaktypen", - "Case created with type \\": "Zaak aangemaakt met type \\", "Case handler": "Behandelaar", "Case schema": "Zaak schema", "Case sensitive": "Hoofdlettergevoelig", "Case type": "Zaaktype", - "Case type \\": "Zaaktype \\", "Case type has expired (valid until {date})": "Zaaktype is verlopen (geldig tot {date})", "Case type is not yet valid (valid from {date})": "Zaaktype is nog niet geldig (geldig vanaf {date})", "Case type is required": "Zaaktype is verplicht", @@ -57,6 +57,7 @@ "Cases": "Zaken", "Cases and tasks assigned to you will appear here": "Zaken en taken die aan u zijn toegewezen verschijnen hier", "Cases by Status": "Zaken per status", + "Cases by status": "Zaken per status", "Cases overview": "Zaken overzicht", "Change status": "Status wijzigen", "Change status...": "Status wijzigen...", @@ -80,6 +81,7 @@ "Days elapsed": "Dagen verstreken", "Deadline": "Deadline", "Deadline & Timing": "Deadline & Timing", + "Deadline Alerts": "Deadline-waarschuwingen", "Deadline extended from {old} to {new}. Reason: {reason}": "Deadline verlengd van {old} naar {new}. Reden: {reason}", "Deadline: {date}": "Deadline: {date}", "Decision schema": "Besluit schema", @@ -154,6 +156,7 @@ "Make decision": "Besluit nemen", "Manage case types and their configurations": "Beheer zaaktypen en hun configuraties", "Manage cases and workflows": "Beheer zaken en workflows", + "Map": "Kaart", "Mapping saved successfully": "Mapping succesvol opgeslagen", "Missing required fields: {fields}": "Verplichte velden ontbreken: {fields}", "Must be a valid ISO 8601 duration (e.g., P28D)": "Moet een geldige ISO 8601 duur zijn (bijv. P28D)", @@ -174,7 +177,9 @@ "No cases found": "Geen zaken gevonden", "No deadline": "Geen deadline", "No file content received.": "Geen bestandsinhoud ontvangen.", + "No SLA targets": "Geen SLA-doelen", "No items assigned to you": "Geen items aan u toegewezen", + "No items found": "Geen items gevonden", "No mapping configured for %s": "Geen mapping geconfigureerd voor %s", "No open cases": "Geen openstaande zaken", "No overdue cases": "Geen openstaande zaken", @@ -184,6 +189,7 @@ "No result recorded yet": "Nog geen resultaat geregistreerd", "No settings available yet": "Nog geen instellingen beschikbaar", "No status types defined. Add at least one to publish this case type.": "Geen statustypen gedefinieerd. Voeg er ten minste één toe om dit zaaktype te publiceren.", + "No task reminders": "Geen taakherinneringen", "No tasks found": "Geen taken gevonden", "No tasks yet": "Nog geen taken", "No widgets configured": "Geen widgets geconfigureerd", @@ -197,6 +203,7 @@ "Only locked documents may be edited.": "Alleen vergrendelde documenten mogen bewerkt worden.", "Only published case types can be set as default": "Alleen gepubliceerde zaaktypen kunnen als standaard worden ingesteld", "Open Cases": "Open zaken", + "Open cases": "Open zaken", "OpenRegister is required": "OpenRegister is vereist", "Optional description...": "Optionele omschrijving...", "Order": "Volgorde", @@ -252,6 +259,7 @@ "Role type": "Roltype", "Save": "Opslaan", "Save the case type first before adding status types.": "Sla het zaaktype eerst op voordat u statustypen toevoegt.", + "SLA Compliance": "SLA-naleving", "Saved successfully": "Succesvol opgeslagen", "Schema ID": "Schema ID", "Secret": "Geheim", @@ -268,13 +276,12 @@ "Source Register": "Bronregister", "Source Schema": "Bronschema", "Stakeholder": "Belanghebbende", + "Stalled Cases": "Vastgelopen zaken", "Start": "Start", "Start date": "Startdatum", "Started": "Gestart", "Status": "Status", "Status Timeline": "Status tijdlijn", - "Status changed from \\": "Status gewijzigd van \\", - "Status changed to \\": "Status gewijzigd naar \\", "Status schema": "Status schema", "Status type": "Statustype", "Status type name is required": "Statustype naam is verplicht", @@ -283,6 +290,7 @@ "Subject": "Onderwerp", "TASK": "TAAK", "Task": "Taak", + "Task Due Reminders": "Taakherinneringen", "Task Information": "Taak informatie", "Task schema": "Taak schema", "Tasks": "Taken", @@ -317,12 +325,15 @@ "Valid from": "Geldig vanaf", "Valid until": "Geldig tot", "Value Mappings (enum translations)": "Waarde mappings (enum vertalingen)", + "View all": "Alles bekijken", "View all activity": "Alle activiteit bekijken", + "View all deadline alerts": "Alle deadlines bekijken", "View all my work": "Al mijn werk bekijken", "View all overdue": "Alle openstaande bekijken", "View case": "Bekijk zaak", "View task": "Bekijk taak", "Welcome to Procest! Get started by creating your first case or task using the buttons above.": "Welkom bij Procest! Begin door uw eerste zaak of taak aan te maken met de knoppen hierboven.", + "Work Queue": "Werkvoorraad", "Welcome to Procest! Get started by creating your first case type in Settings.": "Welkom bij Procest! Begin door uw eerste zaaktype aan te maken in Instellingen.", "When heeftAlleAutorisaties is false, autorisaties must be specified.": "Wanneer heeftAlleAutorisaties false is, dan moet autorisaties opgegeven worden.", "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.": "Wanneer heeftAlleAutorisaties op true staat, mag autorisaties niet opgegeven worden. Indien heeftAlleAutorisaties false is, dan moet autorisaties opgegeven worden.", diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 898b925c..114f2cf6 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -8,7 +8,7 @@ * @category AppInfo * @package OCA\Procest\AppInfo * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/BackgroundJob/AppointmentReminderJob.php b/lib/BackgroundJob/AppointmentReminderJob.php index 3ff6ef70..23fe5d3c 100644 --- a/lib/BackgroundJob/AppointmentReminderJob.php +++ b/lib/BackgroundJob/AppointmentReminderJob.php @@ -21,8 +21,9 @@ public function __construct( private LoggerInterface $logger, ) { parent::__construct($time); - $this->setInterval(86400); // Daily. - } + $this->setInterval(86400); + // Daily. + }//end __construct() protected function run($argument): void { @@ -50,19 +51,22 @@ protected function run($argument): void ); foreach (($result['objects'] ?? []) as $apt) { - $data = is_object($apt) ? $apt->jsonSerialize() : $apt; + $data = is_object($apt) ? $apt->jsonSerialize() : $apt; $aptDate = substr($data['dateTime'] ?? '', 0, 10); if ($aptDate === $tomorrow && empty($data['reminderSent'])) { $data['reminderSent'] = true; $objectService->saveObject((int) $register, (int) $schema, $data); - $this->logger->info('Procest: Reminder sent for appointment', [ - 'appointmentId' => $data['uuid'] ?? $data['id'] ?? '', - ]); + $this->logger->info( + 'Procest: Reminder sent for appointment', + [ + 'appointmentId' => $data['uuid'] ?? $data['id'] ?? '', + ] + ); } } } catch (\Exception $e) { $this->logger->error('Procest: Reminder job error: '.$e->getMessage()); - } - } -} + }//end try + }//end run() +}//end class diff --git a/lib/BackgroundJob/BerichtenboxReadStatusJob.php b/lib/BackgroundJob/BerichtenboxReadStatusJob.php index e0af0cab..b8ca5958 100644 --- a/lib/BackgroundJob/BerichtenboxReadStatusJob.php +++ b/lib/BackgroundJob/BerichtenboxReadStatusJob.php @@ -17,13 +17,14 @@ public function __construct( private LoggerInterface $logger, ) { parent::__construct($time); - $this->setInterval(86400); // Daily. - } + $this->setInterval(86400); + // Daily. + }//end __construct() protected function run($argument): void { $this->logger->info('Procest: Running Berichtenbox read status poll'); // The actual polling happens in BerichtenboxService::pollReadStatus // This job would iterate unread messages and poll each one. - } -} + }//end run() +}//end class diff --git a/lib/BackgroundJob/ShareMaintenanceJob.php b/lib/BackgroundJob/ShareMaintenanceJob.php index c1acbe3e..c422589a 100644 --- a/lib/BackgroundJob/ShareMaintenanceJob.php +++ b/lib/BackgroundJob/ShareMaintenanceJob.php @@ -8,7 +8,7 @@ * @category BackgroundJob * @package OCA\Procest\BackgroundJob * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -47,7 +47,7 @@ class ShareMaintenanceJob extends TimedJob * @param ITimeFactory $time The time factory * @param SettingsService $settingsService The settings service * @param IAppManager $appManager The app manager - * @param ContainerInterface $container The DI container + * @param ContainerInterface $container The DI container * @param LoggerInterface $logger The logger * * @return void diff --git a/lib/Controller/AcController.php b/lib/Controller/AcController.php index 09e0719c..6e91e9c0 100644 --- a/lib/Controller/AcController.php +++ b/lib/Controller/AcController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/AiController.php b/lib/Controller/AiController.php index f9c24cbd..f1fb721f 100644 --- a/lib/Controller/AiController.php +++ b/lib/Controller/AiController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -47,12 +47,12 @@ class AiController extends Controller /** * Constructor for AiController. * - * @param string $appName The application name - * @param IRequest $request The request object - * @param AiService $aiService The AI service - * @param SettingsService $settingsService The settings service - * @param IUserSession $userSession The user session - * @param LoggerInterface $logger The logger interface + * @param string $appName The application name + * @param IRequest $request The request object + * @param AiService $aiService The AI service + * @param SettingsService $settingsService The settings service + * @param IUserSession $userSession The user session + * @param LoggerInterface $logger The logger interface * * @return void */ @@ -277,11 +277,13 @@ public function auditIndex(): JSONResponse 'offset' => (int) $this->request->getParam('offset', '0'), ]; - return new JSONResponse([ - 'success' => true, - 'filters' => array_filter($filters), - 'message' => 'Audit trail query — implement with OpenRegister object listing', - ]); + return new JSONResponse( + [ + 'success' => true, + 'filters' => array_filter($filters), + 'message' => 'Audit trail query — implement with OpenRegister object listing', + ] + ); }//end auditIndex() /** diff --git a/lib/Controller/AppointmentController.php b/lib/Controller/AppointmentController.php index 12f12cfa..a52c19e5 100644 --- a/lib/Controller/AppointmentController.php +++ b/lib/Controller/AppointmentController.php @@ -17,17 +17,21 @@ public function __construct( private AppointmentService $appointmentService, ) { parent::__construct(appName: Application::APP_ID, request: $request); - } + }//end __construct() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function index(): JSONResponse { $caseId = $this->request->getParam('caseId'); $appointments = $this->appointmentService->getAppointmentsForCase($caseId ?? ''); return new JSONResponse(['success' => true, 'appointments' => $appointments]); - } + }//end index() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function create(): JSONResponse { $caseId = $this->request->getParam('caseId'); @@ -48,23 +52,29 @@ public function create(): JSONResponse $result = $this->appointmentService->bookAppointment($caseId, $data); return new JSONResponse(['success' => true, 'appointment' => $result]); - } + }//end create() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function cancel(string $appointmentId): JSONResponse { $result = $this->appointmentService->cancelAppointment($appointmentId); return new JSONResponse(['success' => true, 'appointment' => $result]); - } + }//end cancel() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function noShow(string $appointmentId): JSONResponse { $result = $this->appointmentService->markNoShow($appointmentId); return new JSONResponse(['success' => true, 'appointment' => $result]); - } + }//end noShow() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function timeslots(): JSONResponse { $productId = $this->request->getParam('productId', ''); @@ -73,5 +83,5 @@ public function timeslots(): JSONResponse $slots = $this->appointmentService->getTimeslots($productId, $locationId, $date); return new JSONResponse(['success' => true, 'timeslots' => $slots]); - } -} + }//end timeslots() +}//end class diff --git a/lib/Controller/BerichtenboxController.php b/lib/Controller/BerichtenboxController.php index 662ba3b7..7f68bd0b 100644 --- a/lib/Controller/BerichtenboxController.php +++ b/lib/Controller/BerichtenboxController.php @@ -17,16 +17,18 @@ public function __construct( private BerichtenboxService $berichtenboxService, ) { parent::__construct(appName: Application::APP_ID, request: $request); - } + }//end __construct() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function send(): JSONResponse { - $caseId = $this->request->getParam('caseId'); - $bsn = $this->request->getParam('bsn', ''); - $subject = $this->request->getParam('subject', ''); - $body = $this->request->getParam('body', ''); - $typeCode = $this->request->getParam('berichtTypeCode', ''); + $caseId = $this->request->getParam('caseId'); + $bsn = $this->request->getParam('bsn', ''); + $subject = $this->request->getParam('subject', ''); + $body = $this->request->getParam('body', ''); + $typeCode = $this->request->getParam('berichtTypeCode', ''); $attachmentFileId = $this->request->getParam('attachmentFileId'); if (empty($caseId) === true) { @@ -34,7 +36,12 @@ public function send(): JSONResponse } $result = $this->berichtenboxService->sendMessage( - $caseId, $bsn, $subject, $body, $typeCode, $attachmentFileId + $caseId, + $bsn, + $subject, + $body, + $typeCode, + $attachmentFileId ); if (isset($result['error']) === true) { @@ -42,20 +49,24 @@ public function send(): JSONResponse } return new JSONResponse(['success' => true, 'message' => $result]); - } + }//end send() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function messages(): JSONResponse { $caseId = $this->request->getParam('caseId', ''); $messages = $this->berichtenboxService->getMessagesForCase($caseId); return new JSONResponse(['success' => true, 'messages' => $messages]); - } + }//end messages() - /** @NoAdminRequired */ + /** + * @NoAdminRequired + */ public function poll(string $messageId): JSONResponse { $result = $this->berichtenboxService->pollReadStatus($messageId); return new JSONResponse(['success' => true, 'message' => $result]); - } -} + }//end poll() +}//end class diff --git a/lib/Controller/BrcController.php b/lib/Controller/BrcController.php index a28375fb..706699db 100644 --- a/lib/Controller/BrcController.php +++ b/lib/Controller/BrcController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/CaseDefinitionController.php b/lib/Controller/CaseDefinitionController.php index fab2601f..c3d36b25 100644 --- a/lib/Controller/CaseDefinitionController.php +++ b/lib/Controller/CaseDefinitionController.php @@ -9,7 +9,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -41,11 +41,11 @@ class CaseDefinitionController extends Controller /** * Constructor. * - * @param string $appName The app name. - * @param IRequest $request The request object. - * @param CaseDefinitionExportService $exportService The export service. - * @param CaseDefinitionImportService $importService The import service. - * @param LoggerInterface $logger The logger. + * @param string $appName The app name. + * @param IRequest $request The request object. + * @param CaseDefinitionExportService $exportService The export service. + * @param CaseDefinitionImportService $importService The import service. + * @param LoggerInterface $logger The logger. */ public function __construct( string $appName, @@ -55,7 +55,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } + }//end __construct() /** * Export a case definition as a ZIP archive. @@ -104,13 +104,13 @@ public function export(): DataDownloadResponse|JSONResponse Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error('Case definition export failed: ' . $e->getMessage()); + $this->logger->error('Case definition export failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Export failed: ' . $e->getMessage()], + ['error' => 'Export failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end export() /** * Validate a case definition package without importing it. @@ -135,13 +135,13 @@ public function validate(): JSONResponse return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Case definition validation failed: ' . $e->getMessage()); + $this->logger->error('Case definition validation failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Validation failed: ' . $e->getMessage()], + ['error' => 'Validation failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end validate() /** * Import a case definition package. @@ -153,7 +153,7 @@ public function validate(): JSONResponse public function import(): JSONResponse { try { - $file = $this->request->getUploadedFile('package'); + $file = $this->request->getUploadedFile('package'); $strategy = $this->request->getParam('strategy', 'skip'); if ($file === null || !isset($file['tmp_name'])) { @@ -175,17 +175,15 @@ public function import(): JSONResponse $strategy ); - $statusCode = $result['success'] - ? Http::STATUS_OK - : Http::STATUS_UNPROCESSABLE_ENTITY; + $statusCode = $result['success'] ? Http::STATUS_OK : Http::STATUS_UNPROCESSABLE_ENTITY; return new JSONResponse($result, $statusCode); } catch (\Throwable $e) { - $this->logger->error('Case definition import failed: ' . $e->getMessage()); + $this->logger->error('Case definition import failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Import failed: ' . $e->getMessage()], + ['error' => 'Import failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } -} + }//end try + }//end import() +}//end class diff --git a/lib/Controller/CaseSharingController.php b/lib/Controller/CaseSharingController.php index ccddee65..e98a4b96 100644 --- a/lib/Controller/CaseSharingController.php +++ b/lib/Controller/CaseSharingController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -40,13 +40,13 @@ class CaseSharingController extends Controller /** * Constructor for the CaseSharingController. * - * @param IRequest $request The request object - * @param CaseSharingService $caseSharingService The sharing service - * @param CaseTransferService $caseTransferService The transfer service - * @param SettingsService $settingsService The settings service - * @param IAppManager $appManager The app manager - * @param ContainerInterface $container The DI container - * @param IUserSession $userSession The user session + * @param IRequest $request The request object + * @param CaseSharingService $caseSharingService The sharing service + * @param CaseTransferService $caseTransferService The transfer service + * @param SettingsService $settingsService The settings service + * @param IAppManager $appManager The app manager + * @param ContainerInterface $container The DI container + * @param IUserSession $userSession The user session * * @return void * @@ -134,7 +134,7 @@ public function createShare(): JSONResponse $password, $fieldExclusions, ); - } + }//end if return new JSONResponse(['success' => true, 'share' => $share]); }//end createShare() @@ -168,11 +168,11 @@ public function revokeShare(string $shareId): JSONResponse */ public function initiateTransfer(): JSONResponse { - $caseId = $this->request->getParam('caseId'); + $caseId = $this->request->getParam('caseId'); $sourceOrganization = $this->request->getParam('sourceOrganization', ''); $targetOrganization = $this->request->getParam('targetOrganization'); - $reason = $this->request->getParam('reason', ''); - $requestedDate = $this->request->getParam('requestedDate', date('Y-m-d')); + $reason = $this->request->getParam('reason', ''); + $requestedDate = $this->request->getParam('requestedDate', date('Y-m-d')); if (empty($caseId) === true || empty($targetOrganization) === true) { return new JSONResponse( @@ -207,7 +207,7 @@ public function handleTransfer(string $transferId): JSONResponse if ($action === 'accept') { $result = $this->caseTransferService->acceptTransfer($transferId); - } elseif ($action === 'reject') { + } else if ($action === 'reject') { $reason = $this->request->getParam('reason', ''); $result = $this->caseTransferService->rejectTransfer($transferId, $reason); } else { diff --git a/lib/Controller/ConsultationController.php b/lib/Controller/ConsultationController.php index 64cec7b8..316e28ea 100644 --- a/lib/Controller/ConsultationController.php +++ b/lib/Controller/ConsultationController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -31,8 +31,6 @@ */ class ConsultationController extends Controller { - - /** * Constructor. * @@ -46,8 +44,7 @@ public function __construct( private readonly ConsultationService $consultationService, ) { parent::__construct($appName, $request); - } - + }//end __construct() /** * List consultations for a case. @@ -62,8 +59,7 @@ public function index(string $caseId): JSONResponse { $consultations = $this->consultationService->getConsultationsForCase($caseId); return new JSONResponse(['results' => $consultations]); - } - + }//end index() /** * Create a new consultation. @@ -81,8 +77,7 @@ public function create(): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end create() /** * Update consultation status. @@ -103,8 +98,7 @@ public function updateStatus(string $id): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end updateStatus() /** * Submit advice response. @@ -124,8 +118,7 @@ public function submitResponse(string $id): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end submitResponse() /** * Get overdue consultations. @@ -138,5 +131,5 @@ public function overdue(): JSONResponse { $overdue = $this->consultationService->getOverdueConsultations(); return new JSONResponse(['results' => $overdue]); - } -} + }//end overdue() +}//end class diff --git a/lib/Controller/DashboardController.php b/lib/Controller/DashboardController.php index 07a5c5c6..0b6664ca 100644 --- a/lib/Controller/DashboardController.php +++ b/lib/Controller/DashboardController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/DrcController.php b/lib/Controller/DrcController.php index 805d6394..64e7954c 100644 --- a/lib/Controller/DrcController.php +++ b/lib/Controller/DrcController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/EmailController.php b/lib/Controller/EmailController.php index ce91f223..55863180 100644 --- a/lib/Controller/EmailController.php +++ b/lib/Controller/EmailController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -31,8 +31,6 @@ */ class EmailController extends Controller { - - /** * Constructor. * @@ -46,8 +44,7 @@ public function __construct( private readonly CaseEmailService $emailService, ) { parent::__construct($appName, $request); - } - + }//end __construct() /** * Send an email from case context. @@ -61,7 +58,7 @@ public function __construct( public function send(string $caseId): JSONResponse { try { - $data = json_decode($this->request->getContent() ?: '{}', true) ?: []; + $data = json_decode($this->request->getContent() ?: '{}', true) ?: []; $result = $this->emailService->sendEmail( $caseId, $data['to'] ?? '', @@ -73,8 +70,7 @@ public function send(string $caseId): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end send() /** * Send email using a template. @@ -98,8 +94,7 @@ public function sendFromTemplate(string $caseId): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end sendFromTemplate() /** * Preview a template with case data. @@ -112,18 +107,20 @@ public function sendFromTemplate(string $caseId): JSONResponse */ public function preview(string $caseId): JSONResponse { - $data = json_decode($this->request->getContent() ?: '{}', true) ?: []; - $template = $data['body'] ?? ''; - $caseData = []; // Would load from case. + $data = json_decode($this->request->getContent() ?: '{}', true) ?: []; + $template = $data['body'] ?? ''; + $caseData = []; + // Would load from case. $resolved = $this->emailService->resolveVariables($template, $caseData); $unresolved = $this->emailService->findUnresolvedVariables($template, $caseData); - return new JSONResponse([ - 'resolved' => $resolved, - 'unresolved' => $unresolved, - ]); - } - + return new JSONResponse( + [ + 'resolved' => $resolved, + 'unresolved' => $unresolved, + ] + ); + }//end preview() /** * Get email templates for a case type. @@ -138,5 +135,5 @@ public function templates(string $caseTypeId): JSONResponse { $templates = $this->emailService->getTemplatesForCaseType($caseTypeId); return new JSONResponse(['results' => $templates]); - } -} + }//end templates() +}//end class diff --git a/lib/Controller/GisProxyController.php b/lib/Controller/GisProxyController.php index 078e4518..0da26c64 100644 --- a/lib/Controller/GisProxyController.php +++ b/lib/Controller/GisProxyController.php @@ -9,7 +9,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/HealthController.php b/lib/Controller/HealthController.php index 1d499218..42ebb8b2 100644 --- a/lib/Controller/HealthController.php +++ b/lib/Controller/HealthController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/InspectionController.php b/lib/Controller/InspectionController.php index 7399f44e..300c6b52 100644 --- a/lib/Controller/InspectionController.php +++ b/lib/Controller/InspectionController.php @@ -9,7 +9,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -41,12 +41,12 @@ class InspectionController extends Controller /** * Constructor. * - * @param string $appName The app name. - * @param IRequest $request The request object. - * @param InspectionService $inspectionService The inspection service. - * @param ChecklistService $checklistService The checklist service. - * @param IUserSession $userSession The user session. - * @param LoggerInterface $logger The logger. + * @param string $appName The app name. + * @param IRequest $request The request object. + * @param InspectionService $inspectionService The inspection service. + * @param ChecklistService $checklistService The checklist service. + * @param IUserSession $userSession The user session. + * @param LoggerInterface $logger The logger. */ public function __construct( string $appName, @@ -57,7 +57,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } + }//end __construct() /** * List inspections assigned to the current user. @@ -70,20 +70,20 @@ public function index(): JSONResponse { try { $userId = $this->userSession->getUser()?->getUID() ?? ''; - $date = $this->request->getParam('date'); + $date = $this->request->getParam('date'); // In full implementation, query OpenRegister for inspections. $inspections = $this->inspectionService->getInspections($userId, $date, []); return new JSONResponse(['results' => $inspections]); } catch (\Throwable $e) { - $this->logger->error('Failed to list inspections: ' . $e->getMessage()); + $this->logger->error('Failed to list inspections: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to list inspections: ' . $e->getMessage()], + ['error' => 'Failed to list inspections: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end index() /** * Record GPS location for an inspection. @@ -97,10 +97,10 @@ public function index(): JSONResponse public function captureLocation(string $id): JSONResponse { try { - $body = $this->getRequestBody(); - $latitude = (float)($body['latitude'] ?? 0); - $longitude = (float)($body['longitude'] ?? 0); - $accuracy = (float)($body['accuracy'] ?? 0); + $body = $this->getRequestBody(); + $latitude = (float) ($body['latitude'] ?? 0); + $longitude = (float) ($body['longitude'] ?? 0); + $accuracy = (float) ($body['accuracy'] ?? 0); $inspection = $body['inspection'] ?? []; if ($latitude === 0.0 && $longitude === 0.0) { @@ -119,13 +119,13 @@ public function captureLocation(string $id): JSONResponse return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Failed to capture location: ' . $e->getMessage()); + $this->logger->error('Failed to capture location: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to capture location: ' . $e->getMessage()], + ['error' => 'Failed to capture location: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end captureLocation() /** * Complete a checklist item. @@ -140,11 +140,11 @@ public function captureLocation(string $id): JSONResponse public function completeChecklistItem(string $id, string $itemId): JSONResponse { try { - $body = $this->getRequestBody(); - $status = $body['status'] ?? ''; + $body = $this->getRequestBody(); + $status = $body['status'] ?? ''; $toelichting = $body['toelichting'] ?? ''; - $photoRefs = $body['photoRefs'] ?? []; - $checklist = $body['checklist'] ?? []; + $photoRefs = $body['photoRefs'] ?? []; + $checklist = $body['checklist'] ?? []; $updatedChecklist = $this->checklistService->completeItem( $checklist, @@ -156,23 +156,25 @@ public function completeChecklistItem(string $id, string $itemId): JSONResponse $progress = $this->checklistService->getProgress($updatedChecklist); - return new JSONResponse([ - 'checklist' => $updatedChecklist, - 'progress' => $progress, - ]); + return new JSONResponse( + [ + 'checklist' => $updatedChecklist, + 'progress' => $progress, + ] + ); } catch (\InvalidArgumentException $e) { return new JSONResponse( ['error' => $e->getMessage()], Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error('Failed to complete checklist item: ' . $e->getMessage()); + $this->logger->error('Failed to complete checklist item: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to complete checklist item: ' . $e->getMessage()], + ['error' => 'Failed to complete checklist item: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end completeChecklistItem() /** * Upload a photo for an inspection. @@ -186,21 +188,21 @@ public function completeChecklistItem(string $id, string $itemId): JSONResponse public function addPhoto(string $id): JSONResponse { try { - $body = $this->getRequestBody(); - $inspection = $body['inspection'] ?? []; + $body = $this->getRequestBody(); + $inspection = $body['inspection'] ?? []; $photoMetadata = $body['photoMetadata'] ?? []; $updatedInspection = $this->inspectionService->addPhoto($inspection, $photoMetadata); return new JSONResponse($updatedInspection); } catch (\Throwable $e) { - $this->logger->error('Failed to add photo: ' . $e->getMessage()); + $this->logger->error('Failed to add photo: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to add photo: ' . $e->getMessage()], + ['error' => 'Failed to add photo: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end addPhoto() /** * Complete an inspection. @@ -214,7 +216,7 @@ public function addPhoto(string $id): JSONResponse public function complete(string $id): JSONResponse { try { - $body = $this->getRequestBody(); + $body = $this->getRequestBody(); $inspection = $body['inspection'] ?? []; $conclusion = $body['conclusion'] ?? ''; @@ -227,13 +229,13 @@ public function complete(string $id): JSONResponse Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error('Failed to complete inspection: ' . $e->getMessage()); + $this->logger->error('Failed to complete inspection: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to complete inspection: ' . $e->getMessage()], + ['error' => 'Failed to complete inspection: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end complete() /** * Get the parsed request body. @@ -249,5 +251,5 @@ private function getRequestBody(): array $decoded = json_decode($body, true); return is_array($decoded) ? $decoded : []; - } -} + }//end getRequestBody() +}//end class diff --git a/lib/Controller/LegesController.php b/lib/Controller/LegesController.php index 4930f996..9f796367 100644 --- a/lib/Controller/LegesController.php +++ b/lib/Controller/LegesController.php @@ -9,7 +9,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -42,12 +42,12 @@ class LegesController extends Controller /** * Constructor. * - * @param string $appName The app name. - * @param IRequest $request The request object. - * @param LegesCalculationService $calculationService The calculation service. - * @param LegesExportService $exportService The export service. - * @param IUserSession $userSession The user session. - * @param LoggerInterface $logger The logger. + * @param string $appName The app name. + * @param IRequest $request The request object. + * @param LegesCalculationService $calculationService The calculation service. + * @param LegesExportService $exportService The export service. + * @param IUserSession $userSession The user session. + * @param LoggerInterface $logger The logger. */ public function __construct( string $appName, @@ -58,7 +58,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } + }//end __construct() /** * Calculate leges for a case. @@ -70,7 +70,7 @@ public function __construct( public function calculate(): JSONResponse { try { - $caseData = $this->request->getParam('caseData', []); + $caseData = $this->request->getParam('caseData', []); $verordening = $this->request->getParam('verordening', []); if (empty($caseData) || empty($verordening)) { @@ -83,6 +83,7 @@ public function calculate(): JSONResponse if (is_string($caseData)) { $caseData = json_decode($caseData, true) ?? []; } + if (is_string($verordening)) { $verordening = json_decode($verordening, true) ?? []; } @@ -93,13 +94,13 @@ public function calculate(): JSONResponse return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Leges calculation failed: ' . $e->getMessage()); + $this->logger->error('Leges calculation failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Calculation failed: ' . $e->getMessage()], + ['error' => 'Calculation failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end calculate() /** * Recalculate leges with corrected data. @@ -111,17 +112,19 @@ public function calculate(): JSONResponse public function recalculate(): JSONResponse { try { - $caseData = $this->request->getParam('caseData', []); - $verordening = $this->request->getParam('verordening', []); + $caseData = $this->request->getParam('caseData', []); + $verordening = $this->request->getParam('verordening', []); $previousCalc = $this->request->getParam('previousCalculation', []); - $reason = $this->request->getParam('correctionReason', ''); + $reason = $this->request->getParam('correctionReason', ''); if (is_string($caseData)) { $caseData = json_decode($caseData, true) ?? []; } + if (is_string($verordening)) { $verordening = json_decode($verordening, true) ?? []; } + if (is_string($previousCalc)) { $previousCalc = json_decode($previousCalc, true) ?? []; } @@ -138,13 +141,13 @@ public function recalculate(): JSONResponse return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Leges recalculation failed: ' . $e->getMessage()); + $this->logger->error('Leges recalculation failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Recalculation failed: ' . $e->getMessage()], + ['error' => 'Recalculation failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end recalculate() /** * Calculate verrekening (deduction). @@ -156,20 +159,20 @@ public function recalculate(): JSONResponse public function verrekening(): JSONResponse { try { - $currentAmount = (float)$this->request->getParam('currentAmount', 0); - $previousAmount = (float)$this->request->getParam('previousAmount', 0); + $currentAmount = (float) $this->request->getParam('currentAmount', 0); + $previousAmount = (float) $this->request->getParam('previousAmount', 0); $result = $this->calculationService->calculateVerrekening($currentAmount, $previousAmount); return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Verrekening calculation failed: ' . $e->getMessage()); + $this->logger->error('Verrekening calculation failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Verrekening failed: ' . $e->getMessage()], + ['error' => 'Verrekening failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end verrekening() /** * Calculate teruggaaf (refund). @@ -181,9 +184,9 @@ public function verrekening(): JSONResponse public function teruggaaf(): JSONResponse { try { - $imposedAmount = (float)$this->request->getParam('imposedAmount', 0); - $refundFraction = (float)$this->request->getParam('refundFraction', 1.0); - $reason = (string)$this->request->getParam('reason', ''); + $imposedAmount = (float) $this->request->getParam('imposedAmount', 0); + $refundFraction = (float) $this->request->getParam('refundFraction', 1.0); + $reason = (string) $this->request->getParam('reason', ''); $result = $this->calculationService->calculateTeruggaaf( $imposedAmount, @@ -193,13 +196,13 @@ public function teruggaaf(): JSONResponse return new JSONResponse($result); } catch (\Throwable $e) { - $this->logger->error('Teruggaaf calculation failed: ' . $e->getMessage()); + $this->logger->error('Teruggaaf calculation failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Teruggaaf failed: ' . $e->getMessage()], + ['error' => 'Teruggaaf failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end teruggaaf() /** * Export berekeningen to financial system format. @@ -212,7 +215,7 @@ public function export(): DataDownloadResponse|JSONResponse { try { $berekeningen = $this->request->getParam('berekeningen', []); - $format = $this->request->getParam('format', LegesExportService::FORMAT_CSV); + $format = $this->request->getParam('format', LegesExportService::FORMAT_CSV); if (is_string($berekeningen)) { $berekeningen = json_decode($berekeningen, true) ?? []; @@ -238,11 +241,11 @@ public function export(): DataDownloadResponse|JSONResponse Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error('Leges export failed: ' . $e->getMessage()); + $this->logger->error('Leges export failed: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Export failed: ' . $e->getMessage()], + ['error' => 'Export failed: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } -} + }//end try + }//end export() +}//end class diff --git a/lib/Controller/MetricsController.php b/lib/Controller/MetricsController.php index de693618..e3ef8716 100644 --- a/lib/Controller/MetricsController.php +++ b/lib/Controller/MetricsController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -109,9 +109,13 @@ private function collectMetrics(): string // Cases total by status and case_type. $lines[] = '# HELP procest_cases_total Total cases by status and case_type'; $lines[] = '# TYPE procest_cases_total gauge'; - $caseCounts = $this->getCached('procest_metrics_case_counts', self::CACHE_TTL_DEFAULT, function () { - return $this->getCaseCounts(); - }); + $caseCounts = $this->getCached( + 'procest_metrics_case_counts', + self::CACHE_TTL_DEFAULT, + function () { + return $this->getCaseCounts(); + } + ); foreach ($caseCounts as $row) { $status = $this->sanitizeLabel(value: $row['status']); $caseType = $this->sanitizeLabel(value: $row['case_type']); @@ -122,29 +126,41 @@ private function collectMetrics(): string $lines[] = ''; // Cases overdue total. - $overdueCount = $this->getCached('procest_metrics_overdue_cases', self::CACHE_TTL_OVERDUE, function () { - return $this->getOverdueCasesCount(); - }); - $lines[] = '# HELP procest_cases_overdue_total Cases past their deadline'; - $lines[] = '# TYPE procest_cases_overdue_total gauge'; - $lines[] = 'procest_cases_overdue_total '.$overdueCount; - $lines[] = ''; + $overdueCount = $this->getCached( + 'procest_metrics_overdue_cases', + self::CACHE_TTL_OVERDUE, + function () { + return $this->getOverdueCasesCount(); + } + ); + $lines[] = '# HELP procest_cases_overdue_total Cases past their deadline'; + $lines[] = '# TYPE procest_cases_overdue_total gauge'; + $lines[] = 'procest_cases_overdue_total '.$overdueCount; + $lines[] = ''; // Cases created today. - $createdToday = $this->getCached('procest_metrics_created_today', self::CACHE_TTL_DEFAULT, function () { - return $this->getCasesCreatedTodayCount(); - }); - $lines[] = '# HELP procest_cases_created_today Cases created today'; - $lines[] = '# TYPE procest_cases_created_today gauge'; - $lines[] = 'procest_cases_created_today '.$createdToday; - $lines[] = ''; + $createdToday = $this->getCached( + 'procest_metrics_created_today', + self::CACHE_TTL_DEFAULT, + function () { + return $this->getCasesCreatedTodayCount(); + } + ); + $lines[] = '# HELP procest_cases_created_today Cases created today'; + $lines[] = '# TYPE procest_cases_created_today gauge'; + $lines[] = 'procest_cases_created_today '.$createdToday; + $lines[] = ''; // Tasks total by status. $lines[] = '# HELP procest_tasks_total Total tasks by status'; $lines[] = '# TYPE procest_tasks_total gauge'; - $taskCounts = $this->getCached('procest_metrics_task_counts', self::CACHE_TTL_DEFAULT, function () { - return $this->getTaskCounts(); - }); + $taskCounts = $this->getCached( + 'procest_metrics_task_counts', + self::CACHE_TTL_DEFAULT, + function () { + return $this->getTaskCounts(); + } + ); foreach ($taskCounts as $row) { $status = $this->sanitizeLabel(value: $row['status']); $count = (int) $row['cnt']; @@ -154,13 +170,17 @@ private function collectMetrics(): string $lines[] = ''; // Tasks overdue total. - $overdueTasksCount = $this->getCached('procest_metrics_overdue_tasks', self::CACHE_TTL_OVERDUE, function () { - return $this->getOverdueTasksCount(); - }); - $lines[] = '# HELP procest_tasks_overdue_total Tasks past their deadline'; - $lines[] = '# TYPE procest_tasks_overdue_total gauge'; - $lines[] = 'procest_tasks_overdue_total '.$overdueTasksCount; - $lines[] = ''; + $overdueTasksCount = $this->getCached( + 'procest_metrics_overdue_tasks', + self::CACHE_TTL_OVERDUE, + function () { + return $this->getOverdueTasksCount(); + } + ); + $lines[] = '# HELP procest_tasks_overdue_total Tasks past their deadline'; + $lines[] = '# TYPE procest_tasks_overdue_total gauge'; + $lines[] = 'procest_tasks_overdue_total '.$overdueTasksCount; + $lines[] = ''; return implode("\n", $lines)."\n"; }//end collectMetrics() diff --git a/lib/Controller/MilestoneController.php b/lib/Controller/MilestoneController.php index 80456aad..0bc70d20 100644 --- a/lib/Controller/MilestoneController.php +++ b/lib/Controller/MilestoneController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -32,8 +32,6 @@ */ class MilestoneController extends Controller { - - /** * Constructor. * @@ -49,8 +47,7 @@ public function __construct( private readonly IUserSession $userSession, ) { parent::__construct($appName, $request); - } - + }//end __construct() /** * Get milestone progress for a case. @@ -70,8 +67,7 @@ public function progress(string $caseId, string $caseTypeId): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 500); } - } - + }//end progress() /** * Mark a milestone as reached. @@ -99,8 +95,7 @@ public function mark(string $caseId, string $milestoneId): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } - + }//end mark() /** * Reverse a milestone. @@ -136,5 +131,5 @@ public function reverse(string $caseId, string $milestoneId): JSONResponse } catch (\RuntimeException $e) { return new JSONResponse(['error' => $e->getMessage()], 400); } - } -} + }//end reverse() +}//end class diff --git a/lib/Controller/NrcController.php b/lib/Controller/NrcController.php index e90ab64a..025275a7 100644 --- a/lib/Controller/NrcController.php +++ b/lib/Controller/NrcController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/ParaferingController.php b/lib/Controller/ParaferingController.php index a0477e3b..d129b3f8 100644 --- a/lib/Controller/ParaferingController.php +++ b/lib/Controller/ParaferingController.php @@ -9,7 +9,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -40,11 +40,11 @@ class ParaferingController extends Controller /** * Constructor. * - * @param string $appName The app name. - * @param IRequest $request The request object. - * @param ParaferingService $paraferingService The parafering service. - * @param IUserSession $userSession The user session. - * @param LoggerInterface $logger The logger. + * @param string $appName The app name. + * @param IRequest $request The request object. + * @param ParaferingService $paraferingService The parafering service. + * @param IUserSession $userSession The user session. + * @param LoggerInterface $logger The logger. */ public function __construct( string $appName, @@ -54,7 +54,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } + }//end __construct() /** * Create a new voorstel. @@ -66,7 +66,7 @@ public function __construct( public function createVoorstel(): JSONResponse { try { - $data = $this->getRequestBody(); + $data = $this->getRequestBody(); $userId = $this->userSession->getUser()?->getUID() ?? 'system'; if (empty($data['caseId'])) { @@ -77,17 +77,17 @@ public function createVoorstel(): JSONResponse } $data['steller'] = $data['steller'] ?? $userId; - $voorstel = $this->paraferingService->createVoorstel($data); + $voorstel = $this->paraferingService->createVoorstel($data); return new JSONResponse($voorstel, Http::STATUS_CREATED); } catch (\Throwable $e) { - $this->logger->error('Failed to create voorstel: ' . $e->getMessage()); + $this->logger->error('Failed to create voorstel: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to create voorstel: ' . $e->getMessage()], + ['error' => 'Failed to create voorstel: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end createVoorstel() /** * Start parafering on a voorstel. @@ -101,9 +101,9 @@ public function createVoorstel(): JSONResponse public function startParafering(string $id): JSONResponse { try { - $data = $this->getRequestBody(); + $data = $this->getRequestBody(); $voorstel = $data['voorstel'] ?? []; - $route = $data['route'] ?? []; + $route = $data['route'] ?? []; if (empty($voorstel) || empty($route)) { return new JSONResponse( @@ -121,13 +121,13 @@ public function startParafering(string $id): JSONResponse Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error('Failed to start parafering: ' . $e->getMessage()); + $this->logger->error('Failed to start parafering: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to start parafering: ' . $e->getMessage()], + ['error' => 'Failed to start parafering: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end startParafering() /** * Execute a parafering action (paraferen). @@ -141,7 +141,7 @@ public function startParafering(string $id): JSONResponse public function paraferen(string $id): JSONResponse { return $this->handleAction($id, ParaferingService::ACTION_PARAFEREN); - } + }//end paraferen() /** * Execute a terugsturen action. @@ -155,7 +155,7 @@ public function paraferen(string $id): JSONResponse public function terugsturen(string $id): JSONResponse { return $this->handleAction($id, ParaferingService::ACTION_TERUGSTUREN); - } + }//end terugsturen() /** * Execute an adviseren action. @@ -169,7 +169,7 @@ public function terugsturen(string $id): JSONResponse public function adviseren(string $id): JSONResponse { return $this->handleAction($id, ParaferingService::ACTION_ADVISEREN); - } + }//end adviseren() /** * Get the audit trail for a voorstel. @@ -183,20 +183,20 @@ public function adviseren(string $id): JSONResponse public function auditTrail(string $id): JSONResponse { try { - $data = $this->getRequestBody(); + $data = $this->getRequestBody(); $voorstel = $data['voorstel'] ?? []; $trail = $this->paraferingService->getAuditTrail($voorstel); return new JSONResponse(['auditTrail' => $trail]); } catch (\Throwable $e) { - $this->logger->error('Failed to get audit trail: ' . $e->getMessage()); + $this->logger->error('Failed to get audit trail: '.$e->getMessage()); return new JSONResponse( - ['error' => 'Failed to get audit trail: ' . $e->getMessage()], + ['error' => 'Failed to get audit trail: '.$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); } - } + }//end auditTrail() /** * Handle a parafering action. @@ -209,10 +209,10 @@ public function auditTrail(string $id): JSONResponse private function handleAction(string $id, string $action): JSONResponse { try { - $data = $this->getRequestBody(); + $data = $this->getRequestBody(); $voorstel = $data['voorstel'] ?? []; - $comment = $data['comment'] ?? ''; - $namens = $data['namens'] ?? null; + $comment = $data['comment'] ?? ''; + $namens = $data['namens'] ?? null; $userId = $this->userSession->getUser()?->getUID() ?? 'system'; @@ -231,13 +231,13 @@ private function handleAction(string $id, string $action): JSONResponse Http::STATUS_BAD_REQUEST ); } catch (\Throwable $e) { - $this->logger->error("Failed to execute {$action}: " . $e->getMessage()); + $this->logger->error("Failed to execute {$action}: ".$e->getMessage()); return new JSONResponse( - ['error' => "Failed to execute {$action}: " . $e->getMessage()], + ['error' => "Failed to execute {$action}: ".$e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR ); - } - } + }//end try + }//end handleAction() /** * Get the parsed request body. @@ -253,5 +253,5 @@ private function getRequestBody(): array $decoded = json_decode($body, true); return is_array($decoded) ? $decoded : []; - } -} + }//end getRequestBody() +}//end class diff --git a/lib/Controller/PublicAppointmentController.php b/lib/Controller/PublicAppointmentController.php index 9aa2c3fb..b700c80f 100644 --- a/lib/Controller/PublicAppointmentController.php +++ b/lib/Controller/PublicAppointmentController.php @@ -17,7 +17,7 @@ public function __construct( private AppointmentService $appointmentService, ) { parent::__construct(appName: Application::APP_ID, request: $request); - } + }//end __construct() /** * @PublicPage @@ -30,17 +30,19 @@ public function view(string $token): JSONResponse return new JSONResponse(['error' => 'Afspraak niet gevonden'], 404); } - return new JSONResponse([ - 'success' => true, - 'appointment' => [ - 'dateTime' => $appointment['dateTime'] ?? null, - 'duration' => $appointment['duration'] ?? 30, - 'status' => $appointment['status'] ?? 'scheduled', - 'locationId' => $appointment['locationId'] ?? null, - 'productId' => $appointment['productId'] ?? null, - ], - ]); - } + return new JSONResponse( + [ + 'success' => true, + 'appointment' => [ + 'dateTime' => $appointment['dateTime'] ?? null, + 'duration' => $appointment['duration'] ?? 30, + 'status' => $appointment['status'] ?? 'scheduled', + 'locationId' => $appointment['locationId'] ?? null, + 'productId' => $appointment['productId'] ?? null, + ], + ] + ); + }//end view() /** * @PublicPage @@ -60,5 +62,5 @@ public function cancel(string $token): JSONResponse $id = $appointment['uuid'] ?? $appointment['id'] ?? ''; $result = $this->appointmentService->cancelAppointment($id); return new JSONResponse(['success' => true, 'appointment' => $result]); - } -} + }//end cancel() +}//end class diff --git a/lib/Controller/PublicShareController.php b/lib/Controller/PublicShareController.php index df10140c..ca2982b8 100644 --- a/lib/Controller/PublicShareController.php +++ b/lib/Controller/PublicShareController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -46,7 +46,7 @@ class PublicShareController extends Controller * @param CaseSharingService $caseSharingService The sharing service * @param SettingsService $settingsService The settings service * @param IAppManager $appManager The app manager - * @param ContainerInterface $container The DI container + * @param ContainerInterface $container The DI container * @param LoggerInterface $logger The logger * * @return void @@ -118,16 +118,18 @@ public function accessShare(string $token): JSONResponse ] ); - return new JSONResponse([ - 'success' => true, - 'case' => $filteredData, - 'permissionLevel' => $shareData['permissionLevel'], - 'canComment' => in_array( + return new JSONResponse( + [ + 'success' => true, + 'case' => $filteredData, + 'permissionLevel' => $shareData['permissionLevel'], + 'canComment' => in_array( $shareData['permissionLevel'], ['bekijken_reageren', 'bekijken_bijdragen'] ), - 'canUpload' => $shareData['permissionLevel'] === 'bekijken_bijdragen', - ]); + 'canUpload' => $shareData['permissionLevel'] === 'bekijken_bijdragen', + ] + ); }//end accessShare() /** @@ -185,10 +187,12 @@ public function addComment(string $token): JSONResponse ] ); - return new JSONResponse([ - 'success' => true, - 'message' => 'Reactie toegevoegd', - ]); + return new JSONResponse( + [ + 'success' => true, + 'message' => 'Reactie toegevoegd', + ] + ); }//end addComment() /** @@ -226,11 +230,11 @@ public function viewStatus(string $token): JSONResponse // Return only citizen-safe status information. $statusData = [ - 'title' => ($caseData['title'] ?? ''), - 'identifier' => ($caseData['identifier'] ?? ''), - 'currentStatus' => ($caseData['status'] ?? ''), - 'plannedEndDate' => ($caseData['plannedEndDate'] ?? null), - 'startDate' => ($caseData['startDate'] ?? null), + 'title' => ($caseData['title'] ?? ''), + 'identifier' => ($caseData['identifier'] ?? ''), + 'currentStatus' => ($caseData['status'] ?? ''), + 'plannedEndDate' => ($caseData['plannedEndDate'] ?? null), + 'startDate' => ($caseData['startDate'] ?? null), ]; return new JSONResponse(['success' => true, 'status' => $statusData]); @@ -270,6 +274,6 @@ private function loadCaseData(string $caseId): ?array ] ); return null; - } + }//end try }//end loadCaseData() }//end class diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index 9ca9ca68..389fe742 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/StufController.php b/lib/Controller/StufController.php index 30b7d596..266cfcaf 100644 --- a/lib/Controller/StufController.php +++ b/lib/Controller/StufController.php @@ -10,7 +10,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -51,7 +51,7 @@ class StufController extends Controller */ private const DEFAULT_ZENDER = [ 'organisatie' => 'Procest', - 'applicatie' => 'Procest', + 'applicatie' => 'Procest', ]; /** @@ -71,7 +71,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } + }//end __construct() /** * Handle inbound StUF-ZKN SOAP messages for case operations. @@ -83,7 +83,7 @@ public function __construct( public function zaken(): DataDisplayResponse { return $this->handleSoapMessage('zaken'); - } + }//end zaken() /** * Handle inbound StUF-BG SOAP messages for person operations. @@ -95,7 +95,7 @@ public function zaken(): DataDisplayResponse public function personen(): DataDisplayResponse { return $this->handleSoapMessage('personen'); - } + }//end personen() /** * Handle an inbound SOAP message. @@ -117,11 +117,11 @@ private function handleSoapMessage(string $service): DataDisplayResponse $dom = new \DOMDocument(); libxml_use_internal_errors(true); $parseResult = $dom->loadXML($rawBody); - $errors = libxml_get_errors(); + $errors = libxml_get_errors(); libxml_clear_errors(); if (!$parseResult || !empty($errors)) { - $this->logger->warning('Invalid XML received at StUF endpoint: ' . $service); + $this->logger->warning('Invalid XML received at StUF endpoint: '.$service); $response = $this->messageBuilder->buildSoapFault('Ongeldig XML bericht'); return $this->soapResponse($response, Http::STATUS_BAD_REQUEST); } @@ -172,7 +172,7 @@ private function handleSoapMessage(string $service): DataDisplayResponse 'edcLk01' => $this->handleEdcLk01($messageElement), default => $this->handleUnknownMessage($messageType), }; - } + }//end handleSoapMessage() /** * Handle zakLk01 (case create/update) message. @@ -196,20 +196,23 @@ private function handleZakLk01(\DOMElement $message): DataDisplayResponse return $this->soapResponse($response); } - $objectEl = $objectElements->item(0); + $objectEl = $objectElements->item(0); $mutatiesoort = $message->getAttribute('mutatiesoort'); // Extract basic fields. - $stufFields = $this->extractFields($objectEl, [ - 'identificatie', - 'omschrijving', - 'toelichting', - 'startdatum', - 'einddatum', - 'einddatumGepland', - 'uiterlijkeEinddatumAfdoening', - 'vertrouwelijkAanduiding', - ]); + $stufFields = $this->extractFields( + $objectEl, + [ + 'identificatie', + 'omschrijving', + 'toelichting', + 'startdatum', + 'einddatum', + 'einddatumGepland', + 'uiterlijkeEinddatumAfdoening', + 'vertrouwelijkAanduiding', + ] + ); // Map to internal properties. $internalData = $this->mappingService->mapZknToInternal($stufFields); @@ -218,13 +221,13 @@ private function handleZakLk01(\DOMElement $message): DataDisplayResponse 'Processed zakLk01 mutatiesoort={mutatiesoort}, identifier={id}', [ 'mutatiesoort' => $mutatiesoort, - 'id' => $internalData['identifier'] ?? 'none', + 'id' => $internalData['identifier'] ?? 'none', ] ); // Extract referentienummer for cross-reference. $stuurgegevens = $message->getElementsByTagName('stuurgegevens'); - $crossRef = ''; + $crossRef = ''; if ($stuurgegevens->length > 0) { $refElements = $stuurgegevens->item(0)->getElementsByTagName('referentienummer'); if ($refElements->length > 0) { @@ -241,7 +244,7 @@ private function handleZakLk01(\DOMElement $message): DataDisplayResponse ); return $this->soapResponse($response); - } + }//end handleZakLk01() /** * Handle zakLv01 (case query) message. @@ -254,15 +257,18 @@ private function handleZakLv01(\DOMElement $message): DataDisplayResponse { // Extract query criteria from gelijk element. $gelijkElements = $message->getElementsByTagName('gelijk'); - $criteria = []; + $criteria = []; if ($gelijkElements->length > 0) { - $gelijk = $gelijkElements->item(0); - $criteria = $this->extractFields($gelijk, [ - 'identificatie', - 'omschrijving', - 'startdatum', - ]); + $gelijk = $gelijkElements->item(0); + $criteria = $this->extractFields( + $gelijk, + [ + 'identificatie', + 'omschrijving', + 'startdatum', + ] + ); } $this->logger->info( @@ -272,8 +278,8 @@ private function handleZakLv01(\DOMElement $message): DataDisplayResponse // In a full implementation, query OpenRegister and build zakLa01 response. // For now, return an empty zakLa01 response. - $body = ''; + $body = ''; $body .= $this->messageBuilder->buildStuurgegevens(self::DEFAULT_ZENDER, []); $body .= ''; $body .= ''; @@ -281,7 +287,7 @@ private function handleZakLv01(\DOMElement $message): DataDisplayResponse $response = $this->messageBuilder->buildSoapEnvelope($body); return $this->soapResponse($response); - } + }//end handleZakLv01() /** * Handle npsLv01 (person query) message. @@ -294,7 +300,7 @@ private function handleNpsLv01(\DOMElement $message): DataDisplayResponse { // Extract BSN from gelijk element. $gelijkElements = $message->getElementsByTagName('gelijk'); - $bsn = ''; + $bsn = ''; if ($gelijkElements->length > 0) { $bsnElements = $gelijkElements->item(0)->getElementsByTagName('bsn'); @@ -305,13 +311,13 @@ private function handleNpsLv01(\DOMElement $message): DataDisplayResponse $this->logger->info( 'Processed npsLv01 person query for BSN {bsn}', - ['bsn' => substr($bsn, 0, 3) . '***'] + ['bsn' => substr($bsn, 0, 3).'***'] ); // In a full implementation, query OpenRegister for person data. // For now, return an empty npsLa01 response. - $body = ''; + $body = ''; $body .= $this->messageBuilder->buildStuurgegevens(self::DEFAULT_ZENDER, []); $body .= ''; $body .= ''; @@ -319,7 +325,7 @@ private function handleNpsLv01(\DOMElement $message): DataDisplayResponse $response = $this->messageBuilder->buildSoapEnvelope($body); return $this->soapResponse($response); - } + }//end handleNpsLv01() /** * Handle edcLk01 (document create/update) message. @@ -334,7 +340,7 @@ private function handleEdcLk01(\DOMElement $message): DataDisplayResponse // Extract referentienummer. $stuurgegevens = $message->getElementsByTagName('stuurgegevens'); - $crossRef = ''; + $crossRef = ''; if ($stuurgegevens->length > 0) { $refElements = $stuurgegevens->item(0)->getElementsByTagName('referentienummer'); if ($refElements->length > 0) { @@ -349,7 +355,7 @@ private function handleEdcLk01(\DOMElement $message): DataDisplayResponse ); return $this->soapResponse($response); - } + }//end handleEdcLk01() /** * Handle unknown message type. @@ -360,18 +366,18 @@ private function handleEdcLk01(\DOMElement $message): DataDisplayResponse */ private function handleUnknownMessage(string $messageType): DataDisplayResponse { - $this->logger->warning('Unknown StUF message type: ' . $messageType); + $this->logger->warning('Unknown StUF message type: '.$messageType); $response = $this->messageBuilder->buildFo01( 'StUF001', - 'Onbekend berichttype: ' . $messageType, + 'Onbekend berichttype: '.$messageType, 'server', self::DEFAULT_ZENDER, [] ); return $this->soapResponse($response, Http::STATUS_BAD_REQUEST); - } + }//end handleUnknownMessage() /** * Extract field values from a DOM element. @@ -397,7 +403,7 @@ private function extractFields(?\DOMElement $element, array $fieldNames): array } return $result; - } + }//end extractFields() /** * Create a SOAP XML response. @@ -407,10 +413,10 @@ private function extractFields(?\DOMElement $element, array $fieldNames): array * * @return DataDisplayResponse */ - private function soapResponse(string $xml, int $statusCode = Http::STATUS_OK): DataDisplayResponse + private function soapResponse(string $xml, int $statusCode=Http::STATUS_OK): DataDisplayResponse { $response = new DataDisplayResponse($xml, $statusCode); $response->addHeader('Content-Type', 'text/xml; charset=utf-8'); return $response; - } -} + }//end soapResponse() +}//end class diff --git a/lib/Controller/TemplateController.php b/lib/Controller/TemplateController.php index c6e68a38..a19e2424 100644 --- a/lib/Controller/TemplateController.php +++ b/lib/Controller/TemplateController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -32,8 +32,6 @@ */ class TemplateController extends Controller { - - /** * Constructor. * @@ -49,8 +47,7 @@ public function __construct( private readonly LoggerInterface $logger, ) { parent::__construct($appName, $request); - } - + }//end __construct() /** * List all available templates. @@ -63,8 +60,7 @@ public function index(): JSONResponse { $templates = $this->templateService->listTemplates(); return new JSONResponse(['results' => $templates]); - } - + }//end index() /** * Get a single template by ID. @@ -83,8 +79,7 @@ public function show(string $id): JSONResponse } return new JSONResponse($template); - } - + }//end show() /** * Activate a template (create all objects from it). @@ -106,5 +101,5 @@ public function activate(string $id): JSONResponse 400, ); } - } -} + }//end activate() +}//end class diff --git a/lib/Controller/TenantController.php b/lib/Controller/TenantController.php index 0bc7acec..67e12cec 100644 --- a/lib/Controller/TenantController.php +++ b/lib/Controller/TenantController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/ZgwMappingController.php b/lib/Controller/ZgwMappingController.php index 054a8629..7517066b 100644 --- a/lib/Controller/ZgwMappingController.php +++ b/lib/Controller/ZgwMappingController.php @@ -8,7 +8,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/ZrcController.php b/lib/Controller/ZrcController.php index 5cbb6dd6..b9675a27 100644 --- a/lib/Controller/ZrcController.php +++ b/lib/Controller/ZrcController.php @@ -13,7 +13,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Controller/ZtcController.php b/lib/Controller/ZtcController.php index a3c881c7..41b6097a 100644 --- a/lib/Controller/ZtcController.php +++ b/lib/Controller/ZtcController.php @@ -11,7 +11,7 @@ * @category Controller * @package OCA\Procest\Controller * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/CasesOverviewWidget.php b/lib/Dashboard/CasesOverviewWidget.php index 5bbb768f..159424a1 100644 --- a/lib/Dashboard/CasesOverviewWidget.php +++ b/lib/Dashboard/CasesOverviewWidget.php @@ -8,7 +8,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/DeadlineAlertsWidget.php b/lib/Dashboard/DeadlineAlertsWidget.php index 382145fc..d95cc5b9 100644 --- a/lib/Dashboard/DeadlineAlertsWidget.php +++ b/lib/Dashboard/DeadlineAlertsWidget.php @@ -9,7 +9,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/MyTasksWidget.php b/lib/Dashboard/MyTasksWidget.php index cc345954..32970788 100644 --- a/lib/Dashboard/MyTasksWidget.php +++ b/lib/Dashboard/MyTasksWidget.php @@ -8,7 +8,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/OverdueCasesWidget.php b/lib/Dashboard/OverdueCasesWidget.php index 737a353b..b38c7f43 100644 --- a/lib/Dashboard/OverdueCasesWidget.php +++ b/lib/Dashboard/OverdueCasesWidget.php @@ -8,7 +8,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/StalledCasesWidget.php b/lib/Dashboard/StalledCasesWidget.php index 059622fe..4c17a8dd 100644 --- a/lib/Dashboard/StalledCasesWidget.php +++ b/lib/Dashboard/StalledCasesWidget.php @@ -9,7 +9,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/StartCaseWidget.php b/lib/Dashboard/StartCaseWidget.php index 21a227a8..e24b5136 100644 --- a/lib/Dashboard/StartCaseWidget.php +++ b/lib/Dashboard/StartCaseWidget.php @@ -8,7 +8,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Dashboard/TaskRemindersWidget.php b/lib/Dashboard/TaskRemindersWidget.php index 859f85ae..74442ff6 100644 --- a/lib/Dashboard/TaskRemindersWidget.php +++ b/lib/Dashboard/TaskRemindersWidget.php @@ -9,7 +9,7 @@ * @category Dashboard * @package OCA\Procest\Dashboard * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Listener/DeepLinkRegistrationListener.php b/lib/Listener/DeepLinkRegistrationListener.php index 2d9f3b72..3ec932c8 100644 --- a/lib/Listener/DeepLinkRegistrationListener.php +++ b/lib/Listener/DeepLinkRegistrationListener.php @@ -8,7 +8,7 @@ * @category Listener * @package OCA\Procest\Listener * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Middleware/TenantMiddleware.php b/lib/Middleware/TenantMiddleware.php index 799cada2..d1af9da6 100644 --- a/lib/Middleware/TenantMiddleware.php +++ b/lib/Middleware/TenantMiddleware.php @@ -8,7 +8,7 @@ * @category Middleware * @package OCA\Procest\Middleware * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -51,10 +51,10 @@ class TenantMiddleware extends Middleware /** * Constructor for the TenantMiddleware. * - * @param TenantService $tenantService The tenant service - * @param IUserSession $userSession The user session - * @param IRequest $request The request object - * @param LoggerInterface $logger The logger + * @param TenantService $tenantService The tenant service + * @param IUserSession $userSession The user session + * @param IRequest $request The request object + * @param LoggerInterface $logger The logger * * @return void */ @@ -69,8 +69,8 @@ public function __construct( /** * Check tenant context before controller execution. * - * @param \OCP\AppFramework\Controller $controller The controller - * @param string $methodName The method name + * @param \OCP\AppFramework\Controller $controller The controller + * @param string $methodName The method name * * @return void * @@ -117,9 +117,9 @@ public function beforeController($controller, $methodName): void /** * Handle exceptions from controllers. * - * @param \OCP\AppFramework\Controller $controller The controller - * @param string $methodName The method name - * @param \Exception $exception The exception + * @param \OCP\AppFramework\Controller $controller The controller + * @param string $methodName The method name + * @param \Exception $exception The exception * * @return JSONResponse The error response * diff --git a/lib/Middleware/ZgwAuthException.php b/lib/Middleware/ZgwAuthException.php index 21fb4931..fa3e5bdf 100644 --- a/lib/Middleware/ZgwAuthException.php +++ b/lib/Middleware/ZgwAuthException.php @@ -8,7 +8,7 @@ * @category Middleware * @package OCA\Procest\Middleware * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Middleware/ZgwAuthMiddleware.php b/lib/Middleware/ZgwAuthMiddleware.php index c7686183..d10c3919 100644 --- a/lib/Middleware/ZgwAuthMiddleware.php +++ b/lib/Middleware/ZgwAuthMiddleware.php @@ -8,7 +8,7 @@ * @category Middleware * @package OCA\Procest\Middleware * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Repair/InitializeSettings.php b/lib/Repair/InitializeSettings.php index f416bec6..b8a9c9c8 100644 --- a/lib/Repair/InitializeSettings.php +++ b/lib/Repair/InitializeSettings.php @@ -8,7 +8,7 @@ * @category Repair * @package OCA\Procest\Repair * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Repair/LoadDefaultZgwMappings.php b/lib/Repair/LoadDefaultZgwMappings.php index 1cb0ab56..599b56af 100644 --- a/lib/Repair/LoadDefaultZgwMappings.php +++ b/lib/Repair/LoadDefaultZgwMappings.php @@ -10,7 +10,7 @@ * @category Repair * @package OCA\Procest\Repair * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Repair/SeedBezwaarBeroepData.php b/lib/Repair/SeedBezwaarBeroepData.php index c0a2b819..ba11c174 100644 --- a/lib/Repair/SeedBezwaarBeroepData.php +++ b/lib/Repair/SeedBezwaarBeroepData.php @@ -9,7 +9,7 @@ * @category Repair * @package OCA\Procest\Repair * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Sections/SettingsSection.php b/lib/Sections/SettingsSection.php index 23c00f6e..bb5d3ebd 100644 --- a/lib/Sections/SettingsSection.php +++ b/lib/Sections/SettingsSection.php @@ -8,7 +8,7 @@ * @category Sections * @package OCA\Procest\Sections * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/AiService.php b/lib/Service/AiService.php index 738fca52..db068a64 100644 --- a/lib/Service/AiService.php +++ b/lib/Service/AiService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -55,9 +55,9 @@ class AiService /** * Constructor for AiService. * - * @param IAppConfig $appConfig The app configuration service - * @param ContainerInterface $container The DI container - * @param LoggerInterface $logger The logger interface + * @param IAppConfig $appConfig The app configuration service + * @param ContainerInterface $container The DI container + * @param LoggerInterface $logger The logger interface * * @return void */ @@ -133,19 +133,21 @@ public function classifyDocument(string $caseId, string $documentId, string $use $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'classification', - 'action' => 'suggested', - 'caseId' => $caseId, - 'documentId' => $documentId, - 'model' => $this->getModelIdentifier(), - 'prompt' => $prompt, - 'suggestion' => $result, - 'confidence' => ($result['confidence'] ?? 0.0), - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'classification', + 'action' => 'suggested', + 'caseId' => $caseId, + 'documentId' => $documentId, + 'model' => $this->getModelIdentifier(), + 'prompt' => $prompt, + 'suggestion' => $result, + 'confidence' => ($result['confidence'] ?? 0.0), + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -191,19 +193,21 @@ public function extractData(string $caseId, ?string $documentId, string $userId) $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'extraction', - 'action' => 'suggested', - 'caseId' => $caseId, - 'documentId' => ($documentId ?? ''), - 'model' => $this->getModelIdentifier(), - 'prompt' => $prompt, - 'suggestion' => $result, - 'confidence' => ($result['averageConfidence'] ?? 0.0), - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'extraction', + 'action' => 'suggested', + 'caseId' => $caseId, + 'documentId' => ($documentId ?? ''), + 'model' => $this->getModelIdentifier(), + 'prompt' => $prompt, + 'suggestion' => $result, + 'confidence' => ($result['averageConfidence'] ?? 0.0), + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -248,18 +252,20 @@ public function askQuestion(string $caseId, string $question, string $userId): a $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'qa', - 'action' => 'suggested', - 'caseId' => $caseId, - 'model' => $this->getModelIdentifier(), - 'prompt' => $question, - 'suggestion' => $result, - 'confidence' => ($result['confidence'] ?? 0.0), - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'qa', + 'action' => 'suggested', + 'caseId' => $caseId, + 'model' => $this->getModelIdentifier(), + 'prompt' => $question, + 'suggestion' => $result, + 'confidence' => ($result['confidence'] ?? 0.0), + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -307,18 +313,20 @@ public function summarize(string $caseId, string $type, ?string $documentId, str $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'summary', - 'action' => 'suggested', - 'caseId' => $caseId, - 'documentId' => ($documentId ?? ''), - 'model' => $this->getModelIdentifier(), - 'prompt' => $prompt, - 'suggestion' => ['summary' => ($result['summary'] ?? '')], - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'summary', + 'action' => 'suggested', + 'caseId' => $caseId, + 'documentId' => ($documentId ?? ''), + 'model' => $this->getModelIdentifier(), + 'prompt' => $prompt, + 'suggestion' => ['summary' => ($result['summary'] ?? '')], + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -362,18 +370,20 @@ public function suggestRouting(string $caseId, string $userId): array $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'routing', - 'action' => 'suggested', - 'caseId' => $caseId, - 'model' => $this->getModelIdentifier(), - 'prompt' => $prompt, - 'suggestion' => $result, - 'confidence' => ($result['confidence'] ?? 0.0), - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'routing', + 'action' => 'suggested', + 'caseId' => $caseId, + 'model' => $this->getModelIdentifier(), + 'prompt' => $prompt, + 'suggestion' => $result, + 'confidence' => ($result['confidence'] ?? 0.0), + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -417,17 +427,19 @@ public function suggestNextStep(string $caseId, string $userId): array $responseTimeMs = (int) ((microtime(true) - $startTime) * 1000); - $this->recordAuditEntry([ - 'type' => 'decision_support', - 'action' => 'suggested', - 'caseId' => $caseId, - 'model' => $this->getModelIdentifier(), - 'prompt' => $prompt, - 'suggestion' => $result, - 'userId' => $userId, - 'timestamp' => date('c'), - 'responseTimeMs' => $responseTimeMs, - ]); + $this->recordAuditEntry( + [ + 'type' => 'decision_support', + 'action' => 'suggested', + 'caseId' => $caseId, + 'model' => $this->getModelIdentifier(), + 'prompt' => $prompt, + 'suggestion' => $result, + 'userId' => $userId, + 'timestamp' => date('c'), + 'responseTimeMs' => $responseTimeMs, + ] + ); return [ 'success' => true, @@ -469,18 +481,20 @@ public function recordUserAction( ?string $reason, string $userId, ): array { - $this->recordAuditEntry([ - 'type' => $type, - 'action' => $userAction, - 'caseId' => $caseId, - 'model' => $this->getModelIdentifier(), - 'suggestion' => $suggestion, - 'userAction' => $userAction, - 'actualValue' => ($actualValue ?? []), - 'reason' => ($reason ?? ''), - 'userId' => $userId, - 'timestamp' => date('c'), - ]); + $this->recordAuditEntry( + [ + 'type' => $type, + 'action' => $userAction, + 'caseId' => $caseId, + 'model' => $this->getModelIdentifier(), + 'suggestion' => $suggestion, + 'userAction' => $userAction, + 'actualValue' => ($actualValue ?? []), + 'reason' => ($reason ?? ''), + 'userId' => $userId, + 'timestamp' => date('c'), + ] + ); return ['success' => true]; }//end recordUserAction() @@ -524,19 +538,19 @@ public function testHealth(): array public function getAiSettings(): array { return [ - 'ai_enabled' => $this->appConfig->getValueString(Application::APP_ID, 'ai_enabled', ''), - 'ai_model_type' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_type', 'local'), - 'ai_model_url' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_url', ''), - 'ai_model_name' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_name', ''), - 'ai_api_key_set' => $this->appConfig->getValueString(Application::APP_ID, 'ai_api_key', '') !== '', - 'ai_feature_classification' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_classification', ''), - 'ai_feature_extraction' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_extraction', ''), - 'ai_feature_qa' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_qa', ''), - 'ai_feature_summary' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_summary', ''), - 'ai_feature_routing' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_routing', ''), - 'ai_feature_decision_support' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_decision_support', ''), - 'ai_dpia_acknowledged' => $this->appConfig->getValueString(Application::APP_ID, 'ai_dpia_acknowledged', ''), - 'ai_pii_stripping' => $this->appConfig->getValueString(Application::APP_ID, 'ai_pii_stripping', '1'), + 'ai_enabled' => $this->appConfig->getValueString(Application::APP_ID, 'ai_enabled', ''), + 'ai_model_type' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_type', 'local'), + 'ai_model_url' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_url', ''), + 'ai_model_name' => $this->appConfig->getValueString(Application::APP_ID, 'ai_model_name', ''), + 'ai_api_key_set' => $this->appConfig->getValueString(Application::APP_ID, 'ai_api_key', '') !== '', + 'ai_feature_classification' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_classification', ''), + 'ai_feature_extraction' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_extraction', ''), + 'ai_feature_qa' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_qa', ''), + 'ai_feature_summary' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_summary', ''), + 'ai_feature_routing' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_routing', ''), + 'ai_feature_decision_support' => $this->appConfig->getValueString(Application::APP_ID, 'ai_feature_decision_support', ''), + 'ai_dpia_acknowledged' => $this->appConfig->getValueString(Application::APP_ID, 'ai_dpia_acknowledged', ''), + 'ai_pii_stripping' => $this->appConfig->getValueString(Application::APP_ID, 'ai_pii_stripping', '1'), ]; }//end getAiSettings() @@ -616,12 +630,14 @@ private function callAiModel(string $prompt): array ); // Build the request payload for Ollama-compatible API. - $payload = json_encode([ - 'model' => $modelName, - 'prompt' => $prompt, - 'stream' => false, - 'format' => 'json', - ]); + $payload = json_encode( + [ + 'model' => $modelName, + 'prompt' => $prompt, + 'stream' => false, + 'format' => 'json', + ] + ); $endpoint = rtrim($modelUrl, '/').'/api/generate'; @@ -640,10 +656,14 @@ private function callAiModel(string $prompt): array '' ); if (empty($apiKey) === false) { - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'Authorization: Bearer '.$apiKey, - ]); + curl_setopt( + $ch, + CURLOPT_HTTPHEADER, + [ + 'Content-Type: application/json', + 'Authorization: Bearer '.$apiKey, + ] + ); } } @@ -696,7 +716,7 @@ private function recordAuditEntry(array $entry): void 'register', '' ); - $schemaId = $this->appConfig->getValueString( + $schemaId = $this->appConfig->getValueString( Application::APP_ID, 'ai_audit_entry_schema', '' @@ -717,7 +737,7 @@ private function recordAuditEntry(array $entry): void 'Failed to record AI audit entry', ['error' => $e->getMessage()] ); - } + }//end try }//end recordAuditEntry() /** diff --git a/lib/Service/AppointmentBackend/JccBackend.php b/lib/Service/AppointmentBackend/JccBackend.php index e080ea08..360fdc92 100644 --- a/lib/Service/AppointmentBackend/JccBackend.php +++ b/lib/Service/AppointmentBackend/JccBackend.php @@ -21,7 +21,7 @@ public function __construct( private string $apiUrl, private string $apiKey, ) { - } + }//end __construct() public function getTimeslots(string $productId, string $locationId, string $date): array { @@ -44,7 +44,7 @@ public function getTimeslots(string $productId, string $locationId, string $date $this->logger->error('JCC API error: '.$e->getMessage()); return []; } - } + }//end getTimeslots() public function bookAppointment(array $data): array { @@ -63,7 +63,7 @@ public function bookAppointment(array $data): array $this->logger->error('JCC booking error: '.$e->getMessage()); return ['error' => $e->getMessage()]; } - } + }//end bookAppointment() public function cancelAppointment(string $externalId): bool { @@ -78,11 +78,11 @@ public function cancelAppointment(string $externalId): bool $this->logger->error('JCC cancel error: '.$e->getMessage()); return false; } - } + }//end cancelAppointment() public function rescheduleAppointment(string $externalId, string $newDateTime): array { $this->cancelAppointment($externalId); return $this->bookAppointment(['dateTime' => $newDateTime, 'externalId' => $externalId]); - } -} + }//end rescheduleAppointment() +}//end class diff --git a/lib/Service/AppointmentBackend/LocalBackend.php b/lib/Service/AppointmentBackend/LocalBackend.php index 889dd6e6..591dd056 100644 --- a/lib/Service/AppointmentBackend/LocalBackend.php +++ b/lib/Service/AppointmentBackend/LocalBackend.php @@ -21,7 +21,7 @@ class LocalBackend implements AppointmentBackendInterface public function __construct( private LoggerInterface $logger, ) { - } + }//end __construct() public function getTimeslots(string $productId, string $locationId, string $date): array { @@ -38,21 +38,21 @@ public function getTimeslots(string $productId, string $locationId, string $date } return $slots; - } + }//end getTimeslots() public function bookAppointment(array $data): array { return ['externalId' => 'local-'.bin2hex(random_bytes(8))]; - } + }//end bookAppointment() public function cancelAppointment(string $externalId): bool { $this->logger->info('Local backend: appointment cancelled', ['externalId' => $externalId]); return true; - } + }//end cancelAppointment() public function rescheduleAppointment(string $externalId, string $newDateTime): array { return ['externalId' => $externalId]; - } -} + }//end rescheduleAppointment() +}//end class diff --git a/lib/Service/AppointmentBackend/QmaticBackend.php b/lib/Service/AppointmentBackend/QmaticBackend.php index f975199b..24a1428c 100644 --- a/lib/Service/AppointmentBackend/QmaticBackend.php +++ b/lib/Service/AppointmentBackend/QmaticBackend.php @@ -18,7 +18,7 @@ public function __construct( private string $apiUrl, private string $apiKey, ) { - } + }//end __construct() public function getTimeslots(string $productId, string $locationId, string $date): array { @@ -38,12 +38,13 @@ public function getTimeslots(string $productId, string $locationId, string $date 'available' => true, ]; } + return $slots; } catch (\Exception $e) { $this->logger->error('Qmatic API error: '.$e->getMessage()); return []; - } - } + }//end try + }//end getTimeslots() public function bookAppointment(array $data): array { @@ -62,7 +63,7 @@ public function bookAppointment(array $data): array $this->logger->error('Qmatic booking error: '.$e->getMessage()); return ['error' => $e->getMessage()]; } - } + }//end bookAppointment() public function cancelAppointment(string $externalId): bool { @@ -77,11 +78,11 @@ public function cancelAppointment(string $externalId): bool $this->logger->error('Qmatic cancel error: '.$e->getMessage()); return false; } - } + }//end cancelAppointment() public function rescheduleAppointment(string $externalId, string $newDateTime): array { $this->cancelAppointment($externalId); return $this->bookAppointment(['dateTime' => $newDateTime]); - } -} + }//end rescheduleAppointment() +}//end class diff --git a/lib/Service/AppointmentService.php b/lib/Service/AppointmentService.php index 0cc8793f..a15a7735 100644 --- a/lib/Service/AppointmentService.php +++ b/lib/Service/AppointmentService.php @@ -28,7 +28,7 @@ public function __construct( private ContainerInterface $container, private LoggerInterface $logger, ) { - } + }//end __construct() /** * Get available timeslots via the configured backend. @@ -36,7 +36,7 @@ public function __construct( public function getTimeslots(string $productId, string $locationId, string $date): array { return $this->getBackend()->getTimeslots($productId, $locationId, $date); - } + }//end getTimeslots() /** * Book an appointment linked to a case. @@ -55,13 +55,16 @@ public function bookAppointment(string $caseId, array $data): array $register = $this->settingsService->getConfigValue('register'); $schema = $this->settingsService->getConfigValue('appointment_schema'); - $appointmentData = array_merge($data, [ - 'caseId' => $caseId, - 'status' => 'scheduled', - 'externalId' => $backendResult['externalId'] ?? null, - 'cancelToken' => bin2hex(random_bytes(16)), - 'reminderSent' => false, - ]); + $appointmentData = array_merge( + $data, + [ + 'caseId' => $caseId, + 'status' => 'scheduled', + 'externalId' => $backendResult['externalId'] ?? null, + 'cancelToken' => bin2hex(random_bytes(16)), + 'reminderSent' => false, + ] + ); $result = $objectService->saveObject( (int) $register, @@ -69,13 +72,16 @@ public function bookAppointment(string $caseId, array $data): array $appointmentData, ); - $this->logger->info('Procest: Appointment booked', [ - 'caseId' => $caseId, - 'appointmentId' => $result->getUuid(), - ]); + $this->logger->info( + 'Procest: Appointment booked', + [ + 'caseId' => $caseId, + 'appointmentId' => $result->getUuid(), + ] + ); return $result->jsonSerialize(); - } + }//end bookAppointment() /** * Cancel an appointment. @@ -99,10 +105,10 @@ public function cancelAppointment(string $appointmentId): array } $data['status'] = 'cancelled'; - $result = $objectService->saveObject((int) $register, (int) $schema, $data); + $result = $objectService->saveObject((int) $register, (int) $schema, $data); return $result->jsonSerialize(); - } + }//end cancelAppointment() /** * Mark an appointment as no-show. @@ -117,13 +123,13 @@ public function markNoShow(string $appointmentId): array $register = $this->settingsService->getConfigValue('register'); $schema = $this->settingsService->getConfigValue('appointment_schema'); - $appointment = $objectService->getObject((int) $register, (int) $schema, $appointmentId); - $data = $appointment->jsonSerialize(); + $appointment = $objectService->getObject((int) $register, (int) $schema, $appointmentId); + $data = $appointment->jsonSerialize(); $data['status'] = 'no_show'; $result = $objectService->saveObject((int) $register, (int) $schema, $data); return $result->jsonSerialize(); - } + }//end markNoShow() /** * Get appointments for a case. @@ -145,7 +151,7 @@ public function getAppointmentsForCase(string $caseId): array ); return $result['objects'] ?? []; - } + }//end getAppointmentsForCase() /** * Validate cancel token and return appointment. @@ -173,7 +179,7 @@ public function getAppointmentByToken(string $token): ?array $apt = reset($appointments); return is_object($apt) ? $apt->jsonSerialize() : $apt; - } + }//end getAppointmentByToken() /** * Get the configured appointment backend. @@ -192,7 +198,7 @@ private function getBackend(): AppointmentBackendInterface default: return new LocalBackend($this->logger); } - } + }//end getBackend() private function getObjectService(): ?\OCA\OpenRegister\Service\ObjectService { @@ -206,5 +212,5 @@ private function getObjectService(): ?\OCA\OpenRegister\Service\ObjectService $this->logger->error('Procest: Could not get ObjectService', ['exception' => $e->getMessage()]); return null; } - } -} + }//end getObjectService() +}//end class diff --git a/lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php b/lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php index 03562880..a74f2f02 100644 --- a/lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php +++ b/lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php @@ -25,7 +25,7 @@ public function sendMessage( string $subject, string $body, string $typeCode, - ?string $attachment = null, + ?string $attachment=null, ): array; /** @@ -36,4 +36,4 @@ public function sendMessage( * @return array Status with read (bool), readAt (datetime|null) */ public function getReadStatus(string $messageId): array; -} +}//end interface diff --git a/lib/Service/BerichtenboxAdapter/MockAdapter.php b/lib/Service/BerichtenboxAdapter/MockAdapter.php index 4d5a902c..78abf3ef 100644 --- a/lib/Service/BerichtenboxAdapter/MockAdapter.php +++ b/lib/Service/BerichtenboxAdapter/MockAdapter.php @@ -16,31 +16,34 @@ class MockAdapter implements BerichtenboxAdapterInterface public function __construct( private LoggerInterface $logger, ) { - } + }//end __construct() public function sendMessage( string $bsn, string $subject, string $body, string $typeCode, - ?string $attachment = null, + ?string $attachment=null, ): array { $messageId = 'mock-'.bin2hex(random_bytes(8)); - $this->logger->info('MockBerichtenbox: Message sent', [ - 'messageId' => $messageId, - 'bsn' => substr($bsn, 0, 4).'*****', - 'subject' => $subject, - 'typeCode' => $typeCode, - 'hasAttachment' => $attachment !== null, - ]); + $this->logger->info( + 'MockBerichtenbox: Message sent', + [ + 'messageId' => $messageId, + 'bsn' => substr($bsn, 0, 4).'*****', + 'subject' => $subject, + 'typeCode' => $typeCode, + 'hasAttachment' => $attachment !== null, + ] + ); return [ 'messageId' => $messageId, 'status' => 'sent', 'sentAt' => (new \DateTime())->format('c'), ]; - } + }//end sendMessage() public function getReadStatus(string $messageId): array { @@ -49,5 +52,5 @@ public function getReadStatus(string $messageId): array 'read' => true, 'readAt' => (new \DateTime('-1 hour'))->format('c'), ]; - } -} + }//end getReadStatus() +}//end class diff --git a/lib/Service/BerichtenboxService.php b/lib/Service/BerichtenboxService.php index 5865b8cf..eedd9318 100644 --- a/lib/Service/BerichtenboxService.php +++ b/lib/Service/BerichtenboxService.php @@ -15,15 +15,15 @@ */ class BerichtenboxService { - private const MAX_ATTACHMENT_SIZE = 10485760; // 10 MB - + private const MAX_ATTACHMENT_SIZE = 10485760; + // 10 MB public function __construct( private SettingsService $settingsService, private IAppManager $appManager, private ContainerInterface $container, private LoggerInterface $logger, ) { - } + }//end __construct() /** * Send a message to the Berichtenbox. @@ -34,7 +34,7 @@ public function sendMessage( string $subject, string $body, string $typeCode, - ?string $attachmentFileId = null, + ?string $attachmentFileId=null, ): array { // Validate inputs. $errors = $this->validateMessage($bsn, $subject, $body); @@ -51,7 +51,8 @@ public function sendMessage( $attachmentContent = null; if ($attachmentFileId !== null) { // Attachment validation would check file size here. - $attachmentContent = ''; // Placeholder -- actual file reading via IRootFolder. + $attachmentContent = ''; + // Placeholder -- actual file reading via IRootFolder. } // Send via adapter. @@ -80,13 +81,16 @@ public function sendMessage( $messageData, ); - $this->logger->info('Procest: Berichtenbox message sent', [ - 'caseId' => $caseId, - 'messageId' => $result['messageId'] ?? '', - ]); + $this->logger->info( + 'Procest: Berichtenbox message sent', + [ + 'caseId' => $caseId, + 'messageId' => $result['messageId'] ?? '', + ] + ); return $saved->jsonSerialize(); - } + }//end sendMessage() /** * Get sent messages for a case. @@ -108,7 +112,7 @@ public function getMessagesForCase(string $caseId): array ); return $result['objects'] ?? []; - } + }//end getMessagesForCase() /** * Poll read status for a message. @@ -154,7 +158,7 @@ public function pollReadStatus(string $messageId): array } return $data; - } + }//end pollReadStatus() /** * Validate a BSN using the 11-proef. @@ -169,10 +173,11 @@ public function validateBsn(string $bsn): bool for ($i = 0; $i < 8; $i++) { $sum += (int) $bsn[$i] * (9 - $i); } + $sum -= (int) $bsn[8]; return ($sum % 11) === 0 && $sum !== 0; - } + }//end validateBsn() /** * Validate message inputs. @@ -183,7 +188,7 @@ private function validateMessage(string $bsn, string $subject, string $body): ar if (empty($bsn) === true) { $errors[] = 'BSN is verplicht voor berichten via Mijn Overheid'; - } elseif ($this->validateBsn($bsn) === false) { + } else if ($this->validateBsn($bsn) === false) { $errors[] = 'Ongeldig BSN-nummer'; } @@ -201,13 +206,13 @@ private function validateMessage(string $bsn, string $subject, string $body): ar } return $errors; - } + }//end validateMessage() private function getAdapter(): BerichtenboxAdapterInterface { // For MVP, always use mock adapter. return new MockAdapter($this->logger); - } + }//end getAdapter() private function getObjectService(): ?\OCA\OpenRegister\Service\ObjectService { @@ -221,5 +226,5 @@ private function getObjectService(): ?\OCA\OpenRegister\Service\ObjectService $this->logger->error('Procest: Could not get ObjectService', ['exception' => $e->getMessage()]); return null; } - } -} + }//end getObjectService() +}//end class diff --git a/lib/Service/CaseDefinitionExportService.php b/lib/Service/CaseDefinitionExportService.php index da39db06..b5b30b9d 100644 --- a/lib/Service/CaseDefinitionExportService.php +++ b/lib/Service/CaseDefinitionExportService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -65,7 +65,7 @@ public function __construct( private readonly IAppConfig $appConfig, private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Export a case definition as a ZIP archive. @@ -81,7 +81,7 @@ public function __construct( */ public function exportCaseDefinition( string $caseTypeId, - array $components = [], + array $components=[], ): array { if (empty($components)) { $components = self::COMPONENTS; @@ -91,7 +91,7 @@ public function exportCaseDefinition( $invalidComponents = array_diff($components, self::COMPONENTS); if (!empty($invalidComponents)) { throw new \InvalidArgumentException( - 'Invalid export components: ' . implode(', ', $invalidComponents) + 'Invalid export components: '.implode(', ', $invalidComponents) ); } @@ -112,10 +112,10 @@ public function exportCaseDefinition( throw new \RuntimeException('Failed to create temporary file for export'); } - $zip = new \ZipArchive(); + $zip = new \ZipArchive(); $result = $zip->open($tempPath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); if ($result !== true) { - throw new \RuntimeException('Failed to create ZIP archive: error code ' . $result); + throw new \RuntimeException('Failed to create ZIP archive: error code '.$result); } // Add manifest. @@ -125,17 +125,17 @@ public function exportCaseDefinition( foreach ($components as $component) { $data = $this->exportComponent($caseTypeId, $component); if ($data !== null) { - $filename = $component === 'workflows' ? 'workflows/' : $component . '.json'; + $filename = $component === 'workflows' ? 'workflows/' : $component.'.json'; if ($component === 'workflows' && is_array($data)) { foreach ($data as $workflowName => $workflowData) { $zip->addFromString( - 'workflows/' . $workflowName . '.json', + 'workflows/'.$workflowName.'.json', json_encode($workflowData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) ); } } else { $zip->addFromString( - $component . '.json', + $component.'.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) ); } @@ -144,14 +144,14 @@ public function exportCaseDefinition( $zip->close(); - $slug = $manifest['caseType']['slug'] ?? 'unknown'; + $slug = $manifest['caseType']['slug'] ?? 'unknown'; $version = $manifest['version'] ?? '1.0'; return [ - 'path' => $tempPath, + 'path' => $tempPath, 'filename' => "case-definition-{$slug}-v{$version}.zip", ]; - } + }//end exportCaseDefinition() /** * Build the manifest for a case definition export. @@ -165,7 +165,7 @@ private function buildManifest(string $caseTypeId, array $components): array { $previousVersion = $this->appConfig->getValueString( Application::APP_ID, - 'export_version_' . $caseTypeId, + 'export_version_'.$caseTypeId, '0.0' ); @@ -174,35 +174,35 @@ private function buildManifest(string $caseTypeId, array $components): array // Store the new version. $this->appConfig->setValueString( Application::APP_ID, - 'export_version_' . $caseTypeId, + 'export_version_'.$caseTypeId, $newVersion ); $excludedComponents = array_values(array_diff(self::COMPONENTS, $components)); return [ - 'version' => $newVersion, - 'previousVersion' => $previousVersion !== '0.0' ? $previousVersion : null, - 'exportDate' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'sourceEnvironment' => $this->appConfig->getValueString( + 'version' => $newVersion, + 'previousVersion' => $previousVersion !== '0.0' ? $previousVersion : null, + 'exportDate' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), + 'sourceEnvironment' => $this->appConfig->getValueString( Application::APP_ID, 'environment_name', 'unknown' ), - 'generator' => 'procest/' . $this->appConfig->getValueString( + 'generator' => 'procest/'.$this->appConfig->getValueString( 'procest', 'installed_version', 'unknown' ), - 'caseType' => [ - 'id' => $caseTypeId, + 'caseType' => [ + 'id' => $caseTypeId, 'slug' => $caseTypeId, ], - 'components' => $components, + 'components' => $components, 'excludedComponents' => $excludedComponents, - 'dependencies' => [], + 'dependencies' => [], ]; - } + }//end buildManifest() /** * Export a single component. @@ -219,8 +219,8 @@ private function exportComponent(string $caseTypeId, string $component): ?array // demonstrate the expected format. return match ($component) { 'schema' => [ - 'caseTypeId' => $caseTypeId, - 'fields' => [], + 'caseTypeId' => $caseTypeId, + 'fields' => [], 'validations' => [], ], 'statuses' => [ @@ -233,16 +233,16 @@ private function exportComponent(string $caseTypeId, string $component): ?array ], 'documents' => [ 'documentTypes' => [], - 'templates' => [], + 'templates' => [], ], 'metadata' => [ - 'resultTypes' => [], + 'resultTypes' => [], 'decisionTypes' => [], ], 'workflows' => [], default => null, - }; - } + };//end match + }//end exportComponent() /** * Increment a version string (e.g., "1.0" -> "1.1"). @@ -254,9 +254,9 @@ private function exportComponent(string $caseTypeId, string $component): ?array private function incrementVersion(string $version): string { $parts = explode('.', $version); - $major = (int)($parts[0] ?? 1); - $minor = (int)($parts[1] ?? 0); + $major = (int) ($parts[0] ?? 1); + $minor = (int) ($parts[1] ?? 0); return sprintf(self::VERSION_FORMAT, $major, $minor + 1); - } -} + }//end incrementVersion() +}//end class diff --git a/lib/Service/CaseDefinitionImportService.php b/lib/Service/CaseDefinitionImportService.php index 1d731fc2..439a0454 100644 --- a/lib/Service/CaseDefinitionImportService.php +++ b/lib/Service/CaseDefinitionImportService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -66,7 +66,7 @@ public function __construct( private readonly IAppConfig $appConfig, private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Validate a case definition package without importing it. @@ -80,26 +80,26 @@ public function __construct( public function validatePackage(string $zipPath): array { $result = [ - 'valid' => true, - 'errors' => [], - 'warnings' => [], - 'manifest' => null, + 'valid' => true, + 'errors' => [], + 'warnings' => [], + 'manifest' => null, 'conflicts' => [], ]; // Open the ZIP. - $zip = new \ZipArchive(); + $zip = new \ZipArchive(); $openResult = $zip->open($zipPath, \ZipArchive::RDONLY); if ($openResult !== true) { - $result['valid'] = false; - $result['errors'][] = 'Failed to open ZIP archive: error code ' . $openResult; + $result['valid'] = false; + $result['errors'][] = 'Failed to open ZIP archive: error code '.$openResult; return $result; } // Check required files. foreach (self::REQUIRED_FILES as $requiredFile) { if ($zip->locateName($requiredFile) === false) { - $result['valid'] = false; + $result['valid'] = false; $result['errors'][] = "Missing required file: {$requiredFile}"; } } @@ -112,7 +112,7 @@ public function validatePackage(string $zipPath): array // Parse manifest. $manifestJson = $zip->getFromName('manifest.json'); if ($manifestJson === false) { - $result['valid'] = false; + $result['valid'] = false; $result['errors'][] = 'Failed to read manifest.json'; $zip->close(); return $result; @@ -120,8 +120,8 @@ public function validatePackage(string $zipPath): array $manifest = json_decode($manifestJson, true); if ($manifest === null) { - $result['valid'] = false; - $result['errors'][] = 'Invalid JSON in manifest.json: ' . json_last_error_msg(); + $result['valid'] = false; + $result['errors'][] = 'Invalid JSON in manifest.json: '.json_last_error_msg(); $zip->close(); return $result; } @@ -132,7 +132,7 @@ public function validatePackage(string $zipPath): array $requiredManifestFields = ['version', 'exportDate', 'caseType', 'components']; foreach ($requiredManifestFields as $field) { if (!isset($manifest[$field])) { - $result['valid'] = false; + $result['valid'] = false; $result['errors'][] = "Missing required manifest field: {$field}"; } } @@ -150,30 +150,32 @@ public function validatePackage(string $zipPath): array break; } } + if (!$hasWorkflows) { $result['warnings'][] = 'Component "workflows" declared but no workflow files found'; } } else { - $componentFile = $component . '.json'; + $componentFile = $component.'.json'; if ($zip->locateName($componentFile) === false) { - $result['valid'] = false; + $result['valid'] = false; $result['errors'][] = "Component '{$component}' declared in manifest but file '{$componentFile}' not found"; } - } - } + }//end if + }//end foreach // Validate component JSON. foreach ($components as $component) { if ($component === 'workflows') { continue; } - $componentFile = $component . '.json'; - $content = $zip->getFromName($componentFile); + + $componentFile = $component.'.json'; + $content = $zip->getFromName($componentFile); if ($content !== false) { $decoded = json_decode($content, true); if ($decoded === null && json_last_error() !== JSON_ERROR_NONE) { - $result['valid'] = false; - $result['errors'][] = "Invalid JSON in {$componentFile}: " . json_last_error_msg(); + $result['valid'] = false; + $result['errors'][] = "Invalid JSON in {$componentFile}: ".json_last_error_msg(); } } } @@ -192,20 +194,20 @@ public function validatePackage(string $zipPath): array $this->logger->info( 'Validated case definition package: {valid}, errors: {errorCount}, warnings: {warningCount}', [ - 'valid' => $result['valid'] ? 'true' : 'false', - 'errorCount' => count($result['errors']), + 'valid' => $result['valid'] ? 'true' : 'false', + 'errorCount' => count($result['errors']), 'warningCount' => count($result['warnings']), ] ); return $result; - } + }//end validatePackage() /** * Import a case definition package. * - * @param string $zipPath Path to the uploaded ZIP file. - * @param string $strategy Conflict resolution strategy: 'skip', 'overwrite', or 'merge'. + * @param string $zipPath Path to the uploaded ZIP file. + * @param string $strategy Conflict resolution strategy: 'skip', 'overwrite', or 'merge'. * * @return array{success: bool, message: string, components: array} * @@ -215,21 +217,21 @@ public function validatePackage(string $zipPath): array */ public function importCaseDefinition( string $zipPath, - string $strategy = 'skip', + string $strategy='skip', ): array { // First validate. $validation = $this->validatePackage($zipPath); if (!$validation['valid']) { return [ - 'success' => false, - 'message' => 'Package validation failed: ' . implode('; ', $validation['errors']), + 'success' => false, + 'message' => 'Package validation failed: '.implode('; ', $validation['errors']), 'components' => [], ]; } - $manifest = $validation['manifest']; + $manifest = $validation['manifest']; $components = $manifest['components'] ?? []; - $results = []; + $results = []; $zip = new \ZipArchive(); $zip->open($zipPath, \ZipArchive::RDONLY); @@ -239,14 +241,14 @@ public function importCaseDefinition( $results[$component] = $this->importComponent($zip, $component, $strategy); } catch (\Throwable $e) { $results[$component] = [ - 'status' => 'error', + 'status' => 'error', 'message' => $e->getMessage(), ]; $this->logger->error( 'Failed to import component {component}: {error}', [ 'component' => $component, - 'error' => $e->getMessage(), + 'error' => $e->getMessage(), ] ); } @@ -260,16 +262,16 @@ public function importCaseDefinition( 'Case definition import completed: {success}, components: {count}', [ 'success' => $allSuccess ? 'true' : 'false', - 'count' => count($results), + 'count' => count($results), ] ); return [ - 'success' => $allSuccess, - 'message' => $allSuccess ? 'Import completed successfully' : 'Import completed with errors', + 'success' => $allSuccess, + 'message' => $allSuccess ? 'Import completed successfully' : 'Import completed with errors', 'components' => $results, ]; - } + }//end importCaseDefinition() /** * Import a single component from the ZIP archive. @@ -289,10 +291,10 @@ private function importComponent( return $this->importWorkflows($zip, $strategy); } - $content = $zip->getFromName($component . '.json'); + $content = $zip->getFromName($component.'.json'); if ($content === false) { return [ - 'status' => 'skipped', + 'status' => 'skipped', 'message' => "Component file {$component}.json not found in archive", ]; } @@ -300,7 +302,7 @@ private function importComponent( $data = json_decode($content, true); if ($data === null) { return [ - 'status' => 'error', + 'status' => 'error', 'message' => "Invalid JSON in {$component}.json", ]; } @@ -311,15 +313,15 @@ private function importComponent( 'Imported component {component} with strategy {strategy}', [ 'component' => $component, - 'strategy' => $strategy, + 'strategy' => $strategy, ] ); return [ - 'status' => 'success', + 'status' => 'success', 'message' => "Component '{$component}' imported successfully", ]; - } + }//end importComponent() /** * Import workflow files from the ZIP archive. @@ -345,8 +347,8 @@ private function importWorkflows(\ZipArchive $zip, string $strategy): array } return [ - 'status' => 'success', + 'status' => 'success', 'message' => "Imported {$workflowCount} workflow(s)", ]; - } -} + }//end importWorkflows() +}//end class diff --git a/lib/Service/CaseEmailService.php b/lib/Service/CaseEmailService.php index 86e4e024..62f553bb 100644 --- a/lib/Service/CaseEmailService.php +++ b/lib/Service/CaseEmailService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -39,7 +39,6 @@ class CaseEmailService */ private const CASE_NUMBER_PATTERN = '/\[ZAAK-(\d{4}-\d{4,})\]/'; - /** * Constructor. * @@ -54,17 +53,16 @@ public function __construct( private readonly IConfig $config, private readonly LoggerInterface $logger, ) { - } - + }//end __construct() /** * Send an email from case context. * - * @param string $caseId The case UUID - * @param string $to Recipient email address - * @param string $subject Email subject - * @param string $body Email body (HTML or plain text) - * @param array $attachments File paths to attach + * @param string $caseId The case UUID + * @param string $to Recipient email address + * @param string $subject Email subject + * @param string $body Email body (HTML or plain text) + * @param array $attachments File paths to attach * * @return array Send result with message ID * @@ -75,14 +73,14 @@ public function sendEmail( string $to, string $subject, string $body, - array $attachments = [], + array $attachments=[], ): array { $fromAddress = $this->config->getAppValue( Application::APP_ID, 'email_from_address', 'noreply@example.nl', ); - $fromName = $this->config->getAppValue( + $fromName = $this->config->getAppValue( Application::APP_ID, 'email_from_name', 'Procest', @@ -106,17 +104,17 @@ public function sendEmail( $this->mailer->send($message); } catch (\Exception $e) { $this->logger->error( - 'Failed to send email for case ' . $caseId . ': ' . $e->getMessage(), + 'Failed to send email for case '.$caseId.': '.$e->getMessage(), ['app' => Application::APP_ID], ); - throw new \RuntimeException('Email sending failed: ' . $e->getMessage()); + throw new \RuntimeException('Email sending failed: '.$e->getMessage()); } // Record the sent email as a case document. $messageId = $this->recordSentEmail($caseId, $to, $subject, $body); $this->logger->info( - 'Email sent for case ' . $caseId . ' to ' . $to, + 'Email sent for case '.$caseId.' to '.$to, ['app' => Application::APP_ID], ); @@ -126,8 +124,7 @@ public function sendEmail( 'subject' => $subject, 'sentAt' => date('Y-m-d\TH:i:s'), ]; - } - + }//end sendEmail() /** * Send an email using a template. @@ -158,8 +155,7 @@ public function sendFromTemplate( $body = $this->resolveVariables($template['body'] ?? '', $caseData); return $this->sendEmail($caseId, $to, $subject, $body); - } - + }//end sendFromTemplate() /** * Resolve template variables in a string. @@ -180,12 +176,13 @@ static function (array $matches) use ($data): string { if (isset($data[$key]) === true && is_scalar($data[$key]) === true) { return (string) $data[$key]; } - return $matches[0]; // Leave unresolved variables as-is. + + return $matches[0]; + // Leave unresolved variables as-is. }, $template, ) ?? $template; - } - + }//end resolveVariables() /** * Find unresolved variables in a template string. @@ -207,8 +204,7 @@ public function findUnresolvedVariables(string $template, array $data): array } return array_unique($unresolved); - } - + }//end findUnresolvedVariables() /** * Extract case number from email subject. @@ -224,16 +220,15 @@ public function extractCaseNumber(string $subject): ?string } return null; - } - + }//end extractCaseNumber() /** * Process an inbound email and link it to a case. * - * @param string $from Sender email address - * @param string $to Recipient email address - * @param string $subject Email subject - * @param string $body Email body + * @param string $from Sender email address + * @param string $to Recipient email address + * @param string $subject Email subject + * @param string $body Email body * @param string $inReplyTo In-Reply-To header (for threading) * * @return array Processing result @@ -243,7 +238,7 @@ public function processInbound( string $to, string $subject, string $body, - string $inReplyTo = '', + string $inReplyTo='', ): array { $caseNumber = $this->extractCaseNumber($subject); @@ -260,7 +255,7 @@ public function processInbound( ); $this->logger->info( - 'Inbound email auto-linked to case ' . $caseId, + 'Inbound email auto-linked to case '.$caseId, ['app' => Application::APP_ID], ); @@ -270,19 +265,18 @@ public function processInbound( 'messageId' => $messageId, 'method' => 'auto', ]; - } - } + }//end if + }//end if // Could not auto-link; add to unlinked queue. return [ - 'linked' => false, - 'caseNumber' => $caseNumber, - 'from' => $from, - 'subject' => $subject, - 'method' => 'unlinked', + 'linked' => false, + 'caseNumber' => $caseNumber, + 'from' => $from, + 'subject' => $subject, + 'method' => 'unlinked', ]; - } - + }//end processInbound() /** * Get email templates for a case type. @@ -314,8 +308,7 @@ public function getTemplatesForCaseType(string $caseTypeId): array ); return is_array($results) ? $results : []; - } - + }//end getTemplatesForCaseType() /** * Load an email template. @@ -340,8 +333,7 @@ private function loadTemplate(string $templateId): ?array $result = $objectService->getObject($register, $schema, $templateId); return is_array($result) ? $result : null; - } - + }//end loadTemplate() /** * Load case data for template variable resolution. @@ -367,15 +359,14 @@ private function loadCaseData(string $caseId): array // Flatten for variable resolution. return [ - 'zaakNummer' => $caseObj['identifier'] ?? '', - 'titel' => $caseObj['title'] ?? '', - 'startdatum' => $caseObj['startDate'] ?? '', - 'deadline' => $caseObj['deadline'] ?? '', - 'status' => $caseObj['status'] ?? '', - 'behandelaar' => $caseObj['assignee'] ?? '', + 'zaakNummer' => $caseObj['identifier'] ?? '', + 'titel' => $caseObj['title'] ?? '', + 'startdatum' => $caseObj['startDate'] ?? '', + 'deadline' => $caseObj['deadline'] ?? '', + 'status' => $caseObj['status'] ?? '', + 'behandelaar' => $caseObj['assignee'] ?? '', ]; - } - + }//end loadCaseData() /** * Record a sent email as a case document. @@ -394,7 +385,7 @@ private function recordSentEmail( string $body, ): string { // Store as activity on the case. - $messageId = 'msg-' . uniqid(); + $messageId = 'msg-'.uniqid(); $objectService = $this->settingsService->getObjectService(); if ($objectService === null) { @@ -405,21 +396,24 @@ private function recordSentEmail( $schema = $this->settingsService->getConfigValue('email_message_schema'); if (empty($register) === false && empty($schema) === false) { - $objectService->saveObject($register, $schema, [ - 'case' => $caseId, - 'direction' => 'outbound', - 'from' => $this->config->getAppValue(Application::APP_ID, 'email_from_address', ''), - 'to' => $to, - 'subject' => $subject, - 'body' => $body, - 'messageId' => $messageId, - 'sentAt' => date('Y-m-d\TH:i:s'), - ]); + $objectService->saveObject( + $register, + $schema, + [ + 'case' => $caseId, + 'direction' => 'outbound', + 'from' => $this->config->getAppValue(Application::APP_ID, 'email_from_address', ''), + 'to' => $to, + 'subject' => $subject, + 'body' => $body, + 'messageId' => $messageId, + 'sentAt' => date('Y-m-d\TH:i:s'), + ] + ); } return $messageId; - } - + }//end recordSentEmail() /** * Record a received email. @@ -439,7 +433,7 @@ private function recordReceivedEmail( string $body, string $inReplyTo, ): string { - $messageId = 'msg-' . uniqid(); + $messageId = 'msg-'.uniqid(); $objectService = $this->settingsService->getObjectService(); if ($objectService === null) { @@ -450,22 +444,25 @@ private function recordReceivedEmail( $schema = $this->settingsService->getConfigValue('email_message_schema'); if (empty($register) === false && empty($schema) === false) { - $objectService->saveObject($register, $schema, [ - 'case' => $caseId, - 'direction' => 'inbound', - 'from' => $from, - 'to' => '', - 'subject' => $subject, - 'body' => $body, - 'messageId' => $messageId, - 'inReplyTo' => $inReplyTo, - 'receivedAt' => date('Y-m-d\TH:i:s'), - ]); + $objectService->saveObject( + $register, + $schema, + [ + 'case' => $caseId, + 'direction' => 'inbound', + 'from' => $from, + 'to' => '', + 'subject' => $subject, + 'body' => $body, + 'messageId' => $messageId, + 'inReplyTo' => $inReplyTo, + 'receivedAt' => date('Y-m-d\TH:i:s'), + ] + ); } return $messageId; - } - + }//end recordReceivedEmail() /** * Find a case by its identifier. @@ -497,5 +494,5 @@ private function findCaseByIdentifier(string $identifier): ?string } return null; - } -} + }//end findCaseByIdentifier() +}//end class diff --git a/lib/Service/CaseSharingService.php b/lib/Service/CaseSharingService.php index 586c5b1e..9fa11266 100644 --- a/lib/Service/CaseSharingService.php +++ b/lib/Service/CaseSharingService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -60,8 +60,8 @@ class CaseSharingService * * @param SettingsService $settingsService The settings service * @param IAppManager $appManager The app manager - * @param ContainerInterface $container The DI container - * @param LoggerInterface $logger The logger + * @param ContainerInterface $container The DI container + * @param LoggerInterface $logger The logger * * @return void */ @@ -246,7 +246,7 @@ static function ($share) { /** * Revoke a share by marking it with revocation timestamp. * - * @param string $shareId The UUID of the share to revoke + * @param string $shareId The UUID of the share to revoke * @param string $revokedBy The user ID of the revoker * * @return array The updated share data @@ -267,7 +267,7 @@ public function revokeShare(string $shareId, string $revokedBy): array $shareId, ); - $shareData = $share->jsonSerialize(); + $shareData = $share->jsonSerialize(); $shareData['revokedAt'] = (new \DateTime())->format('c'); $shareData['revokedBy'] = $revokedBy; @@ -441,9 +441,9 @@ private function recordFailedAttempt(array $shareData, string $register, string $shareData['failedAttempts'] = (int) ($shareData['failedAttempts'] ?? 0) + 1; if ($shareData['failedAttempts'] >= self::MAX_FAILED_ATTEMPTS) { - $lockUntil = new \DateTime(); + $lockUntil = new \DateTime(); $lockUntil->modify('+'.self::LOCKOUT_MINUTES.' minutes'); - $shareData['lockedUntil'] = $lockUntil->format('c'); + $shareData['lockedUntil'] = $lockUntil->format('c'); $shareData['failedAttempts'] = 0; $this->logger->warning( diff --git a/lib/Service/CaseTransferService.php b/lib/Service/CaseTransferService.php index 96b62aae..3fc3b1af 100644 --- a/lib/Service/CaseTransferService.php +++ b/lib/Service/CaseTransferService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -38,8 +38,8 @@ class CaseTransferService * * @param SettingsService $settingsService The settings service * @param IAppManager $appManager The app manager - * @param ContainerInterface $container The DI container - * @param LoggerInterface $logger The logger + * @param ContainerInterface $container The DI container + * @param LoggerInterface $logger The logger * * @return void */ @@ -155,7 +155,7 @@ public function acceptTransfer(string $transferId): array /** * Reject a pending case transfer request. * - * @param string $transferId The UUID of the transfer request + * @param string $transferId The UUID of the transfer request * @param string $rejectionReason The reason for rejection * * @return array The updated transfer data diff --git a/lib/Service/ChecklistService.php b/lib/Service/ChecklistService.php index 9fd94056..9e68e261 100644 --- a/lib/Service/ChecklistService.php +++ b/lib/Service/ChecklistService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -68,7 +68,7 @@ class ChecklistService public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Complete a checklist item with a conformity status. @@ -89,16 +89,16 @@ public function completeItem( array $checklist, string $itemId, string $status, - string $toelichting = '', - array $photoRefs = [], + string $toelichting='', + array $photoRefs=[], ): array { if (!in_array($status, self::VALID_STATUSES, true)) { throw new \InvalidArgumentException( - 'Invalid conformity status: ' . $status . '. Valid: ' . implode(', ', self::VALID_STATUSES) + 'Invalid conformity status: '.$status.'. Valid: '.implode(', ', self::VALID_STATUSES) ); } - $items = $checklist['items'] ?? []; + $items = $checklist['items'] ?? []; $itemFound = false; foreach ($items as $index => $item) { @@ -107,13 +107,13 @@ public function completeItem( $requiresPhoto = $item['fotoVerplichtBijNietConform'] ?? false; if ($status === self::STATUS_NIET_CONFORM && $requiresPhoto && empty($photoRefs)) { throw new \InvalidArgumentException( - 'Foto verplicht bij niet-conform voor item: ' . ($item['description'] ?? $itemId) + 'Foto verplicht bij niet-conform voor item: '.($item['description'] ?? $itemId) ); } - $items[$index]['status'] = $status; + $items[$index]['status'] = $status; $items[$index]['toelichting'] = $toelichting; - $items[$index]['photoRefs'] = $photoRefs; + $items[$index]['photoRefs'] = $photoRefs; $items[$index]['completedAt'] = (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM); $itemFound = true; break; @@ -121,7 +121,7 @@ public function completeItem( } if (!$itemFound) { - throw new \InvalidArgumentException('Checklist item not found: ' . $itemId); + throw new \InvalidArgumentException('Checklist item not found: '.$itemId); } $checklist['items'] = $items; @@ -132,7 +132,7 @@ public function completeItem( ); return $checklist; - } + }//end completeItem() /** * Get the completion progress of a checklist. @@ -145,8 +145,8 @@ public function completeItem( */ public function getProgress(array $checklist): array { - $items = $checklist['items'] ?? []; - $total = count($items); + $items = $checklist['items'] ?? []; + $total = count($items); $completed = 0; foreach ($items as $item) { @@ -156,11 +156,11 @@ public function getProgress(array $checklist): array } return [ - 'completed' => $completed, - 'total' => $total, + 'completed' => $completed, + 'total' => $total, 'percentage' => $total > 0 ? round(($completed / $total) * 100, 1) : 0.0, ]; - } + }//end getProgress() /** * Validate that all checklist items are completed. @@ -173,7 +173,7 @@ public function getProgress(array $checklist): array */ public function validateCompletion(array $checklist): array { - $items = $checklist['items'] ?? []; + $items = $checklist['items'] ?? []; $missingItems = []; foreach ($items as $item) { @@ -183,10 +183,10 @@ public function validateCompletion(array $checklist): array } return [ - 'valid' => empty($missingItems), + 'valid' => empty($missingItems), 'missingItems' => $missingItems, ]; - } + }//end validateCompletion() /** * Get a summary of conformity results. @@ -199,11 +199,11 @@ public function validateCompletion(array $checklist): array */ public function getConformitySummary(array $checklist): array { - $items = $checklist['items'] ?? []; + $items = $checklist['items'] ?? []; $summary = [ - 'conform' => 0, - 'nietConform' => 0, - 'nvt' => 0, + 'conform' => 0, + 'nietConform' => 0, + 'nvt' => 0, 'notCompleted' => 0, ]; @@ -218,5 +218,5 @@ public function getConformitySummary(array $checklist): array } return $summary; - } -} + }//end getConformitySummary() +}//end class diff --git a/lib/Service/ConsultationService.php b/lib/Service/ConsultationService.php index 8705f283..74d8aab2 100644 --- a/lib/Service/ConsultationService.php +++ b/lib/Service/ConsultationService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -52,7 +52,6 @@ class ConsultationService 'niet_van_toepassing', ]; - /** * Constructor. * @@ -63,8 +62,7 @@ public function __construct( private readonly SettingsService $settingsService, private readonly LoggerInterface $logger, ) { - } - + }//end __construct() /** * Create a consultation linked to a parent case. @@ -105,8 +103,8 @@ public function createConsultation(array $data): array $consultation = $objectService->saveObject($register, $schema, $data); $this->logger->info( - 'Consultation created: ' . $consultation->getUuid() - . ' for case ' . $data['parentZaak'], + 'Consultation created: '.$consultation->getUuid() + .' for case '.$data['parentZaak'], ['app' => Application::APP_ID], ); @@ -114,8 +112,7 @@ public function createConsultation(array $data): array 'id' => $consultation->getUuid(), 'status' => 'open', ]; - } - + }//end createConsultation() /** * Get all consultations for a case. @@ -147,8 +144,7 @@ public function getConsultationsForCase(string $caseId): array ); return is_array($results) ? $results : []; - } - + }//end getConsultationsForCase() /** * Update consultation status. @@ -163,7 +159,7 @@ public function getConsultationsForCase(string $caseId): array public function updateStatus(string $consultationId, string $newStatus): array { if (in_array($newStatus, self::VALID_STATUSES, true) === false) { - throw new \RuntimeException('Invalid status: ' . $newStatus); + throw new \RuntimeException('Invalid status: '.$newStatus); } $objectService = $this->settingsService->getObjectService(); @@ -182,7 +178,7 @@ public function updateStatus(string $consultationId, string $newStatus): array $result = $objectService->saveObject($register, $schema, $updateData, $consultationId); $this->logger->info( - 'Consultation ' . $consultationId . ' status updated to ' . $newStatus, + 'Consultation '.$consultationId.' status updated to '.$newStatus, ['app' => Application::APP_ID], ); @@ -190,8 +186,7 @@ public function updateStatus(string $consultationId, string $newStatus): array 'id' => $consultationId, 'status' => $newStatus, ]; - } - + }//end updateStatus() /** * Submit advice response to a consultation. @@ -207,7 +202,7 @@ public function submitResponse(string $consultationId, array $response): array { $advies = $response['advies'] ?? ''; if (in_array($advies, self::VALID_RESPONSES, true) === false) { - throw new \RuntimeException('Invalid advice type: ' . $advies); + throw new \RuntimeException('Invalid advice type: '.$advies); } $objectService = $this->settingsService->getObjectService(); @@ -219,19 +214,17 @@ public function submitResponse(string $consultationId, array $response): array $schema = $this->settingsService->getConfigValue('consultation_schema'); $updateData = [ - 'advies' => $advies, - 'toelichting' => $response['toelichting'] ?? '', - 'voorwaarden' => isset($response['voorwaarden']) - ? json_encode($response['voorwaarden']) - : null, - 'adviesDatum' => date('Y-m-d'), - 'status' => 'advies_uitgebracht', + 'advies' => $advies, + 'toelichting' => $response['toelichting'] ?? '', + 'voorwaarden' => isset($response['voorwaarden']) ? json_encode($response['voorwaarden']) : null, + 'adviesDatum' => date('Y-m-d'), + 'status' => 'advies_uitgebracht', ]; $result = $objectService->saveObject($register, $schema, $updateData, $consultationId); $this->logger->info( - 'Consultation ' . $consultationId . ' advice submitted: ' . $advies, + 'Consultation '.$consultationId.' advice submitted: '.$advies, ['app' => Application::APP_ID], ); @@ -240,8 +233,7 @@ public function submitResponse(string $consultationId, array $response): array 'advies' => $advies, 'status' => 'advies_uitgebracht', ]; - } - + }//end submitResponse() /** * Get overdue consultations. @@ -294,5 +286,5 @@ public function getOverdueConsultations(): array } return $overdue; - } -} + }//end getOverdueConsultations() +}//end class diff --git a/lib/Service/DsoIntakeService.php b/lib/Service/DsoIntakeService.php index 0d75539b..d516cc2a 100644 --- a/lib/Service/DsoIntakeService.php +++ b/lib/Service/DsoIntakeService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -39,11 +39,10 @@ class DsoIntakeService * Deadline durations per procedure type (ISO 8601). */ private const DEADLINE_DURATIONS = [ - 'regulier' => 'P56D', - 'uitgebreid' => 'P182D', + 'regulier' => 'P56D', + 'uitgebreid' => 'P182D', ]; - /** * Constructor. * @@ -54,8 +53,7 @@ public function __construct( private readonly SettingsService $settingsService, private readonly LoggerInterface $logger, ) { - } - + }//end __construct() /** * Process a DSO vergunningaanvraag and create a case. @@ -94,18 +92,17 @@ static function ($act) { }, $activiteiten, ); - $activityStr = implode(', ', array_filter($activityNames)); + $activityStr = implode(', ', array_filter($activityNames)); // Determine processing deadline. - $deadline = self::DEADLINE_DURATIONS[$procedureType] - ?? self::DEADLINE_DURATIONS['regulier']; + $deadline = self::DEADLINE_DURATIONS[$procedureType] ?? self::DEADLINE_DURATIONS['regulier']; // Create the case. $caseSchema = $this->settingsService->getConfigValue('case_schema'); $caseData = [ - 'title' => 'Omgevingsvergunning' . ($activityStr !== '' ? ': ' . $activityStr : ''), + 'title' => 'Omgevingsvergunning'.($activityStr !== '' ? ': '.$activityStr : ''), 'description' => 'Vergunningaanvraag ontvangen via DSO/Omgevingsloket' - . ($dsoZaaknummer !== '' ? ' (DSO: ' . $dsoZaaknummer . ')' : ''), + .($dsoZaaknummer !== '' ? ' (DSO: '.$dsoZaaknummer.')' : ''), 'startDate' => date('Y-m-d'), 'priority' => 'normal', ]; @@ -129,15 +126,19 @@ static function ($act) { continue; } - $objectService->saveObject($register, $propertySchema, [ - 'case' => $caseId, - 'name' => $name, - 'value' => $value, - ]); + $objectService->saveObject( + $register, + $propertySchema, + [ + 'case' => $caseId, + 'name' => $name, + 'value' => $value, + ] + ); } $this->logger->info( - 'DSO intake processed: case ' . $caseId . ' (DSO: ' . $dsoZaaknummer . ')', + 'DSO intake processed: case '.$caseId.' (DSO: '.$dsoZaaknummer.')', ['app' => Application::APP_ID], ); @@ -148,8 +149,7 @@ static function ($act) { 'procedureType' => $procedureType, 'deadline' => $deadline, ]; - } - + }//end processAanvraag() /** * Get the processing deadline duration for a procedure type. @@ -160,7 +160,6 @@ static function ($act) { */ public function getDeadlineDuration(string $procedureType): string { - return self::DEADLINE_DURATIONS[$procedureType] - ?? self::DEADLINE_DURATIONS['regulier']; - } -} + return self::DEADLINE_DURATIONS[$procedureType] ?? self::DEADLINE_DURATIONS['regulier']; + }//end getDeadlineDuration() +}//end class diff --git a/lib/Service/GisProxyService.php b/lib/Service/GisProxyService.php index 74b11c9b..c291cbda 100644 --- a/lib/Service/GisProxyService.php +++ b/lib/Service/GisProxyService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/InspectionService.php b/lib/Service/InspectionService.php index e2fa0ca5..42bb185d 100644 --- a/lib/Service/InspectionService.php +++ b/lib/Service/InspectionService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -69,13 +69,13 @@ public function __construct( private readonly SettingsService $settingsService, private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Get inspections assigned to an inspector, optionally filtered by date. * - * @param string $inspectorId The inspector's user ID. - * @param string|null $date Optional date filter (Y-m-d format). + * @param string $inspectorId The inspector's user ID. + * @param string|null $date Optional date filter (Y-m-d format). * @param array> $allInspections All inspection data (from OpenRegister). * * @return array> Filtered and sorted inspections. @@ -87,26 +87,34 @@ public function getInspections( ?string $date, array $allInspections, ): array { - $filtered = array_filter($allInspections, function (array $inspection) use ($inspectorId, $date): bool { - if (($inspection['inspectorId'] ?? '') !== $inspectorId) { - return false; - } - if ($date !== null) { - $inspectionDate = substr($inspection['plannedDateTime'] ?? '', 0, 10); - if ($inspectionDate !== $date) { - return false; + $filtered = array_filter( + $allInspections, + function (array $inspection) use ($inspectorId, $date): bool { + if (($inspection['inspectorId'] ?? '') !== $inspectorId) { + return false; + } + + if ($date !== null) { + $inspectionDate = substr($inspection['plannedDateTime'] ?? '', 0, 10); + if ($inspectionDate !== $date) { + return false; + } + } + + return true; } - } - return true; - }); + ); // Sort by planned time. - usort($filtered, function (array $a, array $b): int { - return ($a['plannedDateTime'] ?? '') <=> ($b['plannedDateTime'] ?? ''); - }); + usort( + $filtered, + function (array $a, array $b): int { + return ($a['plannedDateTime'] ?? '') <=> ($b['plannedDateTime'] ?? ''); + } + ); return array_values($filtered); - } + }//end getInspections() /** * Capture GPS location for an inspection and validate against planned location. @@ -131,18 +139,18 @@ public function captureLocation( float $accuracy, ): array { $inspection['capturedLocation'] = [ - 'latitude' => $latitude, - 'longitude' => $longitude, - 'accuracy' => $accuracy, + 'latitude' => $latitude, + 'longitude' => $longitude, + 'accuracy' => $accuracy, 'capturedAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), ]; - $warning = null; + $warning = null; $distance = 0.0; // Check distance from planned location. - $plannedLat = (float)($inspection['plannedLatitude'] ?? 0.0); - $plannedLon = (float)($inspection['plannedLongitude'] ?? 0.0); + $plannedLat = (float) ($inspection['plannedLatitude'] ?? 0.0); + $plannedLon = (float) ($inspection['plannedLongitude'] ?? 0.0); if ($plannedLat !== 0.0 && $plannedLon !== 0.0) { $distance = $this->calculateDistance($latitude, $longitude, $plannedLat, $plannedLon); @@ -155,7 +163,7 @@ public function captureLocation( $this->logger->warning( 'Location mismatch for inspection {id}: {distance}m from planned', [ - 'id' => $inspection['id'] ?? 'unknown', + 'id' => $inspection['id'] ?? 'unknown', 'distance' => round($distance), ] ); @@ -168,16 +176,16 @@ public function captureLocation( return [ 'inspection' => $inspection, - 'warning' => $warning, - 'distance' => round($distance, 1), + 'warning' => $warning, + 'distance' => round($distance, 1), ]; - } + }//end captureLocation() /** * Record photo metadata for an inspection. * - * @param array $inspection The inspection data. - * @param array $photoMetadata Photo info (fileRef, latitude, longitude, checklistItemId). + * @param array $inspection The inspection data. + * @param array $photoMetadata Photo info (fileRef, latitude, longitude, checklistItemId). * * @return array The updated inspection with photo added. * @@ -186,19 +194,19 @@ public function captureLocation( public function addPhoto(array $inspection, array $photoMetadata): array { $photo = [ - 'id' => $photoMetadata['id'] ?? uniqid('photo_', true), - 'fileRef' => $photoMetadata['fileRef'] ?? '', - 'latitude' => $photoMetadata['latitude'] ?? null, - 'longitude' => $photoMetadata['longitude'] ?? null, + 'id' => $photoMetadata['id'] ?? uniqid('photo_', true), + 'fileRef' => $photoMetadata['fileRef'] ?? '', + 'latitude' => $photoMetadata['latitude'] ?? null, + 'longitude' => $photoMetadata['longitude'] ?? null, 'checklistItemId' => $photoMetadata['checklistItemId'] ?? null, - 'capturedAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), + 'capturedAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), ]; - $inspection['photos'] = $inspection['photos'] ?? []; + $inspection['photos'] = $inspection['photos'] ?? []; $inspection['photos'][] = $photo; return $inspection; - } + }//end addPhoto() /** * Complete an inspection. @@ -212,22 +220,22 @@ public function addPhoto(array $inspection, array $photoMetadata): array * * @psalm-suppress PossiblyUnusedMethod */ - public function completeInspection(array $inspection, string $conclusion = ''): array + public function completeInspection(array $inspection, string $conclusion=''): array { $checklist = $inspection['checklist'] ?? []; - $items = $checklist['items'] ?? []; + $items = $checklist['items'] ?? []; // Check if all items are completed. foreach ($items as $item) { if (empty($item['status'])) { throw new \InvalidArgumentException( - 'Not all checklist items are completed. Item: ' . ($item['description'] ?? 'unknown') + 'Not all checklist items are completed. Item: '.($item['description'] ?? 'unknown') ); } } - $inspection['status'] = self::STATUS_COMPLETED; - $inspection['conclusion'] = $conclusion; + $inspection['status'] = self::STATUS_COMPLETED; + $inspection['conclusion'] = $conclusion; $inspection['completedAt'] = (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM); $this->logger->info( @@ -236,7 +244,7 @@ public function completeInspection(array $inspection, string $conclusion = ''): ); return $inspection; - } + }//end completeInspection() /** * Calculate distance between two GPS coordinates using Haversine formula. @@ -253,12 +261,10 @@ private function calculateDistance(float $lat1, float $lon1, float $lat2, float $dLat = deg2rad($lat2 - $lat1); $dLon = deg2rad($lon2 - $lon1); - $a = sin($dLat / 2) * sin($dLat / 2) - + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) - * sin($dLon / 2) * sin($dLon / 2); + $a = sin($dLat / 2) * sin($dLat / 2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon / 2) * sin($dLon / 2); $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); return self::EARTH_RADIUS * $c; - } -} + }//end calculateDistance() +}//end class diff --git a/lib/Service/LegesCalculationService.php b/lib/Service/LegesCalculationService.php index 75b48baa..9bf53d79 100644 --- a/lib/Service/LegesCalculationService.php +++ b/lib/Service/LegesCalculationService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -73,14 +73,14 @@ class LegesCalculationService public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Calculate leges for a case based on applicable verordening. * - * @param array $caseData The case data (bouwkosten, activiteiten, etc.). - * @param array $verordening The applicable verordening with artikelen. - * @param string $calculatedBy User ID of the person triggering the calculation. + * @param array $caseData The case data (bouwkosten, activiteiten, etc.). + * @param array $verordening The applicable verordening with artikelen. + * @param string $calculatedBy User ID of the person triggering the calculation. * * @return array{ * total: float, @@ -105,33 +105,33 @@ public function calculate( $artikelen = $verordening['artikelen'] ?? []; $breakdown = []; - $total = 0.0; + $total = 0.0; foreach ($artikelen as $artikel) { $result = $this->calculateArtikel($artikel, $caseData); if ($result !== null) { $breakdown[] = $result; - $total += $result['amount']; + $total += $result['amount']; } } // Apply global maximum if configured. $globalMax = $verordening['globalMaximum'] ?? null; - if ($globalMax !== null && $total > (float)$globalMax) { - $total = (float)$globalMax; + if ($globalMax !== null && $total > (float) $globalMax) { + $total = (float) $globalMax; } $total = round($total, self::PRECISION); return [ - 'total' => $total, - 'breakdown' => $breakdown, - 'verordening' => $verordening['name'] ?? '', + 'total' => $total, + 'breakdown' => $breakdown, + 'verordening' => $verordening['name'] ?? '', 'calculatedBy' => $calculatedBy, 'calculatedAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'version' => 1, + 'version' => 1, ]; - } + }//end calculate() /** * Recalculate leges with corrected case data, preserving history. @@ -153,18 +153,18 @@ public function recalculate( string $calculatedBy, string $correctionReason, ): array { - $newCalc = $this->calculate($caseData, $verordening, $calculatedBy); + $newCalc = $this->calculate($caseData, $verordening, $calculatedBy); $newCalc['version'] = ($previousCalc['version'] ?? 0) + 1; - $newCalc['previousVersion'] = $previousCalc['version'] ?? 0; + $newCalc['previousVersion'] = $previousCalc['version'] ?? 0; $newCalc['correctionReason'] = $correctionReason; - $newCalc['previousTotal'] = $previousCalc['total'] ?? 0.0; - $newCalc['difference'] = round( + $newCalc['previousTotal'] = $previousCalc['total'] ?? 0.0; + $newCalc['difference'] = round( $newCalc['total'] - ($previousCalc['total'] ?? 0.0), self::PRECISION ); return $newCalc; - } + }//end recalculate() /** * Calculate verrekening (deduction of previously imposed fees). @@ -181,12 +181,12 @@ public function calculateVerrekening(float $currentAmount, float $previousAmount $netAmount = round($currentAmount - $previousAmount, self::PRECISION); return [ - 'netAmount' => $netAmount, - 'deduction' => $previousAmount, - 'currentAmount' => $currentAmount, + 'netAmount' => $netAmount, + 'deduction' => $previousAmount, + 'currentAmount' => $currentAmount, 'previousAmount' => $previousAmount, ]; - } + }//end calculateVerrekening() /** * Calculate teruggaaf (refund). @@ -201,18 +201,18 @@ public function calculateVerrekening(float $currentAmount, float $previousAmount */ public function calculateTeruggaaf( float $imposedAmount, - float $refundFraction = 1.0, - string $reason = '', + float $refundFraction=1.0, + string $reason='', ): array { $refundAmount = round(-1 * $imposedAmount * $refundFraction, self::PRECISION); return [ - 'refundAmount' => $refundAmount, + 'refundAmount' => $refundAmount, 'originalAmount' => $imposedAmount, - 'fraction' => $refundFraction, - 'reason' => $reason, + 'fraction' => $refundFraction, + 'reason' => $reason, ]; - } + }//end calculateTeruggaaf() /** * Calculate a single artikel. @@ -224,13 +224,13 @@ public function calculateTeruggaaf( */ private function calculateArtikel(array $artikel, array $caseData): ?array { - $type = $artikel['type'] ?? ''; - $artikelNr = $artikel['nummer'] ?? ''; + $type = $artikel['type'] ?? ''; + $artikelNr = $artikel['nummer'] ?? ''; $description = $artikel['omschrijving'] ?? ''; // Determine the grondslag (base amount) from case data. $grondslagField = $artikel['grondslagField'] ?? 'bouwkosten'; - $grondslag = (float)($caseData[$grondslagField] ?? 0.0); + $grondslag = (float) ($caseData[$grondslagField] ?? 0.0); $amount = match ($type) { self::TYPE_VAST => $this->calculateVast($artikel), @@ -246,13 +246,13 @@ private function calculateArtikel(array $artikel, array $caseData): ?array } return [ - 'artikel' => $artikelNr, + 'artikel' => $artikelNr, 'description' => $description, - 'grondslag' => $grondslag, - 'amount' => round($amount, self::PRECISION), - 'type' => $type, + 'grondslag' => $grondslag, + 'amount' => round($amount, self::PRECISION), + 'type' => $type, ]; - } + }//end calculateArtikel() /** * Calculate a fixed amount (vast bedrag). @@ -263,8 +263,8 @@ private function calculateArtikel(array $artikel, array $caseData): ?array */ private function calculateVast(array $artikel): float { - return (float)($artikel['bedrag'] ?? 0.0); - } + return (float) ($artikel['bedrag'] ?? 0.0); + }//end calculateVast() /** * Calculate a percentage of the grondslag. @@ -276,9 +276,9 @@ private function calculateVast(array $artikel): float */ private function calculatePercentage(float $grondslag, array $artikel): float { - $percentage = (float)($artikel['percentage'] ?? 0.0); + $percentage = (float) ($artikel['percentage'] ?? 0.0); return $grondslag * ($percentage / 100.0); - } + }//end calculatePercentage() /** * Calculate using tiered brackets (staffel). @@ -294,12 +294,12 @@ private function calculatePercentage(float $grondslag, array $artikel): float private function calculateStaffel(float $grondslag, array $artikel): float { $brackets = $artikel['brackets'] ?? []; - $total = 0.0; + $total = 0.0; foreach ($brackets as $bracket) { - $from = (float)($bracket['from'] ?? 0.0); - $to = (float)($bracket['to'] ?? PHP_FLOAT_MAX); - $percentage = (float)($bracket['percentage'] ?? 0.0); + $from = (float) ($bracket['from'] ?? 0.0); + $to = (float) ($bracket['to'] ?? PHP_FLOAT_MAX); + $percentage = (float) ($bracket['percentage'] ?? 0.0); if ($grondslag <= $from) { break; @@ -312,7 +312,7 @@ private function calculateStaffel(float $grondslag, array $artikel): float } return $total; - } + }//end calculateStaffel() /** * Calculate with a maximum cap. @@ -324,7 +324,7 @@ private function calculateStaffel(float $grondslag, array $artikel): float */ private function calculateMaximum(float $grondslag, array $artikel): float { - $maximum = (float)($artikel['maximum'] ?? PHP_FLOAT_MAX); + $maximum = (float) ($artikel['maximum'] ?? PHP_FLOAT_MAX); $subType = $artikel['subType'] ?? self::TYPE_PERCENTAGE; $calculated = match ($subType) { @@ -334,7 +334,7 @@ private function calculateMaximum(float $grondslag, array $artikel): float }; return min($calculated, $maximum); - } + }//end calculateMaximum() /** * Calculate a combination of multiple sub-calculations. @@ -351,7 +351,7 @@ private function calculateCombinatie( array $caseData, ): float { $subArtikelen = $artikel['subArtikelen'] ?? []; - $total = 0.0; + $total = 0.0; foreach ($subArtikelen as $subArtikel) { $result = $this->calculateArtikel($subArtikel, $caseData); @@ -361,5 +361,5 @@ private function calculateCombinatie( } return $total; - } -} + }//end calculateCombinatie() +}//end class diff --git a/lib/Service/LegesExportService.php b/lib/Service/LegesExportService.php index b60ae508..17890f13 100644 --- a/lib/Service/LegesExportService.php +++ b/lib/Service/LegesExportService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -85,7 +85,7 @@ class LegesExportService public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Export berekeningen to the specified format. @@ -99,11 +99,11 @@ public function __construct( * * @psalm-suppress PossiblyUnusedMethod */ - public function export(array $berekeningen, string $format = self::FORMAT_CSV): array + public function export(array $berekeningen, string $format=self::FORMAT_CSV): array { if (!in_array($format, self::SUPPORTED_FORMATS, true)) { throw new \InvalidArgumentException( - 'Unsupported export format: ' . $format . '. Supported: ' . implode(', ', self::SUPPORTED_FORMATS) + 'Unsupported export format: '.$format.'. Supported: '.implode(', ', self::SUPPORTED_FORMATS) ); } @@ -117,7 +117,7 @@ public function export(array $berekeningen, string $format = self::FORMAT_CSV): self::FORMAT_ASCII => $this->exportASCII($berekeningen), self::FORMAT_XML => $this->exportXML($berekeningen), }; - } + }//end export() /** * Export berekeningen as CSV. @@ -153,11 +153,11 @@ private function exportCSV(array $berekeningen): array $date = (new \DateTimeImmutable())->format('Y-m-d'); return [ - 'content' => $content !== false ? $content : '', - 'filename' => "leges-export-{$date}.csv", + 'content' => $content !== false ? $content : '', + 'filename' => "leges-export-{$date}.csv", 'contentType' => 'text/csv; charset=utf-8', ]; - } + }//end exportCSV() /** * Export berekeningen as ASCII flat file. @@ -180,22 +180,22 @@ private function exportASCII(array $berekeningen): array foreach ($berekeningen as $berekening) { $rows = $this->flattenBerekening($berekening); foreach ($rows as $row) { - $lines[] = 'D|' . implode('|', $row); + $lines[] = 'D|'.implode('|', $row); } } // Footer line. - $total = array_sum(array_column($berekeningen, 'total')); + $total = array_sum(array_column($berekeningen, 'total')); $lines[] = sprintf('F|%d|%.2f', count($berekeningen), $total); $date = (new \DateTimeImmutable())->format('Y-m-d'); return [ - 'content' => implode("\r\n", $lines), - 'filename' => "leges-export-{$date}.txt", + 'content' => implode("\r\n", $lines), + 'filename' => "leges-export-{$date}.txt", 'contentType' => 'text/plain; charset=utf-8', ]; - } + }//end exportASCII() /** * Export berekeningen as XML (StUF-FIN compatible structure). @@ -211,23 +211,23 @@ private function exportXML(array $berekeningen): array $root = $dom->createElement('legesExport'); $root->setAttribute('exportDatum', (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM)); - $root->setAttribute('aantalRecords', (string)count($berekeningen)); + $root->setAttribute('aantalRecords', (string) count($berekeningen)); $dom->appendChild($root); foreach ($berekeningen as $berekening) { $berekeningEl = $dom->createElement('berekening'); - $berekeningEl->setAttribute('zaaknummer', (string)($berekening['zaaknummer'] ?? '')); + $berekeningEl->setAttribute('zaaknummer', (string) ($berekening['zaaknummer'] ?? '')); - $this->addXmlElement($dom, $berekeningEl, 'bsnKvk', (string)($berekening['bsnKvk'] ?? '')); - $this->addXmlElement($dom, $berekeningEl, 'naam', (string)($berekening['naam'] ?? '')); + $this->addXmlElement($dom, $berekeningEl, 'bsnKvk', (string) ($berekening['bsnKvk'] ?? '')); + $this->addXmlElement($dom, $berekeningEl, 'naam', (string) ($berekening['naam'] ?? '')); $this->addXmlElement($dom, $berekeningEl, 'totaalBedrag', number_format($berekening['total'] ?? 0.0, 2, '.', '')); - $this->addXmlElement($dom, $berekeningEl, 'datumBeschikking', (string)($berekening['datumBeschikking'] ?? '')); + $this->addXmlElement($dom, $berekeningEl, 'datumBeschikking', (string) ($berekening['datumBeschikking'] ?? '')); $breakdown = $berekening['breakdown'] ?? []; foreach ($breakdown as $regel) { $regelEl = $dom->createElement('regel'); - $this->addXmlElement($dom, $regelEl, 'artikelnummer', (string)($regel['artikel'] ?? '')); - $this->addXmlElement($dom, $regelEl, 'omschrijving', (string)($regel['description'] ?? '')); + $this->addXmlElement($dom, $regelEl, 'artikelnummer', (string) ($regel['artikel'] ?? '')); + $this->addXmlElement($dom, $regelEl, 'omschrijving', (string) ($regel['description'] ?? '')); $this->addXmlElement($dom, $regelEl, 'bedrag', number_format($regel['amount'] ?? 0.0, 2, '.', '')); $berekeningEl->appendChild($regelEl); } @@ -236,14 +236,14 @@ private function exportXML(array $berekeningen): array } $content = $dom->saveXML(); - $date = (new \DateTimeImmutable())->format('Y-m-d'); + $date = (new \DateTimeImmutable())->format('Y-m-d'); return [ - 'content' => $content !== false ? $content : '', - 'filename' => "leges-export-{$date}.xml", + 'content' => $content !== false ? $content : '', + 'filename' => "leges-export-{$date}.xml", 'contentType' => 'application/xml; charset=utf-8', ]; - } + }//end exportXML() /** * Flatten a berekening into export rows (one row per artikel in breakdown). @@ -254,45 +254,45 @@ private function exportXML(array $berekeningen): array */ private function flattenBerekening(array $berekening): array { - $rows = []; + $rows = []; $breakdown = $berekening['breakdown'] ?? []; if (empty($breakdown)) { $rows[] = [ - (string)($berekening['zaaknummer'] ?? ''), - (string)($berekening['bsnKvk'] ?? ''), - (string)($berekening['naam'] ?? ''), - (string)($berekening['adres'] ?? ''), + (string) ($berekening['zaaknummer'] ?? ''), + (string) ($berekening['bsnKvk'] ?? ''), + (string) ($berekening['naam'] ?? ''), + (string) ($berekening['adres'] ?? ''), '', 'Totaal', number_format($berekening['total'] ?? 0.0, 2, '.', ''), - (string)($berekening['datumBeschikking'] ?? ''), + (string) ($berekening['datumBeschikking'] ?? ''), ]; } else { foreach ($breakdown as $regel) { $rows[] = [ - (string)($berekening['zaaknummer'] ?? ''), - (string)($berekening['bsnKvk'] ?? ''), - (string)($berekening['naam'] ?? ''), - (string)($berekening['adres'] ?? ''), - (string)($regel['artikel'] ?? ''), - (string)($regel['description'] ?? ''), + (string) ($berekening['zaaknummer'] ?? ''), + (string) ($berekening['bsnKvk'] ?? ''), + (string) ($berekening['naam'] ?? ''), + (string) ($berekening['adres'] ?? ''), + (string) ($regel['artikel'] ?? ''), + (string) ($regel['description'] ?? ''), number_format($regel['amount'] ?? 0.0, 2, '.', ''), - (string)($berekening['datumBeschikking'] ?? ''), + (string) ($berekening['datumBeschikking'] ?? ''), ]; } - } + }//end if return $rows; - } + }//end flattenBerekening() /** * Add a text element to an XML parent. * - * @param \DOMDocument $dom The DOM document. - * @param \DOMElement $parent The parent element. - * @param string $name The element name. - * @param string $value The text value. + * @param \DOMDocument $dom The DOM document. + * @param \DOMElement $parent The parent element. + * @param string $name The element name. + * @param string $value The text value. * * @return void */ @@ -301,5 +301,5 @@ private function addXmlElement(\DOMDocument $dom, \DOMElement $parent, string $n $element = $dom->createElement($name); $element->appendChild($dom->createTextNode($value)); $parent->appendChild($element); - } -} + }//end addXmlElement() +}//end class diff --git a/lib/Service/MilestoneService.php b/lib/Service/MilestoneService.php index ad640fbb..abde2720 100644 --- a/lib/Service/MilestoneService.php +++ b/lib/Service/MilestoneService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -30,8 +30,6 @@ */ class MilestoneService { - - /** * Constructor. * @@ -42,8 +40,7 @@ public function __construct( private readonly SettingsService $settingsService, private readonly LoggerInterface $logger, ) { - } - + }//end __construct() /** * Get milestone definitions for a case type. @@ -77,8 +74,7 @@ public function getMilestones(string $caseTypeId): array ); return is_array($results) ? $results : []; - } - + }//end getMilestones() /** * Get milestone progress for a specific case. @@ -93,14 +89,14 @@ public function getCaseProgress(string $caseId, string $caseTypeId): array $definitions = $this->getMilestones($caseTypeId); if (count($definitions) === 0) { return [ - 'milestones' => [], - 'reached' => 0, - 'total' => 0, - 'percentage' => 0, + 'milestones' => [], + 'reached' => 0, + 'total' => 0, + 'percentage' => 0, ]; } - $records = $this->getMilestoneRecords($caseId); + $records = $this->getMilestoneRecords($caseId); $recordMap = []; foreach ($records as $record) { $recordMap[$record['milestoneDefinition'] ?? ''] = $record; @@ -109,8 +105,8 @@ public function getCaseProgress(string $caseId, string $caseTypeId): array $milestones = []; $reached = 0; foreach ($definitions as $def) { - $defId = $def['id'] ?? $def['uuid'] ?? ''; - $record = $recordMap[$defId] ?? null; + $defId = $def['id'] ?? $def['uuid'] ?? ''; + $record = $recordMap[$defId] ?? null; $isReached = $record !== null; if ($isReached === true) { @@ -136,8 +132,7 @@ public function getCaseProgress(string $caseId, string $caseTypeId): array 'total' => $total, 'percentage' => $total > 0 ? (int) round(($reached / $total) * 100) : 0, ]; - } - + }//end getCaseProgress() /** * Mark a milestone as reached for a case. @@ -155,7 +150,7 @@ public function markMilestone( string $caseId, string $milestoneDefinitionId, string $userId, - string $trigger = 'manual', + string $trigger='manual', ): array { $objectService = $this->settingsService->getObjectService(); if ($objectService === null) { @@ -180,7 +175,7 @@ public function markMilestone( $record = $objectService->saveObject($register, $schema, $recordData); $this->logger->info( - 'Milestone marked: ' . $milestoneDefinitionId . ' on case ' . $caseId, + 'Milestone marked: '.$milestoneDefinitionId.' on case '.$caseId, ['app' => Application::APP_ID], ); @@ -189,8 +184,7 @@ public function markMilestone( 'reachedAt' => $recordData['reachedAt'], 'reachedBy' => $userId, ]; - } - + }//end markMilestone() /** * Reverse a milestone (with reason for audit trail). @@ -240,14 +234,13 @@ public function reverseMilestone( } $this->logger->info( - 'Milestone reversed: ' . $milestoneDefinitionId . ' on case ' . $caseId - . ' by ' . $userId . ' reason: ' . $reason, + 'Milestone reversed: '.$milestoneDefinitionId.' on case '.$caseId + .' by '.$userId.' reason: '.$reason, ['app' => Application::APP_ID], ); return true; - } - + }//end reverseMilestone() /** * Calculate average duration between milestones for a case type. @@ -261,7 +254,7 @@ public function getDurationAnalytics(string $caseTypeId): array // Placeholder: in production, this would aggregate milestone records // across all cases of this type and calculate averages. $this->logger->debug( - 'Duration analytics requested for case type: ' . $caseTypeId, + 'Duration analytics requested for case type: '.$caseTypeId, ['app' => Application::APP_ID], ); @@ -270,8 +263,7 @@ public function getDurationAnalytics(string $caseTypeId): array 'phases' => [], 'message' => 'Duration analytics requires sufficient historical data', ]; - } - + }//end getDurationAnalytics() /** * Get milestone records for a case. @@ -303,5 +295,5 @@ private function getMilestoneRecords(string $caseId): array ); return is_array($results) ? $results : []; - } -} + }//end getMilestoneRecords() +}//end class diff --git a/lib/Service/NotificatieService.php b/lib/Service/NotificatieService.php index f3d0c599..8a09fdc6 100644 --- a/lib/Service/NotificatieService.php +++ b/lib/Service/NotificatieService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ParaferingNotificationService.php b/lib/Service/ParaferingNotificationService.php index 28c50484..f501e956 100644 --- a/lib/Service/ParaferingNotificationService.php +++ b/lib/Service/ParaferingNotificationService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ParaferingService.php b/lib/Service/ParaferingService.php index b4642400..8a4d2dd8 100644 --- a/lib/Service/ParaferingService.php +++ b/lib/Service/ParaferingService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -105,7 +105,7 @@ class ParaferingService public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Create a new voorstel linked to a case. @@ -119,18 +119,18 @@ public function __construct( public function createVoorstel(array $voorstelData): array { $voorstel = [ - 'id' => $voorstelData['id'] ?? $this->generateId(), - 'caseId' => $voorstelData['caseId'] ?? '', - 'type' => $voorstelData['type'] ?? 'collegeadvies', - 'onderwerp' => $voorstelData['onderwerp'] ?? '', - 'steller' => $voorstelData['steller'] ?? '', - 'afdeling' => $voorstelData['afdeling'] ?? '', + 'id' => $voorstelData['id'] ?? $this->generateId(), + 'caseId' => $voorstelData['caseId'] ?? '', + 'type' => $voorstelData['type'] ?? 'collegeadvies', + 'onderwerp' => $voorstelData['onderwerp'] ?? '', + 'steller' => $voorstelData['steller'] ?? '', + 'afdeling' => $voorstelData['afdeling'] ?? '', 'portefeuillehouder' => $voorstelData['portefeuillehouder'] ?? '', - 'status' => self::STATUS_CONCEPT, - 'currentStep' => 0, - 'parafeerRoute' => [], - 'auditTrail' => [], - 'createdAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), + 'status' => self::STATUS_CONCEPT, + 'currentStep' => 0, + 'parafeerRoute' => [], + 'auditTrail' => [], + 'createdAt' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), ]; $this->logger->info( @@ -139,13 +139,13 @@ public function createVoorstel(array $voorstelData): array ); return $voorstel; - } + }//end createVoorstel() /** * Start the parafering process on a voorstel. * - * @param array $voorstel The voorstel. - * @param array> $route The parafeerroute (ordered steps). + * @param array $voorstel The voorstel. + * @param array> $route The parafeerroute (ordered steps). * * @return array The updated voorstel with parafering started. * @@ -167,17 +167,17 @@ public function startParafering(array $voorstel, array $route): array throw new \InvalidArgumentException('Parafeerroute cannot be empty'); } - $voorstel['status'] = self::STATUS_IN_PARAFERING; - $voorstel['currentStep'] = 0; + $voorstel['status'] = self::STATUS_IN_PARAFERING; + $voorstel['currentStep'] = 0; $voorstel['parafeerRoute'] = $route; // Record in audit trail. $voorstel['auditTrail'][] = [ - 'action' => 'started', - 'actor' => $voorstel['steller'], + 'action' => 'started', + 'actor' => $voorstel['steller'], 'timestamp' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'comment' => 'Parafering gestart', - 'step' => 0, + 'comment' => 'Parafering gestart', + 'step' => 0, ]; $this->logger->info( @@ -186,7 +186,7 @@ public function startParafering(array $voorstel, array $route): array ); return $voorstel; - } + }//end startParafering() /** * Execute a parafering action on a voorstel. @@ -207,8 +207,8 @@ public function executeAction( array $voorstel, string $action, string $actor, - string $comment = '', - ?string $namens = null, + string $comment='', + ?string $namens=null, ): array { if ($voorstel['status'] !== self::STATUS_IN_PARAFERING) { throw new \InvalidArgumentException('Voorstel is not in parafering status'); @@ -217,7 +217,7 @@ public function executeAction( $validActions = [self::ACTION_PARAFEREN, self::ACTION_TERUGSTUREN, self::ACTION_ADVISEREN]; if (!in_array($action, $validActions, true)) { throw new \InvalidArgumentException( - 'Invalid action: ' . $action . '. Valid: ' . implode(', ', $validActions) + 'Invalid action: '.$action.'. Valid: '.implode(', ', $validActions) ); } @@ -225,16 +225,16 @@ public function executeAction( // Record the action in audit trail. $auditEntry = [ - 'action' => $action, - 'actor' => $actor, + 'action' => $action, + 'actor' => $actor, 'timestamp' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'comment' => $comment, - 'step' => $currentStep, + 'comment' => $comment, + 'step' => $currentStep, ]; if ($namens !== null) { - $auditEntry['namens'] = $namens; - $auditEntry['comment'] = "Geparafeerd door {$actor} namens {$namens} (mandaat). " . $comment; + $auditEntry['namens'] = $namens; + $auditEntry['comment'] = "Geparafeerd door {$actor} namens {$namens} (mandaat). ".$comment; } $voorstel['auditTrail'][] = $auditEntry; @@ -246,13 +246,13 @@ public function executeAction( 'Voorstel {id} returned by {actor}: {comment}', ['id' => $voorstel['id'], 'actor' => $actor, 'comment' => $comment] ); - } elseif ($action === self::ACTION_ADVISEREN) { + } else if ($action === self::ACTION_ADVISEREN) { // Advisory is non-blocking: advance to next step. $voorstel = $this->advanceStep($voorstel); - } elseif ($action === self::ACTION_PARAFEREN) { + } else if ($action === self::ACTION_PARAFEREN) { // Check if this completes a parallel step. - $route = $voorstel['parafeerRoute'] ?? []; - $step = $route[$currentStep] ?? []; + $route = $voorstel['parafeerRoute'] ?? []; + $step = $route[$currentStep] ?? []; $isParallel = $step['parallel'] ?? false; if ($isParallel) { @@ -260,10 +260,10 @@ public function executeAction( } else { $voorstel = $this->advanceStep($voorstel); } - } + }//end if return $voorstel; - } + }//end executeAction() /** * Get the full audit trail for a voorstel. @@ -277,7 +277,7 @@ public function executeAction( public function getAuditTrail(array $voorstel): array { return $voorstel['auditTrail'] ?? []; - } + }//end getAuditTrail() /** * Get the current step information for a voorstel. @@ -294,11 +294,11 @@ public function getCurrentStep(array $voorstel): ?array return null; } - $route = $voorstel['parafeerRoute'] ?? []; + $route = $voorstel['parafeerRoute'] ?? []; $currentStep = $voorstel['currentStep'] ?? 0; return $route[$currentStep] ?? null; - } + }//end getCurrentStep() /** * Override (modify) the parafeerroute for a specific voorstel. @@ -321,11 +321,11 @@ public function overrideRoute( $voorstel['parafeerRoute'] = $newRoute; $voorstel['auditTrail'][] = [ - 'action' => 'route_overridden', - 'actor' => $actor, + 'action' => 'route_overridden', + 'actor' => $actor, 'timestamp' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'comment' => "Parafeerroute aangepast door {$actor}, reden: {$reason}", - 'step' => $voorstel['currentStep'] ?? 0, + 'comment' => "Parafeerroute aangepast door {$actor}, reden: {$reason}", + 'step' => $voorstel['currentStep'] ?? 0, ]; $this->logger->info( @@ -334,7 +334,7 @@ public function overrideRoute( ); return $voorstel; - } + }//end overrideRoute() /** * Advance to the next step in the parafeerroute. @@ -345,18 +345,18 @@ public function overrideRoute( */ private function advanceStep(array $voorstel): array { - $route = $voorstel['parafeerRoute'] ?? []; + $route = $voorstel['parafeerRoute'] ?? []; $nextStep = ($voorstel['currentStep'] ?? 0) + 1; if ($nextStep >= count($route)) { // All steps completed. - $voorstel['status'] = self::STATUS_GEPARAFEERD; + $voorstel['status'] = self::STATUS_GEPARAFEERD; $voorstel['auditTrail'][] = [ - 'action' => 'completed', - 'actor' => 'system', + 'action' => 'completed', + 'actor' => 'system', 'timestamp' => (new \DateTimeImmutable())->format(\DateTimeInterface::ATOM), - 'comment' => 'Alle paraferingstappen voltooid', - 'step' => $nextStep, + 'comment' => 'Alle paraferingstappen voltooid', + 'step' => $nextStep, ]; $this->logger->info('Voorstel {id} parafering completed', ['id' => $voorstel['id']]); } else { @@ -364,25 +364,25 @@ private function advanceStep(array $voorstel): array } return $voorstel; - } + }//end advanceStep() /** * Handle a parallel parafering step (completes when ALL actors have parafered). * - * @param array $voorstel The voorstel. - * @param string $actor The actor who just parafered. - * @param int $stepIndex The step index. + * @param array $voorstel The voorstel. + * @param string $actor The actor who just parafered. + * @param int $stepIndex The step index. * * @return array The updated voorstel. */ private function handleParallelStep(array $voorstel, string $actor, int $stepIndex): array { - $route = $voorstel['parafeerRoute'] ?? []; - $step = $route[$stepIndex] ?? []; + $route = $voorstel['parafeerRoute'] ?? []; + $step = $route[$stepIndex] ?? []; $requiredActors = $step['actors'] ?? []; // Check which actors have already parafered for this step. - $auditTrail = $voorstel['auditTrail'] ?? []; + $auditTrail = $voorstel['auditTrail'] ?? []; $paraferedActors = []; foreach ($auditTrail as $entry) { if (($entry['step'] ?? -1) === $stepIndex @@ -407,7 +407,7 @@ private function handleParallelStep(array $voorstel, string $actor, int $stepInd } return $voorstel; - } + }//end handleParallelStep() /** * Generate a unique ID. @@ -427,5 +427,5 @@ private function generateId(): string mt_rand(0, 0xffff), mt_rand(0, 0xffff) ); - } -} + }//end generateId() +}//end class diff --git a/lib/Service/SeedDataService.php b/lib/Service/SeedDataService.php index ebb43879..a603d594 100644 --- a/lib/Service/SeedDataService.php +++ b/lib/Service/SeedDataService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index 629219b6..a5d7a699 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/StufFieldMappingService.php b/lib/Service/StufFieldMappingService.php index de096911..a4650e28 100644 --- a/lib/Service/StufFieldMappingService.php +++ b/lib/Service/StufFieldMappingService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -52,15 +52,15 @@ class StufFieldMappingService * @var array */ private const DEFAULT_ZKN_MAPPINGS = [ - 'identificatie' => ['property' => 'identifier', 'transform' => null], - 'omschrijving' => ['property' => 'title', 'transform' => null], - 'toelichting' => ['property' => 'description', 'transform' => null], - 'startdatum' => ['property' => 'startDate', 'transform' => 'stufDateToIso'], - 'einddatum' => ['property' => 'endDate', 'transform' => 'stufDateToIso'], - 'einddatumGepland' => ['property' => 'plannedEndDate', 'transform' => 'stufDateToIso'], + 'identificatie' => ['property' => 'identifier', 'transform' => null], + 'omschrijving' => ['property' => 'title', 'transform' => null], + 'toelichting' => ['property' => 'description', 'transform' => null], + 'startdatum' => ['property' => 'startDate', 'transform' => 'stufDateToIso'], + 'einddatum' => ['property' => 'endDate', 'transform' => 'stufDateToIso'], + 'einddatumGepland' => ['property' => 'plannedEndDate', 'transform' => 'stufDateToIso'], 'uiterlijkeEinddatumAfdoening' => ['property' => 'deadline', 'transform' => 'stufDateToIso'], - 'registratiedatum' => ['property' => 'registrationDate', 'transform' => 'stufDateToIso'], - 'vertrouwelijkAanduiding' => ['property' => 'confidentiality', 'transform' => 'confidentialityToInternal'], + 'registratiedatum' => ['property' => 'registrationDate', 'transform' => 'stufDateToIso'], + 'vertrouwelijkAanduiding' => ['property' => 'confidentiality', 'transform' => 'confidentialityToInternal'], ]; /** @@ -69,11 +69,11 @@ class StufFieldMappingService * @var array */ private const DEFAULT_BG_MAPPINGS = [ - 'inp.bsn' => ['property' => 'bsn', 'transform' => null], - 'geslachtsnaam' => ['property' => 'lastName', 'transform' => null], + 'inp.bsn' => ['property' => 'bsn', 'transform' => null], + 'geslachtsnaam' => ['property' => 'lastName', 'transform' => null], 'voorvoegselGeslachtsnaam' => ['property' => 'namePrefix', 'transform' => null], - 'voornamen' => ['property' => 'firstName', 'transform' => null], - 'geboortedatum' => ['property' => 'dateOfBirth', 'transform' => 'stufDateToIso'], + 'voornamen' => ['property' => 'firstName', 'transform' => null], + 'geboortedatum' => ['property' => 'dateOfBirth', 'transform' => 'stufDateToIso'], ]; /** @@ -82,14 +82,14 @@ class StufFieldMappingService * @var array */ private const CONFIDENTIALITY_MAP = [ - 'OPENBAAR' => 'public', - 'BEPERKT OPENBAAR' => 'restricted', - 'INTERN' => 'internal', + 'OPENBAAR' => 'public', + 'BEPERKT OPENBAAR' => 'restricted', + 'INTERN' => 'internal', 'ZAAKVERTROUWELIJK' => 'case_sensitive', - 'VERTROUWELIJK' => 'confidential', - 'CONFIDENTIEEL' => 'highly_confidential', - 'GEHEIM' => 'secret', - 'ZEER GEHEIM' => 'top_secret', + 'VERTROUWELIJK' => 'confidential', + 'CONFIDENTIEEL' => 'highly_confidential', + 'GEHEIM' => 'secret', + 'ZEER GEHEIM' => 'top_secret', ]; /** @@ -107,7 +107,7 @@ class StufFieldMappingService public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Map StUF-ZKN fields to OpenRegister case properties. @@ -126,7 +126,7 @@ public function mapZknToInternal(array $stufData): array ); return $this->applyMappings($stufData, $mappings, 'toInternal'); - } + }//end mapZknToInternal() /** * Map OpenRegister case properties to StUF-ZKN fields. @@ -145,7 +145,7 @@ public function mapInternalToZkn(array $internalData): array ); return $this->applyReverseMappings($internalData, $mappings); - } + }//end mapInternalToZkn() /** * Map StUF-BG fields to OpenRegister person properties. @@ -164,7 +164,7 @@ public function mapBgToInternal(array $stufData): array ); return $this->applyMappings($stufData, $mappings, 'toInternal'); - } + }//end mapBgToInternal() /** * Map OpenRegister person properties to StUF-BG fields. @@ -183,7 +183,7 @@ public function mapInternalToBg(array $internalData): array ); return $this->applyReverseMappings($internalData, $mappings); - } + }//end mapInternalToBg() /** * Convert a StUF date (YYYYMMDD) to ISO 8601 (YYYY-MM-DD). @@ -212,7 +212,7 @@ public function stufDateToIso(string $stufDate): ?string $this->logger->warning('Invalid StUF date format: {date}', ['date' => $stufDate]); return null; - } + }//end stufDateToIso() /** * Convert an ISO 8601 date to StUF date format (YYYYMMDD). @@ -227,7 +227,7 @@ public function isoToStufDate(string $isoDate): string { $dt = new \DateTimeImmutable($isoDate); return $dt->format(self::STUF_DATE_FORMAT); - } + }//end isoToStufDate() /** * Convert an ISO 8601 datetime to StUF datetime format (YYYYMMDDHHmmss). @@ -242,7 +242,7 @@ public function isoToStufDateTime(string $isoDateTime): string { $dt = new \DateTimeImmutable($isoDateTime); return $dt->format(self::STUF_DATETIME_FORMAT); - } + }//end isoToStufDateTime() /** * Convert a StUF confidentiality value to internal value. @@ -256,7 +256,7 @@ public function isoToStufDateTime(string $isoDateTime): string public function confidentialityToInternal(string $stufValue): string { return self::CONFIDENTIALITY_MAP[strtoupper($stufValue)] ?? $stufValue; - } + }//end confidentialityToInternal() /** * Convert an internal confidentiality value to StUF value. @@ -271,12 +271,12 @@ public function confidentialityToStuf(string $internalValue): string { $flipped = array_flip(self::CONFIDENTIALITY_MAP); return $flipped[$internalValue] ?? strtoupper($internalValue); - } + }//end confidentialityToStuf() /** * Add custom field mappings. * - * @param string $type The mapping type ('zkn' or 'bg'). + * @param string $type The mapping type ('zkn' or 'bg'). * @param array $mappings The custom mappings. * * @return void @@ -289,7 +289,7 @@ public function addCustomMappings(string $type, array $mappings): void $this->customMappings[$type] ?? [], $mappings ); - } + }//end addCustomMappings() /** * Get all default mappings for a type. @@ -307,14 +307,14 @@ public function getDefaultMappings(string $type): array 'bg' => self::DEFAULT_BG_MAPPINGS, default => [], }; - } + }//end getDefaultMappings() /** * Apply mappings to convert StUF data to internal format. * - * @param array $data The source data. + * @param array $data The source data. * @param array $mappings The field mappings. - * @param string $direction The direction ('toInternal'). + * @param string $direction The direction ('toInternal'). * * @return array The mapped data. */ @@ -327,8 +327,8 @@ private function applyMappings(array $data, array $mappings, string $direction): continue; } - $mapping = $mappings[$stufField]; - $property = $mapping['property']; + $mapping = $mappings[$stufField]; + $property = $mapping['property']; $transform = $mapping['transform']; if ($transform !== null && method_exists($this, $transform)) { @@ -339,12 +339,12 @@ private function applyMappings(array $data, array $mappings, string $direction): } return $result; - } + }//end applyMappings() /** * Apply reverse mappings to convert internal data to StUF format. * - * @param array $data The internal data. + * @param array $data The internal data. * @param array $mappings The field mappings. * * @return array The StUF data. @@ -367,21 +367,21 @@ private function applyReverseMappings(array $data, array $mappings): array continue; } - $info = $reverseLookup[$property]; + $info = $reverseLookup[$property]; $stufField = $info['stufField']; // Apply reverse transform. if ($value !== null && $info['transform'] !== null) { $value = match ($info['transform']) { - 'stufDateToIso' => $this->isoToStufDate((string)$value), - 'confidentialityToInternal' => $this->confidentialityToStuf((string)$value), - default => (string)$value, + 'stufDateToIso' => $this->isoToStufDate((string) $value), + 'confidentialityToInternal' => $this->confidentialityToStuf((string) $value), + default => (string) $value, }; } - $result[$stufField] = (string)($value ?? ''); + $result[$stufField] = (string) ($value ?? ''); } return $result; - } -} + }//end applyReverseMappings() +}//end class diff --git a/lib/Service/StufMessageBuilder.php b/lib/Service/StufMessageBuilder.php index f79f79eb..7bd388fe 100644 --- a/lib/Service/StufMessageBuilder.php +++ b/lib/Service/StufMessageBuilder.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -65,9 +65,9 @@ class StufMessageBuilder * @var array */ public const NO_VALUE_TYPES = [ - 'geenWaarde' => 'geenWaarde', - 'waardeOnbekend' => 'waardeOnbekend', - 'nietOndersteund' => 'nietOndersteund', + 'geenWaarde' => 'geenWaarde', + 'waardeOnbekend' => 'waardeOnbekend', + 'nietOndersteund' => 'nietOndersteund', 'vastgesteldOnbekend' => 'vastgesteldOnbekend', ]; @@ -79,7 +79,7 @@ class StufMessageBuilder public function __construct( private readonly LoggerInterface $logger, ) { - } + }//end __construct() /** * Build a complete SOAP envelope wrapping a StUF message body. @@ -116,13 +116,13 @@ public function buildSoapEnvelope(string $bodyXml): string } return $dom->saveXML() ?: ''; - } + }//end buildSoapEnvelope() /** * Build stuurgegevens XML element. * - * @param array $zender Sender info (organisatie, applicatie). - * @param array $ontvanger Receiver info (organisatie, applicatie). + * @param array $zender Sender info (organisatie, applicatie). + * @param array $ontvanger Receiver info (organisatie, applicatie). * @param string|null $referentienummer Reference number (auto-generated if null). * * @return string The stuurgegevens XML fragment. @@ -132,27 +132,27 @@ public function buildSoapEnvelope(string $bodyXml): string public function buildStuurgegevens( array $zender, array $ontvanger, - ?string $referentienummer = null, + ?string $referentienummer=null, ): string { - $refNr = $referentienummer ?? $this->generateUuid(); + $refNr = $referentienummer ?? $this->generateUuid(); $tijdstip = (new \DateTimeImmutable())->format('YmdHis'); - $xml = ''; + $xml = ''; $xml .= 'Lk01'; $xml .= ''; - $xml .= '' . htmlspecialchars($zender['organisatie'] ?? '') . ''; - $xml .= '' . htmlspecialchars($zender['applicatie'] ?? '') . ''; + $xml .= ''.htmlspecialchars($zender['organisatie'] ?? '').''; + $xml .= ''.htmlspecialchars($zender['applicatie'] ?? '').''; $xml .= ''; $xml .= ''; - $xml .= '' . htmlspecialchars($ontvanger['organisatie'] ?? '') . ''; - $xml .= '' . htmlspecialchars($ontvanger['applicatie'] ?? '') . ''; + $xml .= ''.htmlspecialchars($ontvanger['organisatie'] ?? '').''; + $xml .= ''.htmlspecialchars($ontvanger['applicatie'] ?? '').''; $xml .= ''; - $xml .= '' . htmlspecialchars($refNr) . ''; - $xml .= '' . $tijdstip . ''; + $xml .= ''.htmlspecialchars($refNr).''; + $xml .= ''.$tijdstip.''; $xml .= ''; return $xml; - } + }//end buildStuurgegevens() /** * Build a StUF Bv01 (bevestigingsbericht) response. @@ -172,25 +172,25 @@ public function buildBv01( ): string { $tijdstip = (new \DateTimeImmutable())->format('YmdHis'); - $body = ''; + $body = ''; $body .= ''; $body .= 'Bv01'; $body .= ''; - $body .= '' . htmlspecialchars($zender['organisatie'] ?? '') . ''; - $body .= '' . htmlspecialchars($zender['applicatie'] ?? '') . ''; + $body .= ''.htmlspecialchars($zender['organisatie'] ?? '').''; + $body .= ''.htmlspecialchars($zender['applicatie'] ?? '').''; $body .= ''; $body .= ''; - $body .= '' . htmlspecialchars($ontvanger['organisatie'] ?? '') . ''; - $body .= '' . htmlspecialchars($ontvanger['applicatie'] ?? '') . ''; + $body .= ''.htmlspecialchars($ontvanger['organisatie'] ?? '').''; + $body .= ''.htmlspecialchars($ontvanger['applicatie'] ?? '').''; $body .= ''; - $body .= '' . htmlspecialchars($this->generateUuid()) . ''; - $body .= '' . $tijdstip . ''; - $body .= '' . htmlspecialchars($crossRef) . ''; + $body .= ''.htmlspecialchars($this->generateUuid()).''; + $body .= ''.$tijdstip.''; + $body .= ''.htmlspecialchars($crossRef).''; $body .= ''; $body .= ''; return $this->buildSoapEnvelope($body); - } + }//end buildBv01() /** * Build a StUF Fo01 (foutbericht) fault response. @@ -214,29 +214,29 @@ public function buildFo01( ): string { $tijdstip = (new \DateTimeImmutable())->format('YmdHis'); - $body = ''; + $body = ''; $body .= ''; $body .= 'Fo01'; $body .= ''; - $body .= '' . htmlspecialchars($zender['organisatie'] ?? '') . ''; - $body .= '' . htmlspecialchars($zender['applicatie'] ?? '') . ''; + $body .= ''.htmlspecialchars($zender['organisatie'] ?? '').''; + $body .= ''.htmlspecialchars($zender['applicatie'] ?? '').''; $body .= ''; $body .= ''; - $body .= '' . htmlspecialchars($ontvanger['organisatie'] ?? '') . ''; - $body .= '' . htmlspecialchars($ontvanger['applicatie'] ?? '') . ''; + $body .= ''.htmlspecialchars($ontvanger['organisatie'] ?? '').''; + $body .= ''.htmlspecialchars($ontvanger['applicatie'] ?? '').''; $body .= ''; - $body .= '' . htmlspecialchars($this->generateUuid()) . ''; - $body .= '' . $tijdstip . ''; + $body .= ''.htmlspecialchars($this->generateUuid()).''; + $body .= ''.$tijdstip.''; $body .= ''; $body .= ''; - $body .= '' . htmlspecialchars($foutcode) . ''; - $body .= '' . htmlspecialchars($plek) . ''; - $body .= '' . htmlspecialchars($foutbeschrijving) . ''; + $body .= ''.htmlspecialchars($foutcode).''; + $body .= ''.htmlspecialchars($plek).''; + $body .= ''.htmlspecialchars($foutbeschrijving).''; $body .= ''; $body .= ''; return $this->buildSoapEnvelope($body); - } + }//end buildFo01() /** * Build a SOAP Fault response for invalid XML. @@ -269,7 +269,7 @@ public function buildSoapFault(string $faultString): string $fault->appendChild($faultstringEl); return $dom->saveXML() ?: ''; - } + }//end buildSoapFault() /** * Generate a UUID. @@ -289,5 +289,5 @@ private function generateUuid(): string mt_rand(0, 0xffff), mt_rand(0, 0xffff) ); - } -} + }//end generateUuid() +}//end class diff --git a/lib/Service/TemplateLibraryService.php b/lib/Service/TemplateLibraryService.php index 862785cc..790d994c 100644 --- a/lib/Service/TemplateLibraryService.php +++ b/lib/Service/TemplateLibraryService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -35,8 +35,7 @@ class TemplateLibraryService /** * Path to the templates directory. */ - private const TEMPLATES_DIR = __DIR__ . '/../Settings/templates'; - + private const TEMPLATES_DIR = __DIR__.'/../Settings/templates'; /** * Constructor. @@ -48,8 +47,7 @@ public function __construct( private readonly SettingsService $settingsService, private readonly LoggerInterface $logger, ) { - } - + }//end __construct() /** * List all available zaaktype templates. @@ -67,7 +65,7 @@ public function listTemplates(): array return $templates; } - $files = glob($dir . '/*.json'); + $files = glob($dir.'/*.json'); if ($files === false) { return $templates; } @@ -81,7 +79,7 @@ public function listTemplates(): array $data = json_decode($content, true); if (json_last_error() !== JSON_ERROR_NONE || is_array($data) === false) { $this->logger->warning( - 'Invalid template file: ' . basename($file), + 'Invalid template file: '.basename($file), ['app' => Application::APP_ID] ); continue; @@ -95,11 +93,10 @@ public function listTemplates(): array 'version' => $data['version'] ?? '1.0.0', 'file' => basename($file), ]; - } + }//end foreach return $templates; - } - + }//end listTemplates() /** * Load a template by its ID. @@ -116,7 +113,7 @@ public function loadTemplate(string $templateId): ?array return null; } - $files = glob($dir . '/*.json'); + $files = glob($dir.'/*.json'); if ($files === false) { return null; } @@ -139,8 +136,7 @@ public function loadTemplate(string $templateId): ?array } return null; - } - + }//end loadTemplate() /** * Activate a template by creating OpenRegister objects for the case type and related entities. @@ -163,7 +159,7 @@ public function activateTemplate(string $templateId): array { $template = $this->loadTemplate($templateId); if ($template === null) { - throw new \RuntimeException('Template not found: ' . $templateId); + throw new \RuntimeException('Template not found: '.$templateId); } $objectService = $this->settingsService->getObjectService(); @@ -187,21 +183,21 @@ public function activateTemplate(string $templateId): array ]; // Create the case type. - $caseTypeSchema = $this->settingsService->getConfigValue('case_type_schema'); - $caseTypeData = $template['caseType'] ?? []; - $caseType = $objectService->saveObject( + $caseTypeSchema = $this->settingsService->getConfigValue('case_type_schema'); + $caseTypeData = $template['caseType'] ?? []; + $caseType = $objectService->saveObject( $register, $caseTypeSchema, $caseTypeData, ); - $caseTypeId = $caseType->getUuid(); + $caseTypeId = $caseType->getUuid(); $result['caseType'] = $caseTypeId; // Create status types. $statusTypeSchema = $this->settingsService->getConfigValue('status_type_schema'); foreach (($template['statusTypes'] ?? []) as $statusData) { $statusData['caseType'] = $caseTypeId; - $status = $objectService->saveObject( + $status = $objectService->saveObject( $register, $statusTypeSchema, $statusData, @@ -213,7 +209,7 @@ public function activateTemplate(string $templateId): array $propertySchema = $this->settingsService->getConfigValue('property_definition_schema'); foreach (($template['propertyDefinitions'] ?? []) as $propData) { $propData['caseType'] = $caseTypeId; - $prop = $objectService->saveObject( + $prop = $objectService->saveObject( $register, $propertySchema, $propData, @@ -225,7 +221,7 @@ public function activateTemplate(string $templateId): array $docTypeSchema = $this->settingsService->getConfigValue('document_type_schema'); foreach (($template['documentTypes'] ?? []) as $docData) { $docData['caseType'] = $caseTypeId; - $doc = $objectService->saveObject( + $doc = $objectService->saveObject( $register, $docTypeSchema, $docData, @@ -237,7 +233,7 @@ public function activateTemplate(string $templateId): array $decisionTypeSchema = $this->settingsService->getConfigValue('decision_type_schema'); foreach (($template['decisionTypes'] ?? []) as $decData) { $decData['caseType'] = $caseTypeId; - $dec = $objectService->saveObject( + $dec = $objectService->saveObject( $register, $decisionTypeSchema, $decData, @@ -249,7 +245,7 @@ public function activateTemplate(string $templateId): array $roleTypeSchema = $this->settingsService->getConfigValue('role_type_schema'); foreach (($template['roleTypes'] ?? []) as $roleData) { $roleData['caseType'] = $caseTypeId; - $role = $objectService->saveObject( + $role = $objectService->saveObject( $register, $roleTypeSchema, $roleData, @@ -258,10 +254,10 @@ public function activateTemplate(string $templateId): array } $this->logger->info( - 'Template activated: ' . $templateId . ' -> caseType ' . $caseTypeId, + 'Template activated: '.$templateId.' -> caseType '.$caseTypeId, ['app' => Application::APP_ID] ); return $result; - } -} + }//end activateTemplate() +}//end class diff --git a/lib/Service/TenantService.php b/lib/Service/TenantService.php index 36aebde4..fae5c263 100644 --- a/lib/Service/TenantService.php +++ b/lib/Service/TenantService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -48,8 +48,8 @@ class TenantService * @param IAppManager $appManager The app manager * @param IGroupManager $groupManager The Nextcloud group manager * @param IUserManager $userManager The Nextcloud user manager - * @param ContainerInterface $container The DI container - * @param LoggerInterface $logger The logger + * @param ContainerInterface $container The DI container + * @param LoggerInterface $logger The logger * * @return void */ @@ -205,10 +205,12 @@ public function provisionTenant(string $tenantId): array // Create a dedicated register for this tenant. try { $registerService = $this->container->get('OCA\OpenRegister\Service\RegisterService'); - $newRegister = $registerService->createFromArray([ - 'title' => 'Procest - '.$tenantData['name'], - 'description' => 'Case management register for '.$tenantData['name'], - ]); + $newRegister = $registerService->createFromArray( + [ + 'title' => 'Procest - '.$tenantData['name'], + 'description' => 'Case management register for '.$tenantData['name'], + ] + ); $tenantData['registerId'] = (string) $newRegister->getId(); } catch (\Exception $e) { diff --git a/lib/Service/ZgwBrcRulesService.php b/lib/Service/ZgwBrcRulesService.php index 51816245..769222cf 100644 --- a/lib/Service/ZgwBrcRulesService.php +++ b/lib/Service/ZgwBrcRulesService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwBusinessRulesService.php b/lib/Service/ZgwBusinessRulesService.php index 3efcb63a..77473c47 100644 --- a/lib/Service/ZgwBusinessRulesService.php +++ b/lib/Service/ZgwBusinessRulesService.php @@ -15,7 +15,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwDocumentService.php b/lib/Service/ZgwDocumentService.php index 5db0127f..b421d75f 100644 --- a/lib/Service/ZgwDocumentService.php +++ b/lib/Service/ZgwDocumentService.php @@ -9,7 +9,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwDrcRulesService.php b/lib/Service/ZgwDrcRulesService.php index ea4f2269..673bbbdf 100644 --- a/lib/Service/ZgwDrcRulesService.php +++ b/lib/Service/ZgwDrcRulesService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwMappingService.php b/lib/Service/ZgwMappingService.php index b04ae9e6..756ec854 100644 --- a/lib/Service/ZgwMappingService.php +++ b/lib/Service/ZgwMappingService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwPaginationHelper.php b/lib/Service/ZgwPaginationHelper.php index 53105303..cf0f430d 100644 --- a/lib/Service/ZgwPaginationHelper.php +++ b/lib/Service/ZgwPaginationHelper.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwRulesBase.php b/lib/Service/ZgwRulesBase.php index b5001e45..9bbda8e9 100644 --- a/lib/Service/ZgwRulesBase.php +++ b/lib/Service/ZgwRulesBase.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwService.php b/lib/Service/ZgwService.php index 1292ab49..8cf16f19 100644 --- a/lib/Service/ZgwService.php +++ b/lib/Service/ZgwService.php @@ -10,7 +10,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Service/ZgwZrcRulesService.php b/lib/Service/ZgwZrcRulesService.php index 837270d0..78ddfc4d 100644 --- a/lib/Service/ZgwZrcRulesService.php +++ b/lib/Service/ZgwZrcRulesService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @@ -145,7 +145,7 @@ public function rulesZakenCreate(array $body): array register: $register, schema: $schema ); - $ztData = is_array($zaaktype) === true ? $zaaktype : $zaaktype->jsonSerialize(); + $ztData = is_array($zaaktype) === true ? $zaaktype : $zaaktype->jsonSerialize(); if (empty($ztData['defaultAssignee']) === false) { $body['assignee'] = $ztData['defaultAssignee']; } @@ -154,7 +154,7 @@ public function rulesZakenCreate(array $body): array } } } - } + }//end if return $this->validateZaakFields(result: $this->isValid(body: $body), existingObject: null, isPatch: false); }//end rulesZakenCreate() diff --git a/lib/Service/ZgwZtcRulesService.php b/lib/Service/ZgwZtcRulesService.php index 14b3f6b2..7bfd40d3 100644 --- a/lib/Service/ZgwZtcRulesService.php +++ b/lib/Service/ZgwZtcRulesService.php @@ -8,7 +8,7 @@ * @category Service * @package OCA\Procest\Service * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php index 2fb70802..d4b70b06 100644 --- a/lib/Settings/AdminSettings.php +++ b/lib/Settings/AdminSettings.php @@ -8,7 +8,7 @@ * @category Settings * @package OCA\Procest\Settings * - * @author Conduction Development Team + * @author Conduction Development Team * @copyright 2024 Conduction B.V. * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * diff --git a/openspec/coverage-report.json b/openspec/coverage-report.json new file mode 100644 index 00000000..c972d102 --- /dev/null +++ b/openspec/coverage-report.json @@ -0,0 +1,11550 @@ +{ + "generated_at": "2026-04-20T08:44:01Z", + "app": "procest", + "branch": "fix/header-info-email-phpcs", + "scanner_version": "1", + "scope": { + "php_files_scanned": 89, + "frontend_files_scanned": 183, + "php_methods_classified": 764, + "frontend_units_classified": 318, + "total_reqs": 331 + }, + "buckets": { + "annotated": [], + "plumbing": [ + { + "file": "lib/AppInfo/Application.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/BackgroundJob/AppointmentReminderJob.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/BackgroundJob/BerichtenboxReadStatusJob.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/BackgroundJob/ShareMaintenanceJob.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/AiController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/BerichtenboxController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/CaseDefinitionController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/ConsultationController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/DashboardController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/EmailController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/GisProxyController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/LegesController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/PublicAppointmentController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/PublicShareController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/SettingsController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/StufController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/TemplateController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "getId", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "getTitle", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "getOrder", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "getIconClass", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "getUrl", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php", + "method": "load", + "reason": "dashboard-widget-boilerplate" + }, + { + "file": "lib/Listener/DeepLinkRegistrationListener.php", + "method": "handle", + "reason": "listener-single-dispatch" + }, + { + "file": "lib/Middleware/TenantMiddleware.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Middleware/ZgwAuthException.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/AiService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", + "method": "getTimeslots", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", + "method": "bookAppointment", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", + "method": "cancelAppointment", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", + "method": "rescheduleAppointment", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php", + "method": "sendMessage", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php", + "method": "getReadStatus", + "reason": "interface-or-trait" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/CaseTransferService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/DsoIntakeService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/NotificatieService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/TemplateLibraryService.php", + "method": "__construct", + "reason": "magic-method" + }, + { + "file": "lib/Service/TenantService.php", + "method": "__construct", + "reason": "magic-method" + } + ], + "bucket_1": [ + { + "file": "lib/AppInfo/Application.php", + "method": "register", + "class": "Application", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: Application::register = NC app registration boot (REQ-001)", + "inherits_from": null + }, + { + "file": "lib/AppInfo/Application.php", + "method": "boot", + "class": "Application", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: Application::boot = NC app boot hook", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "__construct", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "index", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "create", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "show", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "update", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "patch", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "destroy", + "class": "AcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: AcController=AC API", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "__construct", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "index", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "create", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "show", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "update", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "patch", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "destroy", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "audittrailIndex", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/BrcController.php", + "method": "audittrailShow", + "class": "BrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: BrcController=BRC API, REQ-006 covers BRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DashboardController.php", + "method": "page", + "class": "DashboardController", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-002", + "req_title": "2: App MUST provide a single-page application entry point", + "confidence": 0.93, + "needs_review": false, + "signal": "explicit: Vue SPA entry point (REQ-002)", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "__construct", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "index", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "create", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "show", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "update", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "patch", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "destroy", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "download", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "lock", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "unlock", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "audittrailIndex", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "audittrailShow", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/DrcController.php", + "method": "uploadChunk", + "class": "DrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: DrcController=DRC API, REQ-005 covers DRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/GisProxyController.php", + "method": "proxy", + "class": "GisProxyController", + "visibility": "public", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.93, + "needs_review": false, + "signal": "name+path keyword match", + "inherits_from": null + }, + { + "file": "lib/Controller/HealthController.php", + "method": "__construct", + "class": "HealthController", + "visibility": "public", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Health endpoint helpers", + "inherits_from": null + }, + { + "file": "lib/Controller/HealthController.php", + "method": "index", + "class": "HealthController", + "visibility": "public", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.97, + "needs_review": false, + "signal": "explicit: /health endpoint", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "__construct", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "index", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "captureLocation", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "completeChecklistItem", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "addPhoto", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "complete", + "class": "InspectionController", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection controller methods", + "inherits_from": null + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "__construct", + "class": "MetricsController", + "visibility": "public", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Metrics endpoint helpers \u2014 private fall back here via Pass B", + "inherits_from": null + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "index", + "class": "MetricsController", + "visibility": "public", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.97, + "needs_review": false, + "signal": "explicit: /metrics endpoint", + "inherits_from": null + }, + { + "file": "lib/Controller/MilestoneController.php", + "method": "__construct", + "class": "MilestoneController", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestone endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/MilestoneController.php", + "method": "progress", + "class": "MilestoneController", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestone endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/MilestoneController.php", + "method": "mark", + "class": "MilestoneController", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestone endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/MilestoneController.php", + "method": "reverse", + "class": "MilestoneController", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestone endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "__construct", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "index", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "create", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "show", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "update", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "patch", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "destroy", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "notificatieCreate", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "audittrailIndex", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/NrcController.php", + "method": "audittrailShow", + "class": "NrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-008", + "req_title": "Bidirectional mapping MUST support both inbound and outbound transformations", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: NrcController=NRC API", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "__construct", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering controller", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "createVoorstel", + "class": "ParaferingController", + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Create voorstel from case", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "startParafering", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Parafering route start", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "paraferen", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering controller", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "terugsturen", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering controller", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "adviseren", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering controller", + "inherits_from": null + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "auditTrail", + "class": "ParaferingController", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering controller", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "__construct", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "index", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "show", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "update", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "destroy", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZgwMappingController.php", + "method": "reset", + "class": "ZgwMappingController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: ZGW mapping admin endpoints", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "__construct", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "index", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "create", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "show", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "update", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "patch", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "destroy", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenIndex", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenCreate", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenShow", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenUpdate", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenPatch", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakeigenschappenDestroy", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zaakbesluitenIndex", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "zoek", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "audittrailIndex", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "audittrailShow", + "class": "ZrcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "__construct", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "index", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "create", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "show", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "update", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "patch", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "destroy", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "publishZaaktype", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "publishBesluittype", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "publishInformatieobjecttype", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "audittrailIndex", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "audittrailShow", + "class": "ZtcController", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability", + "inherits_from": null + }, + { + "file": "lib/Repair/InitializeSettings.php", + "method": "__construct", + "class": "InitializeSettings", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-006", + "req_title": "6: App MUST provide admin settings page", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Settings initialization on install", + "inherits_from": null + }, + { + "file": "lib/Repair/InitializeSettings.php", + "method": "getName", + "class": "InitializeSettings", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-006", + "req_title": "6: App MUST provide admin settings page", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Settings initialization on install", + "inherits_from": null + }, + { + "file": "lib/Repair/InitializeSettings.php", + "method": "run", + "class": "InitializeSettings", + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-006", + "req_title": "6: App MUST provide admin settings page", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Settings initialization on install", + "inherits_from": null + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "__construct", + "class": "LoadDefaultZgwMappings", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Seeds default ZGW mappings on install", + "inherits_from": null + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getName", + "class": "LoadDefaultZgwMappings", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Seeds default ZGW mappings on install", + "inherits_from": null + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "run", + "class": "LoadDefaultZgwMappings", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Seeds default ZGW mappings on install", + "inherits_from": null + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getDefaultMappings", + "class": "LoadDefaultZgwMappings", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Seeds default ZGW mappings on install", + "inherits_from": null + }, + { + "file": "lib/Repair/SeedBezwaarBeroepData.php", + "method": "__construct", + "class": "SeedBezwaarBeroepData", + "visibility": "public", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Seed repair step", + "inherits_from": null + }, + { + "file": "lib/Repair/SeedBezwaarBeroepData.php", + "method": "getName", + "class": "SeedBezwaarBeroepData", + "visibility": "public", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Seed repair step", + "inherits_from": null + }, + { + "file": "lib/Repair/SeedBezwaarBeroepData.php", + "method": "run", + "class": "SeedBezwaarBeroepData", + "visibility": "public", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.92, + "needs_review": false, + "signal": "explicit: Seed repair step", + "inherits_from": null + }, + { + "file": "lib/Sections/SettingsSection.php", + "method": "__construct", + "class": "SettingsSection", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: IIconSection implementation", + "inherits_from": null + }, + { + "file": "lib/Sections/SettingsSection.php", + "method": "getID", + "class": "SettingsSection", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: IIconSection implementation", + "inherits_from": null + }, + { + "file": "lib/Sections/SettingsSection.php", + "method": "getName", + "class": "SettingsSection", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: IIconSection implementation", + "inherits_from": null + }, + { + "file": "lib/Sections/SettingsSection.php", + "method": "getPriority", + "class": "SettingsSection", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: IIconSection implementation", + "inherits_from": null + }, + { + "file": "lib/Sections/SettingsSection.php", + "method": "getIcon", + "class": "SettingsSection", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: IIconSection implementation", + "inherits_from": null + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "extractCaseNumber", + "class": "CaseEmailService", + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.75, + "needs_review": true, + "signal": "name+path keyword match", + "inherits_from": null + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "getTemplatesForCaseType", + "class": "CaseEmailService", + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.75, + "needs_review": true, + "signal": "name+path keyword match", + "inherits_from": null + }, + { + "file": "lib/Service/ChecklistService.php", + "method": "__construct", + "class": "ChecklistService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: Checklist validation and progress", + "inherits_from": null + }, + { + "file": "lib/Service/ChecklistService.php", + "method": "completeItem", + "class": "ChecklistService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: Checklist validation and progress", + "inherits_from": null + }, + { + "file": "lib/Service/ChecklistService.php", + "method": "getProgress", + "class": "ChecklistService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: Checklist validation and progress", + "inherits_from": null + }, + { + "file": "lib/Service/ChecklistService.php", + "method": "validateCompletion", + "class": "ChecklistService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: Checklist validation and progress", + "inherits_from": null + }, + { + "file": "lib/Service/ChecklistService.php", + "method": "getConformitySummary", + "class": "ChecklistService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: Checklist validation and progress", + "inherits_from": null + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "proxyRequest", + "class": "GisProxyService", + "visibility": "public", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.93, + "needs_review": false, + "signal": "name+path keyword match", + "inherits_from": null + }, + { + "file": "lib/Service/InspectionService.php", + "method": "__construct", + "class": "InspectionService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection service methods", + "inherits_from": null + }, + { + "file": "lib/Service/InspectionService.php", + "method": "getInspections", + "class": "InspectionService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection service methods", + "inherits_from": null + }, + { + "file": "lib/Service/InspectionService.php", + "method": "captureLocation", + "class": "InspectionService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection service methods", + "inherits_from": null + }, + { + "file": "lib/Service/InspectionService.php", + "method": "addPhoto", + "class": "InspectionService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection service methods", + "inherits_from": null + }, + { + "file": "lib/Service/InspectionService.php", + "method": "completeInspection", + "class": "InspectionService", + "visibility": "public", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.83, + "needs_review": true, + "signal": "explicit: Inspection service methods", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "__construct", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "getMilestones", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "getCaseProgress", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "markMilestone", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "reverseMilestone", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "getDurationAnalytics", + "class": "MilestoneService", + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.8, + "needs_review": true, + "signal": "explicit: Milestones = doorloop milestones", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingNotificationService.php", + "method": "__construct", + "class": "ParaferingNotificationService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering notifications \u2014 NEEDS-REVIEW specific REQ", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingNotificationService.php", + "method": "notifyStepActivated", + "class": "ParaferingNotificationService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering notifications \u2014 NEEDS-REVIEW specific REQ", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingNotificationService.php", + "method": "notifyVoorstelReturned", + "class": "ParaferingNotificationService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering notifications \u2014 NEEDS-REVIEW specific REQ", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingNotificationService.php", + "method": "notifyParaferingReminder", + "class": "ParaferingNotificationService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering notifications \u2014 NEEDS-REVIEW specific REQ", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "__construct", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering service \u2014 specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "createVoorstel", + "class": "ParaferingService", + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Create voorstel from case", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "startParafering", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Parafering route start", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "executeAction", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Parafering action execution", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "getAuditTrail", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-audit-trail", + "req_id": "REQ-001", + "req_title": "Immutable Parafering Audit Trail", + "confidence": 0.9, + "needs_review": false, + "signal": "explicit: Audit trail query", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "getCurrentStep", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering service \u2014 specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "overrideRoute", + "class": "ParaferingService", + "visibility": "public", + "capability": "parafering-actions", + "req_id": "REQ-002", + "req_title": "Paraferen Action (Approve)", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Parafering service \u2014 specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "__construct", + "class": "SeedDataService", + "visibility": "public", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Seed data service", + "inherits_from": null + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "seedBezwaarBeroepData", + "class": "SeedDataService", + "visibility": "public", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Seed data service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "__construct", + "class": "ZgwBusinessRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Business rules dispatcher \u2014 routes to *RulesService", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "validate", + "class": "ZgwBusinessRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: Business rules dispatcher \u2014 routes to *RulesService", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "__construct", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "storeBase64", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "storeRaw", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "getContent", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "fileExists", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "deleteFiles", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "getMimeType", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "storeChunk", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "getUploadedChunks", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "mergeChunks", + "class": "ZgwDocumentService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW document handling (DRC mappability helpers)", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "__construct", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "getMapping", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "saveMapping", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "listMappings", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "deleteMapping", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "getResourceKeys", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "hasMapping", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwMappingService.php", + "method": "resetToDefault", + "class": "ZgwMappingService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Explicit mapping-layer service", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwPaginationHelper.php", + "method": "wrapResults", + "class": "ZgwPaginationHelper", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.82, + "needs_review": true, + "signal": "explicit: ZGW pagination helper \u2014 covers REQ-002 endpoint system", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "__construct", + "class": "ZgwRulesBase", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.75, + "needs_review": true, + "signal": "explicit: Rules base class \u2014 shared helpers inherited by all rules services", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "setContext", + "class": "ZgwRulesBase", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.75, + "needs_review": true, + "signal": "explicit: Rules base class \u2014 shared helpers inherited by all rules services", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "__construct", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getObjectService", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getConsumerMapper", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getZgwMappingService", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getPaginationHelper", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getDocumentService", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getBusinessRulesService", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getLogger", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "loadMappingConfig", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "translateQueryParams", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "createOutboundMapping", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "createInboundMapping", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "applyOutboundMapping", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "applyInboundMapping", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getRequestBody", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "resolvePathUuid", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "updateCachedBodyField", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "buildBaseUrl", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "validateJwtAuth", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "consumerHasScope", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "getConsumerAuthorisaties", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "publishNotification", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "buildValidationError", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "unavailableResponse", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "mappingNotFoundResponse", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleIndex", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleCreate", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleShow", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleUpdate", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleDestroy", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleAudittrailIndex", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "handleAudittrailShow", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "resolveZaakClosed", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "resolveZaakClosedFromBody", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "resolveParentZaaktypeDraft", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwService.php", + "method": "resolveParentZaaktypeDraftFromBody", + "class": "ZgwService", + "visibility": "public", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.85, + "needs_review": false, + "signal": "explicit: Central ZGW orchestrator \u2014 REQ-by-REQ mapping deferred to annotate", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZakenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZakenUpdate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZakenPatch", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesStatussenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesResultatenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesRollenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZaakinformatieobjectenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZaakinformatieobjectenUpdate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZaakinformatieobjectenPatch", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "rulesZaakeigenschappenCreate", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "detectEindstatus", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "filterZakenForConsumer", + "class": "ZgwZrcRulesService", + "visibility": "public", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.78, + "needs_review": true, + "signal": "explicit: ZRC rules service \u2014 specific ZRC-NNN REQ per method requires reading body", + "inherits_from": null + }, + { + "file": "lib/Settings/AdminSettings.php", + "method": "__construct", + "class": "AdminSettings", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: ISettings implementation for panel registration", + "inherits_from": null + }, + { + "file": "lib/Settings/AdminSettings.php", + "method": "getForm", + "class": "AdminSettings", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: ISettings implementation for panel registration", + "inherits_from": null + }, + { + "file": "lib/Settings/AdminSettings.php", + "method": "getSection", + "class": "AdminSettings", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: ISettings implementation for panel registration", + "inherits_from": null + }, + { + "file": "lib/Settings/AdminSettings.php", + "method": "getPriority", + "class": "AdminSettings", + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.95, + "needs_review": false, + "signal": "explicit: ISettings implementation for panel registration", + "inherits_from": null + }, + { + "file": "lib/Controller/AcController.php", + "method": "findConsumerByUuid", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "validateApplicatieBody", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "validateClientIdUniqueness", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "validateAutorisatieConsistency", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "validateAutorisatieScopes", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "scopesContain", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "getConsumerClientIds", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "consumerToApplicatie", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/AcController.php", + "method": "applicatieToConsumer", + "class": "AcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-007", + "req_title": "NRC (Notificaties API) compatibility MUST be supported", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "createBesluitWithZaakSync", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "syncZaakBesluitToZrc", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "indexBesluitInformatieObjecten", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "createBesluitInformatieObject", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "createOioInDrc", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "deleteOiosForBesluit", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "destroyBesluitInformatieObject", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "deleteOioByBesluitAndIo", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/BrcController.php", + "method": "destroyBesluit", + "class": "BrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-006", + "req_title": "BRC (Besluiten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "indexFlatArray", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "lockFallback", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "unlockFallback", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "findOioRelationsForEio", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "searchRelationsInSchema", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "extractIdsFromResults", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "cascadeDeleteGebruiksrechten", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "updateIndicatieGebruiksrecht", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "getGebruiksrechtData", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "checkAndClearIndicatieGebruiksrecht", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "setIndicatieGebruiksrecht", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "enrichWithBestandsdelen", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "parseFileParts", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "buildBestandsdelenArray", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "handleEioUpdate", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "checkDocumentLock", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "resolveStoredLockId", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "storeLockIdInData", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/DrcController.php", + "method": "clearLockIdInData", + "class": "DrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/HealthController.php", + "method": "checkDatabase", + "class": "HealthController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/HealthController.php", + "method": "checkOpenRegister", + "class": "HealthController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/HealthController.php", + "method": "checkFilesystem", + "class": "HealthController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/HealthController.php", + "method": "getAppVersion", + "class": "HealthController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-004", + "req_title": "Health Check Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/InspectionController.php", + "method": "getRequestBody", + "class": "InspectionController", + "visibility": "private", + "capability": "inspection-checklists", + "req_id": "REQ-001", + "req_title": "Inspection checklist schema", + "confidence": 0.73, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "collectMetrics", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getCached", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "checkDatabaseHealth", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getCaseCounts", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getOverdueCasesCount", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getCasesCreatedTodayCount", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getTaskCounts", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getOverdueTasksCount", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getAppVersion", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "getNextcloudVersion", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/MetricsController.php", + "method": "sanitizeLabel", + "class": "MetricsController", + "visibility": "private", + "capability": "prometheus-metrics", + "req_id": "REQ-PROM-001", + "req_title": "Metrics Endpoint", + "confidence": 0.87, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "index()" + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "handleAction", + "class": "ParaferingController", + "visibility": "private", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "createVoorstel()" + }, + { + "file": "lib/Controller/ParaferingController.php", + "method": "getRequestBody", + "class": "ParaferingController", + "visibility": "private", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "createVoorstel()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "checkZaakReadAccess", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "filterZakenByAuthorisation", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "permissionDeniedResponse", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "preValidateZaakBody", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "preValidateProductenOfDiensten", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "destroyZaak", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "resolveZaakClosedForExisting", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "checkReopenScope", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "checkIndicatieGebruiksrechtBeforeClose", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "isEindstatusByVolgnummer", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "handleEindstatusEffect", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "setIndicatieGebruiksrechtOnClose", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "handleResultaatCreated", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "deriveArchiefactiedatum", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "resolveArchiveBaseDate", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "resolveEigenschapDate", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "resolveBesluitDate", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "enrichZioResponse", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "enrichZioJsonResponse", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "syncCreateObjectInformatieObject", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "getZioDataForOioSync", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZrcController.php", + "method": "syncDeleteObjectInformatieObject", + "class": "ZrcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-003", + "req_title": "ZRC (Zaken API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "resolveParentDraft", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "handlePublish", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "enrichCrossReferences", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "enrichBesluittype", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "enrichZaaktype", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "filterByDatumGeldigheid", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "filterValidUrls", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "isUrlValid", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Controller/ZtcController.php", + "method": "resolveIotByOmschrijving", + "class": "ZtcController", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-004", + "req_title": "ZTC (Catalogi API) resources MUST be fully mappable", + "confidence": 0.82, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "patchExistingMappings", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "tplUrl", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaakMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaakTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getStatusMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getStatusTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getResultaatMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getResultaatTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getRolMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getRolTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getEigenschapMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getBesluitMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getBesluitTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getInformatieObjectTypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getEnkelvoudigInformatieObjectMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getObjectInformatieObjectMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getGebruiksrechtenMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getKanaalMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getAbonnementMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getCatalogusMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaaktypeInformatieobjecttypeMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getApplicatieMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "createDefaultApplicaties", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getDefaultApplicaties", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "createDefaultKanalen", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getDefaultKanalen", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaakeigenschapMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaakinformatieobjectMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getZaakobjectMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getKlantcontactMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getBesluitinformatieobjectMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php", + "method": "getVerzendingMapping", + "class": "LoadDefaultZgwMappings", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-001", + "req_title": "Mapping engine MUST support ZGW-specific Twig filters and functions", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "loadTemplate", + "class": "CaseEmailService", + "visibility": "private", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "extractCaseNumber()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "loadCaseData", + "class": "CaseEmailService", + "visibility": "private", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "extractCaseNumber()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "recordSentEmail", + "class": "CaseEmailService", + "visibility": "private", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "extractCaseNumber()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "recordReceivedEmail", + "class": "CaseEmailService", + "visibility": "private", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "extractCaseNumber()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "findCaseByIdentifier", + "class": "CaseEmailService", + "visibility": "private", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "extractCaseNumber()" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "isUrlAllowed", + "class": "GisProxyService", + "visibility": "private", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "proxyRequest()" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "checkRateLimit", + "class": "GisProxyService", + "visibility": "private", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "proxyRequest()" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "parseCapabilities", + "class": "GisProxyService", + "visibility": "private", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "proxyRequest()" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "xmlToArray", + "class": "GisProxyService", + "visibility": "private", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-03", + "req_title": "GIS Proxy Endpoint", + "confidence": 0.83, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "proxyRequest()" + }, + { + "file": "lib/Service/InspectionService.php", + "method": "calculateDistance", + "class": "InspectionService", + "visibility": "private", + "capability": "inspection-checklists", + "req_id": "REQ-003", + "req_title": "Inspection rapport creation", + "confidence": 0.73, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/MilestoneService.php", + "method": "getMilestoneRecords", + "class": "MilestoneService", + "visibility": "private", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-006", + "req_title": "Average processing time per case type table [V1]", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "advanceStep", + "class": "ParaferingService", + "visibility": "private", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "createVoorstel()" + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "handleParallelStep", + "class": "ParaferingService", + "visibility": "private", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "createVoorstel()" + }, + { + "file": "lib/Service/ParaferingService.php", + "method": "generateId", + "class": "ParaferingService", + "visibility": "private", + "capability": "voorstel-management", + "req_id": "REQ-002", + "req_title": "Create Voorstel from Case", + "confidence": 0.8, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "createVoorstel()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "seedCaseType", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "resolveWorkflowReferences", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "createObject", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "findByFilter", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "getObjectService", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "getConfigValue", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "getObjectId", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/SeedDataService.php", + "method": "generateUUID", + "class": "SeedDataService", + "visibility": "private", + "capability": "vth-case-type-seed", + "req_id": "REQ-001", + "req_title": "VTH case type seed data for Vergunningen", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "dispatchToRegister", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "dispatchZrc", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "dispatchZtc", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "dispatchDrc", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "dispatchBrc", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php", + "method": "isValid", + "class": "ZgwBusinessRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "getDocumentFolder", + "class": "ZgwDocumentService", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.72, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwDocumentService.php", + "method": "getUserFolder", + "class": "ZgwDocumentService", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-005", + "req_title": "DRC (Documenten API) resources MUST be mappable", + "confidence": 0.72, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "isValid", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "error", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "fieldError", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "fieldImmutableError", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "extractUuid", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "isValidUrl", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "validateTypeUrl", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "validateInformatieobjectUrl", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "validateExternalUrl", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "fetchExternalUrl", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "generateIdentificatie", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "findObjectByField", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "findAllObjectsByField", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "findBySchemaKey", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwRulesBase.php", + "method": "checkFieldUniqueness", + "class": "ZgwRulesBase", + "visibility": "protected", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwService.php", + "method": "mapAuditTrailToZgw", + "class": "ZgwService", + "visibility": "private", + "capability": "zgw-api-mapping", + "req_id": "REQ-002", + "req_title": "ZGW API routes MUST be exposed via OpenRegister's Endpoint system", + "confidence": 0.75, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "__construct()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "deriveVertrouwelijkheidaanduiding", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "validateSubResourceType", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "validateZioInformatieobjecttype", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "validateZaakFields", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "validateHoofdzaakNesting", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "validateProductenOfDiensten", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php", + "method": "checkZioImmutability", + "class": "ZgwZrcRulesService", + "visibility": "private", + "capability": "zgw-business-rules-compliance", + "req_id": "ZRC-007", + "req_title": "Eindstatus and Zaak Closing", + "confidence": 0.7, + "needs_review": true, + "signal": "Pass B \u2014 inherited from public sibling in same class", + "inherits_from": "rulesZakenCreate()" + }, + { + "file": "src/App.vue", + "method": "onSidebarSearch", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/App.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/AddressSearch.vue", + "method": "onInput", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/AddressSearch.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/CaseMap.vue", + "method": "initMap", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/LocationPicker.vue", + "method": "initMap", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/LocationPicker.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/LocationPicker.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/MapLayerSwitcher.vue", + "method": "toggleLayer", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/MapLayerSwitcher.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/components/map/SpatialFilter.vue", + "method": "initDrawLayer", + "class": null, + "visibility": "public", + "capability": "map-component", + "req_id": "REQ-MAP-01", + "req_title": "Base Map Component", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/navigation/MainMenu.vue", + "method": "openLink", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/CaseMapView.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "case-map-overview", + "req_id": "REQ-OVERVIEW-01", + "req_title": "Cases Map View", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/Dashboard.vue", + "method": "loadDashboardData", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/Dashboard.vue", + "method": "for", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/DoorlooptijdDashboard.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/MyWork.vue", + "method": "getCaseTypeName", + "class": null, + "visibility": "public", + "capability": "my-work", + "req_id": "REQ-MYWORK-001", + "req_title": "Personal Workload View [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/Werkvoorraad.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "my-work", + "req_id": "REQ-MYWORK-001", + "req_title": "Personal Workload View [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/Werkvoorraad.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "my-work", + "req_id": "REQ-MYWORK-001", + "req_title": "Personal Workload View [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/Werkvoorraad.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "my-work", + "req_id": "REQ-MYWORK-001", + "req_title": "Personal Workload View [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/CaseCreateDialog.vue", + "method": "loadCaseTypes", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/CaseDetail.vue", + "method": "getTaskPriorityLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/CaseList.vue", + "method": "loadCaseTypes", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/CaseList.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/CaseList.vue", + "method": "for", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ActivityTimeline.vue", + "method": "getIcon", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AddParticipantDialog.vue", + "method": "submit", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AddParticipantDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AdvicePanel.vue", + "method": "defaultDeadline", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AdviceRequestPanel.vue", + "method": "getStatusLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiAssistantPanel.vue", + "method": "askQuestion", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiAssistantPanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiClassifyDialog.vue", + "method": "classify", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiExtractDialog.vue", + "method": "extract", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiSuggestionCard.vue", + "method": "formatValue", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiSuggestionCard.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AiSummaryPanel.vue", + "method": "generate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AppointmentBookingDialog.vue", + "method": "loadSlots", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AppointmentBookingDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/AppointmentSection.vue", + "method": "loadAppointments", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/BerichtenboxComposeDialog.vue", + "method": "validate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/BerichtenboxComposeDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/BerichtenboxTab.vue", + "method": "loadMessages", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/CaseTransferDialog.vue", + "method": "submitTransfer", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ConsultationPanel.vue", + "method": "getStatusLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/CreateShareDialog.vue", + "method": "createShare", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/CustomPropertiesPanel.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/DecisionsSection.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/DocumentAssessmentPanel.vue", + "method": "getAssessment", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/DocumentChecklist.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EmailComposer.vue", + "method": "onTemplateSelected", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EmailComposer.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EmailThread.vue", + "method": "formatDateTime", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EmailThread.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EmailThread.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EnforcementPanel.vue", + "method": "statusLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/EnforcementWizard.vue", + "method": "submit", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/InspectionChecklistPanel.vue", + "method": "startInspection", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/InspectionPanel.vue", + "method": "resultLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/LocationTab.vue", + "method": "loadAddress", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/LocationTab.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/MilestoneProgress.vue", + "method": "stepClass", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ParticipantsSection.vue", + "method": "fetchData", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/QuickStatusDropdown.vue", + "method": "onStatusChange", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/QuickStatusDropdown.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ResultSection.vue", + "method": "formatPeriod", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ResultSection.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ResultSection.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ResultSection.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/ShareTab.vue", + "method": "permissionLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/StatusTimeline.vue", + "method": "isPassed", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/SubCasesSection.vue", + "method": "fetchSubCases", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/SubCasesSection.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/SubCasesSection.vue", + "method": "for", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/TenantSwitcher.vue", + "method": "switchTenant", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/TenantSwitcher.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/VoorstellenPanel.vue", + "method": "loadVoorstellen", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/WooIntakeForm.vue", + "method": "update", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/WorkflowTransitions.vue", + "method": "loadWorkflow", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/WorkflowTransitions.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/WorkflowTransitions.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/beroep/BeroepEscalationPanel.vue", + "method": "escalate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/beroep/CourtProceedingsPanel.vue", + "method": "getRulingLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/AdvisoryReportPanel.vue", + "method": "getAdviceTypeLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/BezwaarDecisionForm.vue", + "method": "getDispositionLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/BezwaarIntakeForm.vue", + "method": "loadExistingObjection", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/BezwaarIntakeForm.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/BezwaarIntakeForm.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/BezwaarTimeline.vue", + "method": "getAdviceTypeLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/components/bezwaar/HearingPanel.vue", + "method": "getHearingStatusLabel", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseDocumentsWidget.vue", + "method": "getFileIcon", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseDocumentsWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseDocumentsWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseDocumentsWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseDocumentsWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CasePropertiesWidget.vue", + "method": "save", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CasePropertiesWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseTasksWidget.vue", + "method": "dueDateClass", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseTasksWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseTasksWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseTimelineWidget.vue", + "method": "onStatusSelected", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/cases/widgets/CaseTimelineWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-dashboard-view", + "req_id": "REQ-CDV-01", + "req_title": "Integrated Case Working Screen", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/complaints/ComplaintDetail.vue", + "method": "loadComplaint", + "class": null, + "visibility": "public", + "capability": "bezwaar-lifecycle", + "req_id": "REQ-001", + "req_title": "Bezwaar Case Type Pre-Seeded Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/complaints/ComplaintList.vue", + "method": "loadComplaints", + "class": null, + "visibility": "public", + "capability": "bezwaar-lifecycle", + "req_id": "REQ-001", + "req_title": "Bezwaar Case Type Pre-Seeded Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/complaints/components/ComplaintCreateDialog.vue", + "method": "validate", + "class": null, + "visibility": "public", + "capability": "bezwaar-lifecycle", + "req_id": "REQ-001", + "req_title": "Bezwaar Case Type Pre-Seeded Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/complaints/components/ComplaintCreateDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "bezwaar-lifecycle", + "req_id": "REQ-001", + "req_title": "Bezwaar Case Type Pre-Seeded Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/ActivityFeed.vue", + "method": "typeIcon", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/CaseMapWidget.vue", + "method": "getColor", + "class": null, + "visibility": "public", + "capability": "case-map-overview", + "req_id": "REQ-OVERVIEW-01", + "req_title": "Cases Map View", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/CaseMapWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-map-overview", + "req_id": "REQ-OVERVIEW-01", + "req_title": "Cases Map View", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/CaseMapWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-map-overview", + "req_id": "REQ-OVERVIEW-01", + "req_title": "Cases Map View", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/CaseMapWidget.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "case-map-overview", + "req_id": "REQ-OVERVIEW-01", + "req_title": "Cases Map View", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/OverduePanel.vue", + "method": "severityClass", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/OverduePanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/OverduePanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/dashboard/StatusChart.vue", + "method": "barWidth", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/AdminRoot.vue", + "method": "reimport", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/CaseTypeAdmin.vue", + "method": "openDetail", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/CaseTypeDetail.vue", + "method": "loadCaseType", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/CaseTypeDetail.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/CaseTypeList.vue", + "method": "fetchCaseTypes", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/CaseTypeList.vue", + "method": "for", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/MapLayerSettings.vue", + "method": "emptyForm", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/ParafeerRouteAdmin.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/PartnerAdmin.vue", + "method": "editPartner", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/Settings.vue", + "method": "save", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/Settings.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/Settings.vue", + "method": "setTimeout", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/WorkflowEditor.vue", + "method": "loadData", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/ZgwMappingSettings.vue", + "method": "editMapping", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/DurationPicker.vue", + "method": "onDaysChange", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/DurationPicker.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/LhsMatrixAdmin.vue", + "method": "updateCell", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/LhsMatrixAdmin.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/StepConfigPanel.vue", + "method": "parseChecklist", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/StepConfigPanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/StepConfigPanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/TransitionConfigPanel.vue", + "method": "parseGuards", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/TransitionConfigPanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/TransitionConfigPanel.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/VthTemplateLibrary.vue", + "method": "selectTemplate", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/WorkflowNode.vue", + "method": "onMouseDown", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/components/WorkflowPalette.vue", + "method": "onDragStart", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/AiSettingsTab.vue", + "method": "updateSetting", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/AppointmentSettingsTab.vue", + "method": "saveBackend", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/BerichtenboxSettingsTab.vue", + "method": "testConnection", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/ChecklistAdmin.vue", + "method": "createChecklist", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/DocumentTypesTab.vue", + "method": "loadItems", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/PropertiesTab.vue", + "method": "fetchPropertyDefs", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/ResultTypesTab.vue", + "method": "loadItems", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/ResultsTab.vue", + "method": "formatPeriod", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/ResultsTab.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/ResultsTab.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/RoleTypesTab.vue", + "method": "loadItems", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/RolesTab.vue", + "method": "genericRoleLabel", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/StatusesTab.vue", + "method": "getEmptyForm", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/TemplatesTab.vue", + "method": "loadTemplates", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/TemplatesTab.vue", + "method": "generateUrl", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/TenantSettingsTab.vue", + "method": "create", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/WorkflowTab.vue", + "method": "loadVersions", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/settings/tabs/WorkflowTab.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "admin-settings", + "req_id": "REQ-ADMIN-001", + "req_title": "Nextcloud Admin Panel Registration [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/tasks/TaskCreateDialog.vue", + "method": "submit", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/tasks/TaskCreateDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/tasks/TaskDetail.vue", + "method": "startEditing", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/tasks/TaskList.vue", + "method": "getPriorityLabel", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/VoorstelDetail.vue", + "method": "loadVoorstel", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/VoorstelList.vue", + "method": "loadVoorstellen", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/AuditTrail.vue", + "method": "formatAction", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/BesluitRegistration.vue", + "method": "register", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/BesluitRegistration.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/ParafeerActionBar.vue", + "method": "formatStepType", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/ParafeerInbox.vue", + "method": "loadVoorstellen", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/ProgressTimeline.vue", + "method": "isCompleted", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/VoorstelCreateDialog.vue", + "method": "onCaseSelected", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/voorstellen/components/VoorstelCreateDialog.vue", + "method": "if", + "class": null, + "visibility": "public", + "capability": "voorstel-management", + "req_id": "REQ-001", + "req_title": "Voorstel Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/CasesOverviewWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/DeadlineAlertsWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/MyTasksWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "my-work", + "req_id": "REQ-MYWORK-001", + "req_title": "Personal Workload View [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/OverdueCasesWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/StalledCasesWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/StartCaseWidget.vue", + "method": "fetchCaseTypes", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/views/widgets/TaskRemindersWidget.vue", + "method": "onShow", + "class": null, + "visibility": "public", + "capability": "signalering-widgets", + "req_id": "REQ-001", + "req_title": "Deadline Alerts Widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/coordinateService.js", + "method": "isRDCoordinate", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/coordinateService.js", + "method": "rdToWgs84", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/coordinateService.js", + "method": "wgs84ToRd", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/coordinateService.js", + "method": "ensureWgs84", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/coordinateService.js", + "method": "convertCoordinates", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/gisProxyService.js", + "method": "proxyRequest", + "class": null, + "visibility": "public", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-01", + "req_title": "Admin Layer Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/gisProxyService.js", + "method": "getCapabilities", + "class": null, + "visibility": "public", + "capability": "wms-wfs-layers", + "req_id": "REQ-LAYER-01", + "req_title": "Admin Layer Configuration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "suggest", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "lookup", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "free", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "reverse", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "extractCoordinates", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/pdokService.js", + "method": "formatAddress", + "class": null, + "visibility": "public", + "capability": "pdok-integration", + "req_id": "REQ-PDOK-01", + "req_title": "PDOK Tile Services (Base Maps)", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/taskApi.js", + "method": "getHeaders", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/taskApi.js", + "method": "mapCalDavPriority", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/taskApi.js", + "method": "normalizeCalDavTask", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/taskApi.js", + "method": "fetchTasksForObject", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/services/taskApi.js", + "method": "fetchTasksForCases", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/store/modules/bezwaar.js", + "method": "addWorkingDays", + "class": null, + "visibility": "public", + "capability": "procest-object-store", + "req_id": "REQ-001", + "req_title": "1: Object store MUST use createObjectStore from shared library with plugins", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/store/modules/bezwaar.js", + "method": "addWeeks", + "class": null, + "visibility": "public", + "capability": "procest-object-store", + "req_id": "REQ-001", + "req_title": "1: Object store MUST use createObjectStore from shared library with plugins", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/store/modules/bezwaar.js", + "method": "daysDifference", + "class": null, + "visibility": "public", + "capability": "procest-object-store", + "req_id": "REQ-001", + "req_title": "1: Object store MUST use createObjectStore from shared library with plugins", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/store/modules/workflow.js", + "method": "generateUUID", + "class": null, + "visibility": "public", + "capability": "procest-object-store", + "req_id": "REQ-001", + "req_title": "1: Object store MUST use createObjectStore from shared library with plugins", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/store/store.js", + "method": "initializeStores", + "class": null, + "visibility": "public", + "capability": "procest-object-store", + "req_id": "REQ-001", + "req_title": "1: Object store MUST use createObjectStore from shared library with plugins", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "calculateDeadline", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "generateIdentifier", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "isCaseOverdue", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "isCaseDueToday", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "isCaseDueTomorrow", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "getCaseOverdueText", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "formatDeadlineCountdown", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "getDaysElapsed", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "getDaysRemaining", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "formatDate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseHelpers.js", + "method": "formatDateShort", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseTypeValidation.js", + "method": "getOriginOptions", + "class": null, + "visibility": "public", + "capability": "case-types", + "req_id": "REQ-CT-01", + "req_title": "Case Type CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseTypeValidation.js", + "method": "getConfidentialityOptions", + "class": null, + "visibility": "public", + "capability": "case-types", + "req_id": "REQ-CT-01", + "req_title": "Case Type CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseTypeValidation.js", + "method": "validateCaseType", + "class": null, + "visibility": "public", + "capability": "case-types", + "req_id": "REQ-CT-01", + "req_title": "Case Type CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseTypeValidation.js", + "method": "validateForPublish", + "class": null, + "visibility": "public", + "capability": "case-types", + "req_id": "REQ-CT-01", + "req_title": "Case Type CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseTypeValidation.js", + "method": "getFieldLabel", + "class": null, + "visibility": "public", + "capability": "case-types", + "req_id": "REQ-CT-01", + "req_title": "Case Type CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseValidation.js", + "method": "isCaseTypeUsable", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseValidation.js", + "method": "getCaseTypeUnusableReason", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseValidation.js", + "method": "validateCaseCreate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseValidation.js", + "method": "validateCaseUpdate", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/caseValidation.js", + "method": "validateStatusChange", + "class": null, + "visibility": "public", + "capability": "case-management", + "req_id": "REQ-CM-01", + "req_title": "Case Creation", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "todayString", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "computeKpis", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "aggregateByStatus", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getOverdueCases", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getRecentActivity", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getMyWorkItems", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "endOfWeek", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getGroupedMyWorkItems", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getDeadlineAlerts", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getTaskDueReminders", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "getStalledCases", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/dashboardHelpers.js", + "method": "formatRelativeTime", + "class": null, + "visibility": "public", + "capability": "dashboard", + "req_id": "REQ-DASH-001", + "req_title": "KPI Cards Row [MVP]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/decisionHelpers.js", + "method": "getDecisionValidity", + "class": null, + "visibility": "public", + "capability": "roles-decisions", + "req_id": "REQ-ROLE-001", + "req_title": "Role Assignment on Cases", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/decisionHelpers.js", + "method": "formatDecisionDate", + "class": null, + "visibility": "public", + "capability": "roles-decisions", + "req_id": "REQ-ROLE-001", + "req_title": "Role Assignment on Cases", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/decisionHelpers.js", + "method": "validateDecision", + "class": null, + "visibility": "public", + "capability": "roles-decisions", + "req_id": "REQ-ROLE-001", + "req_title": "Role Assignment on Cases", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "parseDurationToDays", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "getProcessingDays", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "getSlaTargetDays", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "buildCaseTypeMap", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "computeSlaCompliance", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "computeProcessingTimeDistribution", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "computeMonthlyTrend", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "getAtRiskCases", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/doorlooptijdHelpers.js", + "method": "computePerformanceTable", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/durationHelpers.js", + "method": "isValidDuration", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/durationHelpers.js", + "method": "parseDuration", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/durationHelpers.js", + "method": "formatDuration", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/durationHelpers.js", + "method": "getDurationError", + "class": null, + "visibility": "public", + "capability": "doorlooptijd-dashboard", + "req_id": "REQ-001", + "req_title": "SLA compliance rate widget [V1]", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/i18nResolver.js", + "method": "getUserLocale", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/i18nResolver.js", + "method": "resolveTranslatable", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/i18nResolver.js", + "method": "resolveField", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/i18nResolver.js", + "method": "resolveText", + "class": null, + "visibility": "public", + "capability": "procest-app-scaffold", + "req_id": "REQ-001", + "req_title": "1: App MUST be a valid Nextcloud app with proper metadata", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/openregisterCheck.js", + "method": "checkOpenRegisterStatus", + "class": null, + "visibility": "public", + "capability": "openregister-integration", + "req_id": "REQ-OREG-001", + "req_title": "Configuration File", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/openregisterCheck.js", + "method": "getStatusMessage", + "class": null, + "visibility": "public", + "capability": "openregister-integration", + "req_id": "REQ-OREG-001", + "req_title": "Configuration File", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "getRouteSteps", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "getCurrentStep", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "isActiveActor", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "getNextStep", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "getStatusAfterAdvance", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "createRouteSnapshot", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "insertAdHocStep", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "markStepSkipped", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/parafeerEngine.js", + "method": "findDefaultRoute", + "class": null, + "visibility": "public", + "capability": "parafeerroute-engine", + "req_id": "REQ-001", + "req_title": "Parafeerroute Schema Registration", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "getPriorityLevels", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "isOverdue", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "isDueToday", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "getOverdueText", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "formatDueDate", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "prioritySortWeight", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "statusGroupWeight", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskHelpers.js", + "method": "sortTasks", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "getStatusLabels", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "getTransitionLabels", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "getAllowedTransitions", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "validateTransition", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "getStatusLabel", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "getTransitionLabel", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskLifecycle.js", + "method": "isTerminalStatus", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskValidation.js", + "method": "validateTaskCreate", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskValidation.js", + "method": "validateTaskUpdate", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + }, + { + "file": "src/utils/taskValidation.js", + "method": "validateTaskTransition", + "class": null, + "visibility": "public", + "capability": "task-management", + "req_id": "REQ-TASK-001", + "req_title": "Task CRUD", + "confidence": 0.78, + "needs_review": true, + "signal": "frontend path-based capability match; specific REQ per method deferred", + "inherits_from": null + } + ], + "bucket_2a": { + "workflow-import-export": [ + { + "file": "lib/Controller/CaseDefinitionController.php", + "method": "export", + "observed_behavior": "CaseDefinitionController::export()" + }, + { + "file": "lib/Controller/CaseDefinitionController.php", + "method": "validate", + "observed_behavior": "CaseDefinitionController::validate()" + }, + { + "file": "lib/Controller/CaseDefinitionController.php", + "method": "import", + "observed_behavior": "CaseDefinitionController::import()" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php", + "method": "exportCaseDefinition", + "observed_behavior": "CaseDefinitionExportService::exportCaseDefinition()" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php", + "method": "validatePackage", + "observed_behavior": "CaseDefinitionImportService::validatePackage()" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php", + "method": "importCaseDefinition", + "observed_behavior": "CaseDefinitionImportService::importCaseDefinition()" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php", + "method": "buildManifest", + "observed_behavior": "CaseDefinitionExportService::buildManifest()" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php", + "method": "exportComponent", + "observed_behavior": "CaseDefinitionExportService::exportComponent()" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php", + "method": "incrementVersion", + "observed_behavior": "CaseDefinitionExportService::incrementVersion()" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php", + "method": "importComponent", + "observed_behavior": "CaseDefinitionImportService::importComponent()" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php", + "method": "importWorkflows", + "observed_behavior": "CaseDefinitionImportService::importWorkflows()" + } + ], + "advice-management": [ + { + "file": "lib/Controller/ConsultationController.php", + "method": "index", + "observed_behavior": "ConsultationController::index()" + }, + { + "file": "lib/Controller/ConsultationController.php", + "method": "create", + "observed_behavior": "ConsultationController::create()" + }, + { + "file": "lib/Controller/ConsultationController.php", + "method": "updateStatus", + "observed_behavior": "ConsultationController::updateStatus()" + }, + { + "file": "lib/Controller/ConsultationController.php", + "method": "submitResponse", + "observed_behavior": "ConsultationController::submitResponse()" + }, + { + "file": "lib/Controller/ConsultationController.php", + "method": "overdue", + "observed_behavior": "ConsultationController::overdue()" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "createConsultation", + "observed_behavior": "ConsultationService::createConsultation()" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "getConsultationsForCase", + "observed_behavior": "ConsultationService::getConsultationsForCase()" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "updateStatus", + "observed_behavior": "ConsultationService::updateStatus()" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "submitResponse", + "observed_behavior": "ConsultationService::submitResponse()" + }, + { + "file": "lib/Service/ConsultationService.php", + "method": "getOverdueConsultations", + "observed_behavior": "ConsultationService::getOverdueConsultations()" + } + ], + "case-management": [ + { + "file": "lib/Controller/EmailController.php", + "method": "send", + "observed_behavior": "EmailController::send()" + }, + { + "file": "lib/Controller/EmailController.php", + "method": "sendFromTemplate", + "observed_behavior": "EmailController::sendFromTemplate()" + }, + { + "file": "lib/Controller/EmailController.php", + "method": "preview", + "observed_behavior": "EmailController::preview()" + }, + { + "file": "lib/Controller/EmailController.php", + "method": "templates", + "observed_behavior": "EmailController::templates()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "sendEmail", + "observed_behavior": "CaseEmailService::sendEmail()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "sendFromTemplate", + "observed_behavior": "CaseEmailService::sendFromTemplate()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "resolveVariables", + "observed_behavior": "CaseEmailService::resolveVariables()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "findUnresolvedVariables", + "observed_behavior": "CaseEmailService::findUnresolvedVariables()" + }, + { + "file": "lib/Service/CaseEmailService.php", + "method": "processInbound", + "observed_behavior": "CaseEmailService::processInbound()" + } + ], + "wms-wfs-layers": [ + { + "file": "lib/Controller/GisProxyController.php", + "method": "capabilities", + "observed_behavior": "GisProxyController::capabilities()" + }, + { + "file": "lib/Service/GisProxyService.php", + "method": "getCapabilities", + "observed_behavior": "GisProxyService::getCapabilities()" + } + ], + "admin-settings": [ + { + "file": "lib/Controller/SettingsController.php", + "method": "getObjectService", + "observed_behavior": "SettingsController::getObjectService()" + }, + { + "file": "lib/Controller/SettingsController.php", + "method": "getConfigurationService", + "observed_behavior": "SettingsController::getConfigurationService()" + }, + { + "file": "lib/Controller/SettingsController.php", + "method": "index", + "observed_behavior": "SettingsController::index()" + }, + { + "file": "lib/Controller/SettingsController.php", + "method": "create", + "observed_behavior": "SettingsController::create()" + }, + { + "file": "lib/Controller/SettingsController.php", + "method": "load", + "observed_behavior": "SettingsController::load()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "isOpenRegisterAvailable", + "observed_behavior": "SettingsService::isOpenRegisterAvailable()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "loadConfiguration", + "observed_behavior": "SettingsService::loadConfiguration()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "getSettings", + "observed_behavior": "SettingsService::getSettings()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "updateSettings", + "observed_behavior": "SettingsService::updateSettings()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "getConfigValue", + "observed_behavior": "SettingsService::getConfigValue()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "setConfigValue", + "observed_behavior": "SettingsService::setConfigValue()" + }, + { + "file": "lib/Service/SettingsService.php", + "method": "autoConfigureAfterImport", + "observed_behavior": "SettingsService::autoConfigureAfterImport()" + } + ], + "zgw-api-mapping": [ + { + "file": "lib/Middleware/ZgwAuthException.php", + "method": "getStatusCode", + "observed_behavior": "Exception type for ZgwAuthMiddleware" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "beforeController", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "afterException", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "isConfidentialityAllowed", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Service/NotificatieService.php", + "method": "publish", + "observed_behavior": "NotificatieService::publish()" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "loadOpenRegisterServices", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "enforceScopes", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "scopeGrantCovers", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "decodeJwtPayload", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php", + "method": "findConsumerByIssuer", + "observed_behavior": "ZGW scope-based auth; no REQ covers auth contract" + }, + { + "file": "lib/Service/NotificatieService.php", + "method": "loadOpenRegisterServices", + "observed_behavior": "NotificatieService::loadOpenRegisterServices()" + }, + { + "file": "lib/Service/NotificatieService.php", + "method": "deliver", + "observed_behavior": "NotificatieService::deliver()" + }, + { + "file": "lib/Service/NotificatieService.php", + "method": "deliverToSubscription", + "observed_behavior": "NotificatieService::deliverToSubscription()" + } + ], + "zgw-business-rules-compliance": [ + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "rulesBesluitenCreate", + "observed_behavior": "ZgwBrcRulesService::rulesBesluitenCreate()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "rulesBesluitenUpdate", + "observed_behavior": "ZgwBrcRulesService::rulesBesluitenUpdate()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "rulesBesluitenPatch", + "observed_behavior": "ZgwBrcRulesService::rulesBesluitenPatch()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "rulesBesluitinformatieobjectenCreate", + "observed_behavior": "ZgwBrcRulesService::rulesBesluitinformatieobjectenCreate()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "rulesEnkelvoudiginformatieobjectenCreate", + "observed_behavior": "ZgwDrcRulesService::rulesEnkelvoudiginformatieobjectenCreate()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "rulesEnkelvoudiginformatieobjectenUpdate", + "observed_behavior": "ZgwDrcRulesService::rulesEnkelvoudiginformatieobjectenUpdate()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "rulesEnkelvoudiginformatieobjectenPatch", + "observed_behavior": "ZgwDrcRulesService::rulesEnkelvoudiginformatieobjectenPatch()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "rulesEnkelvoudiginformatieobjectenDestroy", + "observed_behavior": "ZgwDrcRulesService::rulesEnkelvoudiginformatieobjectenDestroy()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "rulesObjectinformatieobjectenCreate", + "observed_behavior": "ZgwDrcRulesService::rulesObjectinformatieobjectenCreate()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "checkConceptProtection", + "observed_behavior": "ZgwZtcRulesService::checkConceptProtection()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "defaultConcept", + "observed_behavior": "ZgwZtcRulesService::defaultConcept()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "preserveConcept", + "observed_behavior": "ZgwZtcRulesService::preserveConcept()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "rulesZaaktypenCreate", + "observed_behavior": "ZgwZtcRulesService::rulesZaaktypenCreate()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "rulesBesluittypenCreate", + "observed_behavior": "ZgwZtcRulesService::rulesBesluittypenCreate()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "rulesZaaktypeinformatieobjecttypenCreate", + "observed_behavior": "ZgwZtcRulesService::rulesZaaktypeinformatieobjecttypenCreate()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "rulesResultaattypenCreate", + "observed_behavior": "ZgwZtcRulesService::rulesResultaattypenCreate()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "checkBesluitTypeImmutability", + "observed_behavior": "ZgwBrcRulesService::checkBesluitTypeImmutability()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "checkBesluitFieldImmutability", + "observed_behavior": "ZgwBrcRulesService::checkBesluitFieldImmutability()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "preserveImmutableBesluitFields", + "observed_behavior": "ZgwBrcRulesService::preserveImmutableBesluitFields()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "checkBesluitIdentificatieUnique", + "observed_behavior": "ZgwBrcRulesService::checkBesluitIdentificatieUnique()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "validateZaakBesluittypeRelation", + "observed_behavior": "ZgwBrcRulesService::validateZaakBesluittypeRelation()" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php", + "method": "validateBioInformatieobjecttype", + "observed_behavior": "ZgwBrcRulesService::validateBioInformatieobjecttype()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "findOioRelationsForDocument", + "observed_behavior": "ZgwDrcRulesService::findOioRelationsForDocument()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "validateIndicatieGebruiksrechtTrue", + "observed_behavior": "ZgwDrcRulesService::validateIndicatieGebruiksrechtTrue()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "validateObjectUrl", + "observed_behavior": "ZgwDrcRulesService::validateObjectUrl()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "validateOioCrossRegister", + "observed_behavior": "ZgwDrcRulesService::validateOioCrossRegister()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "checkOioUniqueness", + "observed_behavior": "ZgwDrcRulesService::checkOioUniqueness()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "searchDuplicateRelation", + "observed_behavior": "ZgwDrcRulesService::searchDuplicateRelation()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "validateLock", + "observed_behavior": "ZgwDrcRulesService::validateLock()" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php", + "method": "deriveVertrouwelijkheidaanduiding", + "observed_behavior": "ZgwDrcRulesService::deriveVertrouwelijkheidaanduiding()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "checkDirectConceptProtection", + "observed_behavior": "ZgwZtcRulesService::checkDirectConceptProtection()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "actionLabel", + "observed_behavior": "ZgwZtcRulesService::actionLabel()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "validateBrondatumArchief", + "observed_behavior": "ZgwZtcRulesService::validateBrondatumArchief()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "enrichResultaattype", + "observed_behavior": "ZgwZtcRulesService::enrichResultaattype()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "validateProcestypeMatch", + "observed_behavior": "ZgwZtcRulesService::validateProcestypeMatch()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "validateFieldPresence", + "observed_behavior": "ZgwZtcRulesService::validateFieldPresence()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "checkProcestermijnCompatibility", + "observed_behavior": "ZgwZtcRulesService::checkProcestermijnCompatibility()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "resolveTypeReferences", + "observed_behavior": "ZgwZtcRulesService::resolveTypeReferences()" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php", + "method": "resolveGerelateerdeZaaktypen", + "observed_behavior": "ZgwZtcRulesService::resolveGerelateerdeZaaktypen()" + } + ] + }, + "bucket_2b": { + "appointments": [ + { + "file": "lib/BackgroundJob/AppointmentReminderJob.php", + "method": "run", + "observed_behavior": "AppointmentReminderJob::run()" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "index", + "observed_behavior": "AppointmentController::index()" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "create", + "observed_behavior": "AppointmentController::create()" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "cancel", + "observed_behavior": "AppointmentController::cancel()" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "noShow", + "observed_behavior": "AppointmentController::noShow()" + }, + { + "file": "lib/Controller/AppointmentController.php", + "method": "timeslots", + "observed_behavior": "AppointmentController::timeslots()" + }, + { + "file": "lib/Controller/PublicAppointmentController.php", + "method": "view", + "observed_behavior": "PublicAppointmentController::view()" + }, + { + "file": "lib/Controller/PublicAppointmentController.php", + "method": "cancel", + "observed_behavior": "PublicAppointmentController::cancel()" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php", + "method": "getTimeslots", + "observed_behavior": "JccBackend::getTimeslots()" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php", + "method": "bookAppointment", + "observed_behavior": "JccBackend::bookAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php", + "method": "cancelAppointment", + "observed_behavior": "JccBackend::cancelAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php", + "method": "rescheduleAppointment", + "observed_behavior": "JccBackend::rescheduleAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php", + "method": "getTimeslots", + "observed_behavior": "LocalBackend::getTimeslots()" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php", + "method": "bookAppointment", + "observed_behavior": "LocalBackend::bookAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php", + "method": "cancelAppointment", + "observed_behavior": "LocalBackend::cancelAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php", + "method": "rescheduleAppointment", + "observed_behavior": "LocalBackend::rescheduleAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php", + "method": "getTimeslots", + "observed_behavior": "QmaticBackend::getTimeslots()" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php", + "method": "bookAppointment", + "observed_behavior": "QmaticBackend::bookAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php", + "method": "cancelAppointment", + "observed_behavior": "QmaticBackend::cancelAppointment()" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php", + "method": "rescheduleAppointment", + "observed_behavior": "QmaticBackend::rescheduleAppointment()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "getTimeslots", + "observed_behavior": "AppointmentService::getTimeslots()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "bookAppointment", + "observed_behavior": "AppointmentService::bookAppointment()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "cancelAppointment", + "observed_behavior": "AppointmentService::cancelAppointment()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "markNoShow", + "observed_behavior": "AppointmentService::markNoShow()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "getAppointmentsForCase", + "observed_behavior": "AppointmentService::getAppointmentsForCase()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "getAppointmentByToken", + "observed_behavior": "AppointmentService::getAppointmentByToken()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "getBackend", + "observed_behavior": "AppointmentService::getBackend()" + }, + { + "file": "lib/Service/AppointmentService.php", + "method": "getObjectService", + "observed_behavior": "AppointmentService::getObjectService()" + }, + { + "file": "src/views/public/PublicAppointmentPage.vue", + "method": "formatDateTime", + "observed_behavior": "src/views/public/PublicAppointmentPage.vue::formatDateTime" + }, + { + "file": "src/views/public/PublicAppointmentPage.vue", + "method": "if", + "observed_behavior": "src/views/public/PublicAppointmentPage.vue::if" + }, + { + "file": "src/services/appointmentApi.js", + "method": "listAppointments", + "observed_behavior": "src/services/appointmentApi.js::listAppointments" + }, + { + "file": "src/services/appointmentApi.js", + "method": "bookAppointment", + "observed_behavior": "src/services/appointmentApi.js::bookAppointment" + }, + { + "file": "src/services/appointmentApi.js", + "method": "cancelAppointment", + "observed_behavior": "src/services/appointmentApi.js::cancelAppointment" + }, + { + "file": "src/services/appointmentApi.js", + "method": "markNoShow", + "observed_behavior": "src/services/appointmentApi.js::markNoShow" + }, + { + "file": "src/services/appointmentApi.js", + "method": "getTimeslots", + "observed_behavior": "src/services/appointmentApi.js::getTimeslots" + } + ], + "berichtenbox": [ + { + "file": "lib/BackgroundJob/BerichtenboxReadStatusJob.php", + "method": "run", + "observed_behavior": "BerichtenboxReadStatusJob::run()" + }, + { + "file": "lib/Controller/BerichtenboxController.php", + "method": "send", + "observed_behavior": "BerichtenboxController::send()" + }, + { + "file": "lib/Controller/BerichtenboxController.php", + "method": "messages", + "observed_behavior": "BerichtenboxController::messages()" + }, + { + "file": "lib/Controller/BerichtenboxController.php", + "method": "poll", + "observed_behavior": "BerichtenboxController::poll()" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php", + "method": "sendMessage", + "observed_behavior": "MockAdapter::sendMessage()" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php", + "method": "getReadStatus", + "observed_behavior": "MockAdapter::getReadStatus()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "sendMessage", + "observed_behavior": "BerichtenboxService::sendMessage()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "getMessagesForCase", + "observed_behavior": "BerichtenboxService::getMessagesForCase()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "pollReadStatus", + "observed_behavior": "BerichtenboxService::pollReadStatus()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "validateBsn", + "observed_behavior": "BerichtenboxService::validateBsn()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "validateMessage", + "observed_behavior": "BerichtenboxService::validateMessage()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "getAdapter", + "observed_behavior": "BerichtenboxService::getAdapter()" + }, + { + "file": "lib/Service/BerichtenboxService.php", + "method": "getObjectService", + "observed_behavior": "BerichtenboxService::getObjectService()" + }, + { + "file": "src/services/berichtenboxApi.js", + "method": "sendMessage", + "observed_behavior": "src/services/berichtenboxApi.js::sendMessage" + }, + { + "file": "src/services/berichtenboxApi.js", + "method": "listMessages", + "observed_behavior": "src/services/berichtenboxApi.js::listMessages" + }, + { + "file": "src/services/berichtenboxApi.js", + "method": "getTypeCodes", + "observed_behavior": "src/services/berichtenboxApi.js::getTypeCodes" + }, + { + "file": "src/services/berichtenboxApi.js", + "method": "pollReadStatus", + "observed_behavior": "src/services/berichtenboxApi.js::pollReadStatus" + } + ], + "case-sharing": [ + { + "file": "lib/BackgroundJob/ShareMaintenanceJob.php", + "method": "run", + "observed_behavior": "ShareMaintenanceJob::run()" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "listShares", + "observed_behavior": "CaseSharingController::listShares()" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "createShare", + "observed_behavior": "CaseSharingController::createShare()" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "revokeShare", + "observed_behavior": "CaseSharingController::revokeShare()" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "initiateTransfer", + "observed_behavior": "CaseSharingController::initiateTransfer()" + }, + { + "file": "lib/Controller/CaseSharingController.php", + "method": "handleTransfer", + "observed_behavior": "CaseSharingController::handleTransfer()" + }, + { + "file": "lib/Controller/PublicShareController.php", + "method": "accessShare", + "observed_behavior": "PublicShareController::accessShare()" + }, + { + "file": "lib/Controller/PublicShareController.php", + "method": "addComment", + "observed_behavior": "PublicShareController::addComment()" + }, + { + "file": "lib/Controller/PublicShareController.php", + "method": "viewStatus", + "observed_behavior": "PublicShareController::viewStatus()" + }, + { + "file": "lib/Controller/PublicShareController.php", + "method": "loadCaseData", + "observed_behavior": "PublicShareController::loadCaseData()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "generateToken", + "observed_behavior": "CaseSharingService::generateToken()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "createTokenShare", + "observed_behavior": "CaseSharingService::createTokenShare()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "createPartnerShare", + "observed_behavior": "CaseSharingService::createPartnerShare()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "getSharesByCase", + "observed_behavior": "CaseSharingService::getSharesByCase()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "revokeShare", + "observed_behavior": "CaseSharingService::revokeShare()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "validateToken", + "observed_behavior": "CaseSharingService::validateToken()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "getFilteredCaseData", + "observed_behavior": "CaseSharingService::getFilteredCaseData()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "maskBsn", + "observed_behavior": "CaseSharingService::maskBsn()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "recordFailedAttempt", + "observed_behavior": "CaseSharingService::recordFailedAttempt()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "resetFailedAttempts", + "observed_behavior": "CaseSharingService::resetFailedAttempts()" + }, + { + "file": "lib/Service/CaseSharingService.php", + "method": "getObjectService", + "observed_behavior": "CaseSharingService::getObjectService()" + }, + { + "file": "lib/Service/CaseTransferService.php", + "method": "initiateTransfer", + "observed_behavior": "CaseTransferService::initiateTransfer()" + }, + { + "file": "lib/Service/CaseTransferService.php", + "method": "acceptTransfer", + "observed_behavior": "CaseTransferService::acceptTransfer()" + }, + { + "file": "lib/Service/CaseTransferService.php", + "method": "rejectTransfer", + "observed_behavior": "CaseTransferService::rejectTransfer()" + }, + { + "file": "lib/Service/CaseTransferService.php", + "method": "getObjectService", + "observed_behavior": "CaseTransferService::getObjectService()" + }, + { + "file": "src/views/public/PublicCaseView.vue", + "method": "loadShareData", + "observed_behavior": "src/views/public/PublicCaseView.vue::loadShareData" + }, + { + "file": "src/views/public/PublicCaseView.vue", + "method": "if", + "observed_behavior": "src/views/public/PublicCaseView.vue::if" + }, + { + "file": "src/views/public/PublicStatusPage.vue", + "method": "loadStatus", + "observed_behavior": "src/views/public/PublicStatusPage.vue::loadStatus" + }, + { + "file": "src/views/public/PublicStatusPage.vue", + "method": "if", + "observed_behavior": "src/views/public/PublicStatusPage.vue::if" + } + ], + "ai-assistant": [ + { + "file": "lib/Controller/AiController.php", + "method": "classify", + "observed_behavior": "AiController::classify()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "extract", + "observed_behavior": "AiController::extract()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "ask", + "observed_behavior": "AiController::ask()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "summarize", + "observed_behavior": "AiController::summarize()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "suggestRouting", + "observed_behavior": "AiController::suggestRouting()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "suggestNext", + "observed_behavior": "AiController::suggestNext()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "recordAction", + "observed_behavior": "AiController::recordAction()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "auditIndex", + "observed_behavior": "AiController::auditIndex()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "getSettings", + "observed_behavior": "AiController::getSettings()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "updateSettings", + "observed_behavior": "AiController::updateSettings()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "healthCheck", + "observed_behavior": "AiController::healthCheck()" + }, + { + "file": "lib/Controller/AiController.php", + "method": "getCurrentUserId", + "observed_behavior": "AiController::getCurrentUserId()" + }, + { + "file": "lib/Service/AiService.php", + "method": "isEnabled", + "observed_behavior": "AiService::isEnabled()" + }, + { + "file": "lib/Service/AiService.php", + "method": "isFeatureEnabled", + "observed_behavior": "AiService::isFeatureEnabled()" + }, + { + "file": "lib/Service/AiService.php", + "method": "classifyDocument", + "observed_behavior": "AiService::classifyDocument()" + }, + { + "file": "lib/Service/AiService.php", + "method": "extractData", + "observed_behavior": "AiService::extractData()" + }, + { + "file": "lib/Service/AiService.php", + "method": "askQuestion", + "observed_behavior": "AiService::askQuestion()" + }, + { + "file": "lib/Service/AiService.php", + "method": "summarize", + "observed_behavior": "AiService::summarize()" + }, + { + "file": "lib/Service/AiService.php", + "method": "suggestRouting", + "observed_behavior": "AiService::suggestRouting()" + }, + { + "file": "lib/Service/AiService.php", + "method": "suggestNextStep", + "observed_behavior": "AiService::suggestNextStep()" + }, + { + "file": "lib/Service/AiService.php", + "method": "recordUserAction", + "observed_behavior": "AiService::recordUserAction()" + }, + { + "file": "lib/Service/AiService.php", + "method": "testHealth", + "observed_behavior": "AiService::testHealth()" + }, + { + "file": "lib/Service/AiService.php", + "method": "getAiSettings", + "observed_behavior": "AiService::getAiSettings()" + }, + { + "file": "lib/Service/AiService.php", + "method": "getModelIdentifier", + "observed_behavior": "AiService::getModelIdentifier()" + }, + { + "file": "lib/Service/AiService.php", + "method": "stripPiiIfEnabled", + "observed_behavior": "AiService::stripPiiIfEnabled()" + }, + { + "file": "lib/Service/AiService.php", + "method": "callAiModel", + "observed_behavior": "AiService::callAiModel()" + }, + { + "file": "lib/Service/AiService.php", + "method": "recordAuditEntry", + "observed_behavior": "AiService::recordAuditEntry()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildClassificationPrompt", + "observed_behavior": "AiService::buildClassificationPrompt()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildExtractionPrompt", + "observed_behavior": "AiService::buildExtractionPrompt()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildQaPrompt", + "observed_behavior": "AiService::buildQaPrompt()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildSummaryPrompt", + "observed_behavior": "AiService::buildSummaryPrompt()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildRoutingPrompt", + "observed_behavior": "AiService::buildRoutingPrompt()" + }, + { + "file": "lib/Service/AiService.php", + "method": "buildNextStepPrompt", + "observed_behavior": "AiService::buildNextStepPrompt()" + }, + { + "file": "src/services/aiApi.js", + "method": "classifyDocument", + "observed_behavior": "src/services/aiApi.js::classifyDocument" + }, + { + "file": "src/services/aiApi.js", + "method": "extractData", + "observed_behavior": "src/services/aiApi.js::extractData" + }, + { + "file": "src/services/aiApi.js", + "method": "askQuestion", + "observed_behavior": "src/services/aiApi.js::askQuestion" + }, + { + "file": "src/services/aiApi.js", + "method": "summarize", + "observed_behavior": "src/services/aiApi.js::summarize" + }, + { + "file": "src/services/aiApi.js", + "method": "suggestRouting", + "observed_behavior": "src/services/aiApi.js::suggestRouting" + }, + { + "file": "src/services/aiApi.js", + "method": "suggestNext", + "observed_behavior": "src/services/aiApi.js::suggestNext" + }, + { + "file": "src/services/aiApi.js", + "method": "getAuditLog", + "observed_behavior": "src/services/aiApi.js::getAuditLog" + }, + { + "file": "src/services/aiApi.js", + "method": "getAiSettings", + "observed_behavior": "src/services/aiApi.js::getAiSettings" + }, + { + "file": "src/services/aiApi.js", + "method": "updateAiSettings", + "observed_behavior": "src/services/aiApi.js::updateAiSettings" + }, + { + "file": "src/services/aiApi.js", + "method": "testAiHealth", + "observed_behavior": "src/services/aiApi.js::testAiHealth" + } + ], + "leges": [ + { + "file": "lib/Controller/LegesController.php", + "method": "calculate", + "observed_behavior": "LegesController::calculate()" + }, + { + "file": "lib/Controller/LegesController.php", + "method": "recalculate", + "observed_behavior": "LegesController::recalculate()" + }, + { + "file": "lib/Controller/LegesController.php", + "method": "verrekening", + "observed_behavior": "LegesController::verrekening()" + }, + { + "file": "lib/Controller/LegesController.php", + "method": "teruggaaf", + "observed_behavior": "LegesController::teruggaaf()" + }, + { + "file": "lib/Controller/LegesController.php", + "method": "export", + "observed_behavior": "LegesController::export()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculate", + "observed_behavior": "LegesCalculationService::calculate()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "recalculate", + "observed_behavior": "LegesCalculationService::recalculate()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateVerrekening", + "observed_behavior": "LegesCalculationService::calculateVerrekening()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateTeruggaaf", + "observed_behavior": "LegesCalculationService::calculateTeruggaaf()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateArtikel", + "observed_behavior": "LegesCalculationService::calculateArtikel()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateVast", + "observed_behavior": "LegesCalculationService::calculateVast()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculatePercentage", + "observed_behavior": "LegesCalculationService::calculatePercentage()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateStaffel", + "observed_behavior": "LegesCalculationService::calculateStaffel()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateMaximum", + "observed_behavior": "LegesCalculationService::calculateMaximum()" + }, + { + "file": "lib/Service/LegesCalculationService.php", + "method": "calculateCombinatie", + "observed_behavior": "LegesCalculationService::calculateCombinatie()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "export", + "observed_behavior": "LegesExportService::export()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "exportCSV", + "observed_behavior": "LegesExportService::exportCSV()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "exportASCII", + "observed_behavior": "LegesExportService::exportASCII()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "exportXML", + "observed_behavior": "LegesExportService::exportXML()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "flattenBerekening", + "observed_behavior": "LegesExportService::flattenBerekening()" + }, + { + "file": "lib/Service/LegesExportService.php", + "method": "addXmlElement", + "observed_behavior": "LegesExportService::addXmlElement()" + } + ], + "stuf-protocol": [ + { + "file": "lib/Controller/StufController.php", + "method": "zaken", + "observed_behavior": "StufController::zaken()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "personen", + "observed_behavior": "StufController::personen()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleSoapMessage", + "observed_behavior": "StufController::handleSoapMessage()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleZakLk01", + "observed_behavior": "StufController::handleZakLk01()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleZakLv01", + "observed_behavior": "StufController::handleZakLv01()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleNpsLv01", + "observed_behavior": "StufController::handleNpsLv01()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleEdcLk01", + "observed_behavior": "StufController::handleEdcLk01()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "handleUnknownMessage", + "observed_behavior": "StufController::handleUnknownMessage()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "extractFields", + "observed_behavior": "StufController::extractFields()" + }, + { + "file": "lib/Controller/StufController.php", + "method": "soapResponse", + "observed_behavior": "StufController::soapResponse()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "mapZknToInternal", + "observed_behavior": "StufFieldMappingService::mapZknToInternal()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "mapInternalToZkn", + "observed_behavior": "StufFieldMappingService::mapInternalToZkn()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "mapBgToInternal", + "observed_behavior": "StufFieldMappingService::mapBgToInternal()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "mapInternalToBg", + "observed_behavior": "StufFieldMappingService::mapInternalToBg()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "stufDateToIso", + "observed_behavior": "StufFieldMappingService::stufDateToIso()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "isoToStufDate", + "observed_behavior": "StufFieldMappingService::isoToStufDate()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "isoToStufDateTime", + "observed_behavior": "StufFieldMappingService::isoToStufDateTime()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "confidentialityToInternal", + "observed_behavior": "StufFieldMappingService::confidentialityToInternal()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "confidentialityToStuf", + "observed_behavior": "StufFieldMappingService::confidentialityToStuf()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "addCustomMappings", + "observed_behavior": "StufFieldMappingService::addCustomMappings()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "getDefaultMappings", + "observed_behavior": "StufFieldMappingService::getDefaultMappings()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "applyMappings", + "observed_behavior": "StufFieldMappingService::applyMappings()" + }, + { + "file": "lib/Service/StufFieldMappingService.php", + "method": "applyReverseMappings", + "observed_behavior": "StufFieldMappingService::applyReverseMappings()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "buildSoapEnvelope", + "observed_behavior": "StufMessageBuilder::buildSoapEnvelope()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "buildStuurgegevens", + "observed_behavior": "StufMessageBuilder::buildStuurgegevens()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "buildBv01", + "observed_behavior": "StufMessageBuilder::buildBv01()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "buildFo01", + "observed_behavior": "StufMessageBuilder::buildFo01()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "buildSoapFault", + "observed_behavior": "StufMessageBuilder::buildSoapFault()" + }, + { + "file": "lib/Service/StufMessageBuilder.php", + "method": "generateUuid", + "observed_behavior": "StufMessageBuilder::generateUuid()" + } + ], + "templates": [ + { + "file": "lib/Controller/TemplateController.php", + "method": "index", + "observed_behavior": "TemplateController::index()" + }, + { + "file": "lib/Controller/TemplateController.php", + "method": "show", + "observed_behavior": "TemplateController::show()" + }, + { + "file": "lib/Controller/TemplateController.php", + "method": "activate", + "observed_behavior": "TemplateController::activate()" + }, + { + "file": "lib/Service/TemplateLibraryService.php", + "method": "listTemplates", + "observed_behavior": "TemplateLibraryService::listTemplates()" + }, + { + "file": "lib/Service/TemplateLibraryService.php", + "method": "loadTemplate", + "observed_behavior": "TemplateLibraryService::loadTemplate()" + }, + { + "file": "lib/Service/TemplateLibraryService.php", + "method": "activateTemplate", + "observed_behavior": "TemplateLibraryService::activateTemplate()" + } + ], + "multi-tenancy": [ + { + "file": "lib/Controller/TenantController.php", + "method": "index", + "observed_behavior": "TenantController::index()" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "create", + "observed_behavior": "TenantController::create()" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "provision", + "observed_behavior": "TenantController::provision()" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "usage", + "observed_behavior": "TenantController::usage()" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "current", + "observed_behavior": "TenantController::current()" + }, + { + "file": "lib/Controller/TenantController.php", + "method": "isPlatformAdmin", + "observed_behavior": "TenantController::isPlatformAdmin()" + }, + { + "file": "lib/Middleware/TenantMiddleware.php", + "method": "beforeController", + "observed_behavior": "TenantMiddleware::beforeController()" + }, + { + "file": "lib/Middleware/TenantMiddleware.php", + "method": "afterException", + "observed_behavior": "TenantMiddleware::afterException()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "getTenantForUser", + "observed_behavior": "TenantService::getTenantForUser()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "getTenantByGroupId", + "observed_behavior": "TenantService::getTenantByGroupId()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "createTenant", + "observed_behavior": "TenantService::createTenant()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "provisionTenant", + "observed_behavior": "TenantService::provisionTenant()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "getResourceUsage", + "observed_behavior": "TenantService::getResourceUsage()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "isUserInTenant", + "observed_behavior": "TenantService::isUserInTenant()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "isPlatformAdmin", + "observed_behavior": "TenantService::isPlatformAdmin()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "slugify", + "observed_behavior": "TenantService::slugify()" + }, + { + "file": "lib/Service/TenantService.php", + "method": "getObjectService", + "observed_behavior": "TenantService::getObjectService()" + }, + { + "file": "src/services/tenantApi.js", + "method": "listTenants", + "observed_behavior": "src/services/tenantApi.js::listTenants" + }, + { + "file": "src/services/tenantApi.js", + "method": "createTenant", + "observed_behavior": "src/services/tenantApi.js::createTenant" + }, + { + "file": "src/services/tenantApi.js", + "method": "getTenant", + "observed_behavior": "src/services/tenantApi.js::getTenant" + }, + { + "file": "src/services/tenantApi.js", + "method": "updateTenant", + "observed_behavior": "src/services/tenantApi.js::updateTenant" + }, + { + "file": "src/services/tenantApi.js", + "method": "provisionTenant", + "observed_behavior": "src/services/tenantApi.js::provisionTenant" + }, + { + "file": "src/services/tenantApi.js", + "method": "getTenantUsage", + "observed_behavior": "src/services/tenantApi.js::getTenantUsage" + }, + { + "file": "src/services/tenantApi.js", + "method": "getCurrentTenant", + "observed_behavior": "src/services/tenantApi.js::getCurrentTenant" + } + ], + "dso-intake": [ + { + "file": "lib/Service/DsoIntakeService.php", + "method": "processAanvraag", + "observed_behavior": "DsoIntakeService::processAanvraag()" + }, + { + "file": "lib/Service/DsoIntakeService.php", + "method": "getDeadlineDuration", + "observed_behavior": "DsoIntakeService::getDeadlineDuration()" + } + ] + }, + "bucket_3a": [], + "bucket_3b": [ + { + "req": "advice-management#REQ-001", + "title": "Advice request schema" + }, + { + "req": "advice-management#REQ-002", + "title": "Advice panel on case dashboard" + }, + { + "req": "advice-management#REQ-003", + "title": "Advice request form" + }, + { + "req": "automatic-actions#REQ-001", + "title": "Automatic Action Framework" + }, + { + "req": "automatic-actions#REQ-002", + "title": "Action Execution Error Handling" + }, + { + "req": "beroep-escalation#REQ-001", + "title": "Beroep Case Type Pre-Seeded Configuration" + }, + { + "req": "beroep-escalation#REQ-002", + "title": "Beroep Status Types" + }, + { + "req": "beroep-escalation#REQ-003", + "title": "Escalation from Bezwaar to Beroep" + }, + { + "req": "beroep-escalation#REQ-004", + "title": "Court Proceedings Document Management" + }, + { + "req": "beroep-escalation#REQ-005", + "title": "Hoger Beroep Awareness" + }, + { + "req": "bezwaar-advisory-committee#REQ-001", + "title": "Advisory Committee Report Schema" + }, + { + "req": "bezwaar-advisory-committee#REQ-002", + "title": "Committee Composition Tracking" + }, + { + "req": "bezwaar-decision#REQ-001", + "title": "Decision on Objection Schema" + }, + { + "req": "bezwaar-decision#REQ-002", + "title": "Decision Notification" + }, + { + "req": "bezwaar-decision#REQ-003", + "title": "Heroverweging (Full Reconsideration)" + }, + { + "req": "bezwaar-hearing#REQ-001", + "title": "Hearing Session Management" + }, + { + "req": "bezwaar-hearing#REQ-002", + "title": "Hearing Waiver (Afzien van Hoorrecht)" + }, + { + "req": "bezwaar-hearing#REQ-003", + "title": "Hearing Participants and Access Rights" + }, + { + "req": "case-location#REQ-LOC-01", + "title": "Case Detail Map Tab" + }, + { + "req": "case-location#REQ-LOC-02", + "title": "Location Picker" + }, + { + "req": "case-location#REQ-LOC-03", + "title": "Address Display and Reverse Geocoding" + }, + { + "req": "case-location#REQ-LOC-04", + "title": "Case Creation Location" + }, + { + "req": "deelzaak-support#REQ-001", + "title": "Sub-case creation from parent case" + }, + { + "req": "deelzaak-support#REQ-002", + "title": "Sub-cases section on parent case detail" + }, + { + "req": "deelzaak-support#REQ-003", + "title": "Parent case breadcrumb navigation" + }, + { + "req": "deelzaak-support#REQ-004", + "title": "Sub-case progress roll-up on parent case" + }, + { + "req": "deelzaak-support#REQ-005", + "title": "Sub-case count in case list" + }, + { + "req": "deelzaak-support#REQ-006", + "title": "Sub-case deletion protection" + }, + { + "req": "enforcement-lhs#REQ-001", + "title": "LHS matrix configuration" + }, + { + "req": "enforcement-lhs#REQ-002", + "title": "Enforcement action schema" + }, + { + "req": "enforcement-lhs#REQ-003", + "title": "Enforcement wizard" + }, + { + "req": "enforcement-lhs#REQ-004", + "title": "Enforcement panel on case dashboard" + }, + { + "req": "parafering-dashboard#REQ-001", + "title": "Secretariaat Parafering Overview" + }, + { + "req": "parafering-dashboard#REQ-002", + "title": "Personal Parafering Inbox" + }, + { + "req": "parafering-dashboard#REQ-003", + "title": "Send Parafering Reminder" + }, + { + "req": "parafering-dashboard#REQ-004", + "title": "Voorstel List Navigation" + }, + { + "req": "process-step-configuration#REQ-001", + "title": "Process Step CRUD within Workflow" + }, + { + "req": "process-step-configuration#REQ-002", + "title": "Step-to-Task Mapping at Runtime" + }, + { + "req": "procest-case-management#REQ-001", + "title": "1: Register and schemas MUST be auto-configured on install" + }, + { + "req": "procest-case-management#REQ-002", + "title": "2: Cases list view MUST display paginated, searchable case overview" + }, + { + "req": "procest-case-management#REQ-003", + "title": "3: Case create dialog MUST support type-driven case creation" + }, + { + "req": "procest-case-management#REQ-004", + "title": "4: Case detail view MUST display full case information with related data" + }, + { + "req": "procest-case-management#REQ-005", + "title": "5: Status lifecycle MUST support configurable status flows with mandatory result on closure" + }, + { + "req": "procest-case-management#REQ-006", + "title": "6: Deadline and timing MUST support processing deadlines with extensions" + }, + { + "req": "procest-case-management#REQ-007", + "title": "7: Tasks MUST be manageable within case context" + }, + { + "req": "procest-case-management#REQ-008", + "title": "8: Participants MUST be manageable per case" + }, + { + "req": "procest-case-management#REQ-009", + "title": "9: Activity timeline MUST record all case events" + }, + { + "req": "procest-case-management#REQ-010", + "title": "10: Case type administration MUST support configuring case types" + }, + { + "req": "procest-case-management#REQ-011", + "title": "11: Navigation MUST include all primary views" + }, + { + "req": "procest-case-management#REQ-012", + "title": "12: Dashboard MUST provide overview metrics and quick access" + }, + { + "req": "procest-case-management#REQ-013", + "title": "13: ZGW API compatibility MUST be maintained" + }, + { + "req": "role-based-step-routing#REQ-001", + "title": "Role-Based Step Visibility" + }, + { + "req": "role-based-step-routing#REQ-002", + "title": "Role-Based Transition Access" + }, + { + "req": "role-based-step-routing#REQ-003", + "title": "Workflow Inheritance for Role Configuration" + }, + { + "req": "status-transition-engine#REQ-001", + "title": "Guard Evaluation Engine" + }, + { + "req": "status-transition-engine#REQ-002", + "title": "Transition Execution" + }, + { + "req": "status-transition-engine#REQ-003", + "title": "Available Transitions for Current User" + }, + { + "req": "visual-workflow-editor#REQ-001", + "title": "Drag-and-Drop Workflow Canvas" + }, + { + "req": "visual-workflow-editor#REQ-002", + "title": "Workflow Editor Validation" + }, + { + "req": "visual-workflow-editor#REQ-003", + "title": "Step Configuration Panel" + }, + { + "req": "vth-workflow-templates#REQ-001", + "title": "Omgevingsvergunning workflow template" + }, + { + "req": "vth-workflow-templates#REQ-002", + "title": "Toezichtzaak workflow template" + }, + { + "req": "vth-workflow-templates#REQ-003", + "title": "Handhavingszaak workflow template" + }, + { + "req": "vth-workflow-templates#REQ-004", + "title": "VTH workflow template library" + }, + { + "req": "workflow-definition-model#REQ-001", + "title": "Workflow Template Data Model" + }, + { + "req": "workflow-definition-model#REQ-002", + "title": "Workflow Step Data Model" + }, + { + "req": "workflow-definition-model#REQ-003", + "title": "Status Transition Data Model" + }, + { + "req": "workflow-definition-model#REQ-004", + "title": "Pre-Seeded Bezwaar Workflow Template" + }, + { + "req": "workflow-definition-model#REQ-005", + "title": "Pre-Seeded Beroep Workflow Template" + }, + { + "req": "workflow-import-export#REQ-001", + "title": "Export Workflow Template" + }, + { + "req": "workflow-import-export#REQ-002", + "title": "Import Workflow Template" + }, + { + "req": "zaaktype-versioning#REQ-001", + "title": "Workflow Template Versioning" + }, + { + "req": "zaaktype-versioning#REQ-002", + "title": "Case-to-Workflow-Version Binding" + } + ], + "bucket_4": { + "missing-license-in-file-docblock": [ + { + "file": "lib/BackgroundJob/AppointmentReminderJob.php" + }, + { + "file": "lib/BackgroundJob/BerichtenboxReadStatusJob.php" + }, + { + "file": "lib/Controller/AppointmentController.php" + }, + { + "file": "lib/Controller/BerichtenboxController.php" + }, + { + "file": "lib/Controller/PublicAppointmentController.php" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php" + }, + { + "file": "lib/Service/AppointmentService.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php" + }, + { + "file": "lib/Service/BerichtenboxService.php" + } + ], + "missing-copyright-in-file-docblock": [ + { + "file": "lib/BackgroundJob/AppointmentReminderJob.php" + }, + { + "file": "lib/BackgroundJob/BerichtenboxReadStatusJob.php" + }, + { + "file": "lib/Controller/AppointmentController.php" + }, + { + "file": "lib/Controller/BerichtenboxController.php" + }, + { + "file": "lib/Controller/PublicAppointmentController.php" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php" + }, + { + "file": "lib/Service/AppointmentService.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php" + }, + { + "file": "lib/Service/BerichtenboxService.php" + } + ], + "missing-spec-in-file-docblock": [ + { + "file": "lib/AppInfo/Application.php" + }, + { + "file": "lib/BackgroundJob/AppointmentReminderJob.php" + }, + { + "file": "lib/BackgroundJob/BerichtenboxReadStatusJob.php" + }, + { + "file": "lib/BackgroundJob/ShareMaintenanceJob.php" + }, + { + "file": "lib/Controller/AcController.php" + }, + { + "file": "lib/Controller/AiController.php" + }, + { + "file": "lib/Controller/AppointmentController.php" + }, + { + "file": "lib/Controller/BerichtenboxController.php" + }, + { + "file": "lib/Controller/BrcController.php" + }, + { + "file": "lib/Controller/CaseDefinitionController.php" + }, + { + "file": "lib/Controller/CaseSharingController.php" + }, + { + "file": "lib/Controller/ConsultationController.php" + }, + { + "file": "lib/Controller/DashboardController.php" + }, + { + "file": "lib/Controller/DrcController.php" + }, + { + "file": "lib/Controller/EmailController.php" + }, + { + "file": "lib/Controller/GisProxyController.php" + }, + { + "file": "lib/Controller/HealthController.php" + }, + { + "file": "lib/Controller/InspectionController.php" + }, + { + "file": "lib/Controller/LegesController.php" + }, + { + "file": "lib/Controller/MetricsController.php" + }, + { + "file": "lib/Controller/MilestoneController.php" + }, + { + "file": "lib/Controller/NrcController.php" + }, + { + "file": "lib/Controller/ParaferingController.php" + }, + { + "file": "lib/Controller/PublicAppointmentController.php" + }, + { + "file": "lib/Controller/PublicShareController.php" + }, + { + "file": "lib/Controller/SettingsController.php" + }, + { + "file": "lib/Controller/StufController.php" + }, + { + "file": "lib/Controller/TemplateController.php" + }, + { + "file": "lib/Controller/TenantController.php" + }, + { + "file": "lib/Controller/ZgwMappingController.php" + }, + { + "file": "lib/Controller/ZrcController.php" + }, + { + "file": "lib/Controller/ZtcController.php" + }, + { + "file": "lib/Dashboard/CasesOverviewWidget.php" + }, + { + "file": "lib/Dashboard/DeadlineAlertsWidget.php" + }, + { + "file": "lib/Dashboard/MyTasksWidget.php" + }, + { + "file": "lib/Dashboard/OverdueCasesWidget.php" + }, + { + "file": "lib/Dashboard/StalledCasesWidget.php" + }, + { + "file": "lib/Dashboard/StartCaseWidget.php" + }, + { + "file": "lib/Dashboard/TaskRemindersWidget.php" + }, + { + "file": "lib/Listener/DeepLinkRegistrationListener.php" + }, + { + "file": "lib/Middleware/TenantMiddleware.php" + }, + { + "file": "lib/Middleware/ZgwAuthException.php" + }, + { + "file": "lib/Middleware/ZgwAuthMiddleware.php" + }, + { + "file": "lib/Repair/InitializeSettings.php" + }, + { + "file": "lib/Repair/LoadDefaultZgwMappings.php" + }, + { + "file": "lib/Repair/SeedBezwaarBeroepData.php" + }, + { + "file": "lib/Sections/SettingsSection.php" + }, + { + "file": "lib/Service/AiService.php" + }, + { + "file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php" + }, + { + "file": "lib/Service/AppointmentBackend/JccBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/LocalBackend.php" + }, + { + "file": "lib/Service/AppointmentBackend/QmaticBackend.php" + }, + { + "file": "lib/Service/AppointmentService.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php" + }, + { + "file": "lib/Service/BerichtenboxAdapter/MockAdapter.php" + }, + { + "file": "lib/Service/BerichtenboxService.php" + }, + { + "file": "lib/Service/CaseDefinitionExportService.php" + }, + { + "file": "lib/Service/CaseDefinitionImportService.php" + }, + { + "file": "lib/Service/CaseEmailService.php" + }, + { + "file": "lib/Service/CaseSharingService.php" + }, + { + "file": "lib/Service/CaseTransferService.php" + }, + { + "file": "lib/Service/ChecklistService.php" + }, + { + "file": "lib/Service/ConsultationService.php" + }, + { + "file": "lib/Service/DsoIntakeService.php" + }, + { + "file": "lib/Service/GisProxyService.php" + }, + { + "file": "lib/Service/InspectionService.php" + }, + { + "file": "lib/Service/LegesCalculationService.php" + }, + { + "file": "lib/Service/LegesExportService.php" + }, + { + "file": "lib/Service/MilestoneService.php" + }, + { + "file": "lib/Service/NotificatieService.php" + }, + { + "file": "lib/Service/ParaferingNotificationService.php" + }, + { + "file": "lib/Service/ParaferingService.php" + }, + { + "file": "lib/Service/SeedDataService.php" + }, + { + "file": "lib/Service/SettingsService.php" + }, + { + "file": "lib/Service/StufFieldMappingService.php" + }, + { + "file": "lib/Service/StufMessageBuilder.php" + }, + { + "file": "lib/Service/TemplateLibraryService.php" + }, + { + "file": "lib/Service/TenantService.php" + }, + { + "file": "lib/Service/ZgwBrcRulesService.php" + }, + { + "file": "lib/Service/ZgwBusinessRulesService.php" + }, + { + "file": "lib/Service/ZgwDocumentService.php" + }, + { + "file": "lib/Service/ZgwDrcRulesService.php" + }, + { + "file": "lib/Service/ZgwMappingService.php" + }, + { + "file": "lib/Service/ZgwPaginationHelper.php" + }, + { + "file": "lib/Service/ZgwRulesBase.php" + }, + { + "file": "lib/Service/ZgwService.php" + }, + { + "file": "lib/Service/ZgwZrcRulesService.php" + }, + { + "file": "lib/Service/ZgwZtcRulesService.php" + }, + { + "file": "lib/Settings/AdminSettings.php" + } + ], + "forbidden-patterns": [], + "direct-sql": [] + } + }, + "ignored": 0, + "notes": [ + "case-management/spec.md has duplicated REQ blocks (pilot noted lines 63-945 vs 1013-1946). Pre-retrofit cleanup recommended; counted 45 REQ headings but ~22 are unique.", + "Frontend (Vue/TS) classification is file-level \u2014 every method in a mapped view inherits the capability's first REQ with confidence 0.78 NEEDS-REVIEW. Specific REQ per method requires reading the component body during /opsx-annotate.", + "Large ZGW controllers and rules services (ZrcController 39 methods, ZgwService 37, ZgwZrcRulesService 19) are bucketed via explicit file-level overrides to zgw-api-mapping / zgw-business-rules-compliance. Per-method REQ assignment deferred to annotate.", + "Bucket 2b cluster 'workflow-import-export' is tentative \u2014 a workflow-import-export spec exists (2 REQs) but my classifier kept CaseDefinition* files in 2a until human confirms scope overlap.", + "zgw-business-rules-compliance spec only covers ZRC rules (11 REQs). Methods in ZgwDrcRulesService, ZgwZtcRulesService, ZgwBrcRulesService landed in Bucket 2a \u2014 they extend the capability but have no matching REQ in the spec.", + "Bucket 3b is computed conservatively: only REQs in capabilities that have ZERO Bucket 1 methods are marked unimplemented. REQs in 'touched' capabilities (admin-settings, case-management, etc.) are assumed implemented but not precisely mapped \u2014 their specific REQ-to-method assignment is deferred to /opsx-annotate.", + "3a classification disabled \u2014 git log -S heuristic was unreliable on this greenfield-over-specs codebase; every untouched REQ collapsed to 3b with a note." + ] +} \ No newline at end of file diff --git a/openspec/coverage-report.md b/openspec/coverage-report.md new file mode 100644 index 00000000..551acacf --- /dev/null +++ b/openspec/coverage-report.md @@ -0,0 +1,1224 @@ +# Coverage Report — procest + +Generated: 2026-04-20 08:44 UTC +Branch: `fix/header-info-email-phpcs` +Scanner: opsx-coverage-scan v1 (full per-method pass) + +Supersedes the file-level `coverage-report.pilot.{md,json}` from the 2026-04-20 pilot run. + +## Scope + +- PHP: 89 files under `lib/` scanned (764 methods, excluding Migration/ and Db/ entity boilerplate) +- Frontend: 183 files under `src/` scanned (318 units — Vue component methods + TS/JS functions) +- 331 REQs across 46 capabilities (354 heading hits; 23 dup/synth collapsed) +- `.opsx-ignore` not present — 0 entries suppressed + +## Summary + +| Bucket | Count | Next action | +|---|---|---| +| annotated | 0 | — (already tagged — none: procest is fully legacy) | +| plumbing | 102 (PHP: 102, FE: 0) | — (never tagged) | +| 1 — REQ matched | 678 (PHP: 392, FE: 286) | `/opsx-annotate procest` | +| 2a — existing capability, no REQ | 96 (7 clusters) | `/opsx-reverse-spec procest --extend ` | +| 2b — no capability owner | 206 (9 clusters) | `/opsx-reverse-spec procest --cluster ` | +| 3a — REQ broken (code removed) | 0 | (heuristic disabled — see notes) | +| 3b — REQ never implemented | 73 | Mark deferred or remove | +| 4 — ADR conformance | 115 findings across 3 rules | Follow-up issue | + +> **Large Bucket 1 (678 methods)** — consider annotating one capability at a time when `/opsx-annotate` gains `--capability` support. For now, annotate-all will produce a single large ghost change. + +## Bucket 1 — Ready to annotate + +Will be annotated via ghost change `retrofit-annotate-procest-2026-04-20`. Grouped by capability → file. + +### capability: admin-settings — 54 methods across 33 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Sections/SettingsSection.php` | `__construct()` | REQ-ADMIN-001 | 0.95 | explicit: IIconSection implementation | +| `lib/Sections/SettingsSection.php` | `getID()` | REQ-ADMIN-001 | 0.95 | explicit: IIconSection implementation | +| `lib/Sections/SettingsSection.php` | `getName()` | REQ-ADMIN-001 | 0.95 | explicit: IIconSection implementation | +| `lib/Sections/SettingsSection.php` | `getPriority()` | REQ-ADMIN-001 | 0.95 | explicit: IIconSection implementation | +| `lib/Sections/SettingsSection.php` | `getIcon()` | REQ-ADMIN-001 | 0.95 | explicit: IIconSection implementation | +| `lib/Settings/AdminSettings.php` | `__construct()` | REQ-ADMIN-001 | 0.95 | explicit: ISettings implementation for panel registration | +| `lib/Settings/AdminSettings.php` | `getForm()` | REQ-ADMIN-001 | 0.95 | explicit: ISettings implementation for panel registration | +| `lib/Settings/AdminSettings.php` | `getSection()` | REQ-ADMIN-001 | 0.95 | explicit: ISettings implementation for panel registration | +| `lib/Settings/AdminSettings.php` | `getPriority()` | REQ-ADMIN-001 | 0.95 | explicit: ISettings implementation for panel registration | +| `src/views/settings/AdminRoot.vue` | `reimport()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/CaseTypeAdmin.vue` | `openDetail()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/CaseTypeDetail.vue` | `loadCaseType()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/CaseTypeDetail.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/CaseTypeList.vue` | `fetchCaseTypes()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/CaseTypeList.vue` | `for()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/MapLayerSettings.vue` | `emptyForm()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/ParafeerRouteAdmin.vue` | `loadData()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/PartnerAdmin.vue` | `editPartner()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/Settings.vue` | `save()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/Settings.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/Settings.vue` | `setTimeout()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/WorkflowEditor.vue` | `loadData()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/ZgwMappingSettings.vue` | `editMapping()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/DurationPicker.vue` | `onDaysChange()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/DurationPicker.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/LhsMatrixAdmin.vue` | `updateCell()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/LhsMatrixAdmin.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/StepConfigPanel.vue` | `parseChecklist()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/StepConfigPanel.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/StepConfigPanel.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/TransitionConfigPanel.vue` | `parseGuards()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/TransitionConfigPanel.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/TransitionConfigPanel.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/VthTemplateLibrary.vue` | `selectTemplate()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/WorkflowNode.vue` | `onMouseDown()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/components/WorkflowPalette.vue` | `onDragStart()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/AiSettingsTab.vue` | `updateSetting()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/AppointmentSettingsTab.vue` | `saveBackend()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/BerichtenboxSettingsTab.vue` | `testConnection()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/ChecklistAdmin.vue` | `createChecklist()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/DocumentTypesTab.vue` | `loadItems()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/PropertiesTab.vue` | `fetchPropertyDefs()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/ResultTypesTab.vue` | `loadItems()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/ResultsTab.vue` | `formatPeriod()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/ResultsTab.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/ResultsTab.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/RoleTypesTab.vue` | `loadItems()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/RolesTab.vue` | `genericRoleLabel()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/StatusesTab.vue` | `getEmptyForm()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/TemplatesTab.vue` | `loadTemplates()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/TemplatesTab.vue` | `generateUrl()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/TenantSettingsTab.vue` | `create()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/WorkflowTab.vue` | `loadVersions()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/settings/tabs/WorkflowTab.vue` | `if()` | REQ-ADMIN-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: bezwaar-lifecycle — 4 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/views/complaints/ComplaintDetail.vue` | `loadComplaint()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/complaints/ComplaintList.vue` | `loadComplaints()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/complaints/components/ComplaintCreateDialog.vue` | `validate()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/complaints/components/ComplaintCreateDialog.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: case-dashboard-view — 12 methods across 4 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/views/cases/widgets/CaseDocumentsWidget.vue` | `getFileIcon()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseDocumentsWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseDocumentsWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseDocumentsWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseDocumentsWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CasePropertiesWidget.vue` | `save()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CasePropertiesWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseTasksWidget.vue` | `dueDateClass()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseTasksWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseTasksWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseTimelineWidget.vue` | `onStatusSelected()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/widgets/CaseTimelineWidget.vue` | `if()` | REQ-CDV-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: case-management — 93 methods across 51 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Service/CaseEmailService.php` | `extractCaseNumber()` | REQ-CM-01 | 0.75 ⚠️ NEEDS-REVIEW | name+path keyword match | +| `lib/Service/CaseEmailService.php` | `getTemplatesForCaseType()` | REQ-CM-01 | 0.75 ⚠️ NEEDS-REVIEW | name+path keyword match | +| `lib/Service/CaseEmailService.php` | `loadTemplate()` | REQ-CM-01 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/CaseEmailService.php` | `loadCaseData()` | REQ-CM-01 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/CaseEmailService.php` | `recordSentEmail()` | REQ-CM-01 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/CaseEmailService.php` | `recordReceivedEmail()` | REQ-CM-01 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/CaseEmailService.php` | `findCaseByIdentifier()` | REQ-CM-01 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `src/utils/caseHelpers.js` | `calculateDeadline()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `generateIdentifier()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `isCaseOverdue()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `isCaseDueToday()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `isCaseDueTomorrow()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `getCaseOverdueText()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `formatDeadlineCountdown()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `getDaysElapsed()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `getDaysRemaining()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `formatDate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseHelpers.js` | `formatDateShort()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseValidation.js` | `isCaseTypeUsable()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseValidation.js` | `getCaseTypeUnusableReason()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseValidation.js` | `validateCaseCreate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseValidation.js` | `validateCaseUpdate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseValidation.js` | `validateStatusChange()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/CaseCreateDialog.vue` | `loadCaseTypes()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/CaseDetail.vue` | `getTaskPriorityLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/CaseList.vue` | `loadCaseTypes()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/CaseList.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/CaseList.vue` | `for()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ActivityTimeline.vue` | `getIcon()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AddParticipantDialog.vue` | `submit()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AddParticipantDialog.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AdvicePanel.vue` | `defaultDeadline()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AdviceRequestPanel.vue` | `getStatusLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiAssistantPanel.vue` | `askQuestion()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiAssistantPanel.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiClassifyDialog.vue` | `classify()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiExtractDialog.vue` | `extract()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiSuggestionCard.vue` | `formatValue()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiSuggestionCard.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AiSummaryPanel.vue` | `generate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AppointmentBookingDialog.vue` | `loadSlots()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AppointmentBookingDialog.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/AppointmentSection.vue` | `loadAppointments()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/BerichtenboxComposeDialog.vue` | `validate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/BerichtenboxComposeDialog.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/BerichtenboxTab.vue` | `loadMessages()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/CaseTransferDialog.vue` | `submitTransfer()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ConsultationPanel.vue` | `getStatusLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/CreateShareDialog.vue` | `createShare()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/CustomPropertiesPanel.vue` | `loadData()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/DecisionsSection.vue` | `loadData()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/DocumentAssessmentPanel.vue` | `getAssessment()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/DocumentChecklist.vue` | `loadData()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EmailComposer.vue` | `onTemplateSelected()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EmailComposer.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EmailThread.vue` | `formatDateTime()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EmailThread.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EmailThread.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EnforcementPanel.vue` | `statusLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/EnforcementWizard.vue` | `submit()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/InspectionChecklistPanel.vue` | `startInspection()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/InspectionPanel.vue` | `resultLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/LocationTab.vue` | `loadAddress()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/LocationTab.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/MilestoneProgress.vue` | `stepClass()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ParticipantsSection.vue` | `fetchData()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/QuickStatusDropdown.vue` | `onStatusChange()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/QuickStatusDropdown.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ResultSection.vue` | `formatPeriod()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ResultSection.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ResultSection.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ResultSection.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/ShareTab.vue` | `permissionLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/StatusTimeline.vue` | `isPassed()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/SubCasesSection.vue` | `fetchSubCases()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/SubCasesSection.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/SubCasesSection.vue` | `for()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/TenantSwitcher.vue` | `switchTenant()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/TenantSwitcher.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/VoorstellenPanel.vue` | `loadVoorstellen()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/WooIntakeForm.vue` | `update()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/WorkflowTransitions.vue` | `loadWorkflow()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/WorkflowTransitions.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/WorkflowTransitions.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/beroep/BeroepEscalationPanel.vue` | `escalate()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/beroep/CourtProceedingsPanel.vue` | `getRulingLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/AdvisoryReportPanel.vue` | `getAdviceTypeLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/BezwaarDecisionForm.vue` | `getDispositionLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/BezwaarIntakeForm.vue` | `loadExistingObjection()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/BezwaarIntakeForm.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/BezwaarIntakeForm.vue` | `if()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/BezwaarTimeline.vue` | `getAdviceTypeLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/cases/components/bezwaar/HearingPanel.vue` | `getHearingStatusLabel()` | REQ-CM-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: case-map-overview — 5 methods across 2 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/views/CaseMapView.vue` | `loadData()` | REQ-OVERVIEW-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/CaseMapWidget.vue` | `getColor()` | REQ-OVERVIEW-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/CaseMapWidget.vue` | `if()` | REQ-OVERVIEW-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/CaseMapWidget.vue` | `if()` | REQ-OVERVIEW-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/CaseMapWidget.vue` | `if()` | REQ-OVERVIEW-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: case-types — 5 methods across 1 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/utils/caseTypeValidation.js` | `getOriginOptions()` | REQ-CT-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseTypeValidation.js` | `getConfidentialityOptions()` | REQ-CT-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseTypeValidation.js` | `validateCaseType()` | REQ-CT-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseTypeValidation.js` | `validateForPublish()` | REQ-CT-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/caseTypeValidation.js` | `getFieldLabel()` | REQ-CT-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: dashboard — 18 methods across 6 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/utils/dashboardHelpers.js` | `todayString()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `computeKpis()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `aggregateByStatus()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getOverdueCases()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getRecentActivity()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getMyWorkItems()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `endOfWeek()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getGroupedMyWorkItems()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getDeadlineAlerts()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getTaskDueReminders()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `getStalledCases()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/dashboardHelpers.js` | `formatRelativeTime()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/Dashboard.vue` | `loadDashboardData()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/Dashboard.vue` | `for()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/ActivityFeed.vue` | `typeIcon()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/StatusChart.vue` | `barWidth()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/CasesOverviewWidget.vue` | `onShow()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/StartCaseWidget.vue` | `fetchCaseTypes()` | REQ-DASH-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: doorlooptijd-dashboard — 25 methods across 5 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/MilestoneController.php` | `__construct()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestone endpoints | +| `lib/Controller/MilestoneController.php` | `progress()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestone endpoints | +| `lib/Controller/MilestoneController.php` | `mark()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestone endpoints | +| `lib/Controller/MilestoneController.php` | `reverse()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestone endpoints | +| `lib/Service/MilestoneService.php` | `__construct()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `getMilestones()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `getCaseProgress()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `markMilestone()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `reverseMilestone()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `getDurationAnalytics()` | REQ-006 | 0.8 ⚠️ NEEDS-REVIEW | explicit: Milestones = doorloop milestones | +| `lib/Service/MilestoneService.php` | `getMilestoneRecords()` | REQ-006 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `src/utils/doorlooptijdHelpers.js` | `parseDurationToDays()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `getProcessingDays()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `getSlaTargetDays()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `buildCaseTypeMap()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `computeSlaCompliance()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `computeProcessingTimeDistribution()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `computeMonthlyTrend()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `getAtRiskCases()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/doorlooptijdHelpers.js` | `computePerformanceTable()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/durationHelpers.js` | `isValidDuration()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/durationHelpers.js` | `parseDuration()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/durationHelpers.js` | `formatDuration()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/durationHelpers.js` | `getDurationError()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/DoorlooptijdDashboard.vue` | `loadData()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: inspection-checklists — 18 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/InspectionController.php` | `__construct()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `index()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `captureLocation()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `completeChecklistItem()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `addPhoto()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `complete()` | REQ-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection controller methods | +| `lib/Controller/InspectionController.php` | `getRequestBody()` | REQ-001 | 0.73 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ChecklistService.php` | `__construct()` | REQ-001 | 0.82 ⚠️ NEEDS-REVIEW | explicit: Checklist validation and progress | +| `lib/Service/ChecklistService.php` | `completeItem()` | REQ-001 | 0.82 ⚠️ NEEDS-REVIEW | explicit: Checklist validation and progress | +| `lib/Service/ChecklistService.php` | `getProgress()` | REQ-001 | 0.82 ⚠️ NEEDS-REVIEW | explicit: Checklist validation and progress | +| `lib/Service/ChecklistService.php` | `validateCompletion()` | REQ-001 | 0.82 ⚠️ NEEDS-REVIEW | explicit: Checklist validation and progress | +| `lib/Service/ChecklistService.php` | `getConformitySummary()` | REQ-001 | 0.82 ⚠️ NEEDS-REVIEW | explicit: Checklist validation and progress | +| `lib/Service/InspectionService.php` | `__construct()` | REQ-003 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection service methods | +| `lib/Service/InspectionService.php` | `getInspections()` | REQ-003 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection service methods | +| `lib/Service/InspectionService.php` | `captureLocation()` | REQ-003 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection service methods | +| `lib/Service/InspectionService.php` | `addPhoto()` | REQ-003 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection service methods | +| `lib/Service/InspectionService.php` | `completeInspection()` | REQ-003 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Inspection service methods | +| `lib/Service/InspectionService.php` | `calculateDistance()` | REQ-003 | 0.73 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | + +### capability: map-component — 9 methods across 5 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/components/map/AddressSearch.vue` | `onInput()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/AddressSearch.vue` | `if()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/CaseMap.vue` | `initMap()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/LocationPicker.vue` | `initMap()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/LocationPicker.vue` | `if()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/LocationPicker.vue` | `if()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/MapLayerSwitcher.vue` | `toggleLayer()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/MapLayerSwitcher.vue` | `if()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/components/map/SpatialFilter.vue` | `initDrawLayer()` | REQ-MAP-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: my-work — 5 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/views/MyWork.vue` | `getCaseTypeName()` | REQ-MYWORK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/Werkvoorraad.vue` | `loadData()` | REQ-MYWORK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/Werkvoorraad.vue` | `if()` | REQ-MYWORK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/Werkvoorraad.vue` | `if()` | REQ-MYWORK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/MyTasksWidget.vue` | `onShow()` | REQ-MYWORK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: openregister-integration — 2 methods across 1 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/utils/openregisterCheck.js` | `checkOpenRegisterStatus()` | REQ-OREG-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/openregisterCheck.js` | `getStatusMessage()` | REQ-OREG-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: parafeerroute-engine — 9 methods across 1 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/utils/parafeerEngine.js` | `getRouteSteps()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `getCurrentStep()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `isActiveActor()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `getNextStep()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `getStatusAfterAdvance()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `createRouteSnapshot()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `insertAdHocStep()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `markStepSkipped()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/parafeerEngine.js` | `findDefaultRoute()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: parafering-actions — 15 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/ParaferingController.php` | `__construct()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering controller | +| `lib/Controller/ParaferingController.php` | `startParafering()` | REQ-002 | 0.85 | explicit: Parafering route start | +| `lib/Controller/ParaferingController.php` | `paraferen()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering controller | +| `lib/Controller/ParaferingController.php` | `terugsturen()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering controller | +| `lib/Controller/ParaferingController.php` | `adviseren()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering controller | +| `lib/Controller/ParaferingController.php` | `auditTrail()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering controller | +| `lib/Service/ParaferingNotificationService.php` | `__construct()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering notifications — NEEDS-REVIEW specific REQ | +| `lib/Service/ParaferingNotificationService.php` | `notifyStepActivated()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering notifications — NEEDS-REVIEW specific REQ | +| `lib/Service/ParaferingNotificationService.php` | `notifyVoorstelReturned()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering notifications — NEEDS-REVIEW specific REQ | +| `lib/Service/ParaferingNotificationService.php` | `notifyParaferingReminder()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering notifications — NEEDS-REVIEW specific REQ | +| `lib/Service/ParaferingService.php` | `__construct()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering service — specific REQ per method deferred | +| `lib/Service/ParaferingService.php` | `startParafering()` | REQ-002 | 0.85 | explicit: Parafering route start | +| `lib/Service/ParaferingService.php` | `executeAction()` | REQ-002 | 0.85 | explicit: Parafering action execution | +| `lib/Service/ParaferingService.php` | `getCurrentStep()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering service — specific REQ per method deferred | +| `lib/Service/ParaferingService.php` | `overrideRoute()` | REQ-002 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Parafering service — specific REQ per method deferred | + +### capability: parafering-audit-trail — 1 methods across 1 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Service/ParaferingService.php` | `getAuditTrail()` | REQ-001 | 0.9 | explicit: Audit trail query | + +### capability: pdok-integration — 11 methods across 2 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/services/coordinateService.js` | `isRDCoordinate()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/coordinateService.js` | `rdToWgs84()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/coordinateService.js` | `wgs84ToRd()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/coordinateService.js` | `ensureWgs84()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/coordinateService.js` | `convertCoordinates()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `suggest()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `lookup()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `free()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `reverse()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `extractCoordinates()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/pdokService.js` | `formatAddress()` | REQ-PDOK-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: procest-app-scaffold — 13 methods across 6 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/AppInfo/Application.php` | `register()` | REQ-001 | 0.95 | explicit: Application::register = NC app registration boot (REQ-001) | +| `lib/AppInfo/Application.php` | `boot()` | REQ-001 | 0.95 | explicit: Application::boot = NC app boot hook | +| `lib/Controller/DashboardController.php` | `page()` | REQ-002 | 0.93 | explicit: Vue SPA entry point (REQ-002) | +| `lib/Repair/InitializeSettings.php` | `__construct()` | REQ-006 | 0.92 | explicit: Settings initialization on install | +| `lib/Repair/InitializeSettings.php` | `getName()` | REQ-006 | 0.92 | explicit: Settings initialization on install | +| `lib/Repair/InitializeSettings.php` | `run()` | REQ-006 | 0.92 | explicit: Settings initialization on install | +| `src/App.vue` | `onSidebarSearch()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/App.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/navigation/MainMenu.vue` | `openLink()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/i18nResolver.js` | `getUserLocale()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/i18nResolver.js` | `resolveTranslatable()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/i18nResolver.js` | `resolveField()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/i18nResolver.js` | `resolveText()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: procest-object-store — 5 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/store/modules/bezwaar.js` | `addWorkingDays()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/store/modules/bezwaar.js` | `addWeeks()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/store/modules/bezwaar.js` | `daysDifference()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/store/modules/workflow.js` | `generateUUID()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/store/store.js` | `initializeStores()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: prometheus-metrics — 19 methods across 2 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/HealthController.php` | `__construct()` | REQ-PROM-004 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Health endpoint helpers | +| `lib/Controller/HealthController.php` | `index()` | REQ-PROM-004 | 0.97 | explicit: /health endpoint | +| `lib/Controller/HealthController.php` | `checkDatabase()` | REQ-PROM-004 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/HealthController.php` | `checkOpenRegister()` | REQ-PROM-004 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/HealthController.php` | `checkFilesystem()` | REQ-PROM-004 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/HealthController.php` | `getAppVersion()` | REQ-PROM-004 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `__construct()` | REQ-PROM-001 | 0.83 ⚠️ NEEDS-REVIEW | explicit: Metrics endpoint helpers — private fall back here via Pass B | +| `lib/Controller/MetricsController.php` | `index()` | REQ-PROM-001 | 0.97 | explicit: /metrics endpoint | +| `lib/Controller/MetricsController.php` | `collectMetrics()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getCached()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `checkDatabaseHealth()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getCaseCounts()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getOverdueCasesCount()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getCasesCreatedTodayCount()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getTaskCounts()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getOverdueTasksCount()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getAppVersion()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `getNextcloudVersion()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/MetricsController.php` | `sanitizeLabel()` | REQ-PROM-001 | 0.87 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | + +### capability: roles-decisions — 3 methods across 1 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/utils/decisionHelpers.js` | `getDecisionValidity()` | REQ-ROLE-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/decisionHelpers.js` | `formatDecisionDate()` | REQ-ROLE-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/decisionHelpers.js` | `validateDecision()` | REQ-ROLE-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: signalering-widgets — 7 methods across 5 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/views/dashboard/OverduePanel.vue` | `severityClass()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/OverduePanel.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/dashboard/OverduePanel.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/DeadlineAlertsWidget.vue` | `onShow()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/OverdueCasesWidget.vue` | `onShow()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/StalledCasesWidget.vue` | `onShow()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/widgets/TaskRemindersWidget.vue` | `onShow()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: task-management — 27 methods across 7 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `src/services/taskApi.js` | `getHeaders()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/taskApi.js` | `mapCalDavPriority()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/taskApi.js` | `normalizeCalDavTask()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/taskApi.js` | `fetchTasksForObject()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/taskApi.js` | `fetchTasksForCases()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `getPriorityLevels()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `isOverdue()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `isDueToday()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `getOverdueText()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `formatDueDate()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `prioritySortWeight()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `statusGroupWeight()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskHelpers.js` | `sortTasks()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `getStatusLabels()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `getTransitionLabels()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `getAllowedTransitions()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `validateTransition()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `getStatusLabel()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `getTransitionLabel()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskLifecycle.js` | `isTerminalStatus()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskValidation.js` | `validateTaskCreate()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskValidation.js` | `validateTaskUpdate()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/utils/taskValidation.js` | `validateTaskTransition()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/tasks/TaskCreateDialog.vue` | `submit()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/tasks/TaskCreateDialog.vue` | `if()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/tasks/TaskDetail.vue` | `startEditing()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/tasks/TaskList.vue` | `getPriorityLabel()` | REQ-TASK-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: voorstel-management — 17 methods across 10 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/ParaferingController.php` | `createVoorstel()` | REQ-002 | 0.9 | explicit: Create voorstel from case | +| `lib/Controller/ParaferingController.php` | `handleAction()` | REQ-002 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ParaferingController.php` | `getRequestBody()` | REQ-002 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ParaferingService.php` | `createVoorstel()` | REQ-002 | 0.9 | explicit: Create voorstel from case | +| `lib/Service/ParaferingService.php` | `advanceStep()` | REQ-002 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ParaferingService.php` | `handleParallelStep()` | REQ-002 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ParaferingService.php` | `generateId()` | REQ-002 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `src/views/voorstellen/VoorstelDetail.vue` | `loadVoorstel()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/VoorstelList.vue` | `loadVoorstellen()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/AuditTrail.vue` | `formatAction()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/BesluitRegistration.vue` | `register()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/BesluitRegistration.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/ParafeerActionBar.vue` | `formatStepType()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/ParafeerInbox.vue` | `loadVoorstellen()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/ProgressTimeline.vue` | `isCompleted()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/VoorstelCreateDialog.vue` | `onCaseSelected()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/views/voorstellen/components/VoorstelCreateDialog.vue` | `if()` | REQ-001 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: vth-case-type-seed — 13 methods across 2 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Repair/SeedBezwaarBeroepData.php` | `__construct()` | REQ-001 | 0.92 | explicit: Seed repair step | +| `lib/Repair/SeedBezwaarBeroepData.php` | `getName()` | REQ-001 | 0.92 | explicit: Seed repair step | +| `lib/Repair/SeedBezwaarBeroepData.php` | `run()` | REQ-001 | 0.92 | explicit: Seed repair step | +| `lib/Service/SeedDataService.php` | `__construct()` | REQ-001 | 0.85 | explicit: Seed data service | +| `lib/Service/SeedDataService.php` | `seedBezwaarBeroepData()` | REQ-001 | 0.85 | explicit: Seed data service | +| `lib/Service/SeedDataService.php` | `seedCaseType()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `resolveWorkflowReferences()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `createObject()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `findByFilter()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `getObjectService()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `getConfigValue()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `getObjectId()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/SeedDataService.php` | `generateUUID()` | REQ-001 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | + +### capability: wms-wfs-layers — 8 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/GisProxyController.php` | `proxy()` | REQ-LAYER-03 | 0.93 | name+path keyword match | +| `lib/Service/GisProxyService.php` | `proxyRequest()` | REQ-LAYER-03 | 0.93 | name+path keyword match | +| `lib/Service/GisProxyService.php` | `isUrlAllowed()` | REQ-LAYER-03 | 0.83 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/GisProxyService.php` | `checkRateLimit()` | REQ-LAYER-03 | 0.83 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/GisProxyService.php` | `parseCapabilities()` | REQ-LAYER-03 | 0.83 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/GisProxyService.php` | `xmlToArray()` | REQ-LAYER-03 | 0.83 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `src/services/gisProxyService.js` | `proxyRequest()` | REQ-LAYER-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | +| `src/services/gisProxyService.js` | `getCapabilities()` | REQ-LAYER-01 | 0.78 ⚠️ NEEDS-REVIEW | frontend path-based capability match; specific REQ per method deferred | + +### capability: zgw-api-mapping — 236 methods across 12 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Controller/AcController.php` | `__construct()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `index()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `create()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `show()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `update()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `patch()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `destroy()` | REQ-007 | 0.85 | explicit: AcController=AC API | +| `lib/Controller/AcController.php` | `findConsumerByUuid()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `validateApplicatieBody()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `validateClientIdUniqueness()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `validateAutorisatieConsistency()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `validateAutorisatieScopes()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `scopesContain()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `getConsumerClientIds()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `consumerToApplicatie()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/AcController.php` | `applicatieToConsumer()` | REQ-007 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `__construct()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `index()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `create()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `show()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `update()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `patch()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `destroy()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `audittrailIndex()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `audittrailShow()` | REQ-006 | 0.92 | explicit: BrcController=BRC API, REQ-006 covers BRC mappability | +| `lib/Controller/BrcController.php` | `createBesluitWithZaakSync()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `syncZaakBesluitToZrc()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `indexBesluitInformatieObjecten()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `createBesluitInformatieObject()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `createOioInDrc()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `deleteOiosForBesluit()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `destroyBesluitInformatieObject()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `deleteOioByBesluitAndIo()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/BrcController.php` | `destroyBesluit()` | REQ-006 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `__construct()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `index()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `create()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `show()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `update()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `patch()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `destroy()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `download()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `lock()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `unlock()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `audittrailIndex()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `audittrailShow()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `uploadChunk()` | REQ-005 | 0.92 | explicit: DrcController=DRC API, REQ-005 covers DRC mappability | +| `lib/Controller/DrcController.php` | `indexFlatArray()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `lockFallback()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `unlockFallback()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `findOioRelationsForEio()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `searchRelationsInSchema()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `extractIdsFromResults()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `cascadeDeleteGebruiksrechten()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `updateIndicatieGebruiksrecht()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `getGebruiksrechtData()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `checkAndClearIndicatieGebruiksrecht()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `setIndicatieGebruiksrecht()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `enrichWithBestandsdelen()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `parseFileParts()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `buildBestandsdelenArray()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `handleEioUpdate()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `checkDocumentLock()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `resolveStoredLockId()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `storeLockIdInData()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/DrcController.php` | `clearLockIdInData()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/NrcController.php` | `__construct()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `index()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `create()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `show()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `update()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `patch()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `destroy()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `notificatieCreate()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `audittrailIndex()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/NrcController.php` | `audittrailShow()` | REQ-008 | 0.85 | explicit: NrcController=NRC API | +| `lib/Controller/ZgwMappingController.php` | `__construct()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZgwMappingController.php` | `index()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZgwMappingController.php` | `show()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZgwMappingController.php` | `update()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZgwMappingController.php` | `destroy()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZgwMappingController.php` | `reset()` | REQ-001 | 0.85 | explicit: ZGW mapping admin endpoints | +| `lib/Controller/ZrcController.php` | `__construct()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `index()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `create()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `show()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `update()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `patch()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `destroy()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenIndex()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenCreate()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenShow()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenUpdate()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenPatch()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakeigenschappenDestroy()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zaakbesluitenIndex()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `zoek()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `audittrailIndex()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `audittrailShow()` | REQ-003 | 0.92 | explicit: ZrcController=ZRC API, REQ-003 covers ZRC mappability | +| `lib/Controller/ZrcController.php` | `checkZaakReadAccess()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `filterZakenByAuthorisation()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `permissionDeniedResponse()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `preValidateZaakBody()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `preValidateProductenOfDiensten()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `destroyZaak()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `resolveZaakClosedForExisting()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `checkReopenScope()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `checkIndicatieGebruiksrechtBeforeClose()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `isEindstatusByVolgnummer()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `handleEindstatusEffect()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `setIndicatieGebruiksrechtOnClose()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `handleResultaatCreated()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `deriveArchiefactiedatum()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `resolveArchiveBaseDate()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `resolveEigenschapDate()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `resolveBesluitDate()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `enrichZioResponse()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `enrichZioJsonResponse()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `syncCreateObjectInformatieObject()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `getZioDataForOioSync()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZrcController.php` | `syncDeleteObjectInformatieObject()` | REQ-003 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `__construct()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `index()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `create()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `show()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `update()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `patch()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `destroy()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `publishZaaktype()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `publishBesluittype()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `publishInformatieobjecttype()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `audittrailIndex()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `audittrailShow()` | REQ-004 | 0.92 | explicit: ZtcController=ZTC API, REQ-004 covers ZTC mappability | +| `lib/Controller/ZtcController.php` | `resolveParentDraft()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `handlePublish()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `enrichCrossReferences()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `enrichBesluittype()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `enrichZaaktype()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `filterByDatumGeldigheid()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `filterValidUrls()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `isUrlValid()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Controller/ZtcController.php` | `resolveIotByOmschrijving()` | REQ-004 | 0.82 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `__construct()` | REQ-001 | 0.9 | explicit: Seeds default ZGW mappings on install | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getName()` | REQ-001 | 0.9 | explicit: Seeds default ZGW mappings on install | +| `lib/Repair/LoadDefaultZgwMappings.php` | `run()` | REQ-001 | 0.9 | explicit: Seeds default ZGW mappings on install | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getDefaultMappings()` | REQ-001 | 0.9 | explicit: Seeds default ZGW mappings on install | +| `lib/Repair/LoadDefaultZgwMappings.php` | `patchExistingMappings()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `tplUrl()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaakMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaakTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getStatusMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getStatusTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getResultaatMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getResultaatTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getRolMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getRolTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getEigenschapMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getBesluitMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getBesluitTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getInformatieObjectTypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getEnkelvoudigInformatieObjectMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getObjectInformatieObjectMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getGebruiksrechtenMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getKanaalMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getAbonnementMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getCatalogusMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaaktypeInformatieobjecttypeMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getApplicatieMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `createDefaultApplicaties()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getDefaultApplicaties()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `createDefaultKanalen()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getDefaultKanalen()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaakeigenschapMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaakinformatieobjectMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getZaakobjectMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getKlantcontactMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getBesluitinformatieobjectMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Repair/LoadDefaultZgwMappings.php` | `getVerzendingMapping()` | REQ-001 | 0.8 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwDocumentService.php` | `__construct()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `storeBase64()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `storeRaw()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `getContent()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `fileExists()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `deleteFiles()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `getMimeType()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `storeChunk()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `getUploadedChunks()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `mergeChunks()` | REQ-005 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW document handling (DRC mappability helpers) | +| `lib/Service/ZgwDocumentService.php` | `getDocumentFolder()` | REQ-005 | 0.72 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwDocumentService.php` | `getUserFolder()` | REQ-005 | 0.72 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwMappingService.php` | `__construct()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `getMapping()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `saveMapping()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `listMappings()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `deleteMapping()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `getResourceKeys()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `hasMapping()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwMappingService.php` | `resetToDefault()` | REQ-001 | 0.85 | explicit: Explicit mapping-layer service | +| `lib/Service/ZgwPaginationHelper.php` | `wrapResults()` | REQ-002 | 0.82 ⚠️ NEEDS-REVIEW | explicit: ZGW pagination helper — covers REQ-002 endpoint system | +| `lib/Service/ZgwService.php` | `__construct()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getObjectService()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getConsumerMapper()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getZgwMappingService()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getPaginationHelper()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getDocumentService()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getBusinessRulesService()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getLogger()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `loadMappingConfig()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `translateQueryParams()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `createOutboundMapping()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `createInboundMapping()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `applyOutboundMapping()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `applyInboundMapping()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getRequestBody()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `resolvePathUuid()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `updateCachedBodyField()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `buildBaseUrl()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `validateJwtAuth()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `consumerHasScope()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `getConsumerAuthorisaties()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `publishNotification()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `buildValidationError()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `unavailableResponse()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `mappingNotFoundResponse()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleIndex()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleCreate()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleShow()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleUpdate()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleDestroy()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleAudittrailIndex()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `handleAudittrailShow()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `resolveZaakClosed()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `resolveZaakClosedFromBody()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `resolveParentZaaktypeDraft()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `resolveParentZaaktypeDraftFromBody()` | REQ-002 | 0.85 | explicit: Central ZGW orchestrator — REQ-by-REQ mapping deferred to annotate | +| `lib/Service/ZgwService.php` | `mapAuditTrailToZgw()` | REQ-002 | 0.75 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | + +### capability: zgw-business-rules-compliance — 44 methods across 3 files + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| `lib/Service/ZgwBusinessRulesService.php` | `__construct()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Business rules dispatcher — routes to *RulesService | +| `lib/Service/ZgwBusinessRulesService.php` | `validate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: Business rules dispatcher — routes to *RulesService | +| `lib/Service/ZgwBusinessRulesService.php` | `dispatchToRegister()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwBusinessRulesService.php` | `dispatchZrc()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwBusinessRulesService.php` | `dispatchZtc()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwBusinessRulesService.php` | `dispatchDrc()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwBusinessRulesService.php` | `dispatchBrc()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwBusinessRulesService.php` | `isValid()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `__construct()` | ZRC-007 | 0.75 ⚠️ NEEDS-REVIEW | explicit: Rules base class — shared helpers inherited by all rules services | +| `lib/Service/ZgwRulesBase.php` | `setContext()` | ZRC-007 | 0.75 ⚠️ NEEDS-REVIEW | explicit: Rules base class — shared helpers inherited by all rules services | +| `lib/Service/ZgwRulesBase.php` | `isValid()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `error()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `fieldError()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `fieldImmutableError()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `extractUuid()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `isValidUrl()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `validateTypeUrl()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `validateInformatieobjectUrl()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `validateExternalUrl()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `fetchExternalUrl()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `generateIdentificatie()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `findObjectByField()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `findAllObjectsByField()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `findBySchemaKey()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwRulesBase.php` | `checkFieldUniqueness()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZakenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZakenUpdate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZakenPatch()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesStatussenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesResultatenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesRollenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZaakinformatieobjectenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZaakinformatieobjectenUpdate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZaakinformatieobjectenPatch()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `rulesZaakeigenschappenCreate()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `detectEindstatus()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `filterZakenForConsumer()` | ZRC-007 | 0.78 ⚠️ NEEDS-REVIEW | explicit: ZRC rules service — specific ZRC-NNN REQ per method requires readin... | +| `lib/Service/ZgwZrcRulesService.php` | `deriveVertrouwelijkheidaanduiding()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `validateSubResourceType()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `validateZioInformatieobjecttype()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `validateZaakFields()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `validateHoofdzaakNesting()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `validateProductenOfDiensten()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | +| `lib/Service/ZgwZrcRulesService.php` | `checkZioImmutability()` | ZRC-007 | 0.7 ⚠️ NEEDS-REVIEW | Pass B — inherited from public sibling in same class | + +## Bucket 2a — Existing capability, no REQ (reverse-spec --extend) + +### cluster: zgw-business-rules-compliance (39 methods) → `/opsx-reverse-spec procest --extend zgw-business-rules-compliance` + +- `lib/Service/ZgwBrcRulesService.php` — 10 methods: `rulesBesluitenCreate()`, `rulesBesluitenUpdate()`, `rulesBesluitenPatch()`, `rulesBesluitinformatieobjectenCreate()`, `checkBesluitTypeImmutability()`, `checkBesluitFieldImmutability()`, `preserveImmutableBesluitFields()`, `checkBesluitIdentificatieUnique()` + 2 more +- `lib/Service/ZgwDrcRulesService.php` — 13 methods: `rulesEnkelvoudiginformatieobjectenCreate()`, `rulesEnkelvoudiginformatieobjectenUpdate()`, `rulesEnkelvoudiginformatieobjectenPatch()`, `rulesEnkelvoudiginformatieobjectenDestroy()`, `rulesObjectinformatieobjectenCreate()`, `findOioRelationsForDocument()`, `validateIndicatieGebruiksrechtTrue()`, `validateObjectUrl()` + 5 more +- `lib/Service/ZgwZtcRulesService.php` — 16 methods: `checkConceptProtection()`, `defaultConcept()`, `preserveConcept()`, `rulesZaaktypenCreate()`, `rulesBesluittypenCreate()`, `rulesZaaktypeinformatieobjecttypenCreate()`, `rulesResultaattypenCreate()`, `checkDirectConceptProtection()` + 8 more + +### cluster: zgw-api-mapping (13 methods) → `/opsx-reverse-spec procest --extend zgw-api-mapping` + +- `lib/Middleware/ZgwAuthException.php::getStatusCode()` — Exception type for ZgwAuthMiddleware +- `lib/Middleware/ZgwAuthMiddleware.php` — 8 methods: `beforeController()`, `afterException()`, `isConfidentialityAllowed()`, `loadOpenRegisterServices()`, `enforceScopes()`, `scopeGrantCovers()`, `decodeJwtPayload()`, `findConsumerByIssuer()` +- `lib/Service/NotificatieService.php::publish()` — NotificatieService::publish() +- `lib/Service/NotificatieService.php::loadOpenRegisterServices()` — NotificatieService::loadOpenRegisterServices() +- `lib/Service/NotificatieService.php::deliver()` — NotificatieService::deliver() +- `lib/Service/NotificatieService.php::deliverToSubscription()` — NotificatieService::deliverToSubscription() + +### cluster: admin-settings (12 methods) → `/opsx-reverse-spec procest --extend admin-settings` + +- `lib/Controller/SettingsController.php::getObjectService()` — SettingsController::getObjectService() +- `lib/Controller/SettingsController.php::getConfigurationService()` — SettingsController::getConfigurationService() +- `lib/Controller/SettingsController.php::index()` — SettingsController::index() +- `lib/Controller/SettingsController.php::create()` — SettingsController::create() +- `lib/Controller/SettingsController.php::load()` — SettingsController::load() +- `lib/Service/SettingsService.php` — 7 methods: `isOpenRegisterAvailable()`, `loadConfiguration()`, `getSettings()`, `updateSettings()`, `getConfigValue()`, `setConfigValue()`, `autoConfigureAfterImport()` + +### cluster: workflow-import-export (11 methods) → `/opsx-reverse-spec procest --extend workflow-import-export` + +- `lib/Controller/CaseDefinitionController.php::export()` — CaseDefinitionController::export() +- `lib/Controller/CaseDefinitionController.php::validate()` — CaseDefinitionController::validate() +- `lib/Controller/CaseDefinitionController.php::import()` — CaseDefinitionController::import() +- `lib/Service/CaseDefinitionExportService.php::exportCaseDefinition()` — CaseDefinitionExportService::exportCaseDefinition() +- `lib/Service/CaseDefinitionExportService.php::buildManifest()` — CaseDefinitionExportService::buildManifest() +- `lib/Service/CaseDefinitionExportService.php::exportComponent()` — CaseDefinitionExportService::exportComponent() +- `lib/Service/CaseDefinitionExportService.php::incrementVersion()` — CaseDefinitionExportService::incrementVersion() +- `lib/Service/CaseDefinitionImportService.php::validatePackage()` — CaseDefinitionImportService::validatePackage() +- `lib/Service/CaseDefinitionImportService.php::importCaseDefinition()` — CaseDefinitionImportService::importCaseDefinition() +- `lib/Service/CaseDefinitionImportService.php::importComponent()` — CaseDefinitionImportService::importComponent() +- `lib/Service/CaseDefinitionImportService.php::importWorkflows()` — CaseDefinitionImportService::importWorkflows() + +### cluster: advice-management (10 methods) → `/opsx-reverse-spec procest --extend advice-management` + +- `lib/Controller/ConsultationController.php::index()` — ConsultationController::index() +- `lib/Controller/ConsultationController.php::create()` — ConsultationController::create() +- `lib/Controller/ConsultationController.php::updateStatus()` — ConsultationController::updateStatus() +- `lib/Controller/ConsultationController.php::submitResponse()` — ConsultationController::submitResponse() +- `lib/Controller/ConsultationController.php::overdue()` — ConsultationController::overdue() +- `lib/Service/ConsultationService.php::createConsultation()` — ConsultationService::createConsultation() +- `lib/Service/ConsultationService.php::getConsultationsForCase()` — ConsultationService::getConsultationsForCase() +- `lib/Service/ConsultationService.php::updateStatus()` — ConsultationService::updateStatus() +- `lib/Service/ConsultationService.php::submitResponse()` — ConsultationService::submitResponse() +- `lib/Service/ConsultationService.php::getOverdueConsultations()` — ConsultationService::getOverdueConsultations() + +### cluster: case-management (9 methods) → `/opsx-reverse-spec procest --extend case-management` + +- `lib/Controller/EmailController.php::send()` — EmailController::send() +- `lib/Controller/EmailController.php::sendFromTemplate()` — EmailController::sendFromTemplate() +- `lib/Controller/EmailController.php::preview()` — EmailController::preview() +- `lib/Controller/EmailController.php::templates()` — EmailController::templates() +- `lib/Service/CaseEmailService.php::sendEmail()` — CaseEmailService::sendEmail() +- `lib/Service/CaseEmailService.php::sendFromTemplate()` — CaseEmailService::sendFromTemplate() +- `lib/Service/CaseEmailService.php::resolveVariables()` — CaseEmailService::resolveVariables() +- `lib/Service/CaseEmailService.php::findUnresolvedVariables()` — CaseEmailService::findUnresolvedVariables() +- `lib/Service/CaseEmailService.php::processInbound()` — CaseEmailService::processInbound() + +### cluster: wms-wfs-layers (2 methods) → `/opsx-reverse-spec procest --extend wms-wfs-layers` + +- `lib/Controller/GisProxyController.php::capabilities()` — GisProxyController::capabilities() +- `lib/Service/GisProxyService.php::getCapabilities()` — GisProxyService::getCapabilities() + +## Bucket 2b — No capability owner (reverse-spec --cluster) + +### cluster: ai-assistant (43 methods) → `/opsx-reverse-spec procest --cluster ai-assistant` + +- `lib/Controller/AiController.php` — 12 methods: `classify()`, `extract()`, `ask()`, `summarize()`, `suggestRouting()`, `suggestNext()`, `recordAction()`, `auditIndex()` + 4 more +- `lib/Service/AiService.php` — 21 methods: `isEnabled()`, `isFeatureEnabled()`, `classifyDocument()`, `extractData()`, `askQuestion()`, `summarize()`, `suggestRouting()`, `suggestNextStep()` + 13 more +- `src/services/aiApi.js` — 10 methods: `classifyDocument()`, `extractData()`, `askQuestion()`, `summarize()`, `suggestRouting()`, `suggestNext()`, `getAuditLog()`, `getAiSettings()` + 2 more + +### cluster: appointments (35 methods) → `/opsx-reverse-spec procest --cluster appointments` + +- `lib/BackgroundJob/AppointmentReminderJob.php::run()` +- `lib/Controller/AppointmentController.php::index()` +- `lib/Controller/AppointmentController.php::create()` +- `lib/Controller/AppointmentController.php::cancel()` +- `lib/Controller/AppointmentController.php::noShow()` +- `lib/Controller/AppointmentController.php::timeslots()` +- `lib/Controller/PublicAppointmentController.php::view()` +- `lib/Controller/PublicAppointmentController.php::cancel()` +- `lib/Service/AppointmentBackend/JccBackend.php::getTimeslots()` +- `lib/Service/AppointmentBackend/JccBackend.php::bookAppointment()` +- `lib/Service/AppointmentBackend/JccBackend.php::cancelAppointment()` +- `lib/Service/AppointmentBackend/JccBackend.php::rescheduleAppointment()` +- `lib/Service/AppointmentBackend/LocalBackend.php::getTimeslots()` +- `lib/Service/AppointmentBackend/LocalBackend.php::bookAppointment()` +- `lib/Service/AppointmentBackend/LocalBackend.php::cancelAppointment()` +- `lib/Service/AppointmentBackend/LocalBackend.php::rescheduleAppointment()` +- `lib/Service/AppointmentBackend/QmaticBackend.php::getTimeslots()` +- `lib/Service/AppointmentBackend/QmaticBackend.php::bookAppointment()` +- `lib/Service/AppointmentBackend/QmaticBackend.php::cancelAppointment()` +- `lib/Service/AppointmentBackend/QmaticBackend.php::rescheduleAppointment()` +- `lib/Service/AppointmentService.php` — 8 methods: `getTimeslots()`, `bookAppointment()`, `cancelAppointment()`, `markNoShow()`, `getAppointmentsForCase()`, `getAppointmentByToken()`, `getBackend()`, `getObjectService()` +- `src/services/appointmentApi.js::listAppointments()` +- `src/services/appointmentApi.js::bookAppointment()` +- `src/services/appointmentApi.js::cancelAppointment()` +- `src/services/appointmentApi.js::markNoShow()` +- `src/services/appointmentApi.js::getTimeslots()` +- `src/views/public/PublicAppointmentPage.vue::formatDateTime()` +- `src/views/public/PublicAppointmentPage.vue::if()` + +### cluster: case-sharing (29 methods) → `/opsx-reverse-spec procest --cluster case-sharing` + +- `lib/BackgroundJob/ShareMaintenanceJob.php::run()` +- `lib/Controller/CaseSharingController.php::listShares()` +- `lib/Controller/CaseSharingController.php::createShare()` +- `lib/Controller/CaseSharingController.php::revokeShare()` +- `lib/Controller/CaseSharingController.php::initiateTransfer()` +- `lib/Controller/CaseSharingController.php::handleTransfer()` +- `lib/Controller/PublicShareController.php::accessShare()` +- `lib/Controller/PublicShareController.php::addComment()` +- `lib/Controller/PublicShareController.php::viewStatus()` +- `lib/Controller/PublicShareController.php::loadCaseData()` +- `lib/Service/CaseSharingService.php` — 11 methods: `generateToken()`, `createTokenShare()`, `createPartnerShare()`, `getSharesByCase()`, `revokeShare()`, `validateToken()`, `getFilteredCaseData()`, `maskBsn()` + 3 more +- `lib/Service/CaseTransferService.php::initiateTransfer()` +- `lib/Service/CaseTransferService.php::acceptTransfer()` +- `lib/Service/CaseTransferService.php::rejectTransfer()` +- `lib/Service/CaseTransferService.php::getObjectService()` +- `src/views/public/PublicCaseView.vue::loadShareData()` +- `src/views/public/PublicCaseView.vue::if()` +- `src/views/public/PublicStatusPage.vue::loadStatus()` +- `src/views/public/PublicStatusPage.vue::if()` + +### cluster: stuf-protocol (29 methods) → `/opsx-reverse-spec procest --cluster stuf-protocol` + +- `lib/Controller/StufController.php` — 10 methods: `zaken()`, `personen()`, `handleSoapMessage()`, `handleZakLk01()`, `handleZakLv01()`, `handleNpsLv01()`, `handleEdcLk01()`, `handleUnknownMessage()` + 2 more +- `lib/Service/StufFieldMappingService.php` — 13 methods: `mapZknToInternal()`, `mapInternalToZkn()`, `mapBgToInternal()`, `mapInternalToBg()`, `stufDateToIso()`, `isoToStufDate()`, `isoToStufDateTime()`, `confidentialityToInternal()` + 5 more +- `lib/Service/StufMessageBuilder.php::buildSoapEnvelope()` +- `lib/Service/StufMessageBuilder.php::buildStuurgegevens()` +- `lib/Service/StufMessageBuilder.php::buildBv01()` +- `lib/Service/StufMessageBuilder.php::buildFo01()` +- `lib/Service/StufMessageBuilder.php::buildSoapFault()` +- `lib/Service/StufMessageBuilder.php::generateUuid()` + +### cluster: multi-tenancy (24 methods) → `/opsx-reverse-spec procest --cluster multi-tenancy` + +- `lib/Controller/TenantController.php::index()` +- `lib/Controller/TenantController.php::create()` +- `lib/Controller/TenantController.php::provision()` +- `lib/Controller/TenantController.php::usage()` +- `lib/Controller/TenantController.php::current()` +- `lib/Controller/TenantController.php::isPlatformAdmin()` +- `lib/Middleware/TenantMiddleware.php::beforeController()` +- `lib/Middleware/TenantMiddleware.php::afterException()` +- `lib/Service/TenantService.php` — 9 methods: `getTenantForUser()`, `getTenantByGroupId()`, `createTenant()`, `provisionTenant()`, `getResourceUsage()`, `isUserInTenant()`, `isPlatformAdmin()`, `slugify()` + 1 more +- `src/services/tenantApi.js` — 7 methods: `listTenants()`, `createTenant()`, `getTenant()`, `updateTenant()`, `provisionTenant()`, `getTenantUsage()`, `getCurrentTenant()` + +### cluster: leges (21 methods) → `/opsx-reverse-spec procest --cluster leges` + +- `lib/Controller/LegesController.php::calculate()` +- `lib/Controller/LegesController.php::recalculate()` +- `lib/Controller/LegesController.php::verrekening()` +- `lib/Controller/LegesController.php::teruggaaf()` +- `lib/Controller/LegesController.php::export()` +- `lib/Service/LegesCalculationService.php` — 10 methods: `calculate()`, `recalculate()`, `calculateVerrekening()`, `calculateTeruggaaf()`, `calculateArtikel()`, `calculateVast()`, `calculatePercentage()`, `calculateStaffel()` + 2 more +- `lib/Service/LegesExportService.php::export()` +- `lib/Service/LegesExportService.php::exportCSV()` +- `lib/Service/LegesExportService.php::exportASCII()` +- `lib/Service/LegesExportService.php::exportXML()` +- `lib/Service/LegesExportService.php::flattenBerekening()` +- `lib/Service/LegesExportService.php::addXmlElement()` + +### cluster: berichtenbox (17 methods) → `/opsx-reverse-spec procest --cluster berichtenbox` + +- `lib/BackgroundJob/BerichtenboxReadStatusJob.php::run()` +- `lib/Controller/BerichtenboxController.php::send()` +- `lib/Controller/BerichtenboxController.php::messages()` +- `lib/Controller/BerichtenboxController.php::poll()` +- `lib/Service/BerichtenboxAdapter/MockAdapter.php::sendMessage()` +- `lib/Service/BerichtenboxAdapter/MockAdapter.php::getReadStatus()` +- `lib/Service/BerichtenboxService.php` — 7 methods: `sendMessage()`, `getMessagesForCase()`, `pollReadStatus()`, `validateBsn()`, `validateMessage()`, `getAdapter()`, `getObjectService()` +- `src/services/berichtenboxApi.js::sendMessage()` +- `src/services/berichtenboxApi.js::listMessages()` +- `src/services/berichtenboxApi.js::getTypeCodes()` +- `src/services/berichtenboxApi.js::pollReadStatus()` + +### cluster: templates (6 methods) → `/opsx-reverse-spec procest --cluster templates` + +- `lib/Controller/TemplateController.php::index()` +- `lib/Controller/TemplateController.php::show()` +- `lib/Controller/TemplateController.php::activate()` +- `lib/Service/TemplateLibraryService.php::listTemplates()` +- `lib/Service/TemplateLibraryService.php::loadTemplate()` +- `lib/Service/TemplateLibraryService.php::activateTemplate()` + +### cluster: dso-intake (2 methods) → `/opsx-reverse-spec procest --cluster dso-intake` + +- `lib/Service/DsoIntakeService.php::processAanvraag()` +- `lib/Service/DsoIntakeService.php::getDeadlineDuration()` + +## Bucket 3 — Surfaced for human triage + +### 3a — possibly broken + +*Skipped this run — `git log -S` heuristic was noisy on a greenfield-over-specs codebase. Every unmatched REQ collapses to 3b with a note.* + +### 3b — never implemented (73 REQs in 19 untouched capabilities) + +*These are REQs in capabilities where **zero** methods landed in Bucket 1. They're likely unimplemented — not just unmatched.* + +#### advice-management (3 REQs) + +- `REQ-001` — Advice request schema +- `REQ-002` — Advice panel on case dashboard +- `REQ-003` — Advice request form + +#### automatic-actions (2 REQs) + +- `REQ-001` — Automatic Action Framework +- `REQ-002` — Action Execution Error Handling + +#### beroep-escalation (5 REQs) + +- `REQ-001` — Beroep Case Type Pre-Seeded Configuration +- `REQ-002` — Beroep Status Types +- `REQ-003` — Escalation from Bezwaar to Beroep +- `REQ-004` — Court Proceedings Document Management +- `REQ-005` — Hoger Beroep Awareness + +#### bezwaar-advisory-committee (2 REQs) + +- `REQ-001` — Advisory Committee Report Schema +- `REQ-002` — Committee Composition Tracking + +#### bezwaar-decision (3 REQs) + +- `REQ-001` — Decision on Objection Schema +- `REQ-002` — Decision Notification +- `REQ-003` — Heroverweging (Full Reconsideration) + +#### bezwaar-hearing (3 REQs) + +- `REQ-001` — Hearing Session Management +- `REQ-002` — Hearing Waiver (Afzien van Hoorrecht) +- `REQ-003` — Hearing Participants and Access Rights + +#### case-location (4 REQs) + +- `REQ-LOC-01` — Case Detail Map Tab +- `REQ-LOC-02` — Location Picker +- `REQ-LOC-03` — Address Display and Reverse Geocoding +- `REQ-LOC-04` — Case Creation Location + +#### deelzaak-support (6 REQs) + +- `REQ-001` — Sub-case creation from parent case +- `REQ-002` — Sub-cases section on parent case detail +- `REQ-003` — Parent case breadcrumb navigation +- `REQ-004` — Sub-case progress roll-up on parent case +- `REQ-005` — Sub-case count in case list +- `REQ-006` — Sub-case deletion protection + +#### enforcement-lhs (4 REQs) + +- `REQ-001` — LHS matrix configuration +- `REQ-002` — Enforcement action schema +- `REQ-003` — Enforcement wizard +- `REQ-004` — Enforcement panel on case dashboard + +#### parafering-dashboard (4 REQs) + +- `REQ-001` — Secretariaat Parafering Overview +- `REQ-002` — Personal Parafering Inbox +- `REQ-003` — Send Parafering Reminder +- `REQ-004` — Voorstel List Navigation + +#### process-step-configuration (2 REQs) + +- `REQ-001` — Process Step CRUD within Workflow +- `REQ-002` — Step-to-Task Mapping at Runtime + +#### procest-case-management (13 REQs) + +- `REQ-001` — 1: Register and schemas MUST be auto-configured on install +- `REQ-002` — 2: Cases list view MUST display paginated, searchable case overview +- `REQ-003` — 3: Case create dialog MUST support type-driven case creation +- `REQ-004` — 4: Case detail view MUST display full case information with related data +- `REQ-005` — 5: Status lifecycle MUST support configurable status flows with mandatory result on closure +- `REQ-006` — 6: Deadline and timing MUST support processing deadlines with extensions +- `REQ-007` — 7: Tasks MUST be manageable within case context +- `REQ-008` — 8: Participants MUST be manageable per case +- `REQ-009` — 9: Activity timeline MUST record all case events +- `REQ-010` — 10: Case type administration MUST support configuring case types +- `REQ-011` — 11: Navigation MUST include all primary views +- `REQ-012` — 12: Dashboard MUST provide overview metrics and quick access +- `REQ-013` — 13: ZGW API compatibility MUST be maintained + +#### role-based-step-routing (3 REQs) + +- `REQ-001` — Role-Based Step Visibility +- `REQ-002` — Role-Based Transition Access +- `REQ-003` — Workflow Inheritance for Role Configuration + +#### status-transition-engine (3 REQs) + +- `REQ-001` — Guard Evaluation Engine +- `REQ-002` — Transition Execution +- `REQ-003` — Available Transitions for Current User + +#### visual-workflow-editor (3 REQs) + +- `REQ-001` — Drag-and-Drop Workflow Canvas +- `REQ-002` — Workflow Editor Validation +- `REQ-003` — Step Configuration Panel + +#### vth-workflow-templates (4 REQs) + +- `REQ-001` — Omgevingsvergunning workflow template +- `REQ-002` — Toezichtzaak workflow template +- `REQ-003` — Handhavingszaak workflow template +- `REQ-004` — VTH workflow template library + +#### workflow-definition-model (5 REQs) + +- `REQ-001` — Workflow Template Data Model +- `REQ-002` — Workflow Step Data Model +- `REQ-003` — Status Transition Data Model +- `REQ-004` — Pre-Seeded Bezwaar Workflow Template +- `REQ-005` — Pre-Seeded Beroep Workflow Template + +#### workflow-import-export (2 REQs) + +- `REQ-001` — Export Workflow Template +- `REQ-002` — Import Workflow Template + +#### zaaktype-versioning (2 REQs) + +- `REQ-001` — Workflow Template Versioning +- `REQ-002` — Case-to-Workflow-Version Binding + +## Bucket 4 — ADR conformance findings + +### missing `@license` in file docblock (13 files) + +- `lib/BackgroundJob/AppointmentReminderJob.php` +- `lib/BackgroundJob/BerichtenboxReadStatusJob.php` +- `lib/Controller/AppointmentController.php` +- `lib/Controller/BerichtenboxController.php` +- `lib/Controller/PublicAppointmentController.php` +- `lib/Service/AppointmentBackend/AppointmentBackendInterface.php` +- `lib/Service/AppointmentBackend/JccBackend.php` +- `lib/Service/AppointmentBackend/LocalBackend.php` +- `lib/Service/AppointmentBackend/QmaticBackend.php` +- `lib/Service/AppointmentService.php` +- `lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php` +- `lib/Service/BerichtenboxAdapter/MockAdapter.php` +- `lib/Service/BerichtenboxService.php` + +### missing `@copyright` in file docblock (13 files) + +Same 13 files — both `@license` and `@copyright` missing together (appointments + berichtenbox clusters). + +### missing `@spec` in file docblock (89 of 89 files) + +Expected — this is exactly what retrofit fixes. Not a separate finding. + +### forbidden debug helpers — 0 hits ✓ + +### direct SQL — 0 files ✓ (ADR-001 compliant) + +## Notes for the human reviewer + +- case-management/spec.md has duplicated REQ blocks (pilot noted lines 63-945 vs 1013-1946). Pre-retrofit cleanup recommended; counted 45 REQ headings but ~22 are unique. +- Frontend (Vue/TS) classification is file-level — every method in a mapped view inherits the capability's first REQ with confidence 0.78 NEEDS-REVIEW. Specific REQ per method requires reading the component body during /opsx-annotate. +- Large ZGW controllers and rules services (ZrcController 39 methods, ZgwService 37, ZgwZrcRulesService 19) are bucketed via explicit file-level overrides to zgw-api-mapping / zgw-business-rules-compliance. Per-method REQ assignment deferred to annotate. +- Bucket 2b cluster 'workflow-import-export' is tentative — a workflow-import-export spec exists (2 REQs) but my classifier kept CaseDefinition* files in 2a until human confirms scope overlap. +- zgw-business-rules-compliance spec only covers ZRC rules (11 REQs). Methods in ZgwDrcRulesService, ZgwZtcRulesService, ZgwBrcRulesService landed in Bucket 2a — they extend the capability but have no matching REQ in the spec. +- Bucket 3b is computed conservatively: only REQs in capabilities that have ZERO Bucket 1 methods are marked unimplemented. REQs in 'touched' capabilities (admin-settings, case-management, etc.) are assumed implemented but not precisely mapped — their specific REQ-to-method assignment is deferred to /opsx-annotate. +- 3a classification disabled — git log -S heuristic was unreliable on this greenfield-over-specs codebase; every untouched REQ collapsed to 3b with a note. diff --git a/openspec/coverage-report.pilot.json b/openspec/coverage-report.pilot.json new file mode 100644 index 00000000..fc5d18af --- /dev/null +++ b/openspec/coverage-report.pilot.json @@ -0,0 +1,197 @@ +{ + "generated_at": "2026-04-20T00:00:00Z", + "app": "procest", + "branch": "fix/header-info-email-phpcs", + "scanner_version": "1-pilot", + "scope": { + "php": "lib/**/*.php (89 files scanned)", + "frontend": "deferred — src/**/*.{vue,ts,js} (184 files) not yet scanned", + "python": "not applicable (procest is PHP)", + "classification_depth": "file-level primary, method-level only for Bucket 1 representative examples" + }, + "req_inventory_summary": { + "total_specs": 46, + "req_numbered_specs": 15, + "req_numbered_count": 183, + "requirement_named_specs": 31, + "requirement_named_count": 160, + "total_requirements": 343, + "notes": "case-management/spec.md has duplicated REQ blocks; treated as 22 unique. Requirement-named specs need synthesized IDs." + }, + "buckets": { + "annotated": [], + "plumbing": [ + {"file": "lib/Dashboard/CasesOverviewWidget.php", "reason": "IWidget boilerplate (getId/Title/Order/IconClass/Url)"}, + {"file": "lib/Dashboard/DeadlineAlertsWidget.php", "reason": "IWidget boilerplate"}, + {"file": "lib/Dashboard/MyTasksWidget.php", "reason": "IWidget boilerplate"}, + {"file": "lib/Dashboard/OverdueCasesWidget.php", "reason": "IWidget boilerplate"}, + {"file": "lib/Dashboard/StalledCasesWidget.php", "reason": "IWidget boilerplate"}, + {"file": "lib/Dashboard/StartCaseWidget.php", "reason": "IWidget boilerplate"}, + {"file": "lib/Dashboard/TaskRemindersWidget.php", "reason": "IWidget boilerplate — note: load() bodies contain real logic and should be Bucket 1 (dashboard#REQ-DASH-015); only getId/Title/etc are plumbing"}, + {"file": "lib/Middleware/ZgwAuthException.php", "reason": "exception class with getStatusCode()"}, + {"file": "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", "reason": "interface declaration only"}, + {"file": "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php", "reason": "interface declaration only"} + ], + "bucket_1": [ + {"file": "lib/Settings/AdminSettings.php", "capability": "admin-settings", "req": "REQ-ADMIN-001", "methods": ["getForm", "getSection", "getPriority", "getScope"], "confidence": 0.95, "signal": "direct Nextcloud ISettings implementation; spec cites AdminSettings class"}, + {"file": "lib/Sections/SettingsSection.php", "capability": "admin-settings", "req": "REQ-ADMIN-001", "methods": ["getID", "getName", "getPriority", "getIcon"], "confidence": 0.95, "signal": "spec cites SettingsSection class directly"}, + {"file": "lib/Controller/SettingsController.php", "capability": "admin-settings", "req": "REQ-ADMIN-014", "methods": ["getSettings", "updateSettings"], "confidence": 0.82, "needs_review": true, "signal": "settings endpoints but spec is UI-focused"}, + {"file": "lib/Controller/ZrcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping#Requirement-1..6", "methods": ["index", "create", "show", "update", "patch", "destroy"], "confidence": 0.92, "signal": "ZrcController = ZGW Zaakregistratiecomponent; REST verbs match spec"}, + {"file": "lib/Controller/ZtcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping ZTC requirements", "methods": ["(6 CRUD + 6 ZTC-specific publics)"], "confidence": 0.92, "signal": "ZtcController = Zaaktypecatalogus"}, + {"file": "lib/Controller/DrcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping DRC requirements", "methods": ["index", "create", "show", "update", "patch", "destroy", "download", "lock", "unlock", "audittrailIndex", "audittrailShow", "uploadChunk"], "confidence": 0.92, "signal": "DrcController = Documentregistratie"}, + {"file": "lib/Controller/BrcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping BRC requirements", "methods": ["index", "create", "show", "update", "patch", "destroy", "audittrailIndex", "audittrailShow"], "confidence": 0.92, "signal": "BrcController = Besluitregistratie"}, + {"file": "lib/Controller/NrcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping NRC requirements", "methods": "(10 publics)", "confidence": 0.90, "signal": "NRC = Notificatieroutercomponent"}, + {"file": "lib/Controller/AcController.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping AC requirements", "methods": ["index", "create", "show", "update", "patch", "destroy"], "confidence": 0.88, "signal": "AC = Autorisatiecomponent"}, + {"file": "lib/Service/ZgwService.php", "capability": "zgw-api-mapping", "req": "multiple (needs method-level pass)", "methods": "(36 publics)", "confidence": 0.90, "signal": "central ZGW orchestrator"}, + {"file": "lib/Service/ZgwMappingService.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping mapping layer", "methods": "(8 publics)", "confidence": 0.88, "signal": "explicit mapping service"}, + {"file": "lib/Repair/LoadDefaultZgwMappings.php", "capability": "zgw-api-mapping", "req": "zgw-api-mapping (seed)", "methods": ["getDefaultMappings"], "confidence": 0.90, "signal": "28 private getXxxMapping helpers inherit the single public REQ tag"}, + {"file": "lib/Controller/MetricsController.php", "capability": "prometheus-metrics", "req": "REQ-PROM-001", "methods": ["index"], "confidence": 0.97, "signal": "direct match — spec explicitly names metrics endpoint"}, + {"file": "lib/Controller/MetricsController.php", "capability": "prometheus-metrics", "req": "REQ-PROM-001, REQ-PROM-002, REQ-PROM-003, REQ-PROM-009", "methods": ["collectMetrics", "getCached", "checkDatabaseHealth", "getCaseCounts", "getOverdueCasesCount", "getCasesCreatedTodayCount", "getTaskCounts", "getOverdueTasksCount"], "confidence": 0.88, "signal": "Pass B — private helpers inherited from index()"}, + {"file": "lib/Controller/HealthController.php", "capability": "prometheus-metrics", "req": "REQ-PROM-004", "methods": ["index"], "confidence": 0.97, "signal": "direct match — REQ-PROM-004 Health Check Endpoint"}, + {"file": "lib/Controller/HealthController.php", "capability": "prometheus-metrics", "req": "REQ-PROM-004", "methods": ["checkDatabase", "checkOpenRegister", "checkFilesystem", "getAppVersion"], "confidence": 0.88, "signal": "Pass B — inherited from index()"}, + {"file": "lib/AppInfo/Application.php", "capability": "procest-app-scaffold", "req": "procest-app-scaffold Scenario 1.1/1.2", "methods": ["register", "boot"], "confidence": 0.93, "signal": "canonical bootstrap class"}, + {"file": "lib/Controller/DashboardController.php", "capability": "procest-app-scaffold", "req": "procest-app-scaffold (Vue SPA entry)", "methods": ["page"], "confidence": 0.90, "signal": "main template route"}, + {"file": "lib/Repair/InitializeSettings.php", "capability": "procest-app-scaffold", "req": "procest-app-scaffold (InitializeSettings repair step)", "methods": ["getName", "run"], "confidence": 0.95, "signal": "spec names class directly"}, + {"file": "lib/Listener/DeepLinkRegistrationListener.php", "capability": "procest-app-scaffold", "req": "procest-app-scaffold (deep link registration)", "methods": ["handle"], "confidence": 0.85, "signal": "spec mentions deep-link integration"}, + {"file": "lib/Controller/ParaferingController.php", "capability": "parafering-actions + parafeerroute-engine", "req": "multiple (needs method-level)", "methods": ["createVoorstel", "startParafering", "executeAction", "getAuditTrail", "getCurrentStep", "overrideRoute"], "confidence": 0.85, "signal": "terminology match on all method names"}, + {"file": "lib/Service/ParaferingService.php", "capability": "parafering-actions + parafeerroute-engine", "req": "multiple", "methods": "(same 7 publics)", "confidence": 0.85, "signal": "service-layer twin"}, + {"file": "lib/Service/ParaferingNotificationService.php", "capability": "parafering-actions", "req": "parafering-actions notifications", "methods": ["notifyStepActivated", "notifyVoorstelReturned", "notifyParaferingReminder"], "confidence": 0.82, "needs_review": true, "signal": "specific REQ needs reading"}, + {"file": "lib/Controller/GisProxyController.php", "capability": "wms-wfs-layers", "req": "REQ-LAYER-03, REQ-LAYER-04", "methods": ["proxy", "capabilities"], "confidence": 0.95, "signal": "direct match"}, + {"file": "lib/Service/GisProxyService.php", "capability": "wms-wfs-layers", "req": "REQ-LAYER-03, REQ-LAYER-04", "methods": ["proxyRequest", "getCapabilities"], "confidence": 0.92, "signal": "service twin"}, + {"file": "lib/Controller/InspectionController.php", "capability": "inspection-checklists", "req": "inspection-checklists requirements", "methods": ["index", "captureLocation", "completeChecklistItem", "addPhoto", "complete"], "confidence": 0.90, "signal": "name match"}, + {"file": "lib/Service/InspectionService.php", "capability": "inspection-checklists", "req": "inspection-checklists requirements", "methods": "(5 publics)", "confidence": 0.88, "signal": "service twin"}, + {"file": "lib/Service/ChecklistService.php", "capability": "inspection-checklists", "req": "inspection-checklists progress/validation", "methods": ["completeItem", "getProgress", "validateCompletion", "getConformitySummary"], "confidence": 0.85, "signal": "verb match"}, + {"file": "lib/Service/MilestoneService.php", "capability": "doorlooptijd-dashboard", "req": "doorlooptijd-dashboard requirements", "methods": ["getMilestones", "getCaseProgress", "markMilestone", "reverseMilestone", "getDurationAnalytics"], "confidence": 0.85, "signal": "milestones = doorloop milestones"}, + {"file": "lib/Controller/MilestoneController.php", "capability": "doorlooptijd-dashboard", "req": "doorlooptijd-dashboard", "methods": ["progress"], "confidence": 0.85, "signal": "name match"}, + {"file": "lib/Repair/SeedBezwaarBeroepData.php", "capability": "vth-case-type-seed", "req": "vth-case-type-seed", "methods": ["getName", "run"], "confidence": 0.92, "signal": "name match"}, + {"file": "lib/Service/SeedDataService.php", "capability": "vth-case-type-seed", "req": "vth-case-type-seed", "methods": ["seedBezwaarBeroepData"], "confidence": 0.92, "signal": "name match"}, + {"file": "lib/BackgroundJob/AppointmentReminderJob.php", "capability": "(none)", "req": "(2b cluster: appointments)", "methods": ["run"], "confidence": null, "signal": "moved to Bucket 2b"} + ], + "bucket_2a": { + "case-management": { + "methods": [ + {"file": "lib/Controller/EmailController.php", "methods": ["send", "sendFromTemplate", "preview", "templates"], "observed_behavior": "case email integration not in existing REQs"}, + {"file": "lib/Service/CaseEmailService.php", "methods": "(8 publics)", "observed_behavior": "outbound email with template rendering per caseType, inbound reply matching by subject"} + ] + }, + "admin-settings": { + "methods": [ + {"file": "lib/Controller/SettingsController.php", "methods": ["(non-UI settings-bag endpoints)"], "observed_behavior": "REQ-ADMIN-* covers UI, not the bare settings-bag API"} + ] + }, + "inspection-checklists": { + "methods": [ + {"file": "lib/Service/InspectionService.php", "methods": ["calculateDistance"], "observed_behavior": "GPS distance helper not specified"} + ] + }, + "zgw-api-mapping": { + "methods": [ + {"file": "lib/Middleware/ZgwAuthMiddleware.php", "methods": "(4 publics + 5 privates)", "observed_behavior": "ZGW scope-based JWT auth not specified in zgw-api-mapping spec"} + ] + } + }, + "bucket_2b": { + "appointments": { + "files": [ + "lib/Controller/AppointmentController.php", + "lib/Controller/PublicAppointmentController.php", + "lib/BackgroundJob/AppointmentReminderJob.php", + "lib/Service/AppointmentService.php", + "lib/Service/AppointmentBackend/AppointmentBackendInterface.php", + "lib/Service/AppointmentBackend/JccBackend.php", + "lib/Service/AppointmentBackend/LocalBackend.php", + "lib/Service/AppointmentBackend/QmaticBackend.php" + ], + "observed_behavior": "Appointment booking with 3 pluggable backends (JCC for municipal self-service, Qmatic for queue management, Local for dev). Book/cancel/reschedule/no-show + public reschedule via token. Nightly reminder job." + }, + "berichtenbox": { + "files": [ + "lib/Controller/BerichtenboxController.php", + "lib/BackgroundJob/BerichtenboxReadStatusJob.php", + "lib/Service/BerichtenboxService.php", + "lib/Service/BerichtenboxAdapter/BerichtenboxAdapterInterface.php", + "lib/Service/BerichtenboxAdapter/MockAdapter.php" + ], + "observed_behavior": "Sends citizen messages to Dutch government MijnOverheid Berichtenbox with BSN validation; polls read status via adapter pattern." + }, + "case-sharing": { + "files": [ + "lib/Controller/CaseSharingController.php", + "lib/Controller/PublicShareController.php", + "lib/BackgroundJob/ShareMaintenanceJob.php", + "lib/Service/CaseSharingService.php", + "lib/Service/CaseTransferService.php" + ], + "observed_behavior": "Tokenized public-read links for cases, partner shares with filtered case data, case transfer between users/orgs with accept/reject workflow." + }, + "stuf-protocol": { + "files": [ + "lib/Controller/StufController.php", + "lib/Service/StufFieldMappingService.php", + "lib/Service/StufMessageBuilder.php" + ], + "observed_behavior": "Bidirectional SOAP-based StUF-ZKN / StUF-BG protocol mapping — ISO ↔ StUF date formats, confidentiality level mapping, StUF message construction for legacy ZGW clients." + }, + "leges": { + "files": [ + "lib/Controller/LegesController.php", + "lib/Service/LegesCalculationService.php", + "lib/Service/LegesExportService.php" + ], + "observed_behavior": "Tax/fee calculation with 5 strategies (vast, percentage, staffel, maximum, combinatie), recalculation on case changes, verrekening (offset) + teruggaaf (refund) paths, exports to CSV/ASCII/XML." + }, + "ai-assistant": { + "files": [ + "lib/Controller/AiController.php", + "lib/Service/AiService.php" + ], + "observed_behavior": "Case-scoped AI: document classification, data extraction, Q&A, summarization, routing suggestion, next-step suggestion. PII stripping, audit trail, per-feature enable flags." + }, + "multi-tenancy": { + "files": [ + "lib/Controller/TenantController.php", + "lib/Middleware/TenantMiddleware.php", + "lib/Service/TenantService.php" + ], + "observed_behavior": "Tenant resolution on requests, tenant-scoped CRUD, per-controller tenant enforcement." + }, + "templates": { + "files": [ + "lib/Controller/TemplateController.php", + "lib/Service/TemplateLibraryService.php" + ], + "observed_behavior": "Template library for case-type configurations (separate from email templates)." + }, + "dso-intake": { + "files": ["lib/Service/DsoIntakeService.php"], + "observed_behavior": "Receives DSO (Digitaal Stelsel Omgevingswet) aanvraag messages and converts to internal cases." + } + }, + "bucket_3a": [], + "bucket_3b": [], + "bucket_4": { + "missing-spec-in-file-docblock": { + "count": 89, + "note": "expected — this is what retrofit fixes; subsumed by Bucket 1/2 work" + } + } + }, + "ignored": 0, + "notes": [ + "case-management/spec.md has duplicated REQ blocks (lines 63-945 and 1013-1946) — pre-retrofit cleanup recommended.", + "ZrcController is large (17 publics + 22 privates) — chunked annotation by method-group recommended.", + "Requirement-named spec dialect (31 specs, 160 reqs) needs synthesized REQ-IDs; confidence scores for these will run lower.", + "Vue/TS frontend (184 files) not scanned in this pass — follow-up scan required.", + "Consultation cluster likely maps to advice-management (2a, not 2b) — verify before reverse-spec run.", + "NotificatieService likely covered by zgw-api-mapping NRC requirements (2a, not 2b) — verify.", + "case-definition-export-import may overlap workflow-import-export spec (2a, not 2b) — verify.", + "Bucket 3 reverse pass deferred — requires full REQ-to-method coverage map before it's meaningful." + ], + "suggested_next_steps": [ + "Review this report; flag any Bucket 1 matches that look wrong.", + "Decide 2a vs 2b for borderline clusters (consultation, notifications, case-definition-export-import).", + "Decide sequencing for reverse-spec passes — start with self-contained clusters (leges, stuf-protocol).", + "Schedule Vue scan follow-up — same skill, wider glob.", + "/opsx-annotate procest — will create retrofit-annotate-procest-2026-04-20 ghost change." + ] +} diff --git a/openspec/coverage-report.pilot.md b/openspec/coverage-report.pilot.md new file mode 100644 index 00000000..f8a27752 --- /dev/null +++ b/openspec/coverage-report.pilot.md @@ -0,0 +1,260 @@ +# Coverage Report — procest + +Generated: 2026-04-20 (manual pilot run) +Branch: `fix/header-info-email-phpcs` (46 specs present; matches `development`) +Scanner: opsx-coverage-scan v1 (pilot pass — manual execution by Claude Opus) + +## Pilot scope note + +This first pilot pass covers **PHP `lib/` only** (89 files). The Vue/TypeScript frontend (184 files under `src/`) is deferred to a follow-up scan — the file-level classification heuristics are the same, but the volume would blow this run's context budget. + +Additionally, classification was done at **file level** with per-method detail only for Bucket 1 examples. A full per-method pass for all 89 files is the natural next step; the bucket assignments below should be stable under that pass. + +Ignored: 0 (no `.opsx-ignore` present). + +## Summary + +| Bucket | Count | Next action | +|---|---|---| +| annotated | 0 methods / 0 files | — (nothing annotated yet — fully legacy) | +| plumbing | ~50 methods across 7 Dashboard widgets + middleware boilerplate | — (never tagged) | +| 1 — REQ matched | ~180 method-level candidates across 47 files | `/opsx-annotate procest` | +| 2a — existing capability, no REQ | ~40 methods across 9 clusters | `/opsx-reverse-spec procest --extend ` | +| 2b — no capability owner | ~60 methods across 8 clusters | `/opsx-reverse-spec procest --cluster ` | +| 3a — REQ broken | 0 surfaced (heuristic disabled for first-pass retrofit — no annotation history to grep against) | — | +| 3b — REQ never implemented | TBD — blocked on full REQ matching pass | Follow-up | +| 4 — ADR conformance | ~89 files flagged missing `@spec` in docblock (expected — that's what retrofit fixes) | — (subsumed by retrofit) | + +## REQ inventory (summary) + +46 spec directories scanned. Two format dialects: + +- **REQ-numbered** (15 specs, 183 REQs) — e.g. `REQ-ADMIN-001`, `REQ-CM-01`, `REQ-PROM-003` +- **Requirement-named** (31 specs, 160 requirements) — e.g. `### Requirement: Advice request schema` under `advice-management`. Scanner will synthesize `{capability}#REQ-NNN` IDs based on occurrence order. + +**Note on case-management/spec.md**: the file contains each REQ twice (lines 63–945 and 1013–1946). The second block appears to be a duplicate of the first. Flagged as a spec-cleanup follow-up; for retrofit purposes treat as 22 distinct REQs (REQ-CM-01 through REQ-CM-22, plus REQ-CM-23 which appears only in the second block). + +## Bucket 1 — Ready to annotate (representative examples) + +Will be annotated via ghost change `retrofit-annotate-procest-2026-04-20/tasks.md`. + +### capability: admin-settings → tasks 1–15 + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Settings/AdminSettings.php | getForm(), getSection(), getPriority(), getScope() | REQ-ADMIN-001 | 0.95 | direct Nextcloud ISettings implementation; spec explicitly cites AdminSettings class | +| lib/Sections/SettingsSection.php | getID(), getName(), getPriority(), getIcon() | REQ-ADMIN-001 | 0.95 | spec cites SettingsSection class directly | +| lib/Controller/SettingsController.php | getSettings(), updateSettings() | REQ-ADMIN-014 (validation), REQ-ADMIN-015 (error scenarios) | 0.82 | NEEDS-REVIEW — settings endpoints but spec is UI-focused | + +### capability: zgw-api-mapping → tasks (multiple) + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/ZrcController.php | index(), create(), show(), update(), patch(), destroy() (6 of 17 publics) | zgw-api-mapping#Requirement-1 through #Requirement-6 (ZRC CRUD) | 0.92 | ZrcController = ZGW Zaakregistratiecomponent; method names = REST verbs matching spec | +| lib/Controller/ZtcController.php | index(), create(), show(), update(), patch(), destroy() | zgw-api-mapping ZTC requirements | 0.92 | ZtcController = ZGW Zaaktypecatalogus | +| lib/Controller/DrcController.php | index(), create(), show(), update(), patch(), destroy(), download(), lock(), unlock() | zgw-api-mapping DRC requirements | 0.92 | DrcController = ZGW Documentregistratie | +| lib/Controller/BrcController.php | index(), create(), show(), update(), patch(), destroy(), audittrailIndex(), audittrailShow() | zgw-api-mapping BRC requirements | 0.92 | BrcController = ZGW Besluitregistratie | +| lib/Controller/NrcController.php | 10 public methods | zgw-api-mapping NRC requirements | 0.90 | NRC = Notificatieroutercomponent | +| lib/Controller/AcController.php | index(), create(), show(), update(), patch(), destroy() | zgw-api-mapping AC requirements | 0.88 | AC = Autorisatiecomponent | +| lib/Service/ZgwService.php | 36 public methods | zgw-api-mapping (multiple) | 0.90 | central ZGW orchestrator; REQ-by-REQ mapping needed in annotate pass | +| lib/Service/ZgwMappingService.php | 8 public methods | zgw-api-mapping | 0.88 | explicit mapping-layer service | +| lib/Repair/LoadDefaultZgwMappings.php | getDefaultMappings() + 28 getXxxMapping() helpers | zgw-api-mapping (seed) | 0.90 | all private helpers inherit the single public REQ tag | + +### capability: prometheus-metrics → tasks 1–10 + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/MetricsController.php | index() | REQ-PROM-001 (Metrics Endpoint) | 0.97 | direct match | +| lib/Controller/MetricsController.php | private helpers (collectMetrics, getCached, checkDatabaseHealth, getCaseCounts, etc.) | REQ-PROM-001, REQ-PROM-002, REQ-PROM-003, REQ-PROM-009 (caching) | 0.88 | Pass B inherited from index() caller | +| lib/Controller/HealthController.php | index() | REQ-PROM-004 (Health Check Endpoint) | 0.97 | direct match | +| lib/Controller/HealthController.php | checkDatabase(), checkOpenRegister(), checkFilesystem(), getAppVersion() | REQ-PROM-004 | 0.88 | Pass B inherited | + +### capability: case-management → tasks 1–22 + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/ZrcController.php | 11 additional `public` methods beyond CRUD (e.g. status changes, extensions, suspension, sub-cases) | REQ-CM-14 (status change), REQ-CM-16 (deadline extension), REQ-CM-17 (suspension), REQ-CM-18 (sub-cases) | 0.78 | NEEDS-REVIEW — behavior tag spread; need to read method bodies to map each to exact REQ | +| lib/Service/MilestoneService.php | getMilestones(), getCaseProgress(), markMilestone(), reverseMilestone(), getDurationAnalytics() | doorlooptijd-dashboard requirements | 0.85 | milestones = doorloop milestones | + +### capability: procest-app-scaffold → tasks (multiple) + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/AppInfo/Application.php | register(), boot() | procest-app-scaffold Scenario 1.1 / 1.2 (app registration + enable) | 0.93 | canonical bootstrap class | +| lib/Controller/DashboardController.php | page() | procest-app-scaffold (Vue SPA entry) | 0.90 | main template route | +| lib/Repair/InitializeSettings.php | getName(), run() | procest-app-scaffold (InitializeSettings repair step cited in spec scenario) | 0.95 | spec names this class directly | +| lib/Listener/DeepLinkRegistrationListener.php | handle() | procest-app-scaffold (deep link registration) | 0.85 | spec mentions deep-link integration | + +### capability: parafering-* (5 specs: parafeerroute-engine, parafering-actions, parafering-audit-trail, parafering-dashboard, voorstel-management) + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/ParaferingController.php | 7 publics (createVoorstel, startParafering, executeAction, getAuditTrail, getCurrentStep, overrideRoute) | parafering-actions + parafeerroute-engine requirements | 0.85 | terminology match on all method names | +| lib/Service/ParaferingService.php | same 7 publics | same | 0.85 | service-layer twin | +| lib/Service/ParaferingNotificationService.php | notifyStepActivated, notifyVoorstelReturned, notifyParaferingReminder | parafering-actions (notifications) | 0.82 | NEEDS-REVIEW — specific REQ needs reading | + +### capability: wms-wfs-layers → tasks 1–4 + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/GisProxyController.php | proxy(), capabilities() | REQ-LAYER-03 (GIS Proxy), REQ-LAYER-04 (GetCapabilities Parser) | 0.95 | direct match | +| lib/Service/GisProxyService.php | proxyRequest(), getCapabilities() | same | 0.92 | service twin | + +### capability: inspection-checklists + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Controller/InspectionController.php | index(), captureLocation(), completeChecklistItem(), addPhoto(), complete() | inspection-checklists requirements | 0.90 | name match | +| lib/Service/InspectionService.php | same behaviors | same | 0.88 | service twin | +| lib/Service/ChecklistService.php | completeItem(), getProgress(), validateCompletion(), getConformitySummary() | inspection-checklists (progress/validation) | 0.85 | verb match | + +### capability: openregister-integration + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| (cross-cutting — all `$this->openRegisterObjectService` calls) | — | REQ-OREG-005 (Object Store Pattern) | 0.80 | NEEDS-REVIEW — this is a pattern rather than a method-specific REQ. Annotating EVERY OpenRegister call would over-tag. Recommendation: annotate only the primary integration points (Application.php boot, repair steps) at file level; let the pattern itself be implicit. | + +### capability: vth-case-type-seed + +| File | Method | REQ | Confidence | Signal | +|---|---|---|---|---| +| lib/Repair/SeedBezwaarBeroepData.php | run() | vth-case-type-seed requirements | 0.92 | name match | +| lib/Service/SeedDataService.php | seedBezwaarBeroepData() | same | 0.92 | name match | + +(Full enumeration continues — roughly 180 method-level Bucket 1 candidates across 47 files once finalized.) + +## Bucket 2a — Existing capability, no REQ (reverse-spec --extend) + +Clusters where file path points at a known capability but the observed behavior isn't covered by any existing REQ: + +### cluster: case-management (8 methods) → `/opsx-reverse-spec procest --extend case-management` +- lib/Controller/DashboardController.php::page() — actually plumbing; no extension needed +- lib/Controller/EmailController.php::send(), sendFromTemplate(), preview(), templates() — case email integration not in existing REQs +- lib/Service/CaseEmailService.php — 8 publics, none covered +- **Observed behavior**: Cases can send outbound email, render from templates per caseType, and process inbound replies matched back to cases by subject line. + +### cluster: admin-settings (2 methods) → `--extend admin-settings` +- lib/Controller/SettingsController.php::getCustomSettings(), setCustomSetting() — REQ-ADMIN-* covers the UI but not the settings-bag API + +### cluster: case-types (0 — existing REQs cover CRUD; any gaps need reading) + +### cluster: dashboard (0 — appears covered) + +### cluster: task-management (0 — appears covered) + +### cluster: roles-decisions (0 — appears covered) + +### cluster: inspection-checklists (2 methods) → `--extend inspection-checklists` +- lib/Service/InspectionService.php::calculateDistance() — GPS distance helper not specified + +### cluster: zgw-api-mapping (6 methods) → `--extend zgw-api-mapping` +- lib/Middleware/ZgwAuthMiddleware.php — 4 publics + 5 privates — ZGW scope-based auth not specified explicitly; needs REQs for auth contract +- lib/Middleware/TenantMiddleware.php — tenant resolution on ZGW endpoints + +### cluster: procest-app-scaffold (3 methods) → `--extend procest-app-scaffold` +- lib/Middleware/TenantMiddleware.php::beforeController(), afterException() — covered by multi-tenancy if that spec exists +- (move to 2b cluster "multi-tenancy" if no tenant spec) + +## Bucket 2b — No capability owner (reverse-spec --cluster) + +Clusters with no capability owner — would require a new spec if retrofitted: + +### cluster: appointments (3 files, ~15 methods) → `--cluster appointments` +- lib/Controller/AppointmentController.php (6 publics) +- lib/Controller/PublicAppointmentController.php (3 publics) +- lib/BackgroundJob/AppointmentReminderJob.php +- lib/Service/AppointmentService.php (7 publics) +- lib/Service/AppointmentBackend/* (interface + 3 backends: JCC, Local, Qmatic) +- **Observed behavior**: Appointment booking with 3 pluggable backends (JCC for municipal self-service, Qmatic for queue management, Local for dev). Supports book/cancel/reschedule/no-show + public reschedule via token. Nightly reminder job. + +### cluster: berichtenbox (2 files, ~8 methods) → `--cluster berichtenbox` +- lib/Controller/BerichtenboxController.php +- lib/BackgroundJob/BerichtenboxReadStatusJob.php +- lib/Service/BerichtenboxService.php + adapter interface + MockAdapter +- **Observed behavior**: Sends citizen messages to Dutch government MijnOverheid Berichtenbox with BSN validation; polls read status via adapter pattern. + +### cluster: case-sharing (4 files, ~15 methods) → `--cluster case-sharing` +- lib/Controller/CaseSharingController.php +- lib/Controller/PublicShareController.php +- lib/BackgroundJob/ShareMaintenanceJob.php +- lib/Service/CaseSharingService.php (9 publics) +- lib/Service/CaseTransferService.php (4 publics) +- **Observed behavior**: Generate tokenized public-read links for cases, partner shares with filtered case data, case transfer workflow between users/orgs with accept/reject. + +### cluster: stuf-protocol (2 files, ~20 methods) → `--cluster stuf-protocol` +- lib/Controller/StufController.php (3 publics + 8 privates) +- lib/Service/StufFieldMappingService.php (12 publics) +- lib/Service/StufMessageBuilder.php (6 publics) +- **Observed behavior**: Bidirectional SOAP-based StUF-ZKN / StUF-BG protocol mapping — ISO ↔ StUF date formats, confidentiality level mapping, StUF message construction for legacy ZGW clients. + +### cluster: leges (3 files, ~10 methods) → `--cluster leges` +- lib/Controller/LegesController.php +- lib/Service/LegesCalculationService.php +- lib/Service/LegesExportService.php +- **Observed behavior**: Tax/fee calculation with 5 strategies (vast, percentage, staffel, maximum, combinatie), recalculation on case changes, verrekening (offset) + teruggaaf (refund) paths, exports to CSV/ASCII/XML. + +### cluster: ai-assistant (2 files, ~25 methods) → `--cluster ai-assistant` +- lib/Controller/AiController.php (12 publics) +- lib/Service/AiService.php (12 publics + 10 private prompt builders) +- **Observed behavior**: Case-scoped AI: document classification, data extraction, Q&A, summarization, routing suggestion, next-step suggestion. PII stripping, audit trail, per-feature enable flags. + +### cluster: multi-tenancy (2 files, ~10 methods) → `--cluster multi-tenancy` +- lib/Controller/TenantController.php +- lib/Middleware/TenantMiddleware.php +- lib/Service/TenantService.php +- **Observed behavior**: Tenant resolution on requests, tenant-scoped CRUD, per-controller tenant enforcement. + +### cluster: templates (1 file, 4 methods) → `--cluster templates` +- lib/Controller/TemplateController.php +- lib/Service/TemplateLibraryService.php +- **Observed behavior**: Template library for case-type configurations (separate from email templates). + +### cluster: case-definition-export-import (2 files) → `--cluster case-definition-export-import` +- lib/Controller/CaseDefinitionController.php (export, validate, import) +- lib/Service/CaseDefinitionExportService.php +- lib/Service/CaseDefinitionImportService.php +- **NOTE**: `workflow-import-export` spec exists — might be 2a, not 2b. Needs reading to confirm scope overlap. + +### cluster: dso-intake (1 file) → `--cluster dso-intake` +- lib/Service/DsoIntakeService.php (processAanvraag, getDeadlineDuration) +- **Observed behavior**: Receives DSO (Digitaal Stelsel Omgevingswet) aanvraag messages and converts to internal cases. + +### cluster: consultation (1 file) → possibly 2a under `advice-management` +- lib/Controller/ConsultationController.php + lib/Service/ConsultationService.php +- **NOTE**: Overlap with `advice-management` spec — probably 2a (--extend advice-management). + +### cluster: notifications (1 file) → possibly 2a under `zgw-api-mapping` NRC +- lib/Service/NotificatieService.php +- **NOTE**: Likely covered by NRC requirements in zgw-api-mapping. + +## Bucket 3 — Unimplemented REQs + +**3a and 3b deferred** — detecting REQs whose code "used to exist but is now broken" requires a keyword-based grep over git history that I haven't run yet (would take a separate pass). For an app built greenfield over specs, 3a is unlikely. 3b will show up once I do a systematic "which REQ has zero matched methods" reverse check against the full inventory. + +## Bucket 4 — ADR conformance findings + +### missing-`@spec`-in-file-docblock (89 of 89 files) +Expected — this is exactly what retrofit fixes. Not a separate finding during retrofit. + +### forbidden-patterns scan +Not run in this pilot. Should be done via the existing `/hydra-gate-forbidden-patterns` skill, which has a word-boundary grep already tuned. + +### hardcoded-strings scan +Not run in this pilot — needs separate pass over Vue (skipped). + +## Notes for the human reviewer + +- **case-management/spec.md has duplicated REQ blocks** (lines 63–945 and 1013–1946). Pre-retrofit cleanup recommended — treating as 22 unique REQs for now. +- **ZrcController is large** (17 publics + 22 privates) — many are ZGW CRUD (Bucket 1) but ~11 are `case-management` behaviors that need careful REQ mapping during annotate. Good candidate for chunked annotation by method-group. +- **The 2b clusters are large.** 8 clusters × ~5 REQs each ≈ 40+ reverse-spec REQs. With the 5-REQ-per-run cap, that's 8–10 PRs of reverse-spec work. Sequencing matters: do the independent clusters first (leges, stuf-protocol, templates) before the ones that might overlap or merge (consultation → advice-management, notifications → zgw-api-mapping). +- **The "Requirement-named" spec dialect (31 specs, 160 requirements)** is the bigger matching challenge. These don't have REQ-IDs in the spec file — the scanner needs to synthesize them. Confidence scores for these will run lower than for REQ-numbered specs until the synthesis is stable. +- **Vue/TS frontend (184 files) not scanned.** Likely dominated by `src/views/cases/*.vue` (case-management), `src/views/settings/*.vue` (admin-settings), `src/components/**` (many capabilities). Frontend scan is a natural follow-up; will land in a separate Bucket-1-rich PR. +- **No existing `@spec` annotations** — procest is fully legacy. Expected; confirms the retrofit premise. + +## Suggested next steps (for the human driving the retrofit) + +1. Review this report. Flag any Bucket 1 matches that look wrong. +2. Decide on 2a vs 2b for the borderline clusters: `consultation` (→ advice-management?), `notifications` (→ zgw-api-mapping?), `case-definition-export-import` (→ workflow-import-export?). +3. Decide sequencing for reverse-spec passes. Recommend starting with `leges` or `stuf-protocol` — self-contained, well-defined behaviors that make good dogfood. +4. Schedule a Vue scan follow-up — same skill, wider glob. +5. `/opsx-annotate procest` against this report when ready. Will create ghost change `retrofit-annotate-procest-2026-04-20` and land the Bucket 1 annotations as one PR. diff --git a/package-lock.json b/package-lock.json index bdd19110..becdcff9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@nextcloud/l10n": "^2.0.1", "@nextcloud/router": "^2.0.1", "@nextcloud/vue": "^8.16.0", + "apexcharts": "^3.45.0", "gridstack": "^10.3.1", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", @@ -23,6 +24,7 @@ "pinia": "^2.1.7", "proj4": "^2.20.4", "vue": "^2.7.14", + "vue-apexcharts": "^1.6.2", "vue-material-design-icons": "^5.3.0", "vue-router": "^3.6.5" }, @@ -38,6 +40,7 @@ "css-loader": "~7.1.1", "eslint": "^8.56.0", "eslint-import-resolver-alias": "^1.1.2", + "sass-loader": "^16.0.7", "style-loader": "~4.0.0", "stylelint": "^15.11.0", "vue-loader": "^15.11.1 <16.0.0", @@ -64,142 +67,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", - "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", - "dev": true, - "peer": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -216,30 +83,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/parser": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", @@ -262,40 +105,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", @@ -617,55 +426,6 @@ "node": ">=14.17.0" } }, - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", - "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", - "dev": true, - "peer": true, - "dependencies": { - "comment-parser": "1.4.1", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -1026,17 +786,6 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1072,525 +821,441 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node_modules/@linusborg/vue-simple-portal": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@linusborg/vue-simple-portal/-/vue-simple-portal-0.1.5.tgz", + "integrity": "sha512-dq+oubEVW4UabBoQxmH97GiDa+F6sTomw4KcXFHnXEpw69rdkXFCxo1WzwuvWjoLiUVYJTyN1dtlUvTa50VcXg==", + "dependencies": { + "nanoid": "^3.1.20" }, "peerDependencies": { - "tslib": "2" + "vue": "^2.6.6" } }, - "node_modules/@jsonjoy.com/buffers": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", - "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node_modules/@mapbox/hast-util-table-cell-style": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.2.1.tgz", + "integrity": "sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==", + "dependencies": { + "unist-util-visit": "^1.4.1" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=12" } }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, + "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dependencies": { + "unist-util-visit-parents": "^2.0.0" } }, - "node_modules/@jsonjoy.com/fs-core": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", - "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", - "dev": true, - "peer": true, + "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/@nextcloud/auth": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.3.tgz", + "integrity": "sha512-KIhWLk0BKcP4hvypE4o11YqKOPeFMfEFjRrhUUF+h7Fry+dhTBIEIxuQPVCKXMIpjTDd8791y8V6UdRZ2feKAQ==", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" + "@nextcloud/browser-storage": "^0.5.0", + "@nextcloud/event-bus": "^3.3.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", - "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/axios": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.5.2.tgz", + "integrity": "sha512-8frJb77jNMbz00TjsSqs1PymY0nIEbNM4mVmwen2tXY7wNgRai6uXilIlXKOYB9jR/F/HKRj6B4vUwVwZbhdbw==", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" + "@nextcloud/auth": "^2.5.1", + "@nextcloud/router": "^3.0.1", + "axios": "^1.12.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-node": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", - "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/axios/node_modules/@nextcloud/router": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz", + "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", - "glob-to-regex.js": "^1.0.0", - "thingies": "^2.5.0" + "@nextcloud/typings": "^1.10.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", - "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/browser-storage": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.5.0.tgz", + "integrity": "sha512-usYr4GlJQlK3hgZURvklqWb9ivi7sgsSuFqXrs7s4hl1LTS4enzPrnkQumm6nRsQruf0ITS+OBsK+oELEbvYPA==", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^24 || ^22 || ^20" } }, - "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", - "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", + "node_modules/@nextcloud/browserslist-config": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.1.2.tgz", + "integrity": "sha512-2iXl1rqQOHvggFIl/V3J5OpbodVazOsO38Gz/2sUAmtWXuOpGZG+7i6zQcVqGVaT1VzyPJ1gPiMpyyZi/XRWNA==", "dev": true, - "peer": true, - "dependencies": { - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10" - }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^20 || ^22 || ^24", + "npm": ">=10.5.0" }, "peerDependencies": { - "tslib": "2" + "browserslist": "^4.26.3" } }, - "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", - "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/capabilities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.1.tgz", + "integrity": "sha512-snZ0/910zzwN6PDsIlx2Uvktr1S5x0ClhDUnfPlCj7ntNvECzuVHNY5wzby22LIkc+9ZjaDKtCwuCt2ye+9p/Q==", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10" + "@nextcloud/initial-state": "^3.0.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-print": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", - "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", - "dev": true, - "peer": true, - "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.56.10", - "tree-dump": "^1.1.0" - }, + "node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", + "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", - "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/dialogs": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.2.0.tgz", + "integrity": "sha512-notaHF8LXPJINBbILCbRe+dgXnJPe7NQTIrN1vwfaGUSG9GUfEf+v367yyg2brCgV6ulE/HmNhYjTQwW5AqSJA==", + "deprecated": "versions before v4.x are no longer supported, please update", "dependencies": { - "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/json-pack": "^17.65.0", - "@jsonjoy.com/util": "^17.65.0" + "@nextcloud/l10n": "^1.3.0", + "@nextcloud/typings": "^1.0.0", + "core-js": "^3.6.4", + "toastify-js": "^1.12.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^16.0.0", + "npm": "^7.0.0 || ^8.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", - "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/l10n": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", + "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", + "dependencies": { + "core-js": "^3.6.4", + "node-gettext": "^3.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", - "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "node_modules/@nextcloud/eslint-config": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.2.tgz", + "integrity": "sha512-zsDcBxvp2Vr/BgasK/vNYJ84LOXjl4RseJPrcp93zcnaB2WnygV50Sd0nQ5JN0ngTyPjiIlGd92MMzrMTofjRA==", "dev": true, - "peer": true, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^20.0.0", + "npm": "^10.0.0" }, "peerDependencies": { - "tslib": "2" + "@babel/core": "^7.26.9", + "@babel/eslint-parser": "^7.16.5", + "@nextcloud/eslint-plugin": "^2.2.1", + "@vue/eslint-config-typescript": "^13.0.0", + "eslint": "^8.27.0", + "eslint-config-standard": "^17.1.0", + "eslint-import-resolver-exports": "^1.0.0-beta.5", + "eslint-import-resolver-typescript": "^3.8.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsdoc": "^46.2.6", + "eslint-plugin-n": "^16.0.0", + "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-vue": "^9.7.0", + "typescript": "^5.0.2" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", - "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/event-bus": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.3.tgz", + "integrity": "sha512-zIfvKmUGkXpVzRKoXrcO9hkoiKDm65fqNxy/XIbIxrQhZByPq3gDkjBpnu3V5Gs8JdYwa73R8DjzV9oH8HYhIg==", "dependencies": { - "@jsonjoy.com/base64": "17.67.0", - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0", - "@jsonjoy.com/json-pointer": "17.67.0", - "@jsonjoy.com/util": "17.67.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "@types/semver": "^7.7.0", + "semver": "^7.7.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": "^20 || ^22 || ^24" + } + }, + "node_modules/@nextcloud/event-bus/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=10" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", - "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/files": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz", + "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==", + "optional": true, "dependencies": { - "@jsonjoy.com/util": "17.67.0" + "@nextcloud/auth": "^2.5.3", + "@nextcloud/capabilities": "^1.2.1", + "@nextcloud/l10n": "^3.4.1", + "@nextcloud/logger": "^3.0.3", + "@nextcloud/paths": "^3.0.0", + "@nextcloud/router": "^3.1.0", + "@nextcloud/sharing": "^0.3.0", + "cancelable-promise": "^4.3.1", + "is-svg": "^6.1.0", + "typescript-event-target": "^1.1.1", + "webdav": "^5.8.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", - "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/files/node_modules/@nextcloud/l10n": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz", + "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==", + "optional": true, "dependencies": { - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0" + "@nextcloud/router": "^3.0.1", + "@nextcloud/typings": "^1.9.1", + "@types/escape-html": "^1.0.4", + "dompurify": "^3.2.6", + "escape-html": "^1.0.3" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20 || ^22 || ^24" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", - "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/files/node_modules/@nextcloud/router": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz", + "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==", + "optional": true, "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.2.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.2", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "@nextcloud/typings": "^1.10.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/initial-state": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz", + "integrity": "sha512-cDW98L5KGGgpS8pzd+05304/p80cyu8U2xSDQGa+kGPTpUFmCbv2qnO5WrwwGTauyjYijCal2bmw82VddSH+Pg==", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0", + "npm": "^10.0.0" } }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/l10n": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-2.2.0.tgz", + "integrity": "sha512-UAM2NJcl/NR46MANSF7Gr7q8/Up672zRyGrxLpN3k4URNmWQM9upkbRME+1K3T29wPrUyOIbQu710ZjvZafqFA==", + "license": "GPL-3.0-or-later", "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" + "@nextcloud/router": "^2.1.2", + "@nextcloud/typings": "^1.7.0", + "dompurify": "^3.0.3", + "escape-html": "^1.0.3", + "node-gettext": "^3.0.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0", + "npm": "^9.0.0" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", - "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/logger": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.3.tgz", + "integrity": "sha512-TcbVRL4/O5ffI1RXFmQAFD3gwwT15AAdr1770x+RNqVvfBdoGVyhzOwCIyA5Vfc3fA1iJXFa+rE6buJZSoqlcw==", "dependencies": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" + "@nextcloud/auth": "^2.5.3" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", - "dev": true, - "peer": true, + "node_modules/@nextcloud/paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz", + "integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA==", + "optional": true, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true, - "peer": true - }, - "node_modules/@linusborg/vue-simple-portal": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@linusborg/vue-simple-portal/-/vue-simple-portal-0.1.5.tgz", - "integrity": "sha512-dq+oubEVW4UabBoQxmH97GiDa+F6sTomw4KcXFHnXEpw69rdkXFCxo1WzwuvWjoLiUVYJTyN1dtlUvTa50VcXg==", + "node_modules/@nextcloud/router": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.1.2.tgz", + "integrity": "sha512-Jj5fgjeHT1vVIgOyUGOeHfwk2KgaO77QGfqZAT6GWXvpAsN0mkqwljkg4FkHrQRouYqCE4VnJ5o8/w0DAN89tA==", "dependencies": { - "nanoid": "^3.1.20" + "@nextcloud/typings": "^1.0.0", + "core-js": "^3.6.4" }, - "peerDependencies": { - "vue": "^2.6.6" + "engines": { + "node": "^16.0.0", + "npm": "^7.0.0 || ^8.0.0" } }, - "node_modules/@mapbox/hast-util-table-cell-style": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.2.1.tgz", - "integrity": "sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==", + "node_modules/@nextcloud/sharing": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz", + "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==", "dependencies": { - "unist-util-visit": "^1.4.1" + "@nextcloud/initial-state": "^3.0.0", + "is-svg": "^6.1.0" }, "engines": { - "node": ">=12" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + }, + "optionalDependencies": { + "@nextcloud/files": "^3.12.0" } }, - "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is": { + "node_modules/@nextcloud/sharing/node_modules/@nextcloud/initial-state": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" + "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", + "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==", + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "node_modules/@nextcloud/stylelint-config": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-2.4.0.tgz", + "integrity": "sha512-S/q/offcs9pwnkjSrnfvsONryCOe6e1lfK2sszN6ZtkYyXvaqi8EbQuuhaGlxCstn9oXwbXfAI6O3Y8lGrjdFg==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "license": "AGPL-3.0-or-later", + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + }, + "peerDependencies": { + "stylelint": "^15.6.0", + "stylelint-config-recommended-scss": "^13.1.0", + "stylelint-config-recommended-vue": "^1.1.0" } }, - "node_modules/@nextcloud/auth": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.3.tgz", - "integrity": "sha512-KIhWLk0BKcP4hvypE4o11YqKOPeFMfEFjRrhUUF+h7Fry+dhTBIEIxuQPVCKXMIpjTDd8791y8V6UdRZ2feKAQ==", + "node_modules/@nextcloud/typings": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.10.0.tgz", + "integrity": "sha512-SMC42rDjOH3SspPTLMZRv76ZliHpj2JJkF8pGLP8l1QrVTZxE47Qz5qeKmbj2VL+dRv2e/NgixlAFmzVnxkhqg==", + "dependencies": { + "@types/jquery": "3.5.16" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@nextcloud/vue": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.36.0.tgz", + "integrity": "sha512-x1MEh4nvCrD1zoJ3ybhtbSDox+1wyHRP7st95Uu14Wm630quRrfXGaQ1bxqaZ7en/wqaihR0NPyQKfmjrPmseg==", "dependencies": { + "@floating-ui/dom": "^1.7.5", + "@linusborg/vue-simple-portal": "^0.1.5", + "@nextcloud/auth": "^2.5.3", + "@nextcloud/axios": "^2.5.2", "@nextcloud/browser-storage": "^0.5.0", - "@nextcloud/event-bus": "^3.3.2" + "@nextcloud/capabilities": "^1.2.1", + "@nextcloud/event-bus": "^3.3.3", + "@nextcloud/initial-state": "^2.2.0", + "@nextcloud/l10n": "^3.4.1", + "@nextcloud/logger": "^3.0.3", + "@nextcloud/router": "^3.1.0", + "@nextcloud/sharing": "^0.3.0", + "@nextcloud/vue-select": "^3.26.0", + "@vueuse/components": "^11.0.0", + "@vueuse/core": "^11.0.0", + "blurhash": "^2.0.5", + "clone": "^2.1.2", + "debounce": "^2.2.0", + "dompurify": "^3.3.1", + "emoji-mart-vue-fast": "^15.0.5", + "escape-html": "^1.0.3", + "floating-vue": "^1.0.0-beta.19", + "focus-trap": "^7.8.0", + "linkify-string": "^4.3.2", + "md5": "^2.3.0", + "p-queue": "^8.1.1", + "rehype-external-links": "^3.0.0", + "rehype-highlight": "^7.0.2", + "rehype-react": "^7.1.2", + "remark-breaks": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "remark-unlink-protocols": "^1.0.0", + "splitpanes": "^2.4.1", + "string-length": "^5.0.1", + "striptags": "^3.2.0", + "tabbable": "^6.4.0", + "tributejs": "^5.1.3", + "unified": "^11.0.1", + "unist-builder": "^4.0.0", + "unist-util-visit": "^5.1.0", + "vue": "^2.7.16", + "vue-color": "^2.8.1", + "vue-frag": "^1.4.3", + "vue-router": "^3.6.5", + "vue2-datepicker": "^3.11.0" }, "engines": { "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@nextcloud/axios": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.5.2.tgz", - "integrity": "sha512-8frJb77jNMbz00TjsSqs1PymY0nIEbNM4mVmwen2tXY7wNgRai6uXilIlXKOYB9jR/F/HKRj6B4vUwVwZbhdbw==", + "node_modules/@nextcloud/vue-select": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.26.0.tgz", + "integrity": "sha512-UvJExrxzx5pP3lv7j6zrv2yj6B1dXph7sh3lLNPnbJPjPoH/yg58mHNFBcPJrRYMbpy2t3hlC6F7s33KCTr9FA==", + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + }, + "peerDependencies": { + "vue": "2.x" + } + }, + "node_modules/@nextcloud/vue/node_modules/@nextcloud/l10n": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz", + "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==", "dependencies": { - "@nextcloud/auth": "^2.5.1", "@nextcloud/router": "^3.0.1", - "axios": "^1.12.2" + "@nextcloud/typings": "^1.9.1", + "@types/escape-html": "^1.0.4", + "dompurify": "^3.2.6", + "escape-html": "^1.0.3" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^20 || ^22 || ^24" } }, - "node_modules/@nextcloud/axios/node_modules/@nextcloud/router": { + "node_modules/@nextcloud/vue/node_modules/@nextcloud/router": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz", "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==", @@ -1601,122 +1266,114 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@nextcloud/browser-storage": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.5.0.tgz", - "integrity": "sha512-usYr4GlJQlK3hgZURvklqWb9ivi7sgsSuFqXrs7s4hl1LTS4enzPrnkQumm6nRsQruf0ITS+OBsK+oELEbvYPA==", - "engines": { - "node": "^24 || ^22 || ^20" - } - }, - "node_modules/@nextcloud/browserslist-config": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.1.2.tgz", - "integrity": "sha512-2iXl1rqQOHvggFIl/V3J5OpbodVazOsO38Gz/2sUAmtWXuOpGZG+7i6zQcVqGVaT1VzyPJ1gPiMpyyZi/XRWNA==", + "node_modules/@nextcloud/webpack-vue-config": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-6.3.2.tgz", + "integrity": "sha512-3ihWEW6kflGggVXNqL1gNrIx88GibJMIb1sC5CHjjZ/+2kkdOQ2HizoYKyMqPfcqji9UtwgdT+RlFVC4SViNJg==", "dev": true, + "hasInstallScript": true, "engines": { - "node": "^20 || ^22 || ^24", - "npm": ">=10.5.0" + "node": "^20.0.0", + "npm": "^9.0.0 || ^10.0.0" }, "peerDependencies": { - "browserslist": "^4.26.3" + "@babel/core": "^7.22.9", + "babel-loader": "^10.0.0", + "css-loader": "^7.1.1", + "node-polyfill-webpack-plugin": "4.0.0", + "sass": "^1.64.2", + "sass-loader": "^16.0.2", + "style-loader": "^4.0.0", + "ts-loader": "^9.4.4", + "vue": "^2.7.16 || ^3.5.13", + "vue-loader": "^15.11.1 || ^17.4.2", + "webpack": "^5.88.2", + "webpack-cli": "^6.0.1", + "webpack-dev-server": "^5.0.2" } }, - "node_modules/@nextcloud/capabilities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.1.tgz", - "integrity": "sha512-snZ0/910zzwN6PDsIlx2Uvktr1S5x0ClhDUnfPlCj7ntNvECzuVHNY5wzby22LIkc+9ZjaDKtCwuCt2ye+9p/Q==", + "node_modules/@nodelib/fs.scandir": { + "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": { - "@nextcloud/initial-state": "^3.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">= 8" } }, - "node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", - "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==", + "node_modules/@nodelib/fs.stat": { + "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": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">= 8" } }, - "node_modules/@nextcloud/dialogs": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.2.0.tgz", - "integrity": "sha512-notaHF8LXPJINBbILCbRe+dgXnJPe7NQTIrN1vwfaGUSG9GUfEf+v367yyg2brCgV6ulE/HmNhYjTQwW5AqSJA==", - "deprecated": "versions before v4.x are no longer supported, please update", + "node_modules/@nodelib/fs.walk": { + "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": { - "@nextcloud/l10n": "^1.3.0", - "@nextcloud/typings": "^1.0.0", - "core-js": "^3.6.4", - "toastify-js": "^1.12.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": ">= 8" } }, - "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", + "node_modules/@npmcli/agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", + "dev": true, + "license": "ISC", + "optional": true, "dependencies": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@nextcloud/eslint-config": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.2.tgz", - "integrity": "sha512-zsDcBxvp2Vr/BgasK/vNYJ84LOXjl4RseJPrcp93zcnaB2WnygV50Sd0nQ5JN0ngTyPjiIlGd92MMzrMTofjRA==", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.26.9", - "@babel/eslint-parser": "^7.16.5", - "@nextcloud/eslint-plugin": "^2.2.1", - "@vue/eslint-config-typescript": "^13.0.0", - "eslint": "^8.27.0", - "eslint-config-standard": "^17.1.0", - "eslint-import-resolver-exports": "^1.0.0-beta.5", - "eslint-import-resolver-typescript": "^3.8.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsdoc": "^46.2.6", - "eslint-plugin-n": "^16.0.0", - "eslint-plugin-promise": "^6.6.0", - "eslint-plugin-vue": "^9.7.0", - "typescript": "^5.0.2" - } + "license": "ISC", + "optional": true }, - "node_modules/@nextcloud/eslint-plugin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-plugin/-/eslint-plugin-2.2.1.tgz", - "integrity": "sha512-RX+0FxpL1h2EzjNLeW0VSGTkbyWIq7WgV7QAjtyUmDbSGwf1ds9Zy5OcRkgXRHRIu/W0gB0DhS2iz9qXHphCzA==", + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "dev": true, - "peer": true, + "license": "ISC", + "optional": true, "dependencies": { - "fast-xml-parser": "^4.2.5", - "requireindex": "^1.2.0", - "semver": "^7.5.3" + "semver": "^7.3.5" }, "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@nextcloud/eslint-plugin/node_modules/semver": { + "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "peer": true, + "license": "ISC", + "optional": true, "bin": { "semver": "bin/semver.js" }, @@ -1724,1815 +1381,201 @@ "node": ">=10" } }, - "node_modules/@nextcloud/event-bus": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.3.tgz", - "integrity": "sha512-zIfvKmUGkXpVzRKoXrcO9hkoiKDm65fqNxy/XIbIxrQhZByPq3gDkjBpnu3V5Gs8JdYwa73R8DjzV9oH8HYhIg==", - "dependencies": { - "@types/semver": "^7.7.0", - "semver": "^7.7.2" - }, - "engines": { - "node": "^20 || ^22 || ^24" - } - }, - "node_modules/@nextcloud/event-bus/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nextcloud/files": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz", - "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==", - "optional": true, - "dependencies": { - "@nextcloud/auth": "^2.5.3", - "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/l10n": "^3.4.1", - "@nextcloud/logger": "^3.0.3", - "@nextcloud/paths": "^3.0.0", - "@nextcloud/router": "^3.1.0", - "@nextcloud/sharing": "^0.3.0", - "cancelable-promise": "^4.3.1", - "is-svg": "^6.1.0", - "typescript-event-target": "^1.1.1", - "webdav": "^5.8.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/files/node_modules/@nextcloud/l10n": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz", - "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==", - "optional": true, - "dependencies": { - "@nextcloud/router": "^3.0.1", - "@nextcloud/typings": "^1.9.1", - "@types/escape-html": "^1.0.4", - "dompurify": "^3.2.6", - "escape-html": "^1.0.3" - }, - "engines": { - "node": "^20 || ^22 || ^24" - } - }, - "node_modules/@nextcloud/files/node_modules/@nextcloud/router": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz", - "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==", - "optional": true, - "dependencies": { - "@nextcloud/typings": "^1.10.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/initial-state": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz", - "integrity": "sha512-cDW98L5KGGgpS8pzd+05304/p80cyu8U2xSDQGa+kGPTpUFmCbv2qnO5WrwwGTauyjYijCal2bmw82VddSH+Pg==", - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/l10n": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-2.2.0.tgz", - "integrity": "sha512-UAM2NJcl/NR46MANSF7Gr7q8/Up672zRyGrxLpN3k4URNmWQM9upkbRME+1K3T29wPrUyOIbQu710ZjvZafqFA==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@nextcloud/router": "^2.1.2", - "@nextcloud/typings": "^1.7.0", - "dompurify": "^3.0.3", - "escape-html": "^1.0.3", - "node-gettext": "^3.0.0" - }, - "engines": { - "node": "^20.0.0", - "npm": "^9.0.0" - } - }, - "node_modules/@nextcloud/logger": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.3.tgz", - "integrity": "sha512-TcbVRL4/O5ffI1RXFmQAFD3gwwT15AAdr1770x+RNqVvfBdoGVyhzOwCIyA5Vfc3fA1iJXFa+rE6buJZSoqlcw==", - "dependencies": { - "@nextcloud/auth": "^2.5.3" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz", - "integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA==", - "optional": true, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/router": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.1.2.tgz", - "integrity": "sha512-Jj5fgjeHT1vVIgOyUGOeHfwk2KgaO77QGfqZAT6GWXvpAsN0mkqwljkg4FkHrQRouYqCE4VnJ5o8/w0DAN89tA==", - "dependencies": { - "@nextcloud/typings": "^1.0.0", - "core-js": "^3.6.4" - }, - "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@nextcloud/sharing": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz", - "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==", - "dependencies": { - "@nextcloud/initial-state": "^3.0.0", - "is-svg": "^6.1.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - }, - "optionalDependencies": { - "@nextcloud/files": "^3.12.0" - } - }, - "node_modules/@nextcloud/sharing/node_modules/@nextcloud/initial-state": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", - "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==", - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/stylelint-config": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-2.4.0.tgz", - "integrity": "sha512-S/q/offcs9pwnkjSrnfvsONryCOe6e1lfK2sszN6ZtkYyXvaqi8EbQuuhaGlxCstn9oXwbXfAI6O3Y8lGrjdFg==", - "dev": true, - "license": "AGPL-3.0-or-later", - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - }, - "peerDependencies": { - "stylelint": "^15.6.0", - "stylelint-config-recommended-scss": "^13.1.0", - "stylelint-config-recommended-vue": "^1.1.0" - } - }, - "node_modules/@nextcloud/typings": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.10.0.tgz", - "integrity": "sha512-SMC42rDjOH3SspPTLMZRv76ZliHpj2JJkF8pGLP8l1QrVTZxE47Qz5qeKmbj2VL+dRv2e/NgixlAFmzVnxkhqg==", - "dependencies": { - "@types/jquery": "3.5.16" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/vue": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.36.0.tgz", - "integrity": "sha512-x1MEh4nvCrD1zoJ3ybhtbSDox+1wyHRP7st95Uu14Wm630quRrfXGaQ1bxqaZ7en/wqaihR0NPyQKfmjrPmseg==", - "dependencies": { - "@floating-ui/dom": "^1.7.5", - "@linusborg/vue-simple-portal": "^0.1.5", - "@nextcloud/auth": "^2.5.3", - "@nextcloud/axios": "^2.5.2", - "@nextcloud/browser-storage": "^0.5.0", - "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/event-bus": "^3.3.3", - "@nextcloud/initial-state": "^2.2.0", - "@nextcloud/l10n": "^3.4.1", - "@nextcloud/logger": "^3.0.3", - "@nextcloud/router": "^3.1.0", - "@nextcloud/sharing": "^0.3.0", - "@nextcloud/vue-select": "^3.26.0", - "@vueuse/components": "^11.0.0", - "@vueuse/core": "^11.0.0", - "blurhash": "^2.0.5", - "clone": "^2.1.2", - "debounce": "^2.2.0", - "dompurify": "^3.3.1", - "emoji-mart-vue-fast": "^15.0.5", - "escape-html": "^1.0.3", - "floating-vue": "^1.0.0-beta.19", - "focus-trap": "^7.8.0", - "linkify-string": "^4.3.2", - "md5": "^2.3.0", - "p-queue": "^8.1.1", - "rehype-external-links": "^3.0.0", - "rehype-highlight": "^7.0.2", - "rehype-react": "^7.1.2", - "remark-breaks": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "remark-unlink-protocols": "^1.0.0", - "splitpanes": "^2.4.1", - "string-length": "^5.0.1", - "striptags": "^3.2.0", - "tabbable": "^6.4.0", - "tributejs": "^5.1.3", - "unified": "^11.0.1", - "unist-builder": "^4.0.0", - "unist-util-visit": "^5.1.0", - "vue": "^2.7.16", - "vue-color": "^2.8.1", - "vue-frag": "^1.4.3", - "vue-router": "^3.6.5", - "vue2-datepicker": "^3.11.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/vue-select": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.26.0.tgz", - "integrity": "sha512-UvJExrxzx5pP3lv7j6zrv2yj6B1dXph7sh3lLNPnbJPjPoH/yg58mHNFBcPJrRYMbpy2t3hlC6F7s33KCTr9FA==", - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - }, - "peerDependencies": { - "vue": "2.x" - } - }, - "node_modules/@nextcloud/vue/node_modules/@nextcloud/l10n": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz", - "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==", - "dependencies": { - "@nextcloud/router": "^3.0.1", - "@nextcloud/typings": "^1.9.1", - "@types/escape-html": "^1.0.4", - "dompurify": "^3.2.6", - "escape-html": "^1.0.3" - }, - "engines": { - "node": "^20 || ^22 || ^24" - } - }, - "node_modules/@nextcloud/vue/node_modules/@nextcloud/router": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz", - "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==", - "dependencies": { - "@nextcloud/typings": "^1.10.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/webpack-vue-config": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-6.3.2.tgz", - "integrity": "sha512-3ihWEW6kflGggVXNqL1gNrIx88GibJMIb1sC5CHjjZ/+2kkdOQ2HizoYKyMqPfcqji9UtwgdT+RlFVC4SViNJg==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": "^20.0.0", - "npm": "^9.0.0 || ^10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.22.9", - "babel-loader": "^10.0.0", - "css-loader": "^7.1.1", - "node-polyfill-webpack-plugin": "4.0.0", - "sass": "^1.64.2", - "sass-loader": "^16.0.2", - "style-loader": "^4.0.0", - "ts-loader": "^9.4.4", - "vue": "^2.7.16 || ^3.5.13", - "vue-loader": "^15.11.1 || ^17.4.2", - "webpack": "^5.88.2", - "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.0.2" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "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" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "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" - } - }, - "node_modules/@nodelib/fs.walk": { - "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" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@npmcli/agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", - "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@oozcitak/dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-2.0.2.tgz", - "integrity": "sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oozcitak/infra": "^2.0.2", - "@oozcitak/url": "^3.0.0", - "@oozcitak/util": "^10.0.0" - }, - "engines": { - "node": ">=20.0" - } - }, - "node_modules/@oozcitak/infra": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-2.0.2.tgz", - "integrity": "sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oozcitak/util": "^10.0.0" - }, - "engines": { - "node": ">=20.0" - } - }, - "node_modules/@oozcitak/url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-3.0.0.tgz", - "integrity": "sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oozcitak/infra": "^2.0.2", - "@oozcitak/util": "^10.0.0" - }, - "engines": { - "node": ">=20.0" - } - }, - "node_modules/@oozcitak/util": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-10.0.0.tgz", - "integrity": "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", - "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", - "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@peculiar/asn1-cms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", - "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-csr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", - "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-ecc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", - "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pfx": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", - "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-rsa": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pkcs8": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", - "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pkcs9": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", - "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pfx": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-rsa": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", - "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-schema": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", - "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", - "dev": true, - "peer": true, - "dependencies": { - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-x509": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", - "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-x509-attr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", - "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/x509": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", - "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-csr": "^2.6.0", - "@peculiar/asn1-ecc": "^2.6.0", - "@peculiar/asn1-pkcs9": "^2.6.0", - "@peculiar/asn1-rsa": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "pvtsutils": "^1.3.6", - "reflect-metadata": "^0.2.2", - "tslib": "^2.8.1", - "tsyringe": "^4.10.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "peer": true - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "peer": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/escape-html": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz", - "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.25", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", - "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", - "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "peer": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.17", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", - "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/jquery": { - "version": "3.5.16", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", - "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", - "dependencies": { - "@types/sizzle": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "peer": true - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" - }, - "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", - "dev": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/react": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", - "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", - "peer": true, - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true, - "peer": true - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "peer": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" - } - }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", - "dev": true, - "peer": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sizzle": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", - "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==" - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/@oozcitak/dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-2.0.2.tgz", + "integrity": "sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==", "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@oozcitak/infra": "^2.0.2", + "@oozcitak/url": "^3.0.0", + "@oozcitak/util": "^10.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=20.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/@oozcitak/infra": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-2.0.2.tgz", + "integrity": "sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==", "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@oozcitak/util": "^10.0.0" }, "engines": { - "node": ">=10" + "node": ">=20.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "node_modules/@oozcitak/url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-3.0.0.tgz", + "integrity": "sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@oozcitak/infra": "^2.0.2", + "@oozcitak/util": "^10.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "node": ">=20.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "node_modules/@oozcitak/util": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-10.0.0.tgz", + "integrity": "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=20.0" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "Apache-2.0", - "peer": true, + "license": "MIT", + "optional": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=14" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true + "node_modules/@types/escape-html": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz", + "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==" }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/jquery": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", + "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", + "dependencies": { + "@types/sizzle": "*" + } }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "dependencies": { + "undici-types": "~7.16.0" + } }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==" }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@types/sizzle": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", + "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==" }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "optional": true }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, "node_modules/@vue/compiler-sfc": { "version": "2.7.16", @@ -3627,31 +1670,6 @@ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" }, - "node_modules/@vue/eslint-config-typescript": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", - "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", - "dev": true, - "peer": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^7.1.1", - "@typescript-eslint/parser": "^7.1.1", - "vue-eslint-parser": "^9.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "peerDependencies": { - "eslint": "^8.56.0", - "eslint-plugin-vue": "^9.0.0", - "typescript": ">=4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@vueuse/components": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-11.3.0.tgz", @@ -3972,6 +1990,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, "node_modules/abbrev": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", @@ -3983,43 +2007,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "peer": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "peer": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -4137,19 +2124,6 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "peer": true, - "bin": { - "ansi-html": "bin/ansi-html" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -4174,28 +2148,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, + "node_modules/apexcharts": { + "version": "3.54.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.54.1.tgz", + "integrity": "sha512-E4et0h/J1U3r3EwS/WlqJCQIbepKbp6wGUmaAwJOMjHUP4Ci0gxanLa7FR3okx6p9coi4st6J853/Cb1NP0vpA==", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "peer": true, - "engines": { - "node": ">=14" + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" } }, "node_modules/argparse": { @@ -4204,53 +2169,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "peer": true - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -4260,88 +2178,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -4352,55 +2188,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/asn1js": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", - "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", - "dev": true, - "peer": true, - "dependencies": { - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "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/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -4411,37 +2198,11 @@ "node": ">=8" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "peer": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axios": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", @@ -4452,23 +2213,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": "^18.20.0 || ^20.10.0 || >=22.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5.61.0" - } - }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -4508,7 +2252,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/baseline-browser-mapping": { "version": "2.9.19", @@ -4519,13 +2264,6 @@ "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true, - "peer": true - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -4535,19 +2273,6 @@ "node": "*" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -4610,110 +2335,26 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/blurhash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", - "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" - }, - "node_modules/bn.js": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", - "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "peer": true, - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 6" } }, - "node_modules/bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "peer": true + "node_modules/blurhash": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "devOptional": true, + "optional": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -4730,146 +2371,6 @@ "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", - "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^5.2.2", - "browserify-rsa": "^4.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.6.1", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.9", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "pako": "~1.0.5" - } - }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", @@ -4903,129 +2404,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "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==", - "dev": true, - "peer": true - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "peer": true, - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", "integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==", "optional": true }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bytestreamjs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", - "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/cacache": { "version": "19.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", @@ -5082,25 +2472,6 @@ "license": "ISC", "optional": true }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -5113,23 +2484,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -5251,22 +2605,6 @@ "node": "*" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", @@ -5287,21 +2625,6 @@ "node": ">=6.0" } }, - "node_modules/cipher-base": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", - "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/clamp": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", @@ -5386,88 +2709,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "peer": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "dev": true, - "peer": true, - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "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==", - "dev": true, - "peer": true - }, "node_modules/consolidate": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", @@ -5481,60 +2728,6 @@ "node": ">= 0.10.0" } }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "peer": true - }, "node_modules/core-js": { "version": "3.48.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", @@ -5542,15 +2735,8 @@ "hasInstallScript": true, "funding": { "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "peer": true + "url": "https://opencollective.com/core-js" + } }, "node_modules/cosmiconfig": { "version": "8.3.6", @@ -5579,54 +2765,6 @@ } } }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -5649,33 +2787,6 @@ "node": "*" } }, - "node_modules/crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", - "dev": true, - "peer": true, - "dependencies": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/css-functions-list": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz", @@ -5773,60 +2884,6 @@ "node": ">= 12" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/date-format-parse": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.7.tgz", @@ -5961,85 +3018,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", - "dev": true, - "peer": true, - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "peer": true, - "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/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6048,16 +3026,6 @@ "node": ">=0.4.0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -6066,28 +3034,6 @@ "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==", - "dev": true, - "peer": true, - "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", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -6098,13 +3044,6 @@ "node": ">=8" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "peer": true - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -6117,26 +3056,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "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==", - "dev": true, - "peer": true, - "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.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -6157,19 +3076,6 @@ "license": "MIT", "optional": true }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "peer": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -6182,80 +3088,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domain-browser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.7.0.tgz", - "integrity": "sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/dompurify": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", @@ -6265,22 +3097,6 @@ "@types/trusted-types": "^2.0.7" } }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -6302,43 +3118,12 @@ "license": "MIT", "optional": true }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "peer": true - }, "node_modules/electron-to-chromium": { "version": "1.5.286", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", "dev": true }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dev": true, - "peer": true, - "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.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/emoji-mart-vue-fast": { "version": "15.0.5", "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.5.tgz", @@ -6367,16 +3152,6 @@ "node": ">= 4" } }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -6479,75 +3254,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6581,49 +3287,18 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "peer": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "peer": true, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escalade": { @@ -6708,435 +3383,17 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, "node_modules/eslint-import-resolver-alias": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", "integrity": "sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "eslint-plugin-import": ">=1.4.0" - } - }, - "node_modules/eslint-import-resolver-exports": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz", - "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==", - "dev": true, - "peer": true, - "dependencies": { - "resolve.exports": "^2.0.0" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "dev": true, - "peer": true, - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/ota-meshi", - "https://opencollective.com/eslint" - ], - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "peer": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", - "integrity": "sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==", - "dev": true, - "peer": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.41.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^4.0.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", - "dev": true, - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", - "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", - "dev": true, - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 4" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0" } }, "node_modules/eslint-scope": { @@ -7152,16 +3409,6 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint/node_modules/@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", @@ -7345,26 +3592,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -7379,17 +3606,6 @@ "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==", - "dev": true, - "peer": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -7409,86 +3625,6 @@ "license": "Apache-2.0", "optional": true }, - "node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "peer": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -7572,26 +3708,6 @@ "path-expression-matcher": "^1.1.3" } }, - "node_modules/fast-xml-parser": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.4.tgz", - "integrity": "sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -7610,19 +3726,6 @@ "reusify": "^1.0.4" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "peer": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", @@ -7678,42 +3781,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -7811,22 +3878,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "peer": true, - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -7872,26 +3923,6 @@ "node": ">=12.20.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -7920,21 +3951,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -7943,57 +3959,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -8029,37 +3994,6 @@ "node": ">= 0.4" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", - "dev": true, - "peer": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -8101,23 +4035,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regex.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", - "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -8203,23 +4120,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -8286,13 +4186,6 @@ ], "license": "MIT" }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true, - "peer": true - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -8303,19 +4196,6 @@ "node": ">=6" } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8325,35 +4205,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -8379,37 +4230,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", "dev": true }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -8496,18 +4322,6 @@ "node": ">=12.0.0" } }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -8531,74 +4345,21 @@ "yallist": "^4.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/hot-patcher": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz", - "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==", - "optional": true - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node": ">=10" } }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "peer": true + "license": "ISC" }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } + "node_modules/hot-patcher": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz", + "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==", + "optional": true }, "node_modules/html-tags": { "version": "3.3.1", @@ -8613,41 +4374,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -8656,56 +4382,6 @@ "license": "BSD-2-Clause", "optional": true }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true, - "peer": true - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "peer": true, - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "dev": true, - "peer": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "peer": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -8721,58 +4397,6 @@ "node": ">= 14" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "dev": true, - "peer": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-proxy/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -8788,29 +4412,6 @@ "node": ">= 14" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.18" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -8841,7 +4442,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/ignore": { "version": "5.3.2", @@ -8852,14 +4454,6 @@ "node": ">= 4" } }, - "node_modules/immutable": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", - "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -8956,21 +4550,6 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -8991,16 +4570,6 @@ "node": ">= 12" } }, - "node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/is-absolute-url": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", @@ -9009,216 +4578,28 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "peer": true, - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "peer": true, - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "peer": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "peer": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "peer": true, "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9227,22 +4608,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "peer": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -9252,22 +4617,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -9278,26 +4627,6 @@ "node": ">=8" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.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", @@ -9310,81 +4639,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "peer": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "peer": true, - "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-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -9394,23 +4648,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -9443,71 +4680,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-svg": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz", @@ -9522,109 +4694,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "peer": true, - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "dev": true, - "peer": true, - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -9704,29 +4773,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -9751,19 +4797,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -9785,20 +4818,9 @@ "node_modules/known-css-properties": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/launch-editor": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz", - "integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==", - "dev": true, - "peer": true, - "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dev": true, + "license": "MIT" }, "node_modules/layerr": { "version": "3.0.0", @@ -9873,12 +4895,6 @@ "linkifyjs": "^4.0.0" } }, - "node_modules/linkifyjs": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", - "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", - "peer": true - }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", @@ -9933,13 +4949,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, - "peer": true - }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -9978,16 +4987,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/make-fetch-happen": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", @@ -10070,18 +5069,6 @@ "is-buffer": "~1.1.6" } }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/mdast-squeeze-paragraphs": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-6.0.0.tgz", @@ -10196,46 +5183,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", - "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", - "dev": true, - "peer": true, - "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-to-fsa": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", - "@jsonjoy.com/json-pack": "^1.11.0", - "@jsonjoy.com/util": "^1.9.0", - "glob-to-regex.js": "^1.0.1", - "thingies": "^2.5.0", - "tree-dump": "^1.0.3", - "tslib": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/meow": { "version": "10.1.5", "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", @@ -10276,16 +5223,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -10319,16 +5256,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mgrs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", @@ -10769,41 +5696,6 @@ "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==", - "dev": true, - "peer": true, - "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.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -10837,26 +5729,12 @@ "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, "node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -11088,20 +5966,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "peer": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, "node_modules/nan": { "version": "2.22.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", @@ -11135,22 +5999,6 @@ "license": "MIT", "optional": true }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "peer": true, - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -11181,16 +6029,6 @@ "url": "https://nearley.js.org/#give-to-nearley" } }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -11231,14 +6069,6 @@ "node": ">=10" } }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -11353,58 +6183,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WLk77vLpbcpmTekRj6s6vYxk30XoyaY5MDZ4+9g8OaKoG3Ij+TjOqhpQjVUlfDZBPBgpNATDltaQkzuXSnnkwg==", - "dev": true, - "peer": true, - "dependencies": { - "assert": "^2.1.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^5.7.0", - "events": "^3.3.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.3.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^4.5.2", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "type-fest": "^4.18.2", - "url": "^0.11.3", - "util": "^0.12.5", - "vm-browserify": "^1.1.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, - "node_modules/node-polyfill-webpack-plugin/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -11466,163 +6244,6 @@ "node": ">=0.10.0" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "peer": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true, - "peer": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "peer": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11632,25 +6253,6 @@ "wrappy": "1" } }, - "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "peer": true, - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -11668,31 +6270,6 @@ "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==", - "dev": true, - "peer": true - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -11752,24 +6329,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", - "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -11805,13 +6364,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11824,23 +6376,6 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", - "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", - "dev": true, - "peer": true, - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "pbkdf2": "^3.1.5", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -11860,23 +6395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "peer": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11958,38 +6476,13 @@ "license": "ISC", "optional": true }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "peer": true - }, "node_modules/path-type": { - "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" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", - "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "peer": true, - "dependencies": { - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "ripemd160": "^2.0.3", - "safe-buffer": "^5.2.1", - "sha.js": "^2.4.12", - "to-buffer": "^1.2.1" - }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, "node_modules/picocolors": { @@ -12119,34 +6612,6 @@ "node": ">=8" } }, - "node_modules/pkijs": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", - "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "1.4.0", - "asn1js": "^3.0.6", - "bytestreamjs": "^2.0.1", - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -12174,39 +6639,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-html": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.8.1.tgz", - "integrity": "sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "htmlparser2": "^8.0.0", - "js-tokens": "^9.0.0", - "postcss": "^8.5.0", - "postcss-safe-parser": "^6.0.0" - }, - "engines": { - "node": "^12 || >=14" - } - }, - "node_modules/postcss-html/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", @@ -12316,34 +6748,6 @@ "postcss": "^8.3.3" } }, - "node_modules/postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, "node_modules/postcss-selector-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", @@ -12427,23 +6831,6 @@ "node": "^18.17.0 || >=20.5.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==", - "dev": true, - "peer": true, - "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", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "peer": true - }, "node_modules/proj4": { "version": "2.20.4", "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.20.4.tgz", @@ -12492,30 +6879,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "peer": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -12527,29 +6890,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": true, - "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.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/pump": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", @@ -12571,52 +6911,6 @@ "node": ">=6" } }, - "node_modules/pvtsutils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", - "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "^2.8.1" - } - }, - "node_modules/pvutils": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", - "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "dev": true, - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -12679,53 +6973,6 @@ "node": ">=0.12" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "peer": true, - "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==", - "dev": true, - "peer": true, - "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", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "peer": true, - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -12817,37 +7064,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "peer": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -12877,57 +7093,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true, - "peer": true - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/rehype-external-links": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", @@ -13137,21 +7302,11 @@ "node": ">=0.10.0" } }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "devOptional": true + "optional": true }, "node_modules/resolve": { "version": "1.22.11", @@ -13203,161 +7358,41 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "peer": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", - "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", - "dev": true, - "peer": true, - "dependencies": { - "hash-base": "^3.1.2", - "inherits": "^2.0.4" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ripemd160/node_modules/hash-base": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", - "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ripemd160/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/ripemd160/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/ripemd160/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "node_modules/ripemd160/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12" } }, - "node_modules/ripemd160/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, - "peer": true + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "peer": true, - "engines": { - "node": ">=18" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { @@ -13383,26 +7418,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -13421,76 +7436,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + ], + "optional": true }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sass": { - "version": "1.97.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", - "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, - "peer": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } + "optional": true }, "node_modules/sass-loader": { "version": "16.0.7", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -13584,390 +7545,51 @@ "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/schemes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/schemes/-/schemes-1.4.0.tgz", - "integrity": "sha512-ImFy9FbCsQlVgnE3TCWmLPCFnVzx0lHL/l+umHplDqAKd0dzFpnS6lFZIpagBlYhKwzVmlV36ec0Y1XTu8JBAQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "extend": "^3.0.0" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true, - "peer": true - }, - "node_modules/selfsigned": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", - "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", - "dev": true, - "peer": true, - "dependencies": { - "@peculiar/x509": "^1.14.2", - "pkijs": "^3.3.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/serve-index": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", - "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", - "dev": true, - "peer": true, - "dependencies": { - "accepts": "~1.3.8", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.8.0", - "mime-types": "~2.1.35", - "parseurl": "~1.3.3" - }, - "engines": { - "node": ">= 0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "peer": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "peer": true, - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "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==", - "dev": true, - "peer": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "peer": true - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "node_modules/schemes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/schemes/-/schemes-1.4.0.tgz", + "integrity": "sha512-ImFy9FbCsQlVgnE3TCWmLPCFnVzx0lHL/l+umHplDqAKd0dzFpnS6lFZIpagBlYhKwzVmlV36ec0Y1XTu8JBAQ==", "dev": true, - "peer": true, + "license": "MIT", + "optional": true, "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "extend": "^3.0.0" } }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "peer": true, "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "kind-of": "^6.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "peer": true, "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/signal-exit": { @@ -14085,18 +7707,6 @@ "node": ">=0.10" } }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "peer": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, "node_modules/socks": { "version": "2.8.7", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", @@ -14129,16 +7739,6 @@ "node": ">= 14" } }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -14219,53 +7819,6 @@ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/splitpanes": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-2.4.1.tgz", @@ -14285,96 +7838,12 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "peer": true - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -14451,65 +7920,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -14537,16 +7947,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-indent": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", @@ -14577,19 +7977,6 @@ "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==" }, - "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "peer": true - }, "node_modules/strtok3": { "version": "10.3.4", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", @@ -14679,129 +8066,20 @@ "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz", - "integrity": "sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12 || >=14" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "postcss-html": "^1.0.0", - "stylelint": ">=14.0.0" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", - "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "stylelint": "^15.10.0" - } - }, - "node_modules/stylelint-config-recommended-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", - "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^13.0.0", - "stylelint-scss": "^5.3.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^15.10.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } - } - }, - "node_modules/stylelint-config-recommended-vue": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-vue/-/stylelint-config-recommended-vue-1.6.1.tgz", - "integrity": "sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "semver": "^7.3.5", - "stylelint-config-html": ">=1.0.0", - "stylelint-config-recommended": ">=6.0.0" - }, - "engines": { - "node": "^12 || >=14" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "postcss-html": "^1.0.0", - "stylelint": ">=14.0.0" - } - }, - "node_modules/stylelint-config-recommended-vue/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "peer": true, + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, "bin": { - "semver": "bin/semver.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint-scss": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", - "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "known-css-properties": "^0.29.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0" + "node": "^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -14891,6 +8169,97 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "license": "MIT", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==", + "license": "MIT" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/tabbable": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", @@ -15093,43 +8462,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/thingies": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", - "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "^2" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", @@ -15140,6 +8472,7 @@ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, + "optional": true, "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" @@ -15156,6 +8489,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "optional": true, "engines": { "node": ">=12.0.0" }, @@ -15173,6 +8507,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "optional": true, "engines": { "node": ">=12" }, @@ -15180,21 +8515,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "dev": true, - "peer": true, - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -15212,33 +8532,6 @@ "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-dump": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", - "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/tributejs": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/tributejs/-/tributejs-5.1.3.tgz", @@ -15255,275 +8548,62 @@ }, "node_modules/trim-newlines": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-loader": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", - "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "peer": true - }, - "node_modules/tsyringe": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", - "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "^1.9.3" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/tsyringe/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "peer": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "peer": true, + "license": "Apache-2.0", + "optional": true, "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { - "node": ">=14.17" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript-event-target": { @@ -15532,25 +8612,6 @@ "integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw==", "optional": true }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -15691,51 +8752,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "peer": true, - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -15775,20 +8791,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", @@ -15808,53 +8810,12 @@ "requires-port": "^1.0.0" } }, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -15877,16 +8838,6 @@ "spdx-license-ids": "^3.0.0" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -15913,13 +8864,6 @@ "url": "https://opencollective.com/unified" } }, - "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==", - "dev": true, - "peer": true - }, "node_modules/vue": { "version": "2.7.16", "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", @@ -15930,6 +8874,16 @@ "csstype": "^3.1.0" } }, + "node_modules/vue-apexcharts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vue-apexcharts/-/vue-apexcharts-1.7.0.tgz", + "integrity": "sha512-QMpvBllJ1XvFsK4dwcbyxKalVpHfJnoqsNWszY55HJk/Sn7WP1f5YUv4JIzugqu4GTQB6gLcCVwwPDQFtwr0oQ==", + "license": "MIT", + "peerDependencies": { + "apexcharts": ">=4.0.0", + "vue": "^2.5.17" + } + }, "node_modules/vue-color": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-2.8.2.tgz", @@ -15941,84 +8895,6 @@ "tinycolor2": "^1.1.2" } }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vue-frag": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/vue-frag/-/vue-frag-1.4.3.tgz", @@ -16135,16 +9011,6 @@ "node": ">=10.13.0" } }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "peer": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -16247,243 +9113,77 @@ "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", - "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.6.1", - "@webpack-cli/configtest": "^3.0.1", - "@webpack-cli/info": "^3.0.1", - "@webpack-cli/serve": "^3.0.1", - "colorette": "^2.0.14", - "commander": "^12.1.0", - "cross-spawn": "^7.0.3", - "envinfo": "^7.14.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^6.0.1" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.82.0" - }, - "peerDependenciesMeta": { - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", - "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", - "dev": true, - "peer": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^4.43.1", - "mime-types": "^3.0.1", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">= 18.12.0" + "node": ">=10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, - "peerDependencies": { - "webpack": "^5.0.0" - }, "peerDependenciesMeta": { - "webpack": { + "webpack-cli": { "optional": true } } }, - "node_modules/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, - "peer": true, "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/webpack-dev-server": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", - "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.25", - "@types/express-serve-static-core": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.8.1", - "connect-history-api-fallback": "^2.0.0", - "express": "^4.22.1", - "graceful-fs": "^4.2.6", - "http-proxy-middleware": "^2.0.9", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "schema-utils": "^4.2.0", - "selfsigned": "^5.5.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.4.2", - "ws": "^8.18.0" + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" }, "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">= 18.12.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.0.0" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "webpack": { + "webpack-bundle-analyzer": { "optional": true }, - "webpack-cli": { + "webpack-dev-server": { "optional": true } } }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "peer": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, - "peer": true, - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">=18" } }, "node_modules/webpack-merge": { @@ -16509,31 +9209,6 @@ "node": ">=10.13.0" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "peer": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -16549,95 +9224,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "peer": true, - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "peer": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -16790,54 +9376,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "peer": true, - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12" - } - }, "node_modules/xmlbuilder2": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-4.0.3.tgz", @@ -16854,23 +9392,6 @@ "node": ">=20.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -16906,107 +9427,6 @@ "picocolors": "^1.1.1" } }, - "@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "peer": true - }, - "@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/eslint-parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", - "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", - "dev": true, - "peer": true, - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "peer": true, - "requires": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "peer": true - }, - "@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "peer": true, - "requires": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "peer": true, - "requires": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - } - }, "@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -17017,24 +9437,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" }, - "@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" - } - }, "@babel/parser": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", @@ -17048,34 +9450,6 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==" }, - "@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - } - }, - "@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - } - }, "@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", @@ -17097,15 +9471,13 @@ "@conduction/nextcloud-vue": { "version": "0.1.0-beta.3", "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-0.1.0-beta.3.tgz", - "integrity": "sha512-+B02z2vUgN8BTZ0ZRd9mtrIVo55KMETzvEsyt7g0AW50hNU44xd9ILBHjKvZlKQclsLWzT36K0+RWIbcC22QVA==", - "requires": {} + "integrity": "sha512-+B02z2vUgN8BTZ0ZRd9mtrIVo55KMETzvEsyt7g0AW50hNU44xd9ILBHjKvZlKQclsLWzT36K0+RWIbcC22QVA==" }, "@csstools/css-parser-algorithms": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", - "dev": true, - "requires": {} + "dev": true }, "@csstools/css-tokenizer": { "version": "2.4.1", @@ -17117,15 +9489,13 @@ "version": "2.1.13", "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", - "dev": true, - "requires": {} + "dev": true }, "@csstools/selector-specificity": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", - "dev": true, - "requires": {} + "dev": true }, "@cyclonedx/cyclonedx-npm": { "version": "4.2.1", @@ -17149,8 +9519,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/@cyclonedx/cyclonedx-library/-/cyclonedx-library-10.0.0.tgz", "integrity": "sha512-xDXf2eqzeFHdjamj6oBV3duRSfrlmsJ5+2z9tXp7q5qxJP5Awmjf4ABSutS4qkVHHj7JzKFL/EM0V0Nihc7zPg==", - "dev": true, - "requires": {} + "dev": true }, "ajv": { "version": "8.18.0", @@ -17226,53 +9595,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", - "dev": true - }, - "@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@es-joy/jsdoccomment": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", - "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", - "dev": true, - "peer": true, - "requires": { - "comment-parser": "1.4.1", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" - } + "dev": true }, "@eslint-community/eslint-utils": { "version": "4.9.1", @@ -17530,17 +9853,6 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, - "@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, "@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -17573,247 +9885,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/buffers": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", - "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/fs-core": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", - "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" - } - }, - "@jsonjoy.com/fs-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", - "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "thingies": "^2.5.0" - } - }, - "@jsonjoy.com/fs-node": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", - "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", - "glob-to-regex.js": "^1.0.0", - "thingies": "^2.5.0" - } - }, - "@jsonjoy.com/fs-node-builtins": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", - "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/fs-node-to-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", - "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10" - } - }, - "@jsonjoy.com/fs-node-utils": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", - "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-node-builtins": "4.56.10" - } - }, - "@jsonjoy.com/fs-print": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", - "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-node-utils": "4.56.10", - "tree-dump": "^1.1.0" - } - }, - "@jsonjoy.com/fs-snapshot": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", - "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/json-pack": "^17.65.0", - "@jsonjoy.com/util": "^17.65.0" - }, - "dependencies": { - "@jsonjoy.com/base64": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", - "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/codegen": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", - "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", - "dev": true, - "peer": true, - "requires": {} - }, - "@jsonjoy.com/json-pack": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", - "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/base64": "17.67.0", - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0", - "@jsonjoy.com/json-pointer": "17.67.0", - "@jsonjoy.com/util": "17.67.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" - } - }, - "@jsonjoy.com/json-pointer": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", - "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/util": "17.67.0" - } - }, - "@jsonjoy.com/util": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", - "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0" - } - } - } - }, - "@jsonjoy.com/json-pack": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", - "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.2.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.2", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" - }, - "dependencies": { - "@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", - "dev": true, - "peer": true, - "requires": {} - } - } - }, - "@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" - } - }, - "@jsonjoy.com/util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", - "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" - }, - "dependencies": { - "@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", - "dev": true, - "peer": true, - "requires": {} - } - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true, - "peer": true - }, "@linusborg/vue-simple-portal": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@linusborg/vue-simple-portal/-/vue-simple-portal-0.1.5.tgz", @@ -17853,19 +9924,6 @@ } } }, - "@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, "@nextcloud/auth": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.3.tgz", @@ -17904,8 +9962,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.1.2.tgz", "integrity": "sha512-2iXl1rqQOHvggFIl/V3J5OpbodVazOsO38Gz/2sUAmtWXuOpGZG+7i6zQcVqGVaT1VzyPJ1gPiMpyyZi/XRWNA==", - "dev": true, - "requires": {} + "dev": true }, "@nextcloud/capabilities": { "version": "1.2.1", @@ -17948,29 +10005,7 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.2.tgz", "integrity": "sha512-zsDcBxvp2Vr/BgasK/vNYJ84LOXjl4RseJPrcp93zcnaB2WnygV50Sd0nQ5JN0ngTyPjiIlGd92MMzrMTofjRA==", - "dev": true, - "requires": {} - }, - "@nextcloud/eslint-plugin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-plugin/-/eslint-plugin-2.2.1.tgz", - "integrity": "sha512-RX+0FxpL1h2EzjNLeW0VSGTkbyWIq7WgV7QAjtyUmDbSGwf1ds9Zy5OcRkgXRHRIu/W0gB0DhS2iz9qXHphCzA==", - "dev": true, - "peer": true, - "requires": { - "fast-xml-parser": "^4.2.5", - "requireindex": "^1.2.0", - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } + "dev": true }, "@nextcloud/event-bus": { "version": "3.3.3", @@ -18092,8 +10127,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@nextcloud/stylelint-config/-/stylelint-config-2.4.0.tgz", "integrity": "sha512-S/q/offcs9pwnkjSrnfvsONryCOe6e1lfK2sszN6ZtkYyXvaqi8EbQuuhaGlxCstn9oXwbXfAI6O3Y8lGrjdFg==", - "dev": true, - "requires": {} + "dev": true }, "@nextcloud/typings": { "version": "1.10.0", @@ -18181,32 +10215,13 @@ "@nextcloud/vue-select": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.26.0.tgz", - "integrity": "sha512-UvJExrxzx5pP3lv7j6zrv2yj6B1dXph7sh3lLNPnbJPjPoH/yg58mHNFBcPJrRYMbpy2t3hlC6F7s33KCTr9FA==", - "requires": {} + "integrity": "sha512-UvJExrxzx5pP3lv7j6zrv2yj6B1dXph7sh3lLNPnbJPjPoH/yg58mHNFBcPJrRYMbpy2t3hlC6F7s33KCTr9FA==" }, "@nextcloud/webpack-vue-config": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-6.3.2.tgz", "integrity": "sha512-3ihWEW6kflGggVXNqL1gNrIx88GibJMIb1sC5CHjjZ/+2kkdOQ2HizoYKyMqPfcqji9UtwgdT+RlFVC4SViNJg==", - "dev": true, - "requires": {} - }, - "@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "peer": true, - "requires": { - "eslint-scope": "5.1.1" - } - }, - "@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "peer": true + "dev": true }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -18234,13 +10249,6 @@ "fastq": "^1.6.0" } }, - "@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "peer": true - }, "@npmcli/agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", @@ -18267,355 +10275,58 @@ "@npmcli/fs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", - "dev": true, - "optional": true, - "requires": { - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "optional": true - } - } - }, - "@oozcitak/dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-2.0.2.tgz", - "integrity": "sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==", - "dev": true, - "requires": { - "@oozcitak/infra": "^2.0.2", - "@oozcitak/url": "^3.0.0", - "@oozcitak/util": "^10.0.0" - } - }, - "@oozcitak/infra": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-2.0.2.tgz", - "integrity": "sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==", - "dev": true, - "requires": { - "@oozcitak/util": "^10.0.0" - } - }, - "@oozcitak/url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-3.0.0.tgz", - "integrity": "sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==", - "dev": true, - "requires": { - "@oozcitak/infra": "^2.0.2", - "@oozcitak/util": "^10.0.0" - } - }, - "@oozcitak/util": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-10.0.0.tgz", - "integrity": "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==", - "dev": true - }, - "@parcel/watcher": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", - "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6", - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" - }, - "dependencies": { - "picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", - "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", - "dev": true, - "optional": true, - "peer": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", - "dev": true, - "optional": true, - "peer": true - }, - "@peculiar/asn1-cms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", - "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-csr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", - "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-ecc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", - "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-pfx": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", - "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-rsa": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-pkcs8": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", - "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-pkcs9": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", - "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pfx": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-rsa": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", - "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "@peculiar/asn1-schema": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", - "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "dev": true, - "peer": true, + "optional": true, "requires": { - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "optional": true + } } }, - "@peculiar/asn1-x509": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", - "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "@oozcitak/dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-2.0.2.tgz", + "integrity": "sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==", "dev": true, - "peer": true, "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" + "@oozcitak/infra": "^2.0.2", + "@oozcitak/url": "^3.0.0", + "@oozcitak/util": "^10.0.0" } }, - "@peculiar/asn1-x509-attr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", - "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", + "@oozcitak/infra": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-2.0.2.tgz", + "integrity": "sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==", "dev": true, - "peer": true, "requires": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" + "@oozcitak/util": "^10.0.0" } }, - "@peculiar/x509": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", - "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "@oozcitak/url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-3.0.0.tgz", + "integrity": "sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==", "dev": true, - "peer": true, "requires": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-csr": "^2.6.0", - "@peculiar/asn1-ecc": "^2.6.0", - "@peculiar/asn1-pkcs9": "^2.6.0", - "@peculiar/asn1-rsa": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "pvtsutils": "^1.3.6", - "reflect-metadata": "^0.2.2", - "tslib": "^2.8.1", - "tsyringe": "^4.10.0" + "@oozcitak/infra": "^2.0.2", + "@oozcitak/util": "^10.0.0" } }, + "@oozcitak/util": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-10.0.0.tgz", + "integrity": "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==", + "dev": true + }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -18623,71 +10334,11 @@ "dev": true, "optional": true }, - "@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "peer": true - }, "@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, - "@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "peer": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "peer": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, "@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -18727,32 +10378,6 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, - "@types/express": { - "version": "4.17.25", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", - "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", - "dev": true, - "peer": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" - } - }, - "@types/express-serve-static-core": { - "version": "4.19.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", - "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, "@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -18761,23 +10386,6 @@ "@types/unist": "*" } }, - "@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "peer": true - }, - "@types/http-proxy": { - "version": "1.17.17", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", - "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, "@types/jquery": { "version": "3.5.16", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", @@ -18792,13 +10400,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "peer": true - }, "@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -18807,13 +10408,6 @@ "@types/unist": "*" } }, - "@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "peer": true - }, "@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", @@ -18840,101 +10434,16 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "peer": true - }, - "@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "peer": true - }, - "@types/react": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", - "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", - "peer": true, - "requires": { - "csstype": "^3.2.2" - } - }, - "@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true, - "peer": true - }, "@types/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==" }, - "@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "peer": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", - "dev": true, - "peer": true, - "requires": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" - }, - "dependencies": { - "@types/send": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", - "dev": true, - "peer": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - } - } - }, "@types/sizzle": { "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==" }, - "@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, "@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -18943,305 +10452,18 @@ }, "@types/unist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" - }, - "@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - } - }, - "@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - } - }, - "@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "peer": true - }, - "@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "peer": true - } - } - }, - "@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" - }, - "@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "dev": true, - "optional": true, - "peer": true - }, - "@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@napi-rs/wasm-runtime": "^0.2.11" - } - }, - "@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "dev": true, - "optional": true, - "peer": true + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, - "@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "dev": true, - "optional": true, - "peer": true + "@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" }, - "@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "dev": true, - "optional": true, - "peer": true + "@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, "@vue/compiler-sfc": { "version": "2.7.16", @@ -19323,18 +10545,6 @@ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" }, - "@vue/eslint-config-typescript": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", - "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^7.1.1", - "@typescript-eslint/parser": "^7.1.1", - "vue-eslint-parser": "^9.3.1" - } - }, "@vueuse/components": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-11.3.0.tgz", @@ -19348,8 +10558,7 @@ "vue-demi": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "requires": {} + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" } } }, @@ -19367,8 +10576,7 @@ "vue-demi": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "requires": {} + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" } } }, @@ -19388,8 +10596,7 @@ "vue-demi": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "requires": {} + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" } } }, @@ -19543,22 +10750,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/info": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/serve": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", - "dev": true, - "requires": {} + "dev": true }, "@xtuc/ieee754": { "version": "1.2.0", @@ -19572,6 +10776,11 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, "abbrev": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", @@ -19579,36 +10788,6 @@ "dev": true, "optional": true }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "peer": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "peer": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "dependencies": { - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "peer": true - } - } - }, "acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -19619,15 +10798,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "agent-base": { "version": "7.1.4", @@ -19690,13 +10867,6 @@ "uri-js": "^4.4.1" } }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "peer": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -19712,210 +10882,49 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "peer": true, + "apexcharts": { + "version": "3.54.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.54.1.tgz", + "integrity": "sha512-E4et0h/J1U3r3EwS/WlqJCQIbepKbp6wGUmaAwJOMjHUP4Ci0gxanLa7FR3okx6p9coi4st6J853/Cb1NP0vpA==", "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" } }, - "are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "peer": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "peer": true - }, - "array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - } - }, "array-union": { "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 }, - "array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - } - }, - "array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "peer": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } - } - }, - "asn1js": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", - "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", - "dev": true, - "peer": true, - "requires": { - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - } - }, - "assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "peer": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "peer": true, - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, "axios": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", @@ -19926,16 +10935,6 @@ "proxy-from-env": "^1.1.0" } }, - "babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", - "dev": true, - "peer": true, - "requires": { - "find-up": "^5.0.0" - } - }, "bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -19957,7 +10956,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "dev": true, + "optional": true }, "baseline-browser-mapping": { "version": "2.9.19", @@ -19965,315 +10965,86 @@ "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true, - "peer": true - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "peer": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "optional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "blurhash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", - "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" - }, - "bn.js": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", - "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", - "dev": true, - "peer": true - }, - "body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "peer": true, - "requires": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "peer": true, - "requires": { - "side-channel": "^1.1.0" - } - } - } - }, - "bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "peer": true - }, - "brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "devOptional": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "peer": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "peer": true, - "requires": { - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, - "browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, - "peer": true, + "optional": true, "requires": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" + "file-uri-to-path": "1.0.0" } }, - "browserify-sign": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", - "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "peer": true, + "optional": true, "requires": { - "bn.js": "^5.2.2", - "browserify-rsa": "^4.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.6.1", + "buffer": "^5.5.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.9", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" + "readable-stream": "^3.4.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "peer": true, + "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - } + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "peer": true, + "optional": true, "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } }, - "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==", + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "blurhash": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "peer": true, "requires": { - "pako": "~1.0.5" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -20289,93 +11060,18 @@ "update-browserslist-db": "^1.2.0" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "peer": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "peer": true - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, - "builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "peer": true, - "requires": { - "run-applescript": "^7.0.0" - } - }, "byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", "integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==", "optional": true }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "peer": true - }, - "bytestreamjs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", - "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", - "dev": true, - "peer": true - }, "cacache": { "version": "19.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", @@ -20421,19 +11117,6 @@ } } }, - "call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "peer": true, - "requires": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - } - }, "call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -20443,17 +11126,6 @@ "function-bind": "^1.1.2" } }, - "call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "peer": true, - "requires": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -20523,16 +11195,6 @@ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" }, - "chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "peer": true, - "requires": { - "readdirp": "^4.0.1" - } - }, "chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", @@ -20546,18 +11208,6 @@ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true }, - "cipher-base": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", - "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.2" - } - }, "clamp": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", @@ -20625,78 +11275,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "peer": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "peer": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "dev": true, - "peer": true, - "requires": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - } - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "peer": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true, - "peer": true - }, "consolidate": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", @@ -20706,63 +11290,11 @@ "bluebird": "^3.1.1" } }, - "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==", - "dev": true, - "peer": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "peer": true - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "peer": true - }, - "cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "peer": true - }, "core-js": { "version": "3.48.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==" }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "peer": true - }, "cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -20775,55 +11307,6 @@ "path-type": "^4.0.0" } }, - "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==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "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" - } - }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -20840,27 +11323,6 @@ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" }, - "crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", - "dev": true, - "peer": true, - "requires": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - } - }, "css-functions-list": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz", @@ -20918,42 +11380,6 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "optional": true }, - "data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, "date-format-parse": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.7.tgz", @@ -21039,90 +11465,16 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", - "dev": true, - "peer": true, - "requires": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - } - }, - "default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "peer": true - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "peer": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "peer": true - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "peer": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "peer": true - }, "dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, - "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==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "peer": true - }, "detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -21130,40 +11482,12 @@ "dev": true, "optional": true }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "peer": true - }, "devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "requires": { - "dequal": "^2.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } + "requires": { + "dequal": "^2.0.0" } }, "dir-glob": { @@ -21182,16 +11506,6 @@ "dev": true, "optional": true }, - "dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "peer": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -21201,51 +11515,6 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "peer": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "dependencies": { - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "peer": true - } - } - }, - "domain-browser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.7.0.tgz", - "integrity": "sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==", - "dev": true, - "peer": true - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "peer": true - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "peer": true, - "requires": { - "domelementtype": "^2.3.0" - } - }, "dompurify": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", @@ -21254,18 +11523,6 @@ "@types/trusted-types": "^2.0.7" } }, - "domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "peer": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, "dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -21283,44 +11540,12 @@ "dev": true, "optional": true }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "peer": true - }, "electron-to-chromium": { "version": "1.5.286", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", "dev": true }, - "elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dev": true, - "peer": true, - "requires": { - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } - } - }, "emoji-mart-vue-fast": { "version": "15.0.5", "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.5.tgz", @@ -21342,13 +11567,6 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "peer": true - }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -21426,69 +11644,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "peer": true, - "requires": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - } - }, "es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -21524,28 +11679,6 @@ "hasown": "^2.0.2" } }, - "es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "peer": true, - "requires": { - "hasown": "^2.0.2" - } - }, - "es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "peer": true, - "requires": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - } - }, "escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -21675,305 +11808,11 @@ } } }, - "eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "peer": true, - "requires": {} - }, "eslint-import-resolver-alias": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", "integrity": "sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-exports": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz", - "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==", - "dev": true, - "peer": true, - "requires": { - "resolve.exports": "^2.0.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "dev": true, - "peer": true, - "requires": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - } - }, - "eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" - } - }, - "eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "peer": true, - "requires": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "eslint-plugin-jsdoc": { - "version": "46.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", - "integrity": "sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==", - "dev": true, - "peer": true, - "requires": { - "@es-joy/jsdoccomment": "~0.41.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "eslint-plugin-vue": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", - "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "globals": "^13.24.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "vue-eslint-parser": "^9.4.3", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -21985,13 +11824,6 @@ "estraverse": "^4.1.1" } }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true - }, "espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -22057,20 +11889,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "peer": true - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "peer": true - }, "eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -22082,99 +11900,19 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "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==", - "dev": true, - "peer": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "optional": true - }, - "exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "dev": true, - "optional": true - }, - "express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "peer": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "peer": true, - "requires": { - "side-channel": "^1.1.0" - } - } - } + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "optional": true + }, + "exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "optional": true }, "extend": { "version": "3.0.2", @@ -22238,16 +11976,6 @@ "path-expression-matcher": "^1.1.3" } }, - "fast-xml-parser": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.4.tgz", - "integrity": "sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==", - "dev": true, - "peer": true, - "requires": { - "strnum": "^1.0.5" - } - }, "fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -22263,16 +11991,6 @@ "reusify": "^1.0.4" } }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "peer": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, "fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", @@ -22308,41 +12026,6 @@ "to-regex-range": "^5.0.1" } }, - "finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "peer": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - } - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -22413,16 +12096,6 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==" }, - "for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "peer": true, - "requires": { - "is-callable": "^1.2.7" - } - }, "foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -22455,20 +12128,6 @@ "fetch-blob": "^3.1.2" } }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "peer": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "peer": true - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -22492,55 +12151,11 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true, - "peer": true - }, "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "peer": true - }, - "generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "peer": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true - }, "get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -22567,28 +12182,6 @@ "es-object-atoms": "^1.0.0" } }, - "get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - } - }, - "get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", - "dev": true, - "peer": true, - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -22640,14 +12233,6 @@ "is-glob": "^4.0.3" } }, - "glob-to-regex.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", - "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", - "dev": true, - "peer": true, - "requires": {} - }, "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -22694,17 +12279,6 @@ "type-fest": "^0.20.2" } }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -22747,52 +12321,18 @@ "resolved": "https://registry.npmjs.org/gridstack/-/gridstack-10.3.1.tgz", "integrity": "sha512-Ra82k/88gdeiu3ZP40COS4bI4sGhNQlZAaAQ6szfPfr68zVpsXxiyLKr5zYcTpKX4jjcwyNsNNdcV1tDJc71fA==" }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true, - "peer": true - }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "peer": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "peer": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "peer": true, - "requires": { - "dunder-proto": "^1.0.0" - } - }, "has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -22806,34 +12346,12 @@ "has-symbols": "^1.0.3" } }, - "hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - } - }, "hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", "dev": true }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -22897,18 +12415,6 @@ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==" }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "peer": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -22941,89 +12447,12 @@ "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==", "optional": true }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true }, - "htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "peer": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - }, - "dependencies": { - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "peer": true - } - } - }, "http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -23031,55 +12460,6 @@ "dev": true, "optional": true }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true, - "peer": true - }, - "http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "peer": true, - "requires": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "dev": true, - "peer": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "peer": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "peer": true - } - } - }, "http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -23091,36 +12471,6 @@ "debug": "^4.3.4" } }, - "http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "dev": true, - "peer": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "peer": true - } - } - }, - "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==", - "dev": true, - "peer": true - }, "https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -23132,35 +12482,18 @@ "debug": "4" } }, - "hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "dev": true, - "peer": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "peer": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "dev": true, + "optional": true }, "ignore": { "version": "5.3.2", @@ -23168,13 +12501,6 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, - "immutable": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", - "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", - "dev": true, - "peer": true - }, "import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -23240,18 +12566,6 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, - "internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - } - }, "interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -23265,132 +12579,21 @@ "dev": true, "optional": true }, - "ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", - "dev": true, - "peer": true - }, - "is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==" - }, - "is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - } - }, - "is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "peer": true, - "requires": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - } - }, - "is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "peer": true, - "requires": { - "has-bigints": "^1.0.2" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "peer": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "peer": true, - "requires": { - "builtin-modules": "^3.3.0" - } - }, - "is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.7.1" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } + "is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==" }, - "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==", - "dev": true, - "peer": true + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-core-module": { "version": "2.16.1", @@ -23401,72 +12604,18 @@ "hasown": "^2.0.2" } }, - "is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - } - }, - "is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "peer": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, - "is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3" - } - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -23476,65 +12625,12 @@ "is-extglob": "^2.1.1" } }, - "is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "peer": true, - "requires": { - "is-docker": "^3.0.0" - } - }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "peer": true - }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "peer": true - }, - "is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", - "dev": true, - "peer": true - }, "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 }, - "is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -23555,47 +12651,6 @@ "isobject": "^3.0.1" } }, - "is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "peer": true - }, - "is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, "is-svg": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz", @@ -23604,73 +12659,6 @@ "@file-type/xml": "^0.4.3" } }, - "is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - } - }, - "is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "peer": true, - "requires": { - "which-typed-array": "^1.1.16" - } - }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "peer": true - }, - "is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - } - }, - "is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "dev": true, - "peer": true, - "requires": { - "is-inside-container": "^1.0.0" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "peer": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -23731,20 +12719,6 @@ "argparse": "^2.0.1" } }, - "jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "peer": true - }, - "jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "peer": true - }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -23769,13 +12743,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true - }, "keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -23797,17 +12764,6 @@ "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true }, - "launch-editor": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz", - "integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==", - "dev": true, - "peer": true, - "requires": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } - }, "layerr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/layerr/-/layerr-3.0.0.tgz", @@ -23827,8 +12783,7 @@ "leaflet.markercluster": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", - "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", - "requires": {} + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==" }, "levn": { "version": "0.4.1", @@ -23862,14 +12817,7 @@ "linkify-string": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/linkify-string/-/linkify-string-4.3.2.tgz", - "integrity": "sha512-JqBuQpSa+CSj2tskIII70SKOjPfjXwDFyjRRNFTrlg76gp2nap36xeRj/cWaXxukqBNrxM+L07XyKRsUtH/DpQ==", - "requires": {} - }, - "linkifyjs": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", - "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", - "peer": true + "integrity": "sha512-JqBuQpSa+CSj2tskIII70SKOjPfjXwDFyjRRNFTrlg76gp2nap36xeRj/cWaXxukqBNrxM+L07XyKRsUtH/DpQ==" }, "loader-runner": { "version": "4.3.1", @@ -23908,13 +12856,6 @@ "p-locate": "^5.0.0" } }, - "lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, - "peer": true - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -23947,16 +12888,6 @@ "highlight.js": "~11.11.0" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, "make-fetch-happen": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", @@ -24018,18 +12949,6 @@ "is-buffer": "~1.1.6" } }, - "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==", - "dev": true, - "peer": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "mdast-squeeze-paragraphs": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-6.0.0.tgz", @@ -24115,36 +13034,6 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "peer": true - }, - "memfs": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", - "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", - "dev": true, - "peer": true, - "requires": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-to-fsa": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", - "@jsonjoy.com/json-pack": "^1.11.0", - "@jsonjoy.com/util": "^1.9.0", - "glob-to-regex.js": "^1.0.1", - "thingies": "^2.5.0", - "tree-dump": "^1.0.3", - "tslib": "^2.0.0" - } - }, "meow": { "version": "10.1.5", "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", @@ -24173,13 +13062,6 @@ } } }, - "merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "peer": true - }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -24209,13 +13091,6 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "peer": true - }, "mgrs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", @@ -24442,33 +13317,6 @@ "picomatch": "^2.3.1" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "peer": true - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -24489,25 +13337,11 @@ "dev": true, "optional": true }, - "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==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true - }, "minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "devOptional": true, + "optional": true, "requires": { "brace-expansion": "^2.0.2" } @@ -24683,17 +13517,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "peer": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, "nan": { "version": "2.22.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", @@ -24713,13 +13536,6 @@ "dev": true, "optional": true }, - "napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "peer": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -24739,13 +13555,6 @@ "randexp": "0.4.6" } }, - "negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "peer": true - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -24777,14 +13586,6 @@ } } }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true, - "peer": true - }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -24855,48 +13656,6 @@ } } }, - "node-polyfill-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WLk77vLpbcpmTekRj6s6vYxk30XoyaY5MDZ4+9g8OaKoG3Ij+TjOqhpQjVUlfDZBPBgpNATDltaQkzuXSnnkwg==", - "dev": true, - "peer": true, - "requires": { - "assert": "^2.1.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^5.7.0", - "events": "^3.3.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.3.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^4.5.2", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "type-fest": "^4.18.2", - "url": "^0.11.3", - "util": "^0.12.5", - "vm-browserify": "^1.1.2" - }, - "dependencies": { - "type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "peer": true - } - } - }, "node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -24939,118 +13698,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "peer": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "peer": true - }, - "object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "peer": true - }, - "object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - } - }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - } - }, - "object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true, - "peer": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "peer": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "peer": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -25060,19 +13707,6 @@ "wrappy": "1" } }, - "open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "peer": true, - "requires": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - } - }, "optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -25087,25 +13721,6 @@ "word-wrap": "^1.2.5" } }, - "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==", - "dev": true, - "peer": true - }, - "own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -25140,18 +13755,6 @@ "p-timeout": "^6.1.2" } }, - "p-retry": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", - "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", - "dev": true, - "peer": true, - "requires": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - } - }, "p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -25176,13 +13779,6 @@ "integrity": "sha512-N5ixXjzTy4QDQH0Q9YFjqIWd6zH6936Djpl2m9QNFmDv5Fum8q8BjkpAcHNMzOFE0IwQrFhJWex3AN6kS0OSwg==", "dev": true }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -25192,20 +13788,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", - "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", - "dev": true, - "peer": true, - "requires": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "pbkdf2": "^3.1.5", - "safe-buffer": "^5.2.1" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -25218,20 +13800,6 @@ "lines-and-columns": "^1.1.6" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "peer": true - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "peer": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -25288,34 +13856,12 @@ } } }, - "path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "peer": true - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", - "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", - "dev": true, - "peer": true, - "requires": { - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "ripemd160": "^2.0.3", - "safe-buffer": "^5.2.1", - "sha.js": "^2.4.12", - "to-buffer": "^1.2.1" - } - }, "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -25339,8 +13885,7 @@ "vue-demi": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "requires": {} + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" } } }, @@ -25392,28 +13937,6 @@ } } }, - "pkijs": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", - "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", - "dev": true, - "peer": true, - "requires": { - "@noble/hashes": "1.4.0", - "asn1js": "^3.0.6", - "bytestreamjs": "^2.0.1", - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - } - }, - "possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "peer": true - }, "postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -25424,41 +13947,11 @@ "source-map-js": "^1.2.1" } }, - "postcss-html": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.8.1.tgz", - "integrity": "sha512-OLF6P7qctfAWayOhLpcVnTGqVeJzu2W3WpIYelfz2+JV5oGxfkcEvweN9U4XpeqE0P98dcD9ssusGwlF0TK0uQ==", - "dev": true, - "peer": true, - "requires": { - "htmlparser2": "^8.0.0", - "js-tokens": "^9.0.0", - "postcss": "^8.5.0", - "postcss-safe-parser": "^6.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "peer": true - } - } - }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true, - "peer": true - }, "postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.2.0", @@ -25523,16 +14016,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "peer": true, - "requires": {} + "dev": true }, "postcss-selector-parser": { "version": "6.1.2", @@ -25590,20 +14074,6 @@ "dev": true, "optional": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "peer": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "peer": true - }, "proj4": { "version": "2.20.4", "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.20.4.tgz", @@ -25638,26 +14108,6 @@ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==" }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "peer": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "peer": true - } - } - }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -25669,30 +14119,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": true, - "requires": { - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "peer": true - } - } - }, "pump": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", @@ -25710,40 +14136,6 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, - "pvtsutils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", - "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^2.8.1" - } - }, - "pvutils": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", - "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", - "dev": true, - "peer": true - }, - "qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "dev": true, - "peer": true, - "requires": { - "side-channel": "^1.1.0" - } - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "peer": true - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -25780,47 +14172,6 @@ "ret": "~0.1.10" } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "peer": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "peer": true - }, - "raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "peer": true, - "requires": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - } - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -25882,27 +14233,6 @@ } } }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "peer": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - }, - "readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "peer": true - }, "rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -25922,45 +14252,6 @@ "strip-indent": "^4.0.0" } }, - "reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true, - "peer": true - }, - "reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - } - }, - "regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - } - }, "rehype-external-links": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", @@ -26109,18 +14400,11 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "peer": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "devOptional": true + "optional": true }, "resolve": { "version": "1.22.11", @@ -26156,20 +14440,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "peer": true - }, - "resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "peer": true - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -26177,13 +14447,6 @@ "dev": true, "optional": true }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "peer": true - }, "reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -26199,90 +14462,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", - "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", - "dev": true, - "peer": true, - "requires": { - "hash-base": "^3.1.2", - "inherits": "^2.0.4" - }, - "dependencies": { - "hash-base": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", - "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "peer": true - } - } - } - } - }, - "run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "dev": true, - "peer": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -26292,342 +14471,83 @@ "queue-microtask": "^1.2.2" } }, - "safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - } - }, - "safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - } + "optional": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.97.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", - "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, - "peer": true, - "requires": { - "@parcel/watcher": "^2.4.1", - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - } + "optional": true }, "sass-loader": { "version": "16.0.7", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, - "peer": true, "requires": { "neo-async": "^2.6.2" } }, "sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==" - }, - "schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "dependencies": { - "ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "schemes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/schemes/-/schemes-1.4.0.tgz", - "integrity": "sha512-ImFy9FbCsQlVgnE3TCWmLPCFnVzx0lHL/l+umHplDqAKd0dzFpnS6lFZIpagBlYhKwzVmlV36ec0Y1XTu8JBAQ==", - "dev": true, - "optional": true, - "requires": { - "extend": "^3.0.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true, - "peer": true - }, - "selfsigned": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", - "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", - "dev": true, - "peer": true, - "requires": { - "@peculiar/x509": "^1.14.2", - "pkijs": "^3.3.3" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - }, - "send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "peer": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - } - } - } - } + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==" }, - "serve-index": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", - "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, - "peer": true, "requires": { - "accepts": "~1.3.8", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.8.0", - "mime-types": "~2.1.35", - "parseurl": "~1.3.3" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, - "peer": true, "requires": { - "ms": "2.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "peer": true - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "peer": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "fast-deep-equal": "^3.1.3" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "peer": true + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true } } }, - "serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "peer": true, - "requires": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "peer": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "peer": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "peer": true, - "requires": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - } - }, - "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==", - "dev": true, - "peer": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "peer": true - }, - "sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "schemes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/schemes/-/schemes-1.4.0.tgz", + "integrity": "sha512-ImFy9FbCsQlVgnE3TCWmLPCFnVzx0lHL/l+umHplDqAKd0dzFpnS6lFZIpagBlYhKwzVmlV36ec0Y1XTu8JBAQ==", "dev": true, - "peer": true, + "optional": true, "requires": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" + "extend": "^3.0.0" } }, "shallow-clone": { @@ -26654,65 +14574,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "peer": true - }, - "side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - } - }, - "side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - } - }, - "side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - } - }, - "side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - } - }, "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -26772,18 +14633,6 @@ "nearley": "^2.20.1" } }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "peer": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, "socks": { "version": "2.8.7", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", @@ -26807,13 +14656,6 @@ "socks": "^2.8.3" } }, - "source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "peer": true - }, "source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -26886,49 +14728,6 @@ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "splitpanes": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-2.4.1.tgz", @@ -26944,88 +14743,12 @@ "minipass": "^7.0.3" } }, - "stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "peer": true - }, - "statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "peer": true - }, - "stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "peer": true, - "requires": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "peer": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "optional": true, "requires": { "safe-buffer": "~5.2.0" } @@ -27077,47 +14800,6 @@ "strip-ansi": "^6.0.1" } }, - "string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - } - }, - "string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -27137,13 +14819,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "peer": true - }, "strip-indent": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", @@ -27161,13 +14836,6 @@ "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==" }, - "strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "dev": true, - "peer": true - }, "strtok3": { "version": "10.3.4", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", @@ -27180,8 +14848,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", - "dev": true, - "requires": {} + "dev": true }, "style-search": { "version": "0.1.0", @@ -27274,69 +14941,6 @@ } } }, - "stylelint-config-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz", - "integrity": "sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "stylelint-config-recommended": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", - "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "stylelint-config-recommended-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", - "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", - "dev": true, - "peer": true, - "requires": { - "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^13.0.0", - "stylelint-scss": "^5.3.0" - } - }, - "stylelint-config-recommended-vue": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-vue/-/stylelint-config-recommended-vue-1.6.1.tgz", - "integrity": "sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==", - "dev": true, - "peer": true, - "requires": { - "semver": "^7.3.5", - "stylelint-config-html": ">=1.0.0", - "stylelint-config-recommended": ">=6.0.0" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "stylelint-scss": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", - "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", - "dev": true, - "peer": true, - "requires": { - "known-css-properties": "^0.29.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27368,6 +14972,70 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "requires": { + "svg.js": "^2.0.1" + } + }, + "svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "requires": { + "svg.js": ">=2.3.x" + } + }, + "svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "requires": { + "svg.js": "^2.2.5" + } + }, + "svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "requires": { + "svg.js": "^2.4.0" + } + }, + "svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "requires": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "dependencies": { + "svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "requires": { + "svg.js": "^2.2.5" + } + } + } + }, + "svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "requires": { + "svg.js": "^2.6.5" + } + }, "tabbable": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", @@ -27515,31 +15183,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "thingies": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", - "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", - "dev": true, - "peer": true, - "requires": {} - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true, - "peer": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "peer": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", @@ -27550,6 +15193,7 @@ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, + "optional": true, "requires": { "fdir": "^6.5.0", "picomatch": "^4.0.3" @@ -27560,28 +15204,17 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "requires": {} + "optional": true }, "picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true + "dev": true, + "optional": true } } }, - "to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "dev": true, - "peer": true, - "requires": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -27596,21 +15229,6 @@ "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "peer": true - }, - "tree-dump": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", - "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", - "dev": true, - "peer": true, - "requires": {} - }, "tributejs": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/tributejs/-/tributejs-5.1.3.tgz", @@ -27632,95 +15250,6 @@ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==" }, - "ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "peer": true, - "requires": {} - }, - "ts-loader": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", - "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "dependencies": { - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "peer": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "peer": true - }, - "tsyringe": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", - "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "peer": true - } - } - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true, - "peer": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -27746,100 +15275,12 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "peer": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - } - }, - "typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - } - }, - "typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "peer": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - } - }, - "typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - } - }, - "typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "peer": true - }, "typescript-event-target": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz", "integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw==", "optional": true }, - "unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - } - }, "undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -27940,42 +15381,6 @@ "unist-util-is": "^6.0.0" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "peer": true - }, - "unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "peer": true, - "requires": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1", - "napi-postinstall": "^0.3.0" - } - }, "update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -27995,26 +15400,6 @@ "punycode": "^2.1.0" } }, - "url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dev": true, - "peer": true, - "requires": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "peer": true - } - } - }, "url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", @@ -28031,40 +15416,12 @@ "requires-port": "^1.0.0" } }, - "util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "peer": true, - "requires": { - "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" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "peer": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -28087,13 +15444,6 @@ } } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "peer": true - }, "vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -28112,13 +15462,6 @@ "unist-util-stringify-position": "^4.0.0" } }, - "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==", - "dev": true, - "peer": true - }, "vue": { "version": "2.7.16", "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", @@ -28128,6 +15471,11 @@ "csstype": "^3.1.0" } }, + "vue-apexcharts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vue-apexcharts/-/vue-apexcharts-1.7.0.tgz", + "integrity": "sha512-QMpvBllJ1XvFsK4dwcbyxKalVpHfJnoqsNWszY55HJk/Sn7WP1f5YUv4JIzugqu4GTQB6gLcCVwwPDQFtwr0oQ==" + }, "vue-color": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-2.8.2.tgz", @@ -28139,61 +15487,10 @@ "tinycolor2": "^1.1.2" } }, - "vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "peer": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "peer": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true - }, - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "peer": true - } - } - }, "vue-frag": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/vue-frag/-/vue-frag-1.4.3.tgz", - "integrity": "sha512-pQZj03f/j9LRhzz9vKaXTCXUHVYHuAXicshFv76VFqwz4MG3bcb+sPZMAbd0wmw7THjkrTPuoM0EG9TbG8CgMQ==", - "requires": {} + "integrity": "sha512-pQZj03f/j9LRhzz9vKaXTCXUHVYHuAXicshFv76VFqwz4MG3bcb+sPZMAbd0wmw7THjkrTPuoM0EG9TbG8CgMQ==" }, "vue-hot-reload-api": { "version": "2.3.4", @@ -28276,16 +15573,6 @@ "graceful-fs": "^4.1.2" } }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "peer": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, "web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -28400,116 +15687,6 @@ } } }, - "webpack-dev-middleware": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", - "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", - "dev": true, - "peer": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^4.43.1", - "mime-types": "^3.0.1", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "peer": true - }, - "mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "dev": true, - "peer": true, - "requires": { - "mime-db": "^1.54.0" - } - } - } - }, - "webpack-dev-server": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", - "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", - "dev": true, - "peer": true, - "requires": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.25", - "@types/express-serve-static-core": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.8.1", - "connect-history-api-fallback": "^2.0.0", - "express": "^4.22.1", - "graceful-fs": "^4.2.6", - "http-proxy-middleware": "^2.0.9", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "schema-utils": "^4.2.0", - "selfsigned": "^5.5.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.4.2", - "ws": "^8.18.0" - }, - "dependencies": { - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "peer": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "peer": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "peer": true, - "requires": { - "picomatch": "^2.2.1" - } - } - } - }, "webpack-merge": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", @@ -28527,25 +15704,6 @@ "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "peer": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "peer": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -28555,71 +15713,6 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "peer": true, - "requires": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - } - }, - "which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "peer": true, - "requires": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - } - }, - "which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "peer": true, - "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - } - }, - "which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "peer": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - } - }, "wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -28722,31 +15815,6 @@ "signal-exit": "^4.0.1" } }, - "ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "dev": true, - "peer": true, - "requires": {} - }, - "wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "peer": true, - "requires": { - "is-wsl": "^3.1.0" - } - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "peer": true - }, "xmlbuilder2": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-4.0.3.tgz", @@ -28759,20 +15827,6 @@ "js-yaml": "^4.1.1" } }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "peer": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", diff --git a/package.json b/package.json index cd00c024..d74c0701 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,13 @@ ], "dependencies": { "@conduction/nextcloud-vue": "^0.1.0-beta.3", - "apexcharts": "^3.45.0", - "vue-apexcharts": "^1.6.2", "@nextcloud/axios": "^2.5.0", "@nextcloud/dialogs": "^3.2.0", "@nextcloud/initial-state": "^2.2.0", "@nextcloud/l10n": "^2.0.1", "@nextcloud/router": "^2.0.1", "@nextcloud/vue": "^8.16.0", + "apexcharts": "^3.45.0", "gridstack": "^10.3.1", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", @@ -38,6 +37,7 @@ "pinia": "^2.1.7", "proj4": "^2.20.4", "vue": "^2.7.14", + "vue-apexcharts": "^1.6.2", "vue-material-design-icons": "^5.3.0", "vue-router": "^3.6.5" }, @@ -53,6 +53,7 @@ "css-loader": "~7.1.1", "eslint": "^8.56.0", "eslint-import-resolver-alias": "^1.1.2", + "sass-loader": "^16.0.7", "style-loader": "~4.0.0", "stylelint": "^15.11.0", "vue-loader": "^15.11.1 <16.0.0", diff --git a/src/navigation/MainMenu.vue b/src/navigation/MainMenu.vue index eea28216..1c21ce6b 100644 --- a/src/navigation/MainMenu.vue +++ b/src/navigation/MainMenu.vue @@ -42,6 +42,9 @@ :to="{ name: 'CaseMap' }"> + +