From 3834f2aba0350b11ec30c86d2059b0880464d6d7 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 11:42:52 +0100 Subject: [PATCH 01/24] Added initialize code snippets --- src/codeSnippets/init/custom-storage.ts | 7 +++++++ src/codeSnippets/init/encryption.ts | 8 +++++++ src/codeSnippets/init/image-quality.ts | 8 +++++++ .../initialize-scanbotSDK.ts} | 8 +++---- src/codeSnippets/init/license-key.ts | 21 +++++++++++++++++++ src/codeSnippets/init/logging.ts | 8 +++++++ src/codeSnippets/init/storage-encryption.ts | 8 +++++++ src/codeSnippets/license-handling.ts | 6 ++++++ 8 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 src/codeSnippets/init/custom-storage.ts create mode 100644 src/codeSnippets/init/encryption.ts create mode 100644 src/codeSnippets/init/image-quality.ts rename src/codeSnippets/{initializeScanbotSDK.ts => init/initialize-scanbotSDK.ts} (84%) create mode 100644 src/codeSnippets/init/license-key.ts create mode 100644 src/codeSnippets/init/logging.ts create mode 100644 src/codeSnippets/init/storage-encryption.ts create mode 100644 src/codeSnippets/license-handling.ts diff --git a/src/codeSnippets/init/custom-storage.ts b/src/codeSnippets/init/custom-storage.ts new file mode 100644 index 0000000..079fa2f --- /dev/null +++ b/src/codeSnippets/init/custom-storage.ts @@ -0,0 +1,7 @@ +import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; + +const config: ScanbotSdkConfiguration = { + storageBaseDirectory: 'file:///some/custom/storage-dir/', +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/init/encryption.ts b/src/codeSnippets/init/encryption.ts new file mode 100644 index 0000000..6c160fc --- /dev/null +++ b/src/codeSnippets/init/encryption.ts @@ -0,0 +1,8 @@ +import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; + +const config: ScanbotSdkConfiguration = { + fileEncryptionPassword: 'SomeSecretPa$$w0rdForFileEncryption', + fileEncryptionMode: 'AES256', +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/init/image-quality.ts b/src/codeSnippets/init/image-quality.ts new file mode 100644 index 0000000..91ae109 --- /dev/null +++ b/src/codeSnippets/init/image-quality.ts @@ -0,0 +1,8 @@ +import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; + +const config: ScanbotSdkConfiguration = { + storageImageFormat: 'JPG', + storageImageQuality: 80, +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/initializeScanbotSDK.ts b/src/codeSnippets/init/initialize-scanbotSDK.ts similarity index 84% rename from src/codeSnippets/initializeScanbotSDK.ts rename to src/codeSnippets/init/initialize-scanbotSDK.ts index 2f4a41e..bcf7c1a 100644 --- a/src/codeSnippets/initializeScanbotSDK.ts +++ b/src/codeSnippets/init/initialize-scanbotSDK.ts @@ -17,7 +17,7 @@ async function initializeScanbotSDK() { '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + 'KMw==\n'; - const SDKInitializationOptions: ScanbotSdkConfiguration = { + const initializationOptions: ScanbotSdkConfiguration = { //The Scanbot SDK License Key licenseKey: myLicenseKey, loggingEnabled: true, @@ -31,12 +31,12 @@ async function initializeScanbotSDK() { // Set the following properties to enable encryption. if (FILE_ENCRYPTION_ENABLED) { - SDKInitializationOptions.fileEncryptionMode = 'AES256'; - SDKInitializationOptions.fileEncryptionPassword = + initializationOptions.fileEncryptionMode = 'AES256'; + initializationOptions.fileEncryptionPassword = 'SomeSecretPa$$w0rdForFileEncryption'; } - const sdkInit = await ScanbotSDK.initializeSDK(SDKInitializationOptions); + const sdkInit = await ScanbotSDK.initializeSDK(initializationOptions); } catch (error: any) { console.error(error); } diff --git a/src/codeSnippets/init/license-key.ts b/src/codeSnippets/init/license-key.ts new file mode 100644 index 0000000..498fa96 --- /dev/null +++ b/src/codeSnippets/init/license-key.ts @@ -0,0 +1,21 @@ +import ScanbotSDK from 'react-native-scanbot-sdk'; + +// Please note: this is just an example license key string (it is not a valid license) +const myLicenseKey = + 'fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ' + + '3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z' + + '+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR' + + 'RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q' + + '1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y' + + '3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv' + + 'O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse' + + 'HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY' + + '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + + 'KMw==\n'; + +const config = { + licenseKey: myLicenseKey, + loggingEnabled: true, +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/init/logging.ts b/src/codeSnippets/init/logging.ts new file mode 100644 index 0000000..dfbd4da --- /dev/null +++ b/src/codeSnippets/init/logging.ts @@ -0,0 +1,8 @@ +import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; + +const config: ScanbotSdkConfiguration = { + licenseKey: '', + loggingEnabled: true, +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/init/storage-encryption.ts b/src/codeSnippets/init/storage-encryption.ts new file mode 100644 index 0000000..78d1f02 --- /dev/null +++ b/src/codeSnippets/init/storage-encryption.ts @@ -0,0 +1,8 @@ +import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; + +const config: ScanbotSdkConfiguration = { + fileEncryptionMode: 'AES256', + fileEncryptionPassword: 'SomeSecretPa$$w0rdForFileEncryption', +}; + +const result = await ScanbotSDK.initializeSDK(config); diff --git a/src/codeSnippets/license-handling.ts b/src/codeSnippets/license-handling.ts new file mode 100644 index 0000000..5098bd8 --- /dev/null +++ b/src/codeSnippets/license-handling.ts @@ -0,0 +1,6 @@ +import ScanbotSDK from 'react-native-scanbot-sdk'; + +if ((await ScanbotSDK.getLicenseInfo()).isLicenseValid) { + // Making your call to ScanbotSDK API is safe now. + // ... +} From c239607604533bbd415bc635340f661ae9b81cc4 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 14:20:30 +0100 Subject: [PATCH 02/24] Restructure document code snippets --- .../create-document-from-legacy-pages.ts} | 0 .../migration/cropping-screen}/v1.ts | 0 .../migration/cropping-screen}/v2.ts | 0 .../migration/document-scanner}/v1.ts | 0 .../migration/document-scanner}/v2.ts | 0 .../migration/finder-document-scanner}/v1.ts | 0 .../migration/finder-document-scanner}/v2.ts | 0 .../launching-scanner.ts} | 0 .../document/{RTUUI => rtuui}/localization.ts | 0 .../document/{RTUUI => rtuui}/palete.ts | 0 .../scanning-flow/acknowledge-screen.ts} | 19 ++----------------- .../scanning-flow/cropping-screen.ts} | 0 .../scanning-flow/introduction-screen.ts} | 0 .../scanning-flow/reorder-screen.ts} | 0 .../scanning-flow/review-screen.ts} | 0 .../scanning-flow/scanning-screen.ts} | 0 .../scanning-flow/single-page-scanning.ts} | 0 .../useCases/automatic-filtering.ts} | 0 .../multi-page-scanning-with-review.ts} | 0 .../single-page-scanning-with-finder.ts} | 0 .../single-page-scanning-without-review.ts} | 0 21 files changed, 2 insertions(+), 17 deletions(-) rename src/codeSnippets/{migration/createDocumentFromLegacyPages.ts => document/migration/create-document-from-legacy-pages.ts} (100%) rename src/codeSnippets/{migration/croppingScreen => document/migration/cropping-screen}/v1.ts (100%) rename src/codeSnippets/{migration/croppingScreen => document/migration/cropping-screen}/v2.ts (100%) rename src/codeSnippets/{migration/documentScanner => document/migration/document-scanner}/v1.ts (100%) rename src/codeSnippets/{migration/documentScanner => document/migration/document-scanner}/v2.ts (100%) rename src/codeSnippets/{migration/finderDocumentScanner => document/migration/finder-document-scanner}/v1.ts (100%) rename src/codeSnippets/{migration/finderDocumentScanner => document/migration/finder-document-scanner}/v2.ts (100%) rename src/codeSnippets/document/{RTUUI/launchingTheScanner.ts => rtuui/launching-scanner.ts} (100%) rename src/codeSnippets/document/{RTUUI => rtuui}/localization.ts (100%) rename src/codeSnippets/document/{RTUUI => rtuui}/palete.ts (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/acknowledgeScreen.ts => rtuui/scanning-flow/acknowledge-screen.ts} (74%) rename src/codeSnippets/document/{RTUUI/scanningFlow/croppingScreen.ts => rtuui/scanning-flow/cropping-screen.ts} (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/introductionScreen.ts => rtuui/scanning-flow/introduction-screen.ts} (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/reorderScreen.ts => rtuui/scanning-flow/reorder-screen.ts} (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/reviewScreen.ts => rtuui/scanning-flow/review-screen.ts} (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/scanningScreen.ts => rtuui/scanning-flow/scanning-screen.ts} (100%) rename src/codeSnippets/document/{RTUUI/scanningFlow/singlePageScanning.ts => rtuui/scanning-flow/single-page-scanning.ts} (100%) rename src/codeSnippets/document/{RTUUI/automaticFiltering.ts => rtuui/useCases/automatic-filtering.ts} (100%) rename src/codeSnippets/document/{RTUUI/useCases/multiPageScanningWithReview.ts => rtuui/useCases/multi-page-scanning-with-review.ts} (100%) rename src/codeSnippets/document/{RTUUI/useCases/singlePageScanningWithFinder.ts => rtuui/useCases/single-page-scanning-with-finder.ts} (100%) rename src/codeSnippets/document/{RTUUI/useCases/singlePageScanningWithoutReview.ts => rtuui/useCases/single-page-scanning-without-review.ts} (100%) diff --git a/src/codeSnippets/migration/createDocumentFromLegacyPages.ts b/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts similarity index 100% rename from src/codeSnippets/migration/createDocumentFromLegacyPages.ts rename to src/codeSnippets/document/migration/create-document-from-legacy-pages.ts diff --git a/src/codeSnippets/migration/croppingScreen/v1.ts b/src/codeSnippets/document/migration/cropping-screen/v1.ts similarity index 100% rename from src/codeSnippets/migration/croppingScreen/v1.ts rename to src/codeSnippets/document/migration/cropping-screen/v1.ts diff --git a/src/codeSnippets/migration/croppingScreen/v2.ts b/src/codeSnippets/document/migration/cropping-screen/v2.ts similarity index 100% rename from src/codeSnippets/migration/croppingScreen/v2.ts rename to src/codeSnippets/document/migration/cropping-screen/v2.ts diff --git a/src/codeSnippets/migration/documentScanner/v1.ts b/src/codeSnippets/document/migration/document-scanner/v1.ts similarity index 100% rename from src/codeSnippets/migration/documentScanner/v1.ts rename to src/codeSnippets/document/migration/document-scanner/v1.ts diff --git a/src/codeSnippets/migration/documentScanner/v2.ts b/src/codeSnippets/document/migration/document-scanner/v2.ts similarity index 100% rename from src/codeSnippets/migration/documentScanner/v2.ts rename to src/codeSnippets/document/migration/document-scanner/v2.ts diff --git a/src/codeSnippets/migration/finderDocumentScanner/v1.ts b/src/codeSnippets/document/migration/finder-document-scanner/v1.ts similarity index 100% rename from src/codeSnippets/migration/finderDocumentScanner/v1.ts rename to src/codeSnippets/document/migration/finder-document-scanner/v1.ts diff --git a/src/codeSnippets/migration/finderDocumentScanner/v2.ts b/src/codeSnippets/document/migration/finder-document-scanner/v2.ts similarity index 100% rename from src/codeSnippets/migration/finderDocumentScanner/v2.ts rename to src/codeSnippets/document/migration/finder-document-scanner/v2.ts diff --git a/src/codeSnippets/document/RTUUI/launchingTheScanner.ts b/src/codeSnippets/document/rtuui/launching-scanner.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/document/rtuui/launching-scanner.ts diff --git a/src/codeSnippets/document/RTUUI/localization.ts b/src/codeSnippets/document/rtuui/localization.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/localization.ts rename to src/codeSnippets/document/rtuui/localization.ts diff --git a/src/codeSnippets/document/RTUUI/palete.ts b/src/codeSnippets/document/rtuui/palete.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/palete.ts rename to src/codeSnippets/document/rtuui/palete.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/acknowledgeScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts similarity index 74% rename from src/codeSnippets/document/RTUUI/scanningFlow/acknowledgeScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts index e652575..193259a 100644 --- a/src/codeSnippets/document/RTUUI/scanningFlow/acknowledgeScreen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts @@ -7,24 +7,9 @@ async function startScanning() { try { /** Create the default configuration instance */ const configuration = new DocumentScanningFlow(); - /** - * Set the acknowledgment mode - * Modes: - * - `ALWAYS`: Runs the quality analyzer on the captured document and always displays the acknowledgment screen. - * - `BAD_QUALITY`: Runs the quality analyzer and displays the acknowledgment screen only if the quality is poor. - * - `NONE`: Skips the quality check entirely. - */ + /** Set the acknowledgment mode */ configuration.screens.camera.acknowledgement.acknowledgementMode = 'ALWAYS'; - /** - * Set the minimum acceptable document quality. - * Options: - * - 'EXCELLENT', - * - 'GOOD', - * - 'REASONABLE', - * - 'POOR', - * - 'VERY_POOR', - * - 'NO_DOCUMENT'. - */ + /** Set the minimum acceptable document quality. */ configuration.screens.camera.acknowledgement.minimumQuality = 'REASONABLE'; /** Set the background color for the acknowledgment screen. */ configuration.screens.camera.acknowledgement.backgroundColor = '#EFEFEF'; diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/croppingScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/croppingScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/introductionScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/introductionScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/reorderScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/reorderScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/reviewScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/reviewScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/scanningScreen.ts b/src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/scanningScreen.ts rename to src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts diff --git a/src/codeSnippets/document/RTUUI/scanningFlow/singlePageScanning.ts b/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/scanningFlow/singlePageScanning.ts rename to src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts diff --git a/src/codeSnippets/document/RTUUI/automaticFiltering.ts b/src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/automaticFiltering.ts rename to src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts diff --git a/src/codeSnippets/document/RTUUI/useCases/multiPageScanningWithReview.ts b/src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/useCases/multiPageScanningWithReview.ts rename to src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts diff --git a/src/codeSnippets/document/RTUUI/useCases/singlePageScanningWithFinder.ts b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/useCases/singlePageScanningWithFinder.ts rename to src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts diff --git a/src/codeSnippets/document/RTUUI/useCases/singlePageScanningWithoutReview.ts b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts similarity index 100% rename from src/codeSnippets/document/RTUUI/useCases/singlePageScanningWithoutReview.ts rename to src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts From 1d48ddcd87adf7c5cade09cfa82c97faae3e5e6a Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 14:49:54 +0100 Subject: [PATCH 03/24] Restructure document scan from image code snippets --- .../extractImagesFromPDF.ts | 25 ------------------- .../rtuui/{ => scanning-flow}/localization.ts | 0 .../rtuui/{ => scanning-flow}/palete.ts | 0 .../create-document-from-pdf.ts} | 0 .../document-detection-cropping-ui.ts} | 0 .../document-detection.ts} | 0 .../extract-images-from-pdf.ts | 11 ++++++++ 7 files changed, 11 insertions(+), 25 deletions(-) delete mode 100644 src/codeSnippets/document/extractImagesFromPDF/extractImagesFromPDF.ts rename src/codeSnippets/document/rtuui/{ => scanning-flow}/localization.ts (100%) rename src/codeSnippets/document/rtuui/{ => scanning-flow}/palete.ts (100%) rename src/codeSnippets/document/{extractImagesFromPDF/createDocumentFromPDF.ts => scan-from-image/create-document-from-pdf.ts} (100%) rename src/codeSnippets/document/{documentDetection/documentDetectionCroppingUI.ts => scan-from-image/document-detection-cropping-ui.ts} (100%) rename src/codeSnippets/document/{documentDetection/documentDetection.ts => scan-from-image/document-detection.ts} (100%) create mode 100644 src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts diff --git a/src/codeSnippets/document/extractImagesFromPDF/extractImagesFromPDF.ts b/src/codeSnippets/document/extractImagesFromPDF/extractImagesFromPDF.ts deleted file mode 100644 index c5ea5c3..0000000 --- a/src/codeSnippets/document/extractImagesFromPDF/extractImagesFromPDF.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {selectPDFFileUri} from '@utils'; -import ScanbotSDK from 'react-native-scanbot-sdk'; - -async function extractImagesFromPDF() { - try { - /** - * Select a PDF file - * Return early if no file is selected or there is an issue with selecting a file - **/ - const fileUrl = await selectPDFFileUri(); - if (!fileUrl) { - return; - } - /** - * Extract the images from the PDF with the desired configuration options - * Check if the resulting Page Array is returned - */ - const imagesResult = await ScanbotSDK.extractImagesFromPdf({ - pdfFilePath: fileUrl, - }); - /** Handle the result */ - } catch (e: any) { - console.error(e.message); - } -} diff --git a/src/codeSnippets/document/rtuui/localization.ts b/src/codeSnippets/document/rtuui/scanning-flow/localization.ts similarity index 100% rename from src/codeSnippets/document/rtuui/localization.ts rename to src/codeSnippets/document/rtuui/scanning-flow/localization.ts diff --git a/src/codeSnippets/document/rtuui/palete.ts b/src/codeSnippets/document/rtuui/scanning-flow/palete.ts similarity index 100% rename from src/codeSnippets/document/rtuui/palete.ts rename to src/codeSnippets/document/rtuui/scanning-flow/palete.ts diff --git a/src/codeSnippets/document/extractImagesFromPDF/createDocumentFromPDF.ts b/src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts similarity index 100% rename from src/codeSnippets/document/extractImagesFromPDF/createDocumentFromPDF.ts rename to src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts diff --git a/src/codeSnippets/document/documentDetection/documentDetectionCroppingUI.ts b/src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts similarity index 100% rename from src/codeSnippets/document/documentDetection/documentDetectionCroppingUI.ts rename to src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts diff --git a/src/codeSnippets/document/documentDetection/documentDetection.ts b/src/codeSnippets/document/scan-from-image/document-detection.ts similarity index 100% rename from src/codeSnippets/document/documentDetection/documentDetection.ts rename to src/codeSnippets/document/scan-from-image/document-detection.ts diff --git a/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts b/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts new file mode 100644 index 0000000..7047774 --- /dev/null +++ b/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts @@ -0,0 +1,11 @@ +import ScanbotSDK from 'react-native-scanbot-sdk'; + +async function extractImagesFromPDF(pdfUri: string) { + /** + * Extract the images from the PDF with the desired configuration options + * Check if the resulting Page Array is returned + */ + const imagesResult = await ScanbotSDK.extractImagesFromPdf({ + pdfFilePath: pdfUri, + }); +} From 6e4ab7285516444d5487aafc02453cfed30c96ed Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 14:58:35 +0100 Subject: [PATCH 04/24] Restructure document filter and image processing code snippets --- .../apply-filters-on-document.ts} | 0 .../apply-filters-on-image.ts} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/document/{filtersAndImageProcessing/applyFiltersOnDocument.ts => filters-and-image-processing/apply-filters-on-document.ts} (100%) rename src/codeSnippets/document/{filtersAndImageProcessing/applyFiltersOnImage.ts => filters-and-image-processing/apply-filters-on-image.ts} (100%) diff --git a/src/codeSnippets/document/filtersAndImageProcessing/applyFiltersOnDocument.ts b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts similarity index 100% rename from src/codeSnippets/document/filtersAndImageProcessing/applyFiltersOnDocument.ts rename to src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts diff --git a/src/codeSnippets/document/filtersAndImageProcessing/applyFiltersOnImage.ts b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts similarity index 100% rename from src/codeSnippets/document/filtersAndImageProcessing/applyFiltersOnImage.ts rename to src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts From 25824014f08854d96811164b2f140c3bf96b6e32 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 15:37:35 +0100 Subject: [PATCH 05/24] Added result-handling code snippets --- ...alyzer.ts => document-quality-analyzer.ts} | 0 .../create-document-pdf.ts} | 2 +- .../create-document-tiff.ts} | 2 +- .../create-pdf-from-images.ts} | 0 .../create-sandwich-pdf-from-images.ts | 29 +++++++++++++++++++ .../result-handling/create-sandwich-pdf.ts | 21 ++++++++++++++ .../create-tiff-from-images.ts} | 2 +- .../document-storage.ts} | 0 8 files changed, 53 insertions(+), 3 deletions(-) rename src/codeSnippets/document/{documentQualityAnalyzer.ts => document-quality-analyzer.ts} (100%) rename src/codeSnippets/document/{createPDF/createDocumentPDF.ts => result-handling/create-document-pdf.ts} (93%) rename src/codeSnippets/document/{createTiff/createDocumentTIFF.ts => result-handling/create-document-tiff.ts} (94%) rename src/codeSnippets/document/{createPDF/createPDFFromImages.ts => result-handling/create-pdf-from-images.ts} (100%) create mode 100644 src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts create mode 100644 src/codeSnippets/document/result-handling/create-sandwich-pdf.ts rename src/codeSnippets/document/{createTiff/createTIFFFromImages.ts => result-handling/create-tiff-from-images.ts} (95%) rename src/codeSnippets/document/{storageForDocuments.ts => result-handling/document-storage.ts} (100%) diff --git a/src/codeSnippets/document/documentQualityAnalyzer.ts b/src/codeSnippets/document/document-quality-analyzer.ts similarity index 100% rename from src/codeSnippets/document/documentQualityAnalyzer.ts rename to src/codeSnippets/document/document-quality-analyzer.ts diff --git a/src/codeSnippets/document/createPDF/createDocumentPDF.ts b/src/codeSnippets/document/result-handling/create-document-pdf.ts similarity index 93% rename from src/codeSnippets/document/createPDF/createDocumentPDF.ts rename to src/codeSnippets/document/result-handling/create-document-pdf.ts index cab32d2..4c59f0e 100644 --- a/src/codeSnippets/document/createPDF/createDocumentPDF.ts +++ b/src/codeSnippets/document/result-handling/create-document-pdf.ts @@ -1,6 +1,6 @@ import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; -async function createDocumentPDF() { +async function createDocumentPdf() { try { /** Load a document from storage or create a new one */ const document = await ScanbotSDK.Document.loadDocument( diff --git a/src/codeSnippets/document/createTiff/createDocumentTIFF.ts b/src/codeSnippets/document/result-handling/create-document-tiff.ts similarity index 94% rename from src/codeSnippets/document/createTiff/createDocumentTIFF.ts rename to src/codeSnippets/document/result-handling/create-document-tiff.ts index ffcb8eb..0d23c7b 100644 --- a/src/codeSnippets/document/createTiff/createDocumentTIFF.ts +++ b/src/codeSnippets/document/result-handling/create-document-tiff.ts @@ -3,7 +3,7 @@ import ScanbotSDK, { TiffGeneratorParameters, } from 'react-native-scanbot-sdk'; -async function createDocumentTIFF() { +async function createDocumentTiff() { try { /** Load a document from storage or create a new one */ const document = await ScanbotSDK.Document.loadDocument( diff --git a/src/codeSnippets/document/createPDF/createPDFFromImages.ts b/src/codeSnippets/document/result-handling/create-pdf-from-images.ts similarity index 100% rename from src/codeSnippets/document/createPDF/createPDFFromImages.ts rename to src/codeSnippets/document/result-handling/create-pdf-from-images.ts diff --git a/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts b/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts new file mode 100644 index 0000000..3f0a812 --- /dev/null +++ b/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts @@ -0,0 +1,29 @@ +import {selectImagesFromLibrary} from '@utils'; +import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; + +async function createSearchablePDFFromImages() { + try { + /** + * Select images from the Image Library + * Return early if no images are selected or there is an issue with selecting images + **/ + const selectedImagesResult = await selectImagesFromLibrary(); + if (!selectedImagesResult) { + return; + } + /** Create a PDF file with the provided options */ + const pdfCreationResult = await ScanbotSDK.createPDF({ + imageFileUris: selectedImagesResult, + pdfConfiguration: new PdfConfiguration({ + pageSize: 'A4', + pageDirection: 'PORTRAIT', + }), + ocrConfiguration: { + engineMode: 'SCANBOT_OCR', + }, + }); + /** Handle the result */ + } catch (e: any) { + console.error(e.message); + } +} diff --git a/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts b/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts new file mode 100644 index 0000000..2251906 --- /dev/null +++ b/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts @@ -0,0 +1,21 @@ +import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; + +async function createSearchableDocumentPdf() { + try { + /** Load a document from storage or create a new one */ + const document = await ScanbotSDK.Document.loadDocument( + 'SOME_STORED_DOCUMENT_ID', + ); + /** Create a PDF file with the provided options */ + const pdfUriResult = await ScanbotSDK.Document.createPDF({ + documentID: document.uuid, + pdfConfiguration: new PdfConfiguration({}), + ocrConfiguration: { + engineMode: 'SCANBOT_OCR', + }, + }); + /** Handle the result */ + } catch (e: any) { + console.error(e.message); + } +} diff --git a/src/codeSnippets/document/createTiff/createTIFFFromImages.ts b/src/codeSnippets/document/result-handling/create-tiff-from-images.ts similarity index 95% rename from src/codeSnippets/document/createTiff/createTIFFFromImages.ts rename to src/codeSnippets/document/result-handling/create-tiff-from-images.ts index 9cfb1ce..6e84c55 100644 --- a/src/codeSnippets/document/createTiff/createTIFFFromImages.ts +++ b/src/codeSnippets/document/result-handling/create-tiff-from-images.ts @@ -4,7 +4,7 @@ import ScanbotSDK, { TiffGeneratorParameters, } from 'react-native-scanbot-sdk'; -async function createTIFFFromImages() { +async function createTiffFromImages() { try { /** * Select images from the Image Library diff --git a/src/codeSnippets/document/storageForDocuments.ts b/src/codeSnippets/document/result-handling/document-storage.ts similarity index 100% rename from src/codeSnippets/document/storageForDocuments.ts rename to src/codeSnippets/document/result-handling/document-storage.ts From d2f3293b55d9c689467352ea1004857b709bd5c9 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:21:45 +0100 Subject: [PATCH 06/24] Update text pattern code snippets --- .../action-bar.ts} | 0 .../text-pattern/finder-overlay.ts | 34 +++++++++++++++++++ .../introduction-screen.ts} | 0 .../launching-scanner.ts} | 0 .../RTUUI => text-pattern}/localization.ts | 0 .../RTUUI => text-pattern}/palette.ts | 0 .../topBar.ts => text-pattern/top-bar.ts} | 0 .../user-guidance.ts} | 0 8 files changed, 34 insertions(+) rename src/codeSnippets/{textPattern/RTUUI/actionBar.ts => text-pattern/action-bar.ts} (100%) create mode 100644 src/codeSnippets/text-pattern/finder-overlay.ts rename src/codeSnippets/{textPattern/RTUUI/introductionScreen.ts => text-pattern/introduction-screen.ts} (100%) rename src/codeSnippets/{textPattern/RTUUI/launchingTheScanner.ts => text-pattern/launching-scanner.ts} (100%) rename src/codeSnippets/{textPattern/RTUUI => text-pattern}/localization.ts (100%) rename src/codeSnippets/{textPattern/RTUUI => text-pattern}/palette.ts (100%) rename src/codeSnippets/{textPattern/RTUUI/topBar.ts => text-pattern/top-bar.ts} (100%) rename src/codeSnippets/{textPattern/RTUUI/userGuidance.ts => text-pattern/user-guidance.ts} (100%) diff --git a/src/codeSnippets/textPattern/RTUUI/actionBar.ts b/src/codeSnippets/text-pattern/action-bar.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/actionBar.ts rename to src/codeSnippets/text-pattern/action-bar.ts diff --git a/src/codeSnippets/text-pattern/finder-overlay.ts b/src/codeSnippets/text-pattern/finder-overlay.ts new file mode 100644 index 0000000..3e3e59e --- /dev/null +++ b/src/codeSnippets/text-pattern/finder-overlay.ts @@ -0,0 +1,34 @@ +import { + FinderCorneredStyle, + FinderStrokedStyle, + startTextPatternScanner, + TextPatternScannerScreenConfiguration, +} from 'react-native-scanbot-sdk/ui_v2'; + +async function startScanning() { + try { + /** Create an instance of the default configuration */ + const configuration = new TextPatternScannerScreenConfiguration(); + /** Retrieve the instance of the viewFinder from the configuration object. */ + const viewFinder = configuration.viewFinder; + /** + * Configure the view finder. + * Choose between cornered or stroked style. + */ + viewFinder.style = new FinderStrokedStyle(); + /** For default cornered style. */ + viewFinder.style = new FinderCorneredStyle(); + /** You can also set each style's stroke width, stroke color or corner radius. */ + viewFinder.style = new FinderCorneredStyle({ + strokeWidth: 3, + strokeColor: '#ff0000', + }); + /** Start the Text Pattern Scanner **/ + const textPatternResult = await startTextPatternScanner(configuration); + /** Handle the result if the status is 'OK' */ + if (textPatternResult.status === 'OK') { + } + } catch (e: any) { + console.error(e.message); + } +} diff --git a/src/codeSnippets/textPattern/RTUUI/introductionScreen.ts b/src/codeSnippets/text-pattern/introduction-screen.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/introductionScreen.ts rename to src/codeSnippets/text-pattern/introduction-screen.ts diff --git a/src/codeSnippets/textPattern/RTUUI/launchingTheScanner.ts b/src/codeSnippets/text-pattern/launching-scanner.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/text-pattern/launching-scanner.ts diff --git a/src/codeSnippets/textPattern/RTUUI/localization.ts b/src/codeSnippets/text-pattern/localization.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/localization.ts rename to src/codeSnippets/text-pattern/localization.ts diff --git a/src/codeSnippets/textPattern/RTUUI/palette.ts b/src/codeSnippets/text-pattern/palette.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/palette.ts rename to src/codeSnippets/text-pattern/palette.ts diff --git a/src/codeSnippets/textPattern/RTUUI/topBar.ts b/src/codeSnippets/text-pattern/top-bar.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/topBar.ts rename to src/codeSnippets/text-pattern/top-bar.ts diff --git a/src/codeSnippets/textPattern/RTUUI/userGuidance.ts b/src/codeSnippets/text-pattern/user-guidance.ts similarity index 100% rename from src/codeSnippets/textPattern/RTUUI/userGuidance.ts rename to src/codeSnippets/text-pattern/user-guidance.ts From 40a7df48cc5798ecd172d8e6d96201563fac18b7 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:31:24 +0100 Subject: [PATCH 07/24] Update mrz code snippets --- src/codeSnippets/mrz/{RTUUI/actionBar.ts => action-bar.ts} | 0 .../mrz/{RTUUI/finderOverlay.ts => finder-overlay.ts} | 0 .../mrz/{RTUUI/introductionScreen.ts => introduction-screen.ts} | 0 .../mrz/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} | 0 src/codeSnippets/mrz/{RTUUI => }/localization.ts | 0 src/codeSnippets/mrz/{RTUUI => }/palette.ts | 0 src/codeSnippets/mrz/{RTUUI/topBar.ts => top-bar.ts} | 0 src/codeSnippets/mrz/{RTUUI/userGuidance.ts => user-guidance.ts} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/mrz/{RTUUI/actionBar.ts => action-bar.ts} (100%) rename src/codeSnippets/mrz/{RTUUI/finderOverlay.ts => finder-overlay.ts} (100%) rename src/codeSnippets/mrz/{RTUUI/introductionScreen.ts => introduction-screen.ts} (100%) rename src/codeSnippets/mrz/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} (100%) rename src/codeSnippets/mrz/{RTUUI => }/localization.ts (100%) rename src/codeSnippets/mrz/{RTUUI => }/palette.ts (100%) rename src/codeSnippets/mrz/{RTUUI/topBar.ts => top-bar.ts} (100%) rename src/codeSnippets/mrz/{RTUUI/userGuidance.ts => user-guidance.ts} (100%) diff --git a/src/codeSnippets/mrz/RTUUI/actionBar.ts b/src/codeSnippets/mrz/action-bar.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/actionBar.ts rename to src/codeSnippets/mrz/action-bar.ts diff --git a/src/codeSnippets/mrz/RTUUI/finderOverlay.ts b/src/codeSnippets/mrz/finder-overlay.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/finderOverlay.ts rename to src/codeSnippets/mrz/finder-overlay.ts diff --git a/src/codeSnippets/mrz/RTUUI/introductionScreen.ts b/src/codeSnippets/mrz/introduction-screen.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/introductionScreen.ts rename to src/codeSnippets/mrz/introduction-screen.ts diff --git a/src/codeSnippets/mrz/RTUUI/launchingTheScanner.ts b/src/codeSnippets/mrz/launching-scanner.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/mrz/launching-scanner.ts diff --git a/src/codeSnippets/mrz/RTUUI/localization.ts b/src/codeSnippets/mrz/localization.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/localization.ts rename to src/codeSnippets/mrz/localization.ts diff --git a/src/codeSnippets/mrz/RTUUI/palette.ts b/src/codeSnippets/mrz/palette.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/palette.ts rename to src/codeSnippets/mrz/palette.ts diff --git a/src/codeSnippets/mrz/RTUUI/topBar.ts b/src/codeSnippets/mrz/top-bar.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/topBar.ts rename to src/codeSnippets/mrz/top-bar.ts diff --git a/src/codeSnippets/mrz/RTUUI/userGuidance.ts b/src/codeSnippets/mrz/user-guidance.ts similarity index 100% rename from src/codeSnippets/mrz/RTUUI/userGuidance.ts rename to src/codeSnippets/mrz/user-guidance.ts From 7bcaa3b987452923a312cfc9ffa586ae40df212f Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:34:45 +0100 Subject: [PATCH 08/24] Update dde code snippets --- src/codeSnippets/dde/{RTUUI/actionBar.ts => action-bar.ts} | 0 .../dde/{RTUUI/finderOverlay.ts => finder-overlay.ts} | 0 .../dde/{RTUUI/introductionScreen.ts => introduction-screen.ts} | 0 .../dde/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} | 0 src/codeSnippets/dde/{RTUUI => }/localization.ts | 0 src/codeSnippets/dde/{RTUUI => }/palette.ts | 0 src/codeSnippets/dde/{RTUUI/topBar.ts => top-bar.ts} | 0 src/codeSnippets/dde/{RTUUI/userGuidance.ts => user-guidance.ts} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/dde/{RTUUI/actionBar.ts => action-bar.ts} (100%) rename src/codeSnippets/dde/{RTUUI/finderOverlay.ts => finder-overlay.ts} (100%) rename src/codeSnippets/dde/{RTUUI/introductionScreen.ts => introduction-screen.ts} (100%) rename src/codeSnippets/dde/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} (100%) rename src/codeSnippets/dde/{RTUUI => }/localization.ts (100%) rename src/codeSnippets/dde/{RTUUI => }/palette.ts (100%) rename src/codeSnippets/dde/{RTUUI/topBar.ts => top-bar.ts} (100%) rename src/codeSnippets/dde/{RTUUI/userGuidance.ts => user-guidance.ts} (100%) diff --git a/src/codeSnippets/dde/RTUUI/actionBar.ts b/src/codeSnippets/dde/action-bar.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/actionBar.ts rename to src/codeSnippets/dde/action-bar.ts diff --git a/src/codeSnippets/dde/RTUUI/finderOverlay.ts b/src/codeSnippets/dde/finder-overlay.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/finderOverlay.ts rename to src/codeSnippets/dde/finder-overlay.ts diff --git a/src/codeSnippets/dde/RTUUI/introductionScreen.ts b/src/codeSnippets/dde/introduction-screen.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/introductionScreen.ts rename to src/codeSnippets/dde/introduction-screen.ts diff --git a/src/codeSnippets/dde/RTUUI/launchingTheScanner.ts b/src/codeSnippets/dde/launching-scanner.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/dde/launching-scanner.ts diff --git a/src/codeSnippets/dde/RTUUI/localization.ts b/src/codeSnippets/dde/localization.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/localization.ts rename to src/codeSnippets/dde/localization.ts diff --git a/src/codeSnippets/dde/RTUUI/palette.ts b/src/codeSnippets/dde/palette.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/palette.ts rename to src/codeSnippets/dde/palette.ts diff --git a/src/codeSnippets/dde/RTUUI/topBar.ts b/src/codeSnippets/dde/top-bar.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/topBar.ts rename to src/codeSnippets/dde/top-bar.ts diff --git a/src/codeSnippets/dde/RTUUI/userGuidance.ts b/src/codeSnippets/dde/user-guidance.ts similarity index 100% rename from src/codeSnippets/dde/RTUUI/userGuidance.ts rename to src/codeSnippets/dde/user-guidance.ts From 61ebc407d5ae7ed2ab12f55ca8071c5f3f416bea Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:36:18 +0100 Subject: [PATCH 09/24] Update vin code snippets --- src/codeSnippets/vin/{RTUUI/actionBar.ts => action-bar.ts} | 0 .../vin/{RTUUI/finderOverlay.ts => finder-overlay.ts} | 0 .../vin/{RTUUI/introductionScreen.ts => introduction-screen.ts} | 0 .../vin/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} | 0 src/codeSnippets/vin/{RTUUI => }/localization.ts | 0 src/codeSnippets/vin/{RTUUI => }/palette.ts | 0 src/codeSnippets/vin/{RTUUI => }/topBar.ts | 0 src/codeSnippets/vin/{RTUUI/userGuidance.ts => user-guidance.ts} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/vin/{RTUUI/actionBar.ts => action-bar.ts} (100%) rename src/codeSnippets/vin/{RTUUI/finderOverlay.ts => finder-overlay.ts} (100%) rename src/codeSnippets/vin/{RTUUI/introductionScreen.ts => introduction-screen.ts} (100%) rename src/codeSnippets/vin/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} (100%) rename src/codeSnippets/vin/{RTUUI => }/localization.ts (100%) rename src/codeSnippets/vin/{RTUUI => }/palette.ts (100%) rename src/codeSnippets/vin/{RTUUI => }/topBar.ts (100%) rename src/codeSnippets/vin/{RTUUI/userGuidance.ts => user-guidance.ts} (100%) diff --git a/src/codeSnippets/vin/RTUUI/actionBar.ts b/src/codeSnippets/vin/action-bar.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/actionBar.ts rename to src/codeSnippets/vin/action-bar.ts diff --git a/src/codeSnippets/vin/RTUUI/finderOverlay.ts b/src/codeSnippets/vin/finder-overlay.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/finderOverlay.ts rename to src/codeSnippets/vin/finder-overlay.ts diff --git a/src/codeSnippets/vin/RTUUI/introductionScreen.ts b/src/codeSnippets/vin/introduction-screen.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/introductionScreen.ts rename to src/codeSnippets/vin/introduction-screen.ts diff --git a/src/codeSnippets/vin/RTUUI/launchingTheScanner.ts b/src/codeSnippets/vin/launching-scanner.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/vin/launching-scanner.ts diff --git a/src/codeSnippets/vin/RTUUI/localization.ts b/src/codeSnippets/vin/localization.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/localization.ts rename to src/codeSnippets/vin/localization.ts diff --git a/src/codeSnippets/vin/RTUUI/palette.ts b/src/codeSnippets/vin/palette.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/palette.ts rename to src/codeSnippets/vin/palette.ts diff --git a/src/codeSnippets/vin/RTUUI/topBar.ts b/src/codeSnippets/vin/topBar.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/topBar.ts rename to src/codeSnippets/vin/topBar.ts diff --git a/src/codeSnippets/vin/RTUUI/userGuidance.ts b/src/codeSnippets/vin/user-guidance.ts similarity index 100% rename from src/codeSnippets/vin/RTUUI/userGuidance.ts rename to src/codeSnippets/vin/user-guidance.ts From 772175028d2587f7cc035a8de382f098c71fe491 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:40:05 +0100 Subject: [PATCH 10/24] Update credit card code snippets --- .../{creditCard/RTUUI/actionBar.ts => credit-card/action-bar.ts} | 0 .../RTUUI/finderOverlay.ts => credit-card/finder-overlay.ts} | 0 .../introductionScreen.ts => credit-card/introduction-screen.ts} | 0 .../launchingTheScanner.ts => credit-card/launching-scanner.ts} | 0 .../{creditCard/RTUUI => credit-card}/localization.ts | 0 src/codeSnippets/{creditCard/RTUUI => credit-card}/palette.ts | 0 .../{creditCard/RTUUI/topBar.ts => credit-card/top-bar.ts} | 0 .../RTUUI/userGuidance.ts => credit-card/user-guidance.ts} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/{creditCard/RTUUI/actionBar.ts => credit-card/action-bar.ts} (100%) rename src/codeSnippets/{creditCard/RTUUI/finderOverlay.ts => credit-card/finder-overlay.ts} (100%) rename src/codeSnippets/{creditCard/RTUUI/introductionScreen.ts => credit-card/introduction-screen.ts} (100%) rename src/codeSnippets/{creditCard/RTUUI/launchingTheScanner.ts => credit-card/launching-scanner.ts} (100%) rename src/codeSnippets/{creditCard/RTUUI => credit-card}/localization.ts (100%) rename src/codeSnippets/{creditCard/RTUUI => credit-card}/palette.ts (100%) rename src/codeSnippets/{creditCard/RTUUI/topBar.ts => credit-card/top-bar.ts} (100%) rename src/codeSnippets/{creditCard/RTUUI/userGuidance.ts => credit-card/user-guidance.ts} (100%) diff --git a/src/codeSnippets/creditCard/RTUUI/actionBar.ts b/src/codeSnippets/credit-card/action-bar.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/actionBar.ts rename to src/codeSnippets/credit-card/action-bar.ts diff --git a/src/codeSnippets/creditCard/RTUUI/finderOverlay.ts b/src/codeSnippets/credit-card/finder-overlay.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/finderOverlay.ts rename to src/codeSnippets/credit-card/finder-overlay.ts diff --git a/src/codeSnippets/creditCard/RTUUI/introductionScreen.ts b/src/codeSnippets/credit-card/introduction-screen.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/introductionScreen.ts rename to src/codeSnippets/credit-card/introduction-screen.ts diff --git a/src/codeSnippets/creditCard/RTUUI/launchingTheScanner.ts b/src/codeSnippets/credit-card/launching-scanner.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/credit-card/launching-scanner.ts diff --git a/src/codeSnippets/creditCard/RTUUI/localization.ts b/src/codeSnippets/credit-card/localization.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/localization.ts rename to src/codeSnippets/credit-card/localization.ts diff --git a/src/codeSnippets/creditCard/RTUUI/palette.ts b/src/codeSnippets/credit-card/palette.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/palette.ts rename to src/codeSnippets/credit-card/palette.ts diff --git a/src/codeSnippets/creditCard/RTUUI/topBar.ts b/src/codeSnippets/credit-card/top-bar.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/topBar.ts rename to src/codeSnippets/credit-card/top-bar.ts diff --git a/src/codeSnippets/creditCard/RTUUI/userGuidance.ts b/src/codeSnippets/credit-card/user-guidance.ts similarity index 100% rename from src/codeSnippets/creditCard/RTUUI/userGuidance.ts rename to src/codeSnippets/credit-card/user-guidance.ts From ba243c63aaa70fe7fb59eb019135d2be070e9bb6 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 16:41:21 +0100 Subject: [PATCH 11/24] Update check code snippets --- src/codeSnippets/check/{RTUUI/actionBar.ts => action-bar.ts} | 0 .../check/{RTUUI/finderOverlay.ts => finder-overlay.ts} | 0 .../check/{RTUUI/introductionScreen.ts => introduction-screen.ts} | 0 .../check/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} | 0 src/codeSnippets/check/{RTUUI => }/localization.ts | 0 src/codeSnippets/check/{RTUUI => }/palette.ts | 0 src/codeSnippets/check/{RTUUI/topBar.ts => top-bar.ts} | 0 .../check/{RTUUI/userGuidance.ts => user-guidance.ts} | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/codeSnippets/check/{RTUUI/actionBar.ts => action-bar.ts} (100%) rename src/codeSnippets/check/{RTUUI/finderOverlay.ts => finder-overlay.ts} (100%) rename src/codeSnippets/check/{RTUUI/introductionScreen.ts => introduction-screen.ts} (100%) rename src/codeSnippets/check/{RTUUI/launchingTheScanner.ts => launching-scanner.ts} (100%) rename src/codeSnippets/check/{RTUUI => }/localization.ts (100%) rename src/codeSnippets/check/{RTUUI => }/palette.ts (100%) rename src/codeSnippets/check/{RTUUI/topBar.ts => top-bar.ts} (100%) rename src/codeSnippets/check/{RTUUI/userGuidance.ts => user-guidance.ts} (100%) diff --git a/src/codeSnippets/check/RTUUI/actionBar.ts b/src/codeSnippets/check/action-bar.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/actionBar.ts rename to src/codeSnippets/check/action-bar.ts diff --git a/src/codeSnippets/check/RTUUI/finderOverlay.ts b/src/codeSnippets/check/finder-overlay.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/finderOverlay.ts rename to src/codeSnippets/check/finder-overlay.ts diff --git a/src/codeSnippets/check/RTUUI/introductionScreen.ts b/src/codeSnippets/check/introduction-screen.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/introductionScreen.ts rename to src/codeSnippets/check/introduction-screen.ts diff --git a/src/codeSnippets/check/RTUUI/launchingTheScanner.ts b/src/codeSnippets/check/launching-scanner.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/launchingTheScanner.ts rename to src/codeSnippets/check/launching-scanner.ts diff --git a/src/codeSnippets/check/RTUUI/localization.ts b/src/codeSnippets/check/localization.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/localization.ts rename to src/codeSnippets/check/localization.ts diff --git a/src/codeSnippets/check/RTUUI/palette.ts b/src/codeSnippets/check/palette.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/palette.ts rename to src/codeSnippets/check/palette.ts diff --git a/src/codeSnippets/check/RTUUI/topBar.ts b/src/codeSnippets/check/top-bar.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/topBar.ts rename to src/codeSnippets/check/top-bar.ts diff --git a/src/codeSnippets/check/RTUUI/userGuidance.ts b/src/codeSnippets/check/user-guidance.ts similarity index 100% rename from src/codeSnippets/check/RTUUI/userGuidance.ts rename to src/codeSnippets/check/user-guidance.ts From 71a8103970b8e541135a16465be1ae771f1eb390 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 17:09:14 +0100 Subject: [PATCH 12/24] Add getImageData --- src/codeSnippets/getImageData.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/codeSnippets/getImageData.ts diff --git a/src/codeSnippets/getImageData.ts b/src/codeSnippets/getImageData.ts new file mode 100644 index 0000000..ffaa481 --- /dev/null +++ b/src/codeSnippets/getImageData.ts @@ -0,0 +1,7 @@ +import ScanbotSDK from 'react-native-scanbot-sdk'; + +async function decryptImage(encryptedImageURI: string) { + const decryptedBase64ImageResult = await ScanbotSDK.getImageData( + encryptedImageURI, + ); +} From 48e2afbe4e079b4e73879bf8173b1a1ea65a008b Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Mon, 17 Nov 2025 17:15:48 +0100 Subject: [PATCH 13/24] Fix single-page-scanning.ts --- .../document/rtuui/scanning-flow/single-page-scanning.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts b/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts index 69fcf2e..8aebe68 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts @@ -3,7 +3,7 @@ import { startDocumentScanner, } from 'react-native-scanbot-sdk/ui_v2'; -async function useSinglePageScanning() { +async function singlePageScanning() { try { /** Create the configuration object for single page scanning */ const configuration = new DocumentScanningFlow(); @@ -12,11 +12,11 @@ async function useSinglePageScanning() { /** See further customization configs... */ const documentResult = await startDocumentScanner(configuration); - + /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } } catch (e: any) { console.error(e.message); } -} \ No newline at end of file +} From b3358b2e74c3718edf63046b16e23526ce23589d Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Tue, 20 Jan 2026 11:10:31 +0100 Subject: [PATCH 14/24] Initial update --- .gitignore | 3 + App.tsx | 21 +- Libraries.txt | 454 +++++++++++++++++- src/components/PageImagePreview.tsx | 6 +- src/hooks/index.ts | 16 +- .../operations/document/useAddDocumentPage.ts | 10 +- .../document/useCreateDocumentPDF.ts | 13 +- .../document/useCreateDocumentTIFF.ts | 9 +- .../document/useCreateDocumentWithPage.ts | 13 +- .../operations/document/useModifyPage.ts | 12 +- .../operations/document/useRemovePage.ts | 6 +- src/hooks/operations/useCleanup.ts | 34 +- .../useDocumentDataExtractorOnImage.ts | 7 +- .../operations/useDocumentQualityAnalyzer.ts | 7 +- src/hooks/operations/useLicenseInfo.ts | 17 +- src/hooks/operations/useOCRConfigs.ts | 2 +- src/hooks/operations/usePerformOCR.ts | 10 +- .../useRecognizeMedicalCertificate.ts | 77 --- ...gnizeCheck.ts => useScanCheckFromImage.ts} | 9 +- ...tCard.ts => useScanCreditCardFromImage.ts} | 9 +- ...RecognizeMRZ.ts => useScanMRZFromImage.ts} | 8 +- .../document/useContinueDocumentScanning.ts | 7 +- .../rtuui/document/useCropDocumentPage.ts | 11 +- .../rtuui/document/useMultiplePageScanning.ts | 8 +- .../rtuui/document/useSinglePageScanning.ts | 6 +- .../useSinglePageScanningWithFinder.ts | 8 +- src/hooks/rtuui/useCheckScanner.ts | 9 +- src/hooks/rtuui/useCreditCardScanner.ts | 6 +- src/hooks/rtuui/useDocumentDataExtractor.ts | 11 +- src/hooks/rtuui/useMRZScanner.ts | 7 +- .../rtuui/useMedicalCertificateScanner.ts | 77 --- src/hooks/rtuui/useTextPatternScanner.ts | 6 +- src/hooks/rtuui/useVinScanner.ts | 6 +- src/screens/DocumentPageResultScreen.tsx | 8 +- src/screens/HomeScreen.tsx | 39 +- .../MedicalCertificateResultScreen.tsx | 131 ----- src/utils/Alerts.ts | 32 +- src/utils/FileUtils.ts | 8 +- src/utils/ImageUtils.ts | 4 +- src/utils/Navigation.ts | 13 - src/utils/SDKUtils.ts | 2 +- src/utils/index.ts | 12 +- tsconfig.json | 3 +- 43 files changed, 628 insertions(+), 529 deletions(-) delete mode 100644 src/hooks/operations/useRecognizeMedicalCertificate.ts rename src/hooks/operations/{useRecognizeCheck.ts => useScanCheckFromImage.ts} (94%) rename src/hooks/operations/{useRecognizeCreditCard.ts => useScanCreditCardFromImage.ts} (91%) rename src/hooks/operations/{useRecognizeMRZ.ts => useScanMRZFromImage.ts} (89%) delete mode 100644 src/hooks/rtuui/useMedicalCertificateScanner.ts delete mode 100644 src/screens/MedicalCertificateResultScreen.tsx diff --git a/.gitignore b/.gitignore index 375c62b..446cf67 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,6 @@ yarn-error.log !.yarn/releases !.yarn/sdks !.yarn/versions + +### Misc +licence.ts diff --git a/App.tsx b/App.tsx index 470dbac..5995e80 100644 --- a/App.tsx +++ b/App.tsx @@ -2,7 +2,7 @@ import React, {useEffect} from 'react'; import {Platform, StyleSheet} from 'react-native'; import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context'; -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; import {DocumentDirectoryPath, ExternalDirectoryPath} from 'react-native-fs'; import {NavigationContainer} from '@react-navigation/native'; import {createNativeStackNavigator} from '@react-navigation/native-stack'; @@ -25,7 +25,6 @@ import {LoadingIndicator} from '@components'; import {HomeScreen} from './src/screens/HomeScreen'; import {MrzResultScreen} from './src/screens/MrzResultScreen'; -import {MedicalCertificateResultScreen} from './src/screens/MedicalCertificateResultScreen'; import {DocumentDataExtractorResultScreen} from './src/screens/DocumentDataExtractorResultScreen'; import {CheckScannerResultScreen} from './src/screens/CheckScannerResultScreen'; import {PlainDataResultScreen} from './src/screens/PlainDataResultScreen'; @@ -69,27 +68,27 @@ const storageBaseDirectory = Platform.select({ * Please submit the trial license form (https://docs.scanbot.io/trial/) on our website by using * the app identifier "io.scanbot.example.sdk.reactnative" of this example app. */ -export const SDKInitializationOptions: ScanbotSdkConfiguration = { +export const initializationConfiguration = new SdkConfiguration({ //The Scanbot SDK License Key licenseKey: '', loggingEnabled: true, // Logging enabled. Consider switching logging OFF in production builds for security and performance reasons! storageImageFormat: IMAGE_FILE_FORMAT, // Format of stored images storageImageQuality: 80, // Quality of stored images //storageBaseDirectory: storageBaseDirectory, // Uncomment this line to use a custom storage path -} as const; +}); // Set the following properties to enable encryption. if (FILE_ENCRYPTION_ENABLED) { - SDKInitializationOptions.fileEncryptionMode = 'AES256'; - SDKInitializationOptions.fileEncryptionPassword = + initializationConfiguration.fileEncryptionMode = 'AES256'; + initializationConfiguration.fileEncryptionPassword = 'SomeSecretPa$$w0rdForFileEncryption'; } function App() { useEffect(() => { - ScanbotSDK.initializeSDK(SDKInitializationOptions) - .then(message => { - console.log(message); + ScanbotSDK.initialize(initializationConfiguration) + .then(licenseInfo => { + console.log(licenseInfo); }) .catch(error => { console.error('Error initializing Scanbot SDK:', error.message); @@ -119,10 +118,6 @@ function App() { title: ScreenTitles[navigation.route.name as Screens], })}> - (); @@ -37,10 +37,12 @@ export function useAddDocumentPage() { } /** Add a page to the document */ - const documentResult = await ScanbotSDK.Document.addPage({ + const documentResult = await ScanbotDocument.addPages({ documentID, - imageFileUri: selectedImageResult, - documentDetection: true, + images: [selectedImageResult], + options: new AddPageOptions({ + documentDetection: true, + }), }); /** * Handle the result by navigating to the result screen diff --git a/src/hooks/operations/document/useCreateDocumentPDF.ts b/src/hooks/operations/document/useCreateDocumentPDF.ts index 02267b5..1cc3f9c 100644 --- a/src/hooks/operations/document/useCreateDocumentPDF.ts +++ b/src/hooks/operations/document/useCreateDocumentPDF.ts @@ -3,9 +3,10 @@ import {ActivityIndicatorContext} from '@context'; import {checkLicense, errorMessageAlert} from '@utils'; import Share from 'react-native-share'; -import ScanbotSDK, { - OCRConfiguration, +import { + OcrConfiguration, PdfConfiguration, + ScanbotPdfGenerator, } from 'react-native-scanbot-sdk'; export function useCreateDocumentPDF() { @@ -25,13 +26,13 @@ export function useCreateDocumentPDF() { /** * Create a PDF with the provided option */ - const ocrConfiguration: OCRConfiguration | undefined = sandwichedPDF + const ocrConfiguration: OcrConfiguration | undefined = sandwichedPDF ? { engineMode: 'SCANBOT_OCR', } : undefined; - const result = await ScanbotSDK.Document.createPDF({ + const pdfFileUri = await ScanbotPdfGenerator.generateFromDocument({ documentID: documentID, pdfConfiguration: new PdfConfiguration(), ocrConfiguration: ocrConfiguration, @@ -39,9 +40,9 @@ export function useCreateDocumentPDF() { /** * Handle the result by displaying an action sheet */ - Share.open({ + await Share.open({ title: 'Share PDF file', - url: result.pdfFileUri, + url: pdfFileUri, failOnCancel: false, }); } catch (e: any) { diff --git a/src/hooks/operations/document/useCreateDocumentTIFF.ts b/src/hooks/operations/document/useCreateDocumentTIFF.ts index 764d8b5..5c5bb8e 100644 --- a/src/hooks/operations/document/useCreateDocumentTIFF.ts +++ b/src/hooks/operations/document/useCreateDocumentTIFF.ts @@ -3,8 +3,9 @@ import {ActivityIndicatorContext} from '@context'; import {checkLicense, errorMessageAlert} from '@utils'; import Share from 'react-native-share'; -import ScanbotSDK, { +import { ScanbotBinarizationFilter, + ScanbotTiffGenerator, TiffGeneratorParameters, } from 'react-native-scanbot-sdk'; @@ -25,7 +26,7 @@ export function useCreateDocumentTIFF() { /** * Create a tiff file from the document */ - const result = await ScanbotSDK.Document.createTIFF({ + const tiffFileUri = await ScanbotTiffGenerator.generateFromDocument({ documentID, configuration: new TiffGeneratorParameters({ binarizationFilter: binarized @@ -37,9 +38,9 @@ export function useCreateDocumentTIFF() { /** * Handle the result by displaying an action sheet */ - Share.open({ + await Share.open({ title: 'Share TIFF file', - url: result.tiffFileUri, + url: tiffFileUri, failOnCancel: false, }); } catch (e: any) { diff --git a/src/hooks/operations/document/useCreateDocumentWithPage.ts b/src/hooks/operations/document/useCreateDocumentWithPage.ts index 3590c6e..a9e1948 100644 --- a/src/hooks/operations/document/useCreateDocumentWithPage.ts +++ b/src/hooks/operations/document/useCreateDocumentWithPage.ts @@ -9,7 +9,10 @@ import { import {ActivityIndicatorContext, DocumentContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK from 'react-native-scanbot-sdk'; +import ScanbotSDK, { + CreateDocumentOptions, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; export function useCreateDocumentWithPage() { const navigation = useNavigation(); @@ -35,9 +38,11 @@ export function useCreateDocumentWithPage() { return; } /** Create a document object */ - const documentResult = await ScanbotSDK.Document.createDocument({ - imageFileUris: selectedImageResult, - documentDetection: true, + const documentResult = await ScanbotDocument.createDocumentFromImages({ + images: selectedImageResult, + options: new CreateDocumentOptions({ + documentDetection: true, + }), }); /** Add pages */ diff --git a/src/hooks/operations/document/useModifyPage.ts b/src/hooks/operations/document/useModifyPage.ts index 5f73192..dd01688 100644 --- a/src/hooks/operations/document/useModifyPage.ts +++ b/src/hooks/operations/document/useModifyPage.ts @@ -2,7 +2,11 @@ import {useCallback, useContext} from 'react'; import {checkLicense, errorMessageAlert} from '@utils'; import {ActivityIndicatorContext, DocumentContext} from '@context'; -import ScanbotSDK, {ParametricFilter} from 'react-native-scanbot-sdk'; +import { + ModifyPageOptions, + ParametricFilter, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; export function useModifyPage() { const {setDocument} = useContext(DocumentContext); @@ -28,10 +32,12 @@ export function useModifyPage() { return; } /** Modify the document page */ - const documentResult = await ScanbotSDK.Document.modifyPage({ + const documentResult = await ScanbotDocument.modifyPage({ documentID: documentID, pageID: pageID, - filters: [parametricFilter], + options: new ModifyPageOptions({ + filters: [parametricFilter], + }), }); /** * Handle the result diff --git a/src/hooks/operations/document/useRemovePage.ts b/src/hooks/operations/document/useRemovePage.ts index d5f36a0..b734ac7 100644 --- a/src/hooks/operations/document/useRemovePage.ts +++ b/src/hooks/operations/document/useRemovePage.ts @@ -8,7 +8,7 @@ import { import {useNavigation} from '@react-navigation/native'; import {DocumentContext} from '@context'; -import ScanbotSDK from 'react-native-scanbot-sdk'; +import {ScanbotDocument} from 'react-native-scanbot-sdk'; export function useRemovePage() { const navigation = useNavigation(); @@ -25,9 +25,9 @@ export function useRemovePage() { return; } /** Remove the document page */ - const documentResult = await ScanbotSDK.Document.removePage({ + const documentResult = await ScanbotDocument.removePages({ + pageIDs: [pageID], documentID: documentID, - pageID: pageID, }); /** * Handle the result diff --git a/src/hooks/operations/useCleanup.ts b/src/hooks/operations/useCleanup.ts index 5ef1745..b4738ab 100644 --- a/src/hooks/operations/useCleanup.ts +++ b/src/hooks/operations/useCleanup.ts @@ -1,6 +1,6 @@ import {useCallback} from 'react'; import { - deleteAllConfirmationAlert, + deleteConfirmationAlert, errorMessageAlert, infoMessageAlert, } from '@utils'; @@ -9,19 +9,23 @@ import ScanbotSDK from 'react-native-scanbot-sdk'; export const useCleanup = () => { return useCallback(() => { - deleteAllConfirmationAlert(async () => { - try { - /** - * Remove the Pages, Images, PDFs & TIFF files created with ScanbotSDK - */ - await ScanbotSDK.cleanup(); - /** - * Remove the Pages from device/server storage if any - */ - infoMessageAlert('Storage has been cleaned successfully!'); - } catch (e: any) { - errorMessageAlert(e.message); - } - }); + deleteConfirmationAlert( + 'Clearing storage', + 'Are you sure you want to proceed?', + async () => { + try { + /** + * Remove the Pages, Images, PDFs & TIFF files created with ScanbotSDK + */ + await ScanbotSDK.cleanupStorage(); + /** + * Remove the Pages from device/server storage if any + */ + infoMessageAlert('Storage has been cleaned successfully!'); + } catch (e: any) { + errorMessageAlert(e.message); + } + }, + ); }, []); }; diff --git a/src/hooks/operations/useDocumentDataExtractorOnImage.ts b/src/hooks/operations/useDocumentDataExtractorOnImage.ts index e817961..240f4ec 100644 --- a/src/hooks/operations/useDocumentDataExtractorOnImage.ts +++ b/src/hooks/operations/useDocumentDataExtractorOnImage.ts @@ -10,8 +10,9 @@ import { import {ActivityIndicatorContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK, { +import { DocumentDataExtractorConfiguration, + ScanbotDocumentDataExtractor, } from 'react-native-scanbot-sdk'; export function useDocumentDataExtractorOnImage() { @@ -40,8 +41,8 @@ export function useDocumentDataExtractorOnImage() { * Extract document data from the selected image and * Handle the result by navigating to Screens.DOCUMENT_DATA_EXTRACTOR_RESULT */ - const result = await ScanbotSDK.documentDataExtractor({ - imageFileUri: selectedImage, + const result = await ScanbotDocumentDataExtractor.extractFromImage({ + image: selectedImage, configuration: new DocumentDataExtractorConfiguration({}), }); diff --git a/src/hooks/operations/useDocumentQualityAnalyzer.ts b/src/hooks/operations/useDocumentQualityAnalyzer.ts index 8bcdfc0..05380c0 100644 --- a/src/hooks/operations/useDocumentQualityAnalyzer.ts +++ b/src/hooks/operations/useDocumentQualityAnalyzer.ts @@ -7,8 +7,9 @@ import { selectImageFromLibrary, } from '@utils'; -import ScanbotSDK, { +import { DocumentQualityAnalyzerConfiguration, + ScanbotDocument, } from 'react-native-scanbot-sdk'; export function useDocumentQualityAnalyzer() { @@ -34,8 +35,8 @@ export function useDocumentQualityAnalyzer() { } // Detect document quality on a selected image - const result = await ScanbotSDK.documentQualityAnalyzer({ - imageFileUri: selectedImage, + const result = await ScanbotDocument.analyzeQualityOnImage({ + image: selectedImage, configuration: new DocumentQualityAnalyzerConfiguration({ maxImageSize: 2100, }), diff --git a/src/hooks/operations/useLicenseInfo.ts b/src/hooks/operations/useLicenseInfo.ts index 7c5ca2a..959e90f 100644 --- a/src/hooks/operations/useLicenseInfo.ts +++ b/src/hooks/operations/useLicenseInfo.ts @@ -11,16 +11,13 @@ export function useLicenseInfo() { **/ const info = await ScanbotSDK.getLicenseInfo(); - const licenseMessage = info.licenseStatusMessage ?? `The license is ${info.isLicenseValid ? 'VALID' : 'NOT VALID'}`; - - const text = - `• ${licenseMessage}` + - `\n\n• Expiration Date: ${ - info.licenseExpirationDate - ? new Date(info.licenseExpirationDate) - : 'N/A' - }` + - `\n\n• Status: ${info.licenseStatus}`; + const text = [ + `• ${info.licenseStatusMessage}`, + `• Expiration Date: ${new Date( + info.expirationTimestamp * 1000, + ).toDateString()}`, + `• Status: ${info.status}`, + ].join('\n'); infoMessageAlert(text); } catch (e: any) { diff --git a/src/hooks/operations/useOCRConfigs.ts b/src/hooks/operations/useOCRConfigs.ts index 5be4fac..0ed7f31 100644 --- a/src/hooks/operations/useOCRConfigs.ts +++ b/src/hooks/operations/useOCRConfigs.ts @@ -17,7 +17,7 @@ export function useOCRConfigs() { * Get the OCR Configs * Handle the result by displaying an Alert */ - const result = await ScanbotSDK.getOCRConfigs(); + const result = await ScanbotSDK.getOcrConfigs(); resultMessageAlert( `Installed languages: ${result.installedLanguages} at path ${result.languageDataPath}`, ); diff --git a/src/hooks/operations/usePerformOCR.ts b/src/hooks/operations/usePerformOCR.ts index bb3e25a..f265d60 100644 --- a/src/hooks/operations/usePerformOCR.ts +++ b/src/hooks/operations/usePerformOCR.ts @@ -9,7 +9,7 @@ import { import {ActivityIndicatorContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK from 'react-native-scanbot-sdk'; +import {ScanbotOcrEngine} from 'react-native-scanbot-sdk'; export function usePerformOCR() { const {setLoading} = useContext(ActivityIndicatorContext); @@ -37,9 +37,9 @@ export function usePerformOCR() { * Perform optical character recognition with the provided configuration and * Display the result */ - const result = await ScanbotSDK.performOCR({ - imageFileUris: selectedImages, - ocrConfiguration: { + const result = await ScanbotOcrEngine.recognizeOnImages({ + images: selectedImages, + configuration: { engineMode: 'SCANBOT_OCR', }, }); @@ -47,7 +47,7 @@ export function usePerformOCR() { * Handle the result by navigating to the result screen */ navigation.navigate(Screens.PLAIN_DATA_RESULT, { - data: result.plainText, + data: result.recognizedText, }); } catch (e: any) { errorMessageAlert(e.message); diff --git a/src/hooks/operations/useRecognizeMedicalCertificate.ts b/src/hooks/operations/useRecognizeMedicalCertificate.ts deleted file mode 100644 index cdff217..0000000 --- a/src/hooks/operations/useRecognizeMedicalCertificate.ts +++ /dev/null @@ -1,77 +0,0 @@ -import {useNavigation} from '@react-navigation/native'; -import { - checkLicense, - errorMessageAlert, - infoMessageAlert, - PrimaryRouteNavigationProp, - Screens, - selectImageFromLibrary, -} from '@utils'; -import {useCallback, useContext} from 'react'; -import {ActivityIndicatorContext} from '@context'; - -import ScanbotSDK, { - autorelease, - MedicalCertificateScanningParameters, -} from 'react-native-scanbot-sdk'; - -export function useRecognizeMedicalCertificate() { - const navigation = useNavigation(); - const {setLoading} = useContext(ActivityIndicatorContext); - - return useCallback(async () => { - try { - setLoading(true); - /** - * Check the license status and return early - * if the license is not valid - */ - if (!(await checkLicense())) { - return; - } - /** - * Select an image from the Image Library - * Return early if no image is selected, or there is an issue selecting an image - **/ - const selectedImage = await selectImageFromLibrary(); - if (!selectedImage) { - return; - } - - /* An autorelease pool is required because the result object may contain image references. */ - await autorelease(async () => { - /** - * Recognize Medical Certificate on the selected image and - * Handle the result by navigating to Screens.MEDICAL_CERTIFICATE_RESULT - */ - const result = await ScanbotSDK.recognizeMedicalCertificate({ - imageFileUri: selectedImage, - configuration: new MedicalCertificateScanningParameters({ - extractCroppedImage: true, - }), - }); - - if (result.scanningSuccessful) { - /** - * The medical certificate is serialized for use in navigation parameters. - * - * By default, images are serialized as references. - * When using image references, it's important to manage memory correctly. - * Ensure image references are released appropriately by using an autorelease pool. - */ - const medicalCertificateNavigationObject = await result.serialize(); - - navigation.navigate(Screens.MEDICAL_CERTIFICATE_RESULT, { - certificate: medicalCertificateNavigationObject, - }); - } else { - infoMessageAlert('No medical certificate detected'); - } - }); - } catch (e: any) { - errorMessageAlert(e.message); - } finally { - setLoading(false); - } - }, [navigation, setLoading]); -} diff --git a/src/hooks/operations/useRecognizeCheck.ts b/src/hooks/operations/useScanCheckFromImage.ts similarity index 94% rename from src/hooks/operations/useRecognizeCheck.ts rename to src/hooks/operations/useScanCheckFromImage.ts index f1397fe..3ef1444 100644 --- a/src/hooks/operations/useRecognizeCheck.ts +++ b/src/hooks/operations/useScanCheckFromImage.ts @@ -9,13 +9,14 @@ import { import {ActivityIndicatorContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK, { +import { autorelease, CheckScannerConfiguration, + ScanbotCheck, ToJsonConfiguration, } from 'react-native-scanbot-sdk'; -export function useRecognizeCheck() { +export function useScanCheckFromImage() { const navigation = useNavigation(); const {setLoading} = useContext(ActivityIndicatorContext); @@ -44,8 +45,8 @@ export function useRecognizeCheck() { * Recognize Check on the selected image and * Handle the result by navigating to Screens.CHECK_SCANNER_RESULT */ - const result = await ScanbotSDK.recognizeCheck({ - imageFileUri: selectedImage, + const result = await ScanbotCheck.scanFromImage({ + image: selectedImage, configuration: new CheckScannerConfiguration({ documentDetectionMode: 'DETECT_AND_CROP_DOCUMENT', }), diff --git a/src/hooks/operations/useRecognizeCreditCard.ts b/src/hooks/operations/useScanCreditCardFromImage.ts similarity index 91% rename from src/hooks/operations/useRecognizeCreditCard.ts rename to src/hooks/operations/useScanCreditCardFromImage.ts index bd5f655..102a8b4 100644 --- a/src/hooks/operations/useRecognizeCreditCard.ts +++ b/src/hooks/operations/useScanCreditCardFromImage.ts @@ -9,11 +9,12 @@ import { import {ActivityIndicatorContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK, { +import { CreditCardScannerConfiguration, + ScanbotCreditCard, } from 'react-native-scanbot-sdk'; -export function useRecognizeCreditCard() { +export function useScanCreditCardFromImage() { const navigation = useNavigation(); const {setLoading} = useContext(ActivityIndicatorContext); @@ -44,8 +45,8 @@ export function useRecognizeCreditCard() { * Recognize Credit card on the selected image and * Handle the result by navigating to Screens.CREDIT_CARD_RESULT */ - const result = await ScanbotSDK.recognizeCreditCard({ - imageFileUri: selectedImage, + const result = await ScanbotCreditCard.scanFromImage({ + image: selectedImage, configuration: configuration, }); diff --git a/src/hooks/operations/useRecognizeMRZ.ts b/src/hooks/operations/useScanMRZFromImage.ts similarity index 89% rename from src/hooks/operations/useRecognizeMRZ.ts rename to src/hooks/operations/useScanMRZFromImage.ts index 0169f53..6994347 100644 --- a/src/hooks/operations/useRecognizeMRZ.ts +++ b/src/hooks/operations/useScanMRZFromImage.ts @@ -10,9 +10,9 @@ import { } from '@utils'; import {ActivityIndicatorContext} from '@context'; -import ScanbotSDK, {MrzScannerConfiguration} from 'react-native-scanbot-sdk'; +import {MrzScannerConfiguration, ScanbotMrz} from 'react-native-scanbot-sdk'; -export function useRecognizeMRZ() { +export function useScanMRZFromImage() { const navigation = useNavigation(); const {setLoading} = useContext(ActivityIndicatorContext); @@ -43,8 +43,8 @@ export function useRecognizeMRZ() { * Recognize MRZ on the selected image and * Handle the result by navigating to Screens.MRZ_RESULT */ - const result = await ScanbotSDK.recognizeMrz({ - imageFileUri: selectedImage, + const result = await ScanbotMrz.scanFromImage({ + image: selectedImage, configuration: configuration, }); diff --git a/src/hooks/rtuui/document/useContinueDocumentScanning.ts b/src/hooks/rtuui/document/useContinueDocumentScanning.ts index 6fa47bf..a173f7d 100644 --- a/src/hooks/rtuui/document/useContinueDocumentScanning.ts +++ b/src/hooks/rtuui/document/useContinueDocumentScanning.ts @@ -8,10 +8,7 @@ import { import {useCallback, useContext} from 'react'; import {DocumentContext} from '@context'; -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; export function useContinueDocumentScanning() { const navigation = useNavigation(); @@ -35,7 +32,7 @@ export function useContinueDocumentScanning() { configuration.documentUuid = documentID; configuration.cleanScanningSession = false; - await startDocumentScanner(configuration); + await ScanbotDocument.startScanner(configuration); loadDocument(documentID); navigation.navigate(Screens.DOCUMENT_RESULT); } catch (e: any) { diff --git a/src/hooks/rtuui/document/useCropDocumentPage.ts b/src/hooks/rtuui/document/useCropDocumentPage.ts index 993e0df..2a6a350 100644 --- a/src/hooks/rtuui/document/useCropDocumentPage.ts +++ b/src/hooks/rtuui/document/useCropDocumentPage.ts @@ -2,10 +2,7 @@ import {checkLicense, errorMessageAlert} from '@utils'; import {useCallback, useContext} from 'react'; import {DocumentContext} from '@context'; -import { - CroppingConfiguration, - startCroppingScreen, -} from 'react-native-scanbot-sdk/ui_v2'; +import {CroppingConfiguration, ScanbotDocument} from 'react-native-scanbot-sdk'; export function useCropDocumentPage() { const {setDocument} = useContext(DocumentContext); @@ -22,14 +19,16 @@ export function useCropDocumentPage() { } /** * Create the Cropping configuration object and - * start the Cropping UI with the configuration, documentUUID and pageUUID + * start the Cropping Screen with the configuration, documentUUID and pageUUID */ const configuration = new CroppingConfiguration({ documentUuid: documentID, pageUuid: pageID, }); - const documentResult = await startCroppingScreen(configuration); + const documentResult = await ScanbotDocument.startCroppingScreen( + configuration, + ); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/document/useMultiplePageScanning.ts b/src/hooks/rtuui/document/useMultiplePageScanning.ts index d5a607c..557dc9e 100644 --- a/src/hooks/rtuui/document/useMultiplePageScanning.ts +++ b/src/hooks/rtuui/document/useMultiplePageScanning.ts @@ -8,11 +8,7 @@ import { import {useNavigation} from '@react-navigation/native'; import {DocumentContext} from '@context'; import {COLORS} from '@theme'; - -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; export function useMultiplePageScanning() { const navigation = useNavigation(); @@ -83,7 +79,7 @@ export function useMultiplePageScanning() { configuration.screens.cropping.bottomBar.rotateButton.visible = true; configuration.screens.cropping.bottomBar.detectButton.visible = true; - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/document/useSinglePageScanning.ts b/src/hooks/rtuui/document/useSinglePageScanning.ts index a6810cb..1ee07dc 100644 --- a/src/hooks/rtuui/document/useSinglePageScanning.ts +++ b/src/hooks/rtuui/document/useSinglePageScanning.ts @@ -13,8 +13,8 @@ import { DocumentScanningFlow, PageSnapCheckMarkAnimation, PageSnapFunnelAnimation, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; export function useSinglePageScanning() { const navigation = useNavigation(); @@ -76,7 +76,7 @@ export function useSinglePageScanning() { configuration.screens.camera.userGuidance.statesTitles.noDocumentFound = 'Could not detect a document'; - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/document/useSinglePageScanningWithFinder.ts b/src/hooks/rtuui/document/useSinglePageScanningWithFinder.ts index 95a29b9..0ec78ef 100644 --- a/src/hooks/rtuui/document/useSinglePageScanningWithFinder.ts +++ b/src/hooks/rtuui/document/useSinglePageScanningWithFinder.ts @@ -10,10 +10,10 @@ import {DocumentContext} from '@context'; import {COLORS} from '@theme'; import { + AspectRatio, DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; export function useSinglePageScanningWithFinder() { const navigation = useNavigation(); @@ -68,7 +68,7 @@ export function useSinglePageScanningWithFinder() { configuration.screens.camera.userGuidance.statesTitles.noDocumentFound = 'Could not detect a document'; - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useCheckScanner.ts b/src/hooks/rtuui/useCheckScanner.ts index 3c93d11..9665602 100644 --- a/src/hooks/rtuui/useCheckScanner.ts +++ b/src/hooks/rtuui/useCheckScanner.ts @@ -8,11 +8,12 @@ import { import {useCallback} from 'react'; import {COLORS} from '@theme'; -import {autorelease, ToJsonConfiguration} from 'react-native-scanbot-sdk'; import { + autorelease, CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, + ToJsonConfiguration, +} from 'react-native-scanbot-sdk'; export function useCheckScanner() { const navigation = useNavigation(); @@ -43,7 +44,7 @@ export function useCheckScanner() { /** An autorelease pool is required because the result object contains image references. */ await autorelease(async () => { - const result = await startCheckScanner(configuration); + const result = await ScanbotCheck.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useCreditCardScanner.ts b/src/hooks/rtuui/useCreditCardScanner.ts index 6e100fc..259648d 100644 --- a/src/hooks/rtuui/useCreditCardScanner.ts +++ b/src/hooks/rtuui/useCreditCardScanner.ts @@ -10,9 +10,9 @@ import {COLORS} from '@theme'; import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, + ScanbotCreditCard, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; export function useCreditCardScanner() { const navigation = useNavigation(); @@ -48,7 +48,7 @@ export function useCreditCardScanner() { configuration.actionBar.flashButton.activeForegroundColor = COLORS.SCANBOT_RED; - const result = await startCreditCardScanner(configuration); + const result = await ScanbotCreditCard.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useDocumentDataExtractor.ts b/src/hooks/rtuui/useDocumentDataExtractor.ts index a957280..abbd17e 100644 --- a/src/hooks/rtuui/useDocumentDataExtractor.ts +++ b/src/hooks/rtuui/useDocumentDataExtractor.ts @@ -6,11 +6,12 @@ import { } from '@utils'; import {useNavigation} from '@react-navigation/native'; import {useCallback} from 'react'; +import {COLORS} from '@theme'; + import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; -import {COLORS} from '@theme'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; export function useDocumentDataExtractor() { const navigation = useNavigation(); @@ -32,7 +33,9 @@ export function useDocumentDataExtractor() { configuration.introScreen.explanation.visible = true; configuration.extractionProgress.progressColor = COLORS.SCANBOT_RED; - const result = await startDocumentDataExtractor(configuration); + const result = await ScanbotDocumentDataExtractor.startExtractorScreen( + configuration, + ); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useMRZScanner.ts b/src/hooks/rtuui/useMRZScanner.ts index b4b70d9..a74b21d 100644 --- a/src/hooks/rtuui/useMRZScanner.ts +++ b/src/hooks/rtuui/useMRZScanner.ts @@ -10,9 +10,9 @@ import {useCallback} from 'react'; import { MrzScannerScreenConfiguration, - startMRZScanner, + ScanbotMrz, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; export function useMRZScanner() { const navigation = useNavigation(); @@ -40,7 +40,6 @@ export function useMRZScanner() { configuration.topUserGuidance.title = new StyledText({ text: 'Scan MRZ', color: COLORS.SCANBOT_RED, - useShadow: true, }); // Modify the action bar @@ -51,7 +50,7 @@ export function useMRZScanner() { // Configure the scanner configuration.scannerConfiguration.incompleteResultHandling = 'ACCEPT'; - const result = await startMRZScanner(configuration); + const result = await ScanbotMrz.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useMedicalCertificateScanner.ts b/src/hooks/rtuui/useMedicalCertificateScanner.ts deleted file mode 100644 index 7d7a49c..0000000 --- a/src/hooks/rtuui/useMedicalCertificateScanner.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { - checkLicense, - errorMessageAlert, - PrimaryRouteNavigationProp, - Screens, -} from '@utils'; -import {useNavigation} from '@react-navigation/native'; -import {COLORS} from '@theme'; -import {useCallback} from 'react'; - -import ScanbotSDK, { - autorelease, - MedicalCertificateScannerConfiguration, -} from 'react-native-scanbot-sdk'; - -export function useMedicalCertificateScanner() { - const navigation = useNavigation(); - - return useCallback(async () => { - try { - /** - * Check the license status and return early - * if the license is not valid - */ - if (!(await checkLicense())) { - return; - } - /** - * Create the medical certificate scanner configuration object and - * start the medical certificate scanner with the configuration - */ - const config: MedicalCertificateScannerConfiguration = { - topBarBackgroundColor: COLORS.SCANBOT_RED, - userGuidanceStrings: { - capturing: 'Capturing', - scanning: 'Recognizing', - processing: 'Processing', - startScanning: 'Scanning Started', - paused: 'Paused', - energySaving: 'Energy Saving', - }, - errorDialogMessage: 'Oops, something went wrong! Please, try again.', - errorDialogOkButton: 'OK', - errorDialogTitle: 'ERROR', - cancelButtonHidden: false, - recognizePatientInfo: true, - }; - - /* An autorelease pool is required because the result object may contain image references. */ - await autorelease(async () => { - const result = await ScanbotSDK.UI.startMedicalCertificateScanner( - config, - ); - /** - * Handle the result if the result status is OK - */ - if (result.status === 'OK') { - /** - * The medical certificate is serialized for use in navigation parameters. - * - * By default, images are serialized as references. - * When using image references, it's important to manage memory correctly. - * Ensure image references are released appropriately by using an autorelease pool. - */ - const medicalCertificateNavigationObject = - await result.data.serialize(); - - navigation.navigate(Screens.MEDICAL_CERTIFICATE_RESULT, { - certificate: medicalCertificateNavigationObject, - }); - } - }); - } catch (e: any) { - errorMessageAlert(e.message); - } - }, [navigation]); -} diff --git a/src/hooks/rtuui/useTextPatternScanner.ts b/src/hooks/rtuui/useTextPatternScanner.ts index 1b708ee..2cb53f8 100644 --- a/src/hooks/rtuui/useTextPatternScanner.ts +++ b/src/hooks/rtuui/useTextPatternScanner.ts @@ -3,9 +3,9 @@ import {useCallback} from 'react'; import {COLORS} from '@theme'; import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; export function useTextPatternScanner() { return useCallback(async () => { @@ -34,7 +34,7 @@ export function useTextPatternScanner() { configuration.scannerConfiguration.minimumNumberOfRequiredFramesWithEqualScanningResult = 4; - const result = await startTextPatternScanner(configuration); + const result = await ScanbotTextPattern.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/hooks/rtuui/useVinScanner.ts b/src/hooks/rtuui/useVinScanner.ts index 8601dc4..5898ae3 100644 --- a/src/hooks/rtuui/useVinScanner.ts +++ b/src/hooks/rtuui/useVinScanner.ts @@ -2,9 +2,9 @@ import {checkLicense, errorMessageAlert, resultMessageAlert} from '@utils'; import {useCallback} from 'react'; import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; export function useVinScanner() { return useCallback(async () => { @@ -23,7 +23,7 @@ export function useVinScanner() { const configuration = new VinScannerScreenConfiguration(); configuration.confirmationAlertDialogEnabled = false; - const result = await startVINScanner(configuration); + const result = await ScanbotVin.startScanner(configuration); /** * Handle the result if the result status is OK */ diff --git a/src/screens/DocumentPageResultScreen.tsx b/src/screens/DocumentPageResultScreen.tsx index 5c43983..083c912 100644 --- a/src/screens/DocumentPageResultScreen.tsx +++ b/src/screens/DocumentPageResultScreen.tsx @@ -4,7 +4,7 @@ import {BottomActionBar, ImageFilterModal, PageImagePreview} from '@components'; import {ParametricFilter} from 'react-native-scanbot-sdk'; import { DocumentPageResultScreenRouteProp, - removePageConfirmationAlert, + deleteConfirmationAlert, } from '@utils'; import {useRoute} from '@react-navigation/native'; import {useCropDocumentPage, useModifyPage, useRemovePage} from '@hooks'; @@ -52,7 +52,11 @@ export function DocumentPageResultScreen() { }, [document, pageID, removePage]); const onDelete = useCallback(() => { - removePageConfirmationAlert(onRemovePage); + deleteConfirmationAlert( + 'Removing page', + 'Are you sure you want to proceed?', + onRemovePage, + ); }, [onRemovePage]); return ( diff --git a/src/screens/HomeScreen.tsx b/src/screens/HomeScreen.tsx index 484866d..c6bbb97 100644 --- a/src/screens/HomeScreen.tsx +++ b/src/screens/HomeScreen.tsx @@ -10,15 +10,13 @@ import { useDocumentDataExtractorOnImage, useDocumentQualityAnalyzer, useLicenseInfo, - useMedicalCertificateScanner, useMRZScanner, useMultiplePageScanning, useOCRConfigs, usePerformOCR, - useRecognizeCheck, - useRecognizeCreditCard, - useRecognizeMedicalCertificate, - useRecognizeMRZ, + useScanCheckFromImage, + useScanCreditCardFromImage, + useScanMRZFromImage, useSinglePageScanning, useSinglePageScanningWithFinder, useTextPatternScanner, @@ -32,17 +30,15 @@ export function HomeScreen() { const navigation = useNavigation(); /** ScanbotSDK Features */ const onMRZScanner = useMRZScanner(); - const onMedicalCertificateScanner = useMedicalCertificateScanner(); const onDocumentDataExtractor = useDocumentDataExtractor(); const onVinScanner = useVinScanner(); const onCheckScanner = useCheckScanner(); const onCreditCardScanner = useCreditCardScanner(); const onTextPatternScanner = useTextPatternScanner(); - const onRecognizeCheckOnImage = useRecognizeCheck(); - const onRecognizeMRZOnImage = useRecognizeMRZ(); - const onRecognizeMedicalCertificateOnImage = useRecognizeMedicalCertificate(); + const onScanCheckOnImage = useScanCheckFromImage(); + const onScanMRZOnImage = useScanMRZFromImage(); const onDocumentDataExtractorOnImage = useDocumentDataExtractorOnImage(); - const onRecognizeCreditCard = useRecognizeCreditCard(); + const onScanCreditCard = useScanCreditCardFromImage(); const onPerformOCR = usePerformOCR(); const onDocumentQualityAnalyzer = useDocumentQualityAnalyzer(); const onLicenseInfo = useLicenseInfo(); @@ -85,10 +81,6 @@ export function HomeScreen() { - @@ -101,22 +93,15 @@ export function HomeScreen() { title={'Document Data Extractor'} /> - - - + + (); - const [medicalCertificateResult, setMedicalCertificateResult] = - useState(); - const [image, setImage] = useState(); - - useEffect(() => { - /** - * Since the result contains an image reference, an autorelease pool is required to manage memory correctly. - * Referencing the image allows flexibility: - * * The image can be encoded (e.g., as a base64 buffer), - * * The image can be saved on disk. - * * Information about the image can be extracted. - * In this example, we encode the image as a base64 buffer. - */ - autorelease(async () => { - const result = new MedicalCertificateScanningResult( - route.params.certificate, - ); - const imageData = await result.croppedImage?.encodeImage(); - - if (imageData) { - setImage(`data:image/jpeg;base64,${imageData}`); - } - - setMedicalCertificateResult(result); - }); - }, [route.params.certificate]); - - return ( - - - - - - - - - - - ); -} - -function PatientDataFields({ - patientData, -}: { - patientData?: MedicalCertificatePatientInfoBox; -}) { - if (!patientData) { - return null; - } - - return ( - - {patientData.fields.map(field => ( - - ))} - - ); -} - -const DatesData = ({ - datesData, -}: { - datesData?: MedicalCertificateDateRecord[]; -}) => { - if (!datesData) { - return null; - } - - return ( - - {datesData.map(dateData => ( - - ))} - - ); -}; - -const CheckboxesData = ({ - checkboxes, -}: { - checkboxes?: MedicalCertificateCheckBox[]; -}) => { - if (!checkboxes) { - return null; - } - - return ( - - {checkboxes.map(checkBox => ( - - ))} - - ); -}; diff --git a/src/utils/Alerts.ts b/src/utils/Alerts.ts index 6146c2b..2499bf6 100644 --- a/src/utils/Alerts.ts +++ b/src/utils/Alerts.ts @@ -63,32 +63,14 @@ export function infoMessageAlert(message: string) { ); } -export function removePageConfirmationAlert(onDelete: () => void) { +export function deleteConfirmationAlert( + title: string, + message: string | undefined, + onDelete: () => void, +) { Alert.alert( - 'Removing page', - 'Are you sure you want to proceed?', - [ - { - text: 'Close', - style: 'cancel', - onPress: () => {}, - }, - { - text: 'OK', - style: 'default', - onPress: onDelete, - }, - ], - { - cancelable: true, - }, - ); -} - -export function deleteAllConfirmationAlert(onDelete: () => void) { - Alert.alert( - 'Clearing storage', - 'Are you sure you want to proceed?', + title, + message, [ { text: 'Close', diff --git a/src/utils/FileUtils.ts b/src/utils/FileUtils.ts index e227b61..e06c40d 100644 --- a/src/utils/FileUtils.ts +++ b/src/utils/FileUtils.ts @@ -4,14 +4,14 @@ import { pick, types, } from '@react-native-documents/picker'; -import {infoMessageAlert} from './Alerts.ts'; +import {errorMessageAlert} from './Alerts.ts'; /** * Select a local PDF file and retrieve the file's URI. * @return {Promise} URI of the selected PDF if the operation is successful or undefined otherwise */ -export async function selectPDFFileUri(): Promise { +export async function selectPDFFile(): Promise { try { const [pdfFile] = await pick({ mode: 'import', @@ -25,11 +25,11 @@ export async function selectPDFFileUri(): Promise { if (isErrorWithCode(e)) { switch (e.code) { case errorCodes.UNABLE_TO_OPEN_FILE_TYPE: { - infoMessageAlert('Unable to open file'); + errorMessageAlert('Unable to open file'); break; } case errorCodes.IN_PROGRESS: { - infoMessageAlert(e.message); + errorMessageAlert(e.message); break; } } diff --git a/src/utils/ImageUtils.ts b/src/utils/ImageUtils.ts index 81f61a2..68fadad 100644 --- a/src/utils/ImageUtils.ts +++ b/src/utils/ImageUtils.ts @@ -43,7 +43,9 @@ export async function selectImageFromLibrary(): Promise { return undefined; } - const imageUri = imageResponse.assets.every(image => image.uri !== undefined); + const imageUri = + imageResponse.assets.length > 0 && + imageResponse.assets.every(image => image.uri !== undefined); if (!imageUri) { errorMessageAlert('Error picking image from gallery!'); diff --git a/src/utils/Navigation.ts b/src/utils/Navigation.ts index b459cd4..0819be1 100644 --- a/src/utils/Navigation.ts +++ b/src/utils/Navigation.ts @@ -5,7 +5,6 @@ import { CreditCardScanningStatus, DocumentDataExtractionStatus, GenericDocument, - MedicalCertificateScanningResult, } from 'react-native-scanbot-sdk'; export enum Screens { @@ -13,7 +12,6 @@ export enum Screens { CHECK_SCANNER_RESULT = 'checkScannerResult', MRZ_RESULT = 'mrzResult', DOCUMENT_DATA_EXTRACTOR_RESULT = 'documentDataExtractorResult', - MEDICAL_CERTIFICATE_RESULT = 'medicalCertificateResult', PLAIN_DATA_RESULT = 'plainDataResult', DOCUMENT_RESULT = 'documentResult', DOCUMENT_PAGE_RESULT = 'documentPageResult', @@ -27,7 +25,6 @@ export const ScreenTitles: Record = { [Screens.CHECK_SCANNER_RESULT]: 'Check Scanner Result', [Screens.MRZ_RESULT]: 'MRZ Result', [Screens.DOCUMENT_DATA_EXTRACTOR_RESULT]: 'Document Data Extractor Result', - [Screens.MEDICAL_CERTIFICATE_RESULT]: 'Medical Certificate Result', [Screens.PLAIN_DATA_RESULT]: 'Result', [Screens.DOCUMENT_RESULT]: 'Document', [Screens.DOCUMENT_PAGE_RESULT]: 'Document Page', @@ -47,11 +44,6 @@ export type PrimaryRoutesParamList = { document: GenericDocument | null; extractionStatus: DocumentDataExtractionStatus; }; - [Screens.MEDICAL_CERTIFICATE_RESULT]: { - certificate: Awaited< - ReturnType - >; - }; [Screens.MRZ_RESULT]: { mrzDocument: GenericDocument | null; rawMRZ: string; @@ -82,11 +74,6 @@ export type MrzResultScreenRouteProp = RouteProp< Screens.MRZ_RESULT >; -export type MedicalCertificateResultScreenRouteProp = RouteProp< - PrimaryRoutesParamList, - Screens.MEDICAL_CERTIFICATE_RESULT ->; - export type DocumentDataExtractionResultScreenRouteProp = RouteProp< PrimaryRoutesParamList, Screens.DOCUMENT_DATA_EXTRACTOR_RESULT diff --git a/src/utils/SDKUtils.ts b/src/utils/SDKUtils.ts index b1b0fa4..7bfd008 100644 --- a/src/utils/SDKUtils.ts +++ b/src/utils/SDKUtils.ts @@ -6,7 +6,7 @@ export const FILE_ENCRYPTION_ENABLED: boolean = false; export async function checkLicense(): Promise { const info = await ScanbotSDK.getLicenseInfo(); - if (info.isLicenseValid) { + if (info.isValid) { return true; } diff --git a/src/utils/index.ts b/src/utils/index.ts index 53663dc..cbbca2f 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,11 +1,10 @@ import { - deleteAllConfirmationAlert, + deleteConfirmationAlert, errorMessageAlert, infoMessageAlert, resultMessageAlert, - removePageConfirmationAlert, } from './Alerts'; -import {selectPDFFileUri} from './FileUtils'; +import {selectPDFFile} from './FileUtils'; import {selectImagesFromLibrary, selectImageFromLibrary} from './ImageUtils'; import { checkLicense, @@ -16,7 +15,6 @@ import {GenericDocumentUtils} from './GenericDocumentUtils'; import { CheckRecognizerResultScreenRouteProp, DocumentDataExtractionResultScreenRouteProp, - MedicalCertificateResultScreenRouteProp, MrzResultScreenRouteProp, PlainDataResultParam, PlainDataResultScreenRouteProp, @@ -33,9 +31,8 @@ export { errorMessageAlert, resultMessageAlert, infoMessageAlert, - deleteAllConfirmationAlert, - removePageConfirmationAlert, - selectPDFFileUri, + deleteConfirmationAlert, + selectPDFFile, selectImagesFromLibrary, selectImageFromLibrary, IMAGE_FILE_FORMAT, @@ -51,7 +48,6 @@ export type { PrimaryRouteNavigationProp, CheckRecognizerResultScreenRouteProp, MrzResultScreenRouteProp, - MedicalCertificateResultScreenRouteProp, DocumentDataExtractionResultScreenRouteProp, PlainDataResultScreenRouteProp, PlainDataResultParam, diff --git a/tsconfig.json b/tsconfig.json index 964bd30..8ec9a8b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "jsx": "react", "paths": { "@components": ["./src/components"], "@context": ["./src/context"], @@ -9,5 +8,5 @@ "@theme": ["./src/theme"] } }, - "extends": "@react-native/typescript-config/tsconfig.json" + "extends": "@react-native/typescript-config", } From 31815a92f31a742e4f9f7508a1402c252b07ed70 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Thu, 22 Jan 2026 12:41:15 +0100 Subject: [PATCH 15/24] v8.0.0-beta.1 --- ios/Podfile.lock | 48 +- package.json | 4 +- yarn.lock | 1689 ++++++++++++++++++++++++---------------------- 3 files changed, 892 insertions(+), 849 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b30add7..31c4bcb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1332,7 +1332,7 @@ PODS: - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - react-native-document-picker (10.1.5): + - react-native-document-picker (10.1.7): - DoubleConversion - glog - hermes-engine @@ -1380,7 +1380,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-safe-area-context (5.6.0): + - react-native-safe-area-context (5.6.2): - DoubleConversion - glog - hermes-engine @@ -1395,8 +1395,8 @@ PODS: - React-hermes - React-ImageManager - React-jsi - - react-native-safe-area-context/common (= 5.6.0) - - react-native-safe-area-context/fabric (= 5.6.0) + - react-native-safe-area-context/common (= 5.6.2) + - react-native-safe-area-context/fabric (= 5.6.2) - React-NativeModulesApple - React-RCTFabric - React-renderercss @@ -1406,7 +1406,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-safe-area-context/common (5.6.0): + - react-native-safe-area-context/common (5.6.2): - DoubleConversion - glog - hermes-engine @@ -1430,7 +1430,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-safe-area-context/fabric (5.6.0): + - react-native-safe-area-context/fabric (5.6.2): - DoubleConversion - glog - hermes-engine @@ -1779,7 +1779,7 @@ PODS: - React-utils (= 0.79.0) - RNFS (2.20.0): - React-Core - - RNScanbotSDK (7.1.1): + - RNScanbotSDK (8.0.0-beta.1): - DoubleConversion - glog - hermes-engine @@ -1802,9 +1802,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ScanbotSDKNativeWrapper (= 7.1.4.0) + - ScanbotSDKNativeWrapper (= 8.0.0.3) - Yoga - - RNScreens (4.14.1): + - RNScreens (4.10.0): - DoubleConversion - glog - hermes-engine @@ -1828,9 +1828,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNScreens/common (= 4.14.1) + - RNScreens/common (= 4.10.0) - Yoga - - RNScreens/common (4.14.1): + - RNScreens/common (4.10.0): - DoubleConversion - glog - hermes-engine @@ -1855,7 +1855,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNShare (12.2.0): + - RNShare (12.2.2): - DoubleConversion - glog - hermes-engine @@ -1879,11 +1879,11 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - ScanbotSDK (7.1.4): - - ScanbotSDK/NONE (= 7.1.4) - - ScanbotSDK/NONE (7.1.4) - - ScanbotSDKNativeWrapper (7.1.4.0): - - ScanbotSDK (= 7.1.4) + - ScanbotSDK (8.0.1-RC1): + - ScanbotSDK/NONE (= 8.0.1-RC1) + - ScanbotSDK/NONE (8.0.1-RC1) + - ScanbotSDKNativeWrapper (8.0.0.3): + - ScanbotSDK (= 8.0.1-RC1) - SocketRocket (0.7.1) - Yoga (0.0.0) @@ -2170,9 +2170,9 @@ SPEC CHECKSUMS: React-logger: a0374da29c78e17da5523809c9f54c91dfef0462 React-Mapbuffer: 08d7cddd2dcd2cc51c424931cca9ef507f7afe7b React-microtasksnativemodule: cd8733e55d2bc53f5342d2c8e26c8c9bae82a999 - react-native-document-picker: a074a7bb8226a2fd8e06524f158e9a952ef093dc + react-native-document-picker: 6c85587b689ca761d92f6ee6fa6d041e1100d95b react-native-image-picker: c73e6edfdbc2bbc1c12b3fe9c2149441fa08f149 - react-native-safe-area-context: 6863f9e225b541b481514b0f6d51be0867184c2c + react-native-safe-area-context: bc59472155ffb889a1ffe16c19a04c0cd451562b React-NativeModulesApple: b0bd6d12dc7b554676bdd1be5c4ddaa5ff125ae0 React-oscompat: faff1df234d57a7368b56e9642222dde9eb9f422 React-perflogger: 978df3d0a604cd92887381d2e199461d4d7f2659 @@ -2205,11 +2205,11 @@ SPEC CHECKSUMS: ReactCodegen: daf57f5314369a4ad607ee77516d45aad03b10d7 ReactCommon: c07346679f14c0b62ad02b20e18e984da3b575ce RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 - RNScanbotSDK: 881f2c0ffa87a8ac27203605f512787fb45ea5e6 - RNScreens: c2fd33e6c93b4aea8d88b6dcf6bbd8edb3743b41 - RNShare: 54d9a98353fe21fdbcf0ade081ce823ea1154a4e - ScanbotSDK: 8fa0da4759e7da6be77e1bc6eea8f60eb5651b28 - ScanbotSDKNativeWrapper: 29e6d42aece7cef0a3cde93cc60c493b0a524139 + RNScanbotSDK: 59192544ae121c082f778b3ef25c5676aa3b6f88 + RNScreens: c5c07a86e4088ce92f0d3854082250dfa9c61f75 + RNShare: aa3b7160f47183e85bbea2b14d4caf55699cb627 + ScanbotSDK: 11246bc7e6e33e69f037d84052363fa415f33ae7 + ScanbotSDKNativeWrapper: a5b7564ac914634222a388a3e607b674cad065e0 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 7fb3f48a328f20ea5d5eecd862e91798bd76b255 diff --git a/package.json b/package.json index eefc0ed..3cba74a 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "react-native-fs": "2.20.0", "react-native-image-picker": "^8.2.0", "react-native-safe-area-context": "^5.4.0", - "react-native-scanbot-sdk": "7.1.1", - "react-native-screens": "^4.10.0", + "react-native-scanbot-sdk": "8.0.0-beta.1", + "react-native-screens": "~4.10.0", "react-native-share": "^12.0.3" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 52d0459..0bc1923 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,24 +5,14 @@ __metadata: version: 6 cacheKey: 8 -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.24 - checksum: d3ad7b89d973df059c4e8e6d7c972cbeb1bb2f18f002a3bd04ae0707da214cb06cc06929b65aa2313b9347463df2914772298bae8b1d7973f246bb3f2ab3e8f0 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/code-frame@npm:7.28.6" dependencies: - "@babel/helper-validator-identifier": ^7.27.1 + "@babel/helper-validator-identifier": ^7.28.5 js-tokens: ^4.0.0 picocolors: ^1.1.1 - checksum: 5874edc5d37406c4a0bb14cf79c8e51ad412fb0423d176775ac14fc0259831be1bf95bdda9c2aa651126990505e09a9f0ed85deaa99893bc316d2682c5115bdc + checksum: 6e98e47fd324b41c1919ff6d0fbf6fa5e991e5beff6b55803d9adaff9e11f4bc432803e52165f7b0d49af0f718209c3138a9b2fd51ff624b19d47704f11f8287 languageName: node linkType: hard @@ -35,39 +25,39 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/compat-data@npm:7.28.0" - checksum: 37a40d4ea10a32783bc24c4ad374200f5db864c8dfa42f82e76f02b8e84e4c65e6a017fc014d165b08833f89333dff4cb635fce30f03c333ea3525ea7e20f0a2 +"@babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/compat-data@npm:7.28.6" + checksum: 599b316aa0e3981aa9165ac34609ef5f29ebf5cecc04784e8b4932dd355aaa3599eaa222ff46a2fcfff52f083b8fd212650a52d8af57c4c217c81a100fefba09 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": - version: 7.28.3 - resolution: "@babel/core@npm:7.28.3" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.27.1 - "@babel/generator": ^7.28.3 - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-module-transforms": ^7.28.3 - "@babel/helpers": ^7.28.3 - "@babel/parser": ^7.28.3 - "@babel/template": ^7.27.2 - "@babel/traverse": ^7.28.3 - "@babel/types": ^7.28.2 + version: 7.28.6 + resolution: "@babel/core@npm:7.28.6" + dependencies: + "@babel/code-frame": ^7.28.6 + "@babel/generator": ^7.28.6 + "@babel/helper-compilation-targets": ^7.28.6 + "@babel/helper-module-transforms": ^7.28.6 + "@babel/helpers": ^7.28.6 + "@babel/parser": ^7.28.6 + "@babel/template": ^7.28.6 + "@babel/traverse": ^7.28.6 + "@babel/types": ^7.28.6 + "@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 - checksum: d09132cd752730d219bdd29dbd65cb647151105bef6e615cfb6d57249f71a3d1aaf8a5beaa1c7ec54ad927962e4913ebc660f7f0c3e65c39bc171bc386285e50 + checksum: 09d3712c52b2dba76dc0394127f6aacdbb575d79f8b6dc41230c1a13d8047d259ba06d88d56d62d95bb06c94c025c1e4bdd896929b5d4644ce0b96a84fd91553 languageName: node linkType: hard "@babel/eslint-parser@npm:^7.25.1": - version: 7.28.0 - resolution: "@babel/eslint-parser@npm:7.28.0" + version: 7.28.6 + resolution: "@babel/eslint-parser@npm:7.28.6" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 eslint-visitor-keys: ^2.1.0 @@ -75,20 +65,20 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: ccfc4b9b9fdca2b8df95da3827b70231e9588a71447ff7b2de76c4f36710e4e0a7dc5e2e98623f398a737c2429c46500cb11d4ccdfeb98271e067d0bf0eec9b5 + checksum: 6d789f16842c6f47a6a15f8159ef822e4bf75e8d15f85be2a813098ca4ba49703590ff2cdd56c78cc8816f5779b687cd6245ada4049c25e923e8e40132ace501 languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.3, @babel/generator@npm:^7.7.2": - version: 7.28.3 - resolution: "@babel/generator@npm:7.28.3" +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.28.6, @babel/generator@npm:^7.7.2": + version: 7.28.6 + resolution: "@babel/generator@npm:7.28.6" dependencies: - "@babel/parser": ^7.28.3 - "@babel/types": ^7.28.2 + "@babel/parser": ^7.28.6 + "@babel/types": ^7.28.6 "@jridgewell/gen-mapping": ^0.3.12 "@jridgewell/trace-mapping": ^0.3.28 jsesc: ^3.0.2 - checksum: e2202bf2b9c8a94f7e7a0a049fda0ee037d055c46922e85afa3bbc53309113f859b8193894f991045d7865226028b8f4f06152ed315ab414451932016dba5e42 + checksum: 74f62f140e301c8c21652f7db3bc275008708272c0395f178ba6953297af50c4ea484874a44b3f292d242ce8a977fd3f31d9d3a3501c3aaca9cd46e3b1cded01 languageName: node linkType: hard @@ -101,46 +91,46 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/helper-compilation-targets@npm:7.27.2" +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: - "@babel/compat-data": ^7.27.2 + "@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 - checksum: 7b95328237de85d7af1dea010a4daa28e79f961dda48b652860d5893ce9b136fc8b9ea1f126d8e0a24963b09ba5c6631dcb907b4ce109b04452d34a6ae979807 + checksum: 8151e36b74eb1c5e414fe945c189436421f7bfa011884de5be3dd7fd77f12f1f733ff7c982581dfa0a49d8af724450243c2409427114b4a6cfeb8333259d001c languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" +"@babel/helper-create-class-features-plugin@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-member-expression-to-functions": ^7.27.1 + "@babel/helper-member-expression-to-functions": ^7.28.5 "@babel/helper-optimise-call-expression": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 + "@babel/helper-replace-supers": ^7.28.6 "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/traverse": ^7.28.6 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 6d918e5e9c88ad1a262ab7b1a3caede1bbf95f8276c96846d8b0c1af251c85a0c868a9f1bbbaebdeb199e44dfd0e10fbe22935e56bedd1aa41ba4a7162bfa86c + checksum: f886ab302a83f8e410384aa635806b22374897fd9e3387c737ab9d91d1214bf9f7e57ae92619bd25dea63c9c0a49b25b44eb807873332e0eb9549219adc73639 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1, @babel/helper-create-regexp-features-plugin@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.28.5" dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - regexpu-core: ^6.2.0 + "@babel/helper-annotate-as-pure": ^7.27.3 + regexpu-core: ^6.3.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2ede6bbad0016a9262fd281ce8f1a5d69e6179dcec4ea282830e924c29a29b66b0544ecb92e4ef4acdaf2c4c990931d7dc442dbcd6a8bcec4bad73923ef70934 + checksum: de202103e6ff8cd8da0d62eb269fcceb29857f3fa16173f0ff38188fd514e9ad4901aef1d590ff8ba25381644b42eaf70ad9ba91fda59fe7aa6a5e694cdde267 languageName: node linkType: hard @@ -166,36 +156,36 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" +"@babel/helper-member-expression-to-functions@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: - "@babel/traverse": ^7.27.1 - "@babel/types": ^7.27.1 - checksum: b13a3d120015a6fd2f6e6c2ff789cd12498745ef028710cba612cfb751b91ace700c3f96c1689228d1dcb41e9d4cf83d6dff8627dcb0c8da12d79440e783c6b8 + "@babel/traverse": ^7.28.5 + "@babel/types": ^7.28.5 + checksum: 447d385233bae2eea713df1785f819b5a5ca272950740da123c42d23f491045120f0fbbb5609c091f7a9bbd40f289a442846dde0cb1bf0c59440fa093690cf7c languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-imports@npm:7.27.1" +"@babel/helper-module-imports@npm:^7.27.1, @babel/helper-module-imports@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: - "@babel/traverse": ^7.27.1 - "@babel/types": ^7.27.1 - checksum: 92d01c71c0e4aacdc2babce418a9a1a27a8f7d770a210ffa0f3933f321befab18b655bc1241bebc40767516731de0b85639140c42e45a8210abe1e792f115b28 + "@babel/traverse": ^7.28.6 + "@babel/types": ^7.28.6 + checksum: 437513aa029898b588a38f7991d7656c539b22f595207d85d0c407240c9e3f2aff8b9d0d7115fdedc91e7fdce4465100549a052024e2fba6a810bcbb7584296b languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3, @babel/helper-module-transforms@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: - "@babel/helper-module-imports": ^7.27.1 - "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/helper-module-imports": ^7.28.6 + "@babel/helper-validator-identifier": ^7.28.5 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 7cf7b79da0fa626d6c84bfc7b35c079a2559caecaa2ff645b0f1db0d741507aa4df6b5b98a3283e8ac4e89094af271d805bf5701e5c4f916e622797b7c8cbb18 + checksum: 522f7d1d08b5e2ccd4ec912aca879bd1506af78d1fb30f46e3e6b4bb69c6ae6ab4e379a879723844230d27dc6d04a55b03f5215cd3141b7a2b40bb4a02f71a9f languageName: node linkType: hard @@ -208,10 +198,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 5d715055301badab62bdb2336075a77f8dc8bd290cad2bc1b37ea3bf1b3efc40594d308082229f239deb4d6b5b80b0a73bce000e595ea74416e0339c11037047 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.28.6 + resolution: "@babel/helper-plugin-utils@npm:7.28.6" + checksum: a0b4caab5e2180b215faa4d141ceac9e82fad9d446b8023eaeb8d82a6e62024726675b07fe8e616dd12f34e2bb59747e8d57aa8adab3e0717d1b8d691b118379 languageName: node linkType: hard @@ -228,16 +218,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-replace-supers@npm:7.27.1" +"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: - "@babel/helper-member-expression-to-functions": ^7.27.1 + "@babel/helper-member-expression-to-functions": ^7.28.5 "@babel/helper-optimise-call-expression": ^7.27.1 - "@babel/traverse": ^7.27.1 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 3690266c304f21008690ba68062f889a363583cabc13c3d033b94513953147af3e0a3fdb48fa1bb9fa3734b64e221fc65e5222ab70837f02321b7225f487c6ef + checksum: aa6530a52010883b6be88465e3b9e789509786a40203650a23a51c315f7442b196e5925fb8e2d66d1e3dc2c604cdc817bd8c5c170dbb322ab5ebc7486fd8a022 languageName: node linkType: hard @@ -258,10 +248,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-identifier@npm:7.27.1" - checksum: 3c7e8391e59d6c85baeefe9afb86432f2ab821c6232b00ea9082a51d3e7e95a2f3fb083d74dc1f49ac82cf238e1d2295dafcb001f7b0fab479f3f56af5eaaa47 +"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 5a251a6848e9712aea0338f659a1a3bd334d26219d5511164544ca8ec20774f098c3a6661e9da65a0d085c745c00bb62c8fada38a62f08fa1f8053bc0aeb57e4 languageName: node linkType: hard @@ -273,23 +263,23 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-wrap-function@npm:7.28.3" + version: 7.28.6 + resolution: "@babel/helper-wrap-function@npm:7.28.6" dependencies: - "@babel/template": ^7.27.2 - "@babel/traverse": ^7.28.3 - "@babel/types": ^7.28.2 - checksum: 0ebdfdc918fdd0c1cf6ff15ba4c664974d0cdf21a017af560d58b00c379df3bf2e55f13a44fe3225668bca169da174f6cb97a96c4e987fb728fdb8f9a39db302 + "@babel/template": ^7.28.6 + "@babel/traverse": ^7.28.6 + "@babel/types": ^7.28.6 + checksum: 1281f45d55ff291711de7cf05b8132fc28b8d2b30c6c9cf8fce68669bbe318503ed485057d434efa1a4f91ab55d62bf8f3ecb0a889a9f81d357ad4614cd0fa6c languageName: node linkType: hard -"@babel/helpers@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helpers@npm:7.28.3" +"@babel/helpers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helpers@npm:7.28.6" dependencies: - "@babel/template": ^7.27.2 - "@babel/types": ^7.28.2 - checksum: 16c7f259dbd23834740ebc1c7e5a32d9424615eacd324ee067b585ab40eaafab37e2e50f50c84183a7e7a31251dc5a65a2ec4f8395f049001bbe6e14d0d3e9d4 + "@babel/template": ^7.28.6 + "@babel/types": ^7.28.6 + checksum: 4f3d555ec20dde40a2fcb244c86bfd9ec007b57ec9b30a9d04334c1ea2c1670bb82c151024124e1ab27ccf0b1f5ad30167633457a7c9ffbf4064fad2643f12fc languageName: node linkType: hard @@ -305,26 +295,26 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/parser@npm:7.28.3" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/parser@npm:7.28.6" dependencies: - "@babel/types": ^7.28.2 + "@babel/types": ^7.28.6 bin: parser: ./bin/babel-parser.js - checksum: 5aa5ea0683a4056f98cd9cd61650870d5d44ec1654da14f72a8a06fabe7b2a35bf6cef9605f3740b5ded1e68f64ec45ce1aabf7691047a13a1ff2babe126acf9 + checksum: 2a35319792ceef9bc918f0ff854449bef0120707798fe147ef988b0606de226e2fbc3a562ba687148bfe5336c6c67358fb27e71a94e425b28482dcaf0b172fd6 languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.27.1 + "@babel/traverse": ^7.28.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: 72f24b9487e445fa61cf8be552aad394a648c2bb445c38d39d1df003186d9685b87dd8d388c950f438ea0ca44c82099d9c49252fb681c719cc72edf02bbe0304 + checksum: 749b40a963d5633f554cad0336245cb6c1c1393c70a3fddcf302d86a1a42b35efdd2ed62056b88db66f3900887ae1cee9a3eeec89799c22e0cf65059f0dfd142 languageName: node linkType: hard @@ -363,15 +353,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: c810e5d36030df6861ced35f0adbda7b4b41ac3e984422b32bee906564fd49374435f0a7a1a42eb0a9e6a5170c255f0ab31c163d5fc51fa5a816aa0420311029 + checksum: f1341f829f809c8685d839669953a478f8a40d1d53f4f5e1972bf39ff4e1ece148319340292d6e0c3641157268b435cbb99b3ac2f3cefe9fca9e81b8f62d6d71 languageName: node linkType: hard @@ -451,46 +441,46 @@ __metadata: linkType: hard "@babel/plugin-syntax-export-default-from@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d9a6a9c51f644a5ed139dbe1e8cf5a38c9b390af27ad2fc6f0eba579ac543b039efff34200744bfc8523132c06aa6de921238bd2088948bb4dce4571cea43438 + checksum: 06330b90a4baf9edafe8a4e2e6520d548f83e178c1e832c1ad5018532052996331aedc8c3b4e6b0e51acaef75abe76e25ad3465d3d914658d65acec6908f202a languageName: node linkType: hard "@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-flow@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-syntax-flow@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 + checksum: 3dfe5d8168e400376e16937c92648142771b9ba0d9937b04ccdaacd06bf9d854170021b466106d4aa39ba6062b8b5b9b53efddae2c64ca133d4d6fafaa472909 languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" +"@babel/plugin-syntax-import-assertions@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 + checksum: 25017235e1e2c4ed892aa327a3fa10f4209cc618c6dd7806fc40c07d8d7d24a39743d3d5568b8d1c8f416cffe03c174e78874ded513c9338b07a7ab1dcbab050 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 97973982fff1bbf86b3d1df13380567042887c50e2ae13a400d02a8ff2c9742a60a75e279bfb73019e1cd9710f04be5e6ab81f896e6678dcfcec8b135e8896cf + checksum: 6c8c6a5988dbb9799d6027360d1a5ba64faabf551f2ef11ba4eade0c62253b5c85d44ddc8eb643c74b9acb2bcaa664a950bd5de9a5d4aef291c4f2a48223bb4b languageName: node linkType: hard @@ -516,14 +506,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" +"@babel/plugin-syntax-jsx@npm:^7.28.6, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.28.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a + checksum: 572e38f5c1bb4b8124300e7e3dd13e82ae84a21f90d3f0786c98cd05e63c78ca1f32d1cfe462dfbaf5e7d5102fa7cd8fd741dfe4f3afc2e01a3b2877dcc8c866 languageName: node linkType: hard @@ -615,14 +605,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" +"@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 + checksum: 5c55f9c63bd36cf3d7e8db892294c8f85000f9c1526c3a1cc310d47d1e174f5c6f6605e5cc902c4636d885faba7a9f3d5e5edc6b35e4f3b1fd4c2d58d0304fa5 languageName: node linkType: hard @@ -649,29 +639,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-remap-async-to-generator": ^7.27.1 - "@babel/traverse": ^7.28.0 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 174aaccd7a8386fd7f32240c3f65a93cf60dcc5f6a2123cfbff44c0d22b424cd41de3a0c6d136b6a2fa60a8ca01550c261677284cb18a0daeab70730b2265f1d + checksum: 0c9e362039c7b0d6620845021b8f576908063a4bfd5857feba59d6097204d405c693d9a6f21b6f5cd846a2722cabd898a1e680dc976abc3e0c4b6edae623854e languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" +"@babel/plugin-transform-async-to-generator@npm:^7.24.7, @babel/plugin-transform-async-to-generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" dependencies: - "@babel/helper-module-imports": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-module-imports": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-remap-async-to-generator": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 + checksum: bca5774263ec01dd2bf71c74bbaf7baa183bf03576636b7826c3346be70c8c8cb15cff549112f2983c36885131a0afde6c443591278c281f733ee17f455aa9b1 languageName: node linkType: hard @@ -686,90 +676,90 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.0" +"@babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6d740f9a386e5fbdffd9e7c5a8400bff8d54068241a78b8e71aba6f1f46eff0c4297902f5f1543bee1ed076ec88d0dc4ceed19e98a466802c14d3c20f178f712 + checksum: cb4f71ac4fc7b32c2e3cc167eb9e7a1a11562127d702e3b5093567750e9a4eb11a29ae5a917f62741bf9d5792bfe3022cbcdcc7bb927ddb6f627b6749a38c118 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" +"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-class-features-plugin": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 + checksum: 200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" +"@babel/plugin-transform-class-static-block@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.28.3 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-class-features-plugin": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.12.0 - checksum: 9b2feaacbf29637ab35a3aae1df35a1129adec5400a1767443739557fb0d3bf8278bf0ec90aacf43dec9a7dd91428d01375020b70528713e1bc36a72776a104c + checksum: 3db326156f73a0c0d1e2ea4d73e082b9ace2f6a9c965db1c2e51f3a186751b8b91bafb184d05e046bf970b50ecfde1f74862dd895f9a5ea0fad328369d74cfc4 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-classes@npm:7.28.3" +"@babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-classes@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-compilation-targets": ^7.28.6 "@babel/helper-globals": ^7.28.0 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/helper-replace-supers": ^7.28.6 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7c0246bbf90d823fc6e9367ee15e1dd840a5c68ef477f58c12d655508096b759c6d3a4aeff44a816716f4611603ab529e770a815445f76b66de2ae9f0824c012 + checksum: bddeefbfd1966272e5da6a0844d68369a0f43c286816c8b379dfd576cf835b8bc652089ef337b0334ff3ae6c9652d56d8332b78a7d29176534265c39856e4822 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" +"@babel/plugin-transform-computed-properties@npm:^7.24.7, @babel/plugin-transform-computed-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/template": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/template": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 48bd20f7d631b08c51155751bf75b698d4a22cca36f41c22921ab92e53039c9ec5c3544e5282e18692325ef85d2e4a18c27e12c62b5e20c26fb0c92447e35224 + checksum: fd1fcc55003a2584c7461bf214ae9e9fce370ad09339319e99e29e5e55a8a3bd485d10805b3d69636a738208761b3a5b0dafdd023534396be45a36409082b014 languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.28.0" +"@babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.28.0 + "@babel/traverse": ^7.28.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5b464d6a03c6eaa1327b60ffc1630ca977db0256938b34e281e65c81c965680e930a6bac043272942d6d4bbd7d1eddded0b7231779429ba51275e092e7367859 + checksum: 74a06e55e715cfda0fdd8be53d2655d64dfdc28dffaede329d42548fd5b1449ad26a4ce43a24c3fd277b96f8b2010c7b3915afa8297911cda740cc5cc3a81f38 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" +"@babel/plugin-transform-dotall-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-regexp-features-plugin": ^7.28.5 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c + checksum: 866ffbbdee77fa955063b37c75593db8dbbe46b1ebb64cc788ea437e3a9aa41cb7b9afcee617c678a32b6705baa0892ec8e5d4b8af3bbb0ab1b254514ccdbd37 languageName: node linkType: hard @@ -784,15 +774,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-regexp-features-plugin": ^7.28.5 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 + checksum: 3f2e2b85199adfdc3297983412c2ecdacc0004bc5ac3263d29909219b8c5afa2ca49e3b6efc11ce67034d5780eef27882a94873444cf27d841d7fa7f01d7dcff languageName: node linkType: hard @@ -807,26 +797,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/plugin-transform-destructuring": ^7.28.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a44140097ed4854883c426613f4e8763237cd0fdab1c780514f4315f6c148d6b528d7a57fe6fdec4dbce28a21b70393ef3507b72dfec2e30bfc8d7db1ff19474 + checksum: be65403694d360793b1b626ac0dfa7c120cfe4dd1c95a81a30b6e7426dc317643e60a486d642e318a4d3d9a7193e72fdb36e2ec140c25c773dcb9c3b1e2854ef languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ff4a0f30babc457a5ae8564deda209599627c2ce647284a0e8e66f65b44f6d968cf77761a4cc31b45b61693f0810479248c79e681681d8ccb39d0c52944c1fd + checksum: b232152499370435c7cd4bf3321f58e189150e35ca3722ea16533d33434b97294df1342f5499671ec48e62b71c34cdea0ca8cf317ad12594a10f6fc670315e62 languageName: node linkType: hard @@ -878,14 +868,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" +"@babel/plugin-transform-json-strings@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f + checksum: 69d82a1a0a72ed6e6f7969e09cf330516599d79b2b4e680e9dd3c57616a8c6af049b5103456e370ab56642815e80e46ed88bb81e9e059304a85c5fe0bf137c29 languageName: node linkType: hard @@ -900,14 +890,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7, @babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2757955d81d65cc4701c17b83720745f6858f7a1d1d58117e379c204f47adbeb066b778596b6168bdbf4a22c229aab595d79a9abc261d0c6bfd62d4419466e73 + checksum: 36095d5d1cfc680e95298b5389a16016da800ae3379b130dabf557e94652c47b06610407e9fa44aaa03e9b0a5aa7b4b93348123985d44a45e369bf5f3497d149 languageName: node linkType: hard @@ -934,29 +924,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" +"@babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-module-transforms": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bc45c1beff9b145c982bd6a614af338893d38bce18a9df7d658c9084e0d8114b286dcd0e015132ae7b15dd966153cb13321e4800df9766d0ddd892d22bf09d2a + checksum: b48cab26fda72894c7002a9c783befbc8a643d827c52bdcc5adf83e418ca93224a15aaf7ed2d1e6284627be55913696cfa2119242686cfa77a473bf79314df26 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" +"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" dependencies: - "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-module-transforms": ^7.28.3 "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.27.1 + "@babel/helper-validator-identifier": ^7.28.5 + "@babel/traverse": ^7.28.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7c17a8973676c18525d87f277944616596f1b154cc2b9263bfd78ecdbf5f4288ec46c7f58017321ca3e3d6dfeb96875467b95311a39719b475d42a157525d87f + checksum: 646748dcf968c107fedfbff38aa37f7a9ebf2ccdf51fd9f578c6cd323371db36bbc5fe0d995544db168f39be9bca32a85fbf3bfff4742d2bed22e21c2847fa46 languageName: node linkType: hard @@ -995,40 +985,40 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1c6b3730748782d2178cc30f5cc37be7d7666148260f3f2dfc43999908bdd319bdfebaaf19cf04ac1f9dee0f7081093d3fa730cda5ae1b34bcd73ce406a78be7 + checksum: 1cdd3ca48a8fffa13dbb9949748d3dd2183cf24110cd55d702da4549205611fc12978b49886be809ec1929ff6304ac4eecc747a33dca2484f9dc655928ab5a89 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" +"@babel/plugin-transform-numeric-separator@npm:^7.24.7, @babel/plugin-transform-numeric-separator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca + checksum: 4b5ca60e481e22f0842761a3badca17376a230b5a7e5482338604eb95836c2d0c9c9bde53bdc5c2de1c6a12ae6c12de7464d098bf74b0943f85905ca358f0b68 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.0" +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" dependencies: - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 + "@babel/helper-compilation-targets": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/plugin-transform-destructuring": ^7.28.5 "@babel/plugin-transform-parameters": ^7.27.7 - "@babel/traverse": ^7.28.0 + "@babel/traverse": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7c32c988b4b040d0091d0210b6b946249571858b2f33f3a5105f41c28ee0b8440a9dfb2aa46f3ae0d3014f86ddf16aee9a0cbf4229daf8e013235352b8f31fc9 + checksum: ab85b1321f86db91aba22ad9d8e6ab65448c983214998012229f5302468527d27b908ad6b14755991c317e35d2f54ec8459a2a094a755999651fe0ac9bd2e9a6 languageName: node linkType: hard @@ -1044,26 +1034,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7, @babel/plugin-transform-optional-catch-binding@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 + checksum: ee24a17defec056eb9ef01824d7e4a1f65d531af6b4b79acfd0bcb95ce0b47926e80c61897f36f8c01ce733b069c9acdb1c9ce5ec07a729d0dbf9e8d859fe992 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" +"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c4428d31f182d724db6f10575669aad3dbccceb0dea26aa9071fa89f11b3456278da3097fcc78937639a13c105a82cd452dc0218ce51abdbcf7626a013b928a5 + checksum: a40dbe709671a436bb69e14524805e10af81b44c422e4fc5dc905cb91adb92d650c9d266c3c2c0da0d410dea89ce784995d4118b7ab6a7544f4923e61590b386 languageName: node linkType: hard @@ -1078,28 +1068,28 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" +"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-methods@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-class-features-plugin": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 + checksum: b80179b28f6a165674d0b0d6c6349b13a01dd282b18f56933423c0a33c23fc0626c8f011f859fc20737d021fe966eb8474a5233e4596401482e9ee7fb00e2aa2 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7, @babel/plugin-transform-private-property-in-object@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-annotate-as-pure": ^7.27.3 + "@babel/helper-create-class-features-plugin": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: af539af1bd423aa46b9da83d649be716494ca80783841f47094b6741fa24e11141446027fd152ddff791dede9d4a76d0d5eb467402a2e584d7f5ea90e2673c7e + checksum: 32a935e44872e90607851be5bc2cd3365f29c0e0e3853ef3e2b6a7da4d08c647379bf2f2dc4f14a9064d7d72e2cf75da85e55baeeec1ffc25cf6088fe24422f7 languageName: node linkType: hard @@ -1148,40 +1138,40 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.25.2": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-module-imports": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-syntax-jsx": ^7.27.1 - "@babel/types": ^7.27.1 + "@babel/helper-annotate-as-pure": ^7.27.3 + "@babel/helper-module-imports": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 + "@babel/plugin-syntax-jsx": ^7.28.6 + "@babel/types": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 960d36e5d11ba68e4fbf1e2b935c153cb6ea7b0004f838aaee8baf7de30462b8f0562743a39ce3c370cc70b8f79d3c549104a415a615b2b0055b71fd025df0f3 + checksum: e7d093b5ed6c06563e801d44d1212b451445d7600756efd7b8b8e6db4585c27fa8145176dcb3350968c59381af6c566dae9b6dc97ec15d2837493b238904d1c2 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.3" +"@babel/plugin-transform-regenerator@npm:^7.24.7, @babel/plugin-transform-regenerator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8582e311dadae14ef9b37d02c84e8966efe8f96f8a50c2100812c366cbab7b5088939cfe714709cb8d5638f79e577c9ab8c9d1a57d159afa6e048d049400dd0 + checksum: 1c1e3149a14e2cb695483f69f4ec18d1b820b23fe3b766a1e2efdbc2af0ed8acea6ea9438e8bc1496aab51e598a824428cec28431f1c1ea21d9599b46bf4aa24 languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" +"@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-regexp-features-plugin": ^7.28.5 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 + checksum: 5aacc570034c085afa0165137bb9a04cd4299b86eb9092933a96dcc1132c8f591d9d534419988f5f762b2f70d43a3c719a6b8fa05fdd3b2b1820d01cf85500da languageName: node linkType: hard @@ -1197,8 +1187,8 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.24.7": - version: 7.28.3 - resolution: "@babel/plugin-transform-runtime@npm:7.28.3" + version: 7.28.5 + resolution: "@babel/plugin-transform-runtime@npm:7.28.5" dependencies: "@babel/helper-module-imports": ^7.27.1 "@babel/helper-plugin-utils": ^7.27.1 @@ -1208,7 +1198,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 63d2fc05d5bfcb96f31be54b095d72a89f0a03c8de10f5d742b18b174e2731bcdc27292e8deec66c2e88cebf8298393123d5e767526f6fffbc75cb8144ef66c6 + checksum: 5bb66f366c5bb22d0c890667ecd0f1fde9db86ac04df62b21fc2bbf58531eb84068bb0bf38fb1c496c8f78a917c59a884f6c1f8b205b8689d155e72fcf1d442d languageName: node linkType: hard @@ -1223,15 +1213,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-spread@npm:7.27.1" +"@babel/plugin-transform-spread@npm:^7.24.7, @babel/plugin-transform-spread@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-spread@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 58b08085ee9c29955ac3b68d61c1a79728d44d19a69cb5eb669794aeaf54c57c6647af7b979c1297e81ede3d08b3ddcb1936ef39a533f28ff3e399a9be54dab1 + checksum: e4782578904df68f7d2b3e865f20701c71d6aba0027c4794c1dc08a2f805a12892a078dab483714552398a689ad4ff6786cdf4e088b073452aee7db67e37a09c languageName: node linkType: hard @@ -1269,17 +1259,17 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.25.2": - version: 7.28.0 - resolution: "@babel/plugin-transform-typescript@npm:7.28.0" + version: 7.28.6 + resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-class-features-plugin": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - "@babel/plugin-syntax-typescript": ^7.27.1 + "@babel/plugin-syntax-typescript": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 14c1024bcd57fcd469d90cf0c15c3cd4e771e2eb2cd9afee3aa79b59c8ed103654f7c5c71cdb3bfe31c1d0cb08bfad8c80f5aa1d24b4b454bd21301d5925533d + checksum: 029add39a37e4a1960a43c3a109680462f631bc63cc8457ea65add2cce3271c9fd4d6a1782177c65ea5f77731e2f8e2bc65a9aec9cc826346ba540ecd0b97e5a languageName: node linkType: hard @@ -1294,15 +1284,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-regexp-features-plugin": ^7.28.5 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d + checksum: d14e8c51aa73f592575c1543400fd67d96df6410d75c9dc10dd640fd7eecb37366a2f2368bbdd7529842532eda4af181c921bda95146c6d373c64ea59c6e9991 languageName: node linkType: hard @@ -1318,86 +1308,86 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-create-regexp-features-plugin": ^7.28.5 + "@babel/helper-plugin-utils": ^7.28.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f + checksum: 423971fe2eef9d18782b1c30f5f42613ee510e5b9c08760c5538a0997b36c34495acce261e0e37a27831f81330359230bd1f33c2e1822de70241002b45b7d68e languageName: node linkType: hard "@babel/preset-env@npm:^7.25.3": - version: 7.28.3 - resolution: "@babel/preset-env@npm:7.28.3" + version: 7.28.6 + resolution: "@babel/preset-env@npm:7.28.6" dependencies: - "@babel/compat-data": ^7.28.0 - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 + "@babel/compat-data": ^7.28.6 + "@babel/helper-compilation-targets": ^7.28.6 + "@babel/helper-plugin-utils": ^7.28.6 "@babel/helper-validator-option": ^7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.27.1 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.28.5 "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.27.1 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.27.1 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.27.1 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.28.3 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.28.6 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-import-assertions": ^7.27.1 - "@babel/plugin-syntax-import-attributes": ^7.27.1 + "@babel/plugin-syntax-import-assertions": ^7.28.6 + "@babel/plugin-syntax-import-attributes": ^7.28.6 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.27.1 - "@babel/plugin-transform-async-generator-functions": ^7.28.0 - "@babel/plugin-transform-async-to-generator": ^7.27.1 + "@babel/plugin-transform-async-generator-functions": ^7.28.6 + "@babel/plugin-transform-async-to-generator": ^7.28.6 "@babel/plugin-transform-block-scoped-functions": ^7.27.1 - "@babel/plugin-transform-block-scoping": ^7.28.0 - "@babel/plugin-transform-class-properties": ^7.27.1 - "@babel/plugin-transform-class-static-block": ^7.28.3 - "@babel/plugin-transform-classes": ^7.28.3 - "@babel/plugin-transform-computed-properties": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 - "@babel/plugin-transform-dotall-regex": ^7.27.1 + "@babel/plugin-transform-block-scoping": ^7.28.6 + "@babel/plugin-transform-class-properties": ^7.28.6 + "@babel/plugin-transform-class-static-block": ^7.28.6 + "@babel/plugin-transform-classes": ^7.28.6 + "@babel/plugin-transform-computed-properties": ^7.28.6 + "@babel/plugin-transform-destructuring": ^7.28.5 + "@babel/plugin-transform-dotall-regex": ^7.28.6 "@babel/plugin-transform-duplicate-keys": ^7.27.1 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.27.1 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.28.6 "@babel/plugin-transform-dynamic-import": ^7.27.1 - "@babel/plugin-transform-explicit-resource-management": ^7.28.0 - "@babel/plugin-transform-exponentiation-operator": ^7.27.1 + "@babel/plugin-transform-explicit-resource-management": ^7.28.6 + "@babel/plugin-transform-exponentiation-operator": ^7.28.6 "@babel/plugin-transform-export-namespace-from": ^7.27.1 "@babel/plugin-transform-for-of": ^7.27.1 "@babel/plugin-transform-function-name": ^7.27.1 - "@babel/plugin-transform-json-strings": ^7.27.1 + "@babel/plugin-transform-json-strings": ^7.28.6 "@babel/plugin-transform-literals": ^7.27.1 - "@babel/plugin-transform-logical-assignment-operators": ^7.27.1 + "@babel/plugin-transform-logical-assignment-operators": ^7.28.6 "@babel/plugin-transform-member-expression-literals": ^7.27.1 "@babel/plugin-transform-modules-amd": ^7.27.1 - "@babel/plugin-transform-modules-commonjs": ^7.27.1 - "@babel/plugin-transform-modules-systemjs": ^7.27.1 + "@babel/plugin-transform-modules-commonjs": ^7.28.6 + "@babel/plugin-transform-modules-systemjs": ^7.28.5 "@babel/plugin-transform-modules-umd": ^7.27.1 "@babel/plugin-transform-named-capturing-groups-regex": ^7.27.1 "@babel/plugin-transform-new-target": ^7.27.1 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.27.1 - "@babel/plugin-transform-numeric-separator": ^7.27.1 - "@babel/plugin-transform-object-rest-spread": ^7.28.0 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.28.6 + "@babel/plugin-transform-numeric-separator": ^7.28.6 + "@babel/plugin-transform-object-rest-spread": ^7.28.6 "@babel/plugin-transform-object-super": ^7.27.1 - "@babel/plugin-transform-optional-catch-binding": ^7.27.1 - "@babel/plugin-transform-optional-chaining": ^7.27.1 + "@babel/plugin-transform-optional-catch-binding": ^7.28.6 + "@babel/plugin-transform-optional-chaining": ^7.28.6 "@babel/plugin-transform-parameters": ^7.27.7 - "@babel/plugin-transform-private-methods": ^7.27.1 - "@babel/plugin-transform-private-property-in-object": ^7.27.1 + "@babel/plugin-transform-private-methods": ^7.28.6 + "@babel/plugin-transform-private-property-in-object": ^7.28.6 "@babel/plugin-transform-property-literals": ^7.27.1 - "@babel/plugin-transform-regenerator": ^7.28.3 - "@babel/plugin-transform-regexp-modifiers": ^7.27.1 + "@babel/plugin-transform-regenerator": ^7.28.6 + "@babel/plugin-transform-regexp-modifiers": ^7.28.6 "@babel/plugin-transform-reserved-words": ^7.27.1 "@babel/plugin-transform-shorthand-properties": ^7.27.1 - "@babel/plugin-transform-spread": ^7.27.1 + "@babel/plugin-transform-spread": ^7.28.6 "@babel/plugin-transform-sticky-regex": ^7.27.1 "@babel/plugin-transform-template-literals": ^7.27.1 "@babel/plugin-transform-typeof-symbol": ^7.27.1 "@babel/plugin-transform-unicode-escapes": ^7.27.1 - "@babel/plugin-transform-unicode-property-regex": ^7.27.1 + "@babel/plugin-transform-unicode-property-regex": ^7.28.6 "@babel/plugin-transform-unicode-regex": ^7.27.1 - "@babel/plugin-transform-unicode-sets-regex": ^7.27.1 + "@babel/plugin-transform-unicode-sets-regex": ^7.28.6 "@babel/preset-modules": 0.1.6-no-external-plugins babel-plugin-polyfill-corejs2: ^0.4.14 babel-plugin-polyfill-corejs3: ^0.13.0 @@ -1406,7 +1396,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c4e70f69b727d21eedd4de201ac082e951482f2d28a388e401e7937fd6f15bc1a49a63c12f59e87a18d237ac037a5b29d983f3bb82f1196d6444ae5b605ac6e2 + checksum: 097576541fd5db64acf1c6ae12c6d6eb12e75b099c8728898c99724a655c930071f00757734f011baac8d0681bf8096e22c6cbf4fd7b06fc662e5fbb8619fb4b languageName: node linkType: hard @@ -1423,53 +1413,46 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.25.0": - version: 7.28.3 - resolution: "@babel/runtime@npm:7.28.3" - checksum: dd22662b9e02b6e66cfb061d6f9730eb0aa3b3a390a7bd70fe9a64116d86a3704df6d54ab978cb4acc13b58dbf63a3d7dd4616b0b87030eb14a22835e0aa602d +"@babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.26.10": + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 42d8a868c2fc2e9a77927945a6daa7ec03c7ea49e611e0d15442933cdabb12f20e3a6849c729259076c10a4247adec229331d1f94c2d0073ea0979d7853e29fd languageName: node linkType: hard -"@babel/runtime@npm:^7.26.10": - version: 7.28.4 - resolution: "@babel/runtime@npm:7.28.4" - checksum: 934b0a0460f7d06637d93fcd1a44ac49adc33518d17253b5a0b55ff4cb90a45d8fe78bf034b448911dbec7aff2a90b918697559f78d21c99ff8dbadae9565b55 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": - version: 7.27.2 - resolution: "@babel/template@npm:7.27.2" +"@babel/template@npm:^7.25.0, @babel/template@npm:^7.28.6, @babel/template@npm:^7.3.3": + version: 7.28.6 + resolution: "@babel/template@npm:7.28.6" dependencies: - "@babel/code-frame": ^7.27.1 - "@babel/parser": ^7.27.2 - "@babel/types": ^7.27.1 - checksum: ff5628bc066060624afd970616090e5bba91c6240c2e4b458d13267a523572cbfcbf549391eec8217b94b064cf96571c6273f0c04b28a8567b96edc675c28e27 + "@babel/code-frame": ^7.28.6 + "@babel/parser": ^7.28.6 + "@babel/types": ^7.28.6 + checksum: 8ab6383053e226025d9491a6e795293f2140482d14f60c1244bece6bf53610ed1e251d5e164de66adab765629881c7d9416e1e540c716541d2fd0f8f36a013d7 languageName: node linkType: hard -"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/traverse@npm:7.28.3" +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/traverse@npm:7.28.6" dependencies: - "@babel/code-frame": ^7.27.1 - "@babel/generator": ^7.28.3 + "@babel/code-frame": ^7.28.6 + "@babel/generator": ^7.28.6 "@babel/helper-globals": ^7.28.0 - "@babel/parser": ^7.28.3 - "@babel/template": ^7.27.2 - "@babel/types": ^7.28.2 + "@babel/parser": ^7.28.6 + "@babel/template": ^7.28.6 + "@babel/types": ^7.28.6 debug: ^4.3.1 - checksum: 5f5ce477adc99ebdd6e8c9b7ba2e0a162bef39a1d3c5860c730c1674e57f9cb057c7e3dfdd652ce890bd79331a70f6cd310902414697787578e68167d52d96e7 + checksum: 07bc23b720d111a20382fcdba776b800a7c1f94e35f8e4f417869f6769ba67c2b9573c8240924ca3b0ee5a88fa7ed048efb289e8b324f5cb4971e771174a0d32 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.28.2 - resolution: "@babel/types@npm:7.28.2" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.28.6 + resolution: "@babel/types@npm:7.28.6" dependencies: "@babel/helper-string-parser": ^7.27.1 - "@babel/helper-validator-identifier": ^7.27.1 - checksum: 2218f0996d5fbadc4e3428c4c38f4ed403f0e2634e3089beba2c89783268c0c1d796a23e65f9f1ff8547b9061ae1a67691c76dc27d0b457e5fa9f2dd4e022e49 + "@babel/helper-validator-identifier": ^7.28.5 + checksum: f76556cda59be337cc10dc68b2a9a947c10de018998bab41076e7b7e4489b28dd53299f98f22eec0774264c989515e6fdc56de91c73e3aa396367bb953200a6a languageName: node linkType: hard @@ -1481,20 +1464,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.7.0 - resolution: "@eslint-community/eslint-utils@npm:4.7.0" + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: b177e3b75c0b8d0e5d71f1c532edb7e40b31313db61f0c879f9bf19c3abb2783c6c372b5deb2396dab4432f2946b9972122ac682e77010376c029dfd0149c681 + checksum: 0a27c2d676c4be6b329ebb5dd8f6c5ef5fae9a019ff575655306d72874bb26f3ab20e0b241a5f086464bb1f2511ca26a29ff6f80c1e2b0b02eca4686b4dfe1b5 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 languageName: node linkType: hard @@ -1621,6 +1604,22 @@ __metadata: languageName: node linkType: hard +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 102fbc6d2c0d5edf8f6dbf2b3feb21695a21bc850f11bc47c4f06aa83bd8884fde3fe9d6d797d619901d96865fdcb4569ac2a54c937992c48885c5e3d9967fe8 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": ^4.0.1 + checksum: d7a3b8b0ddbf0ccd8eeb1300e29dd0a0c02147e823d8138f248375a365682360620895c66d113e05ee02389318c654379b0e538b996345b83c914941786705b1 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -1933,6 +1932,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: 4a66a7397c3dc9c6b5c14a0024b1f98c5e1d90a0dbc1e5955b5038f2db339904df2a0ee8a66559fafb4fc23ff33700a2639fd40bbdd2e9e82b58b3bdf83738e3 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -1958,12 +1967,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": - version: 0.3.30 - resolution: "@jridgewell/trace-mapping@npm:0.3.30" + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: "@jridgewell/resolve-uri": ^3.1.0 "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 26edb94faf6f02df346e3657deff9df3f2f083195cbda62a6cf60204d548a0a6134454cbc3af8437392206a89dfb3e72782eaf78f49cbd8924400e55a6575e72 + checksum: af8fda2431348ad507fbddf8e25f5d08c79ecc94594061ce402cf41bc5aba1a7b3e59bf0fd70a619b35f33983a3f488ceeba8faf56bff784f98bb5394a8b7d47 languageName: node linkType: hard @@ -2003,25 +2012,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" dependencies: agent-base: ^7.1.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 + lru-cache: ^11.2.1 socks-proxy-agent: ^8.0.3 - checksum: e8fc25d536250ed3e669813b36e8c6d805628b472353c57afd8c4fde0fcfcf3dda4ffe22f7af8c9070812ec2e7a03fb41d7151547cef3508efe661a5a3add20f + checksum: 89ae20b44859ff8d4de56ade319d8ceaa267a0742d6f7345fe98aa5cd8614ced7db85ea4dc5bfbd6614dbb200a10b134e087143582534c939e8a02219e8665c8 languageName: node linkType: hard -"@npmcli/fs@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/fs@npm:4.0.0" +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" dependencies: semver: ^7.3.5 - checksum: 68951c589e9a4328698a35fd82fe71909a257d6f2ede0434d236fa55634f0fbcad9bb8755553ce5849bd25ee6f019f4d435921ac715c853582c4a7f5983c8d4a + checksum: 897dac32eb37e011800112d406b9ea2ebd96f1dab01bb8fbeb59191b86f6825dffed6a89f3b6c824753d10f8735b76d630927bd7610e9e123b129ef2e5f02cb5 languageName: node linkType: hard @@ -2211,12 +2220,12 @@ __metadata: linkType: hard "@react-native-documents/picker@npm:^10.1.2": - version: 10.1.5 - resolution: "@react-native-documents/picker@npm:10.1.5" + version: 10.1.7 + resolution: "@react-native-documents/picker@npm:10.1.7" peerDependencies: react: "*" react-native: "*" - checksum: d92f97bcfb67328d1b73668e5f1aff8cf572d4b4c3b590258a365131344427d424baceea7549482bc9fb8cadf019386929fca1386f3b515f3af35d5af6e00497 + checksum: 27844133276e14f4e9c92c34ee008af8101749233686121001f7b6ccbad76ca0afb33845a328b23011cb36c6e98921aa42c58fcf23d79b3751d62308e4a97ad6 languageName: node linkType: hard @@ -2664,11 +2673,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 24.3.0 - resolution: "@types/node@npm:24.3.0" + version: 25.0.9 + resolution: "@types/node@npm:25.0.9" dependencies: - undici-types: ~7.10.0 - checksum: 0f98e492032007d7be811b5598d24b6260f6ef3d21b6fe3b9ca61a1c88f70d5d94c33f361b0f2bd9a1f5963426584c7c2514e29ca69b0649f6b075e7abd551cb + undici-types: ~7.16.0 + checksum: 0dd245ed1823d32851007da980319af17f9794b0fe4b6b46093cee185e4c3ea033162238d2dc053b4474c1eeb534d47d2679a92907b5e7a27dac0938cb250c7a languageName: node linkType: hard @@ -2682,18 +2691,18 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^19.0.0": - version: 19.1.10 - resolution: "@types/react@npm:19.1.10" + version: 19.2.8 + resolution: "@types/react@npm:19.2.8" dependencies: - csstype: ^3.0.2 - checksum: 1d9c5edb5957e797ad59dc71f92f6faa1f8033007c037f9aeb01161366c92fa257a6ddb267ff33f7787c072c5d568b5f8593868d58f2858f7face6978cd18e00 + csstype: ^3.2.2 + checksum: 9cff78fd1e5856eaae867a432a7de5a8d2b6a672f7a3d39a716e3fcf1432bcf17e09886102095d48ddd1b3189b2120344bc0f6ca24b5cb74d8722edf4403dbd2 languageName: node linkType: hard "@types/semver@npm:^7.3.12": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: d488eaeddb23879a0a8a759bed667e1a76cb0dd4d23e3255538e24c189db387357953ca9e7a3bda2bb7f95e84cac8fe0db4fbe6b3456e893043337732d1d23cc + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 76d218e414482a398148d5c28f2bfa017108869f3fc18cda379c9d8d062348f8b9653ae2fa8642d3b5b52e211928fe8be34f22da4e1f08245c84e0e51e040673 languageName: node linkType: hard @@ -2712,20 +2721,20 @@ __metadata: linkType: hard "@types/yargs@npm:^15.0.0": - version: 15.0.19 - resolution: "@types/yargs@npm:15.0.19" + version: 15.0.20 + resolution: "@types/yargs@npm:15.0.20" dependencies: "@types/yargs-parser": "*" - checksum: 6a509db36304825674f4f00300323dce2b4d850e75819c3db87e9e9f213ac2c4c6ed3247a3e4eed6e8e45b3f191b133a356d3391dd694d9ea27a0507d914ef4c + checksum: 7e33bed59f7d44f32f6c0f6da07e8aa79605d725fcdd223febe45ccfa5254da3bc0f70242553021fd9491b637ae99ddee84e5dd05d1771a71986619a73cbf897 languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" dependencies: "@types/yargs-parser": "*" - checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 + checksum: ebf1f5373388cfcbf9cfb5e56ce7a77c0ba2450420f26f3701010ca92df48cce7e14e4245ed1f17178a38ff8702467a6f4047742775b8e2fd06dec8f4f3501ce languageName: node linkType: hard @@ -2918,16 +2927,16 @@ __metadata: linkType: hard "@vscode/sudo-prompt@npm:^9.0.0": - version: 9.3.1 - resolution: "@vscode/sudo-prompt@npm:9.3.1" - checksum: 07a6ce9ef2e4e2b369288b78344f7ef3db977d5f1576b944075c22aacb9cf830acfd5f773d1b0497610bec4f811d44793142234114e57763abc78ea2cef8940a + version: 9.3.2 + resolution: "@vscode/sudo-prompt@npm:9.3.2" + checksum: 811ff9bd99efc3e814e6bd1da8064452a1f2b0057f08d1c7a18428e04c13ac3db356a1cdcf8011a35ac84a47d3d351b8bb8b776dea0f9caac16e6f26b6611496 languageName: node linkType: hard "@xmldom/xmldom@npm:^0.8.8": - version: 0.8.10 - resolution: "@xmldom/xmldom@npm:0.8.10" - checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 + version: 0.8.11 + resolution: "@xmldom/xmldom@npm:0.8.11" + checksum: 72020f3d5c74b54e25d19f2cd7b2d87484926cc7febdf02347dc3e06364186641d54e9e94baaaaba30e99528e6727adcd1baef6d0809e7460aee3a5be890b132 languageName: node linkType: hard @@ -2938,10 +2947,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^3.0.0": - version: 3.0.1 - resolution: "abbrev@npm:3.0.1" - checksum: e70b209f5f408dd3a3bbd0eec4b10a2ffd64704a4a3821d0969d84928cc490a8eb60f85b78a95622c1841113edac10161c62e52f5e7d0027aa26786a8136e02e +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: d0344b63d28e763f259b4898c41bdc92c08e9d06d0da5617d0bbe4d78244e46daea88c510a2f9472af59b031d9060ec1a999653144e793fd029a59dae2f56dc8 languageName: node linkType: hard @@ -2954,7 +2963,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.7, accepts@npm:~1.3.7": +"accepts@npm:^1.3.7, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -2973,7 +2982,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.14.0, acorn@npm:^8.9.0": +"acorn@npm:^8.15.0, acorn@npm:^8.9.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -3043,9 +3052,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 9b17ce2c6daecc75bcd5966b9ad672c23b184dc3ed9bf3c98a0702f0d2f736c15c10d461913568f2cf527a5e64291c7473358885dd493305c84a1cfed66ba94f languageName: node linkType: hard @@ -3075,9 +3084,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: f1b0829cf048cce870a305819f65ce2adcebc097b6d6479e12e955fd6225df9b9eb8b497083b764df796d94383ff20016cc4dbbae5b40f36138fb65a9d33c2e2 languageName: node linkType: hard @@ -3234,6 +3243,13 @@ __metadata: languageName: node linkType: hard +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 74a71a4a2dd7afd06ebb612f6d612c7f4766a351bedffde466023bf6dae629e46b0d2cd38786239e0fbf245de0c7df76035465e16d1213774a0efb22fec0d713 + languageName: node + linkType: hard + "async-limiter@npm:~1.0.0": version: 1.0.1 resolution: "async-limiter@npm:1.0.1" @@ -3417,6 +3433,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.9.0": + version: 2.9.15 + resolution: "baseline-browser-mapping@npm:2.9.15" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 8d5a39ce1f66ce4fc2a387fcb01ec954db9c6e8e5d27f40385a3d006c69b81def63e09afa9e7b7532cee3b343cb5eaaf57943ca1f4760283f7edb085094ebed0 + languageName: node + linkType: hard + "big-integer@npm:1.6.x": version: 1.6.52 resolution: "big-integer@npm:1.6.52" @@ -3436,22 +3461,22 @@ __metadata: linkType: hard "body-parser@npm:^1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" + version: 1.20.4 + resolution: "body-parser@npm:1.20.4" dependencies: - bytes: 3.1.2 + 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.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + 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 - checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d + unpipe: ~1.0.0 + checksum: eaa212cff1737d2fbb49fc7aa1d71d9b456adea2dc3de388ff3c6d67b28028d6b1fa7e6cd77e3670b4cbd402ab011f80f6e5bb811480b53a28d11f33678c6298 languageName: node linkType: hard @@ -3501,17 +3526,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.0, browserslist@npm:^4.25.1": - version: 4.25.2 - resolution: "browserslist@npm:4.25.2" +"browserslist@npm:^4.24.0, browserslist@npm:^4.28.0": + version: 4.28.1 + resolution: "browserslist@npm:4.28.1" dependencies: - caniuse-lite: ^1.0.30001733 - electron-to-chromium: ^1.5.199 - node-releases: ^2.0.19 - update-browserslist-db: ^1.1.3 + baseline-browser-mapping: ^2.9.0 + caniuse-lite: ^1.0.30001759 + electron-to-chromium: ^1.5.263 + node-releases: ^2.0.27 + update-browserslist-db: ^1.2.0 bin: browserslist: cli.js - checksum: 104f151563a797f95cda7ae862938939c41b89975960cba4615a389238cdd98dcf2ec4ea804c97374c39457f1f476bc58cfd2826fdccff5dba91e2ca45f5b1b3 + checksum: 895357d912ae5a88a3fa454d2d280e9869e13432df30ca8918e206c0783b3b59375b178fdaf16d0041a1cf21ac45c8eb0a20f96f73dbd9662abf4cf613177a1e languageName: node linkType: hard @@ -3541,30 +3567,29 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": +"bytes@npm:3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e languageName: node linkType: hard -"cacache@npm:^19.0.1": - version: 19.0.1 - resolution: "cacache@npm:19.0.1" +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" dependencies: - "@npmcli/fs": ^4.0.0 + "@npmcli/fs": ^5.0.0 fs-minipass: ^3.0.0 - glob: ^10.2.2 - lru-cache: ^10.0.1 + glob: ^13.0.0 + lru-cache: ^11.1.0 minipass: ^7.0.3 minipass-collect: ^2.0.1 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 p-map: ^7.0.2 - ssri: ^12.0.0 - tar: ^7.4.3 - unique-filename: ^4.0.0 - checksum: e95684717de6881b4cdaa949fa7574e3171946421cd8291769dd3d2417dbf7abf4aa557d1f968cca83dcbc95bed2a281072b09abfc977c942413146ef7ed4525 + ssri: ^13.0.0 + unique-filename: ^5.0.0 + checksum: 595e6b91d72972d596e1e9ccab8ddbf08b773f27240220b1b5b1b7b3f52173cfbcf095212e5d7acd86c3bd453c28e69b116469889c511615ef3589523d542639 languageName: node linkType: hard @@ -3646,10 +3671,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001733": - version: 1.0.30001735 - resolution: "caniuse-lite@npm:1.0.30001735" - checksum: 41ee174f41b876a76d9f9a164d84a43a2d7d4cfba9076b459f165370fd5e0778327262ec3cd676c05f8e8cdeb4f6362d31714fecdcdc584034ae91e987b5bf84 +"caniuse-lite@npm:^1.0.30001759": + version: 1.0.30001765 + resolution: "caniuse-lite@npm:1.0.30001765" + checksum: 15936de439be1e5cc5da5fbae16899bc28a122af58f6c485743482f0ef26e5bf9a07b9a00f74024495df0495bfe073dbde6341886d14b92325dded24b332a2d5 languageName: node linkType: hard @@ -3790,9 +3815,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: ed1d1ebc9c05e7263fffa3ad6440031db6a1fdd9f574435aa689effcdfe9f2b93aba8ec600f9c7b99124cd6ff5d9415c17961d84ae829a72251a4fe668a49b63 languageName: node linkType: hard @@ -3921,11 +3946,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.43.0": - version: 3.45.0 - resolution: "core-js-compat@npm:3.45.0" + version: 3.47.0 + resolution: "core-js-compat@npm:3.47.0" dependencies: - browserslist: ^4.25.1 - checksum: 98808620626b761eb4772cb8719d959289e9a9127d4fd4d2e3e78aa8341c4935bdc395883134c9419f718776222c0d3eda1ae2337e67e171388e4547d3097b51 + browserslist: ^4.28.0 + checksum: 425c8cb4c3277a11f3d7d4752c53e5903892635126ed1cdc326a1cd7d961606c5d2c951493f1c783e624f9cdc1ec791c6db68dc19988d68f112d7d82a4c39c9a languageName: node linkType: hard @@ -3986,10 +4011,10 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2": - version: 3.1.3 - resolution: "csstype@npm:3.1.3" - checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 +"csstype@npm:^3.2.2": + version: 3.2.3 + resolution: "csstype@npm:3.2.3" + checksum: cb882521b3398958a1ce6ca98c011aec0bde1c77ecaf8a1dd4db3b112a189939beae3b1308243b2fe50fc27eb3edeb0f73a5a4d91d928765dc6d5ecc7bda92ee languageName: node linkType: hard @@ -4027,9 +4052,9 @@ __metadata: linkType: hard "dayjs@npm:^1.8.15": - version: 1.11.13 - resolution: "dayjs@npm:1.11.13" - checksum: f388db88a6aa93956c1f6121644e783391c7b738b73dbc54485578736565c8931bdfba4bb94e9b1535c6e509c97d5deb918bbe1ae6b34358d994de735055cca9 + version: 1.11.19 + resolution: "dayjs@npm:1.11.19" + checksum: dfafcca2c67cc6e542fd880d77f1d91667efd323edc28f0487b470b184a11cc97696163ed5be1142ea2a031045b27a0d0555e72f60a63275e0e0401ac24bea5d languageName: node linkType: hard @@ -4043,14 +4068,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": - version: 4.4.1 - resolution: "debug@npm:4.4.1" + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: a43826a01cda685ee4cec00fb2d3322eaa90ccadbef60d9287debc2a886be3e835d9199c80070ede75a409ee57828c4c6cd80e4b154f2843f0dc95a570dc0729 + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 languageName: node linkType: hard @@ -4069,14 +4094,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0": - version: 1.6.0 - resolution: "dedent@npm:1.6.0" + version: 1.7.1 + resolution: "dedent@npm:1.7.1" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: ecaa83968b3db4ffeadf8f679c01280f8679ec79993d7e203c0281d7926e883bb79f42b263ba0df1f78e146e4b0be1b9a5b922b1fe040cb89b09977bc9c25b38 + checksum: 66dc34f61dabc85597a95ce8678c93f0793ec437cc6510e0e6c14da159ce15c6209dee483aa3cccb3238a2f708382c4d26eeb1a47a4c1831a0b7bb56873041cf languageName: node linkType: hard @@ -4125,14 +4150,14 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": +"depd@npm:2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a languageName: node linkType: hard -"destroy@npm:1.2.0": +"destroy@npm:1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 @@ -4205,10 +4230,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.199": - version: 1.5.202 - resolution: "electron-to-chromium@npm:1.5.202" - checksum: ce5bcd3ac8e567712d3febd5fc9edcefcce9af547cf0d4eedba1b2b6ef5fe640087945f72833b257e3db2965803b5295be54c5f093b4060d98a5c07c17dbfce7 +"electron-to-chromium@npm:^1.5.263": + version: 1.5.267 + resolution: "electron-to-chromium@npm:1.5.267" + checksum: 923a21ea4c3f2536eb7ccf80e92d9368a2e5a13e6deccb1d94c31b5a5b4e10e722149b85db9892e9819150f1c43462692a92dc85ba0c205a4eb578e173b3ab36 languageName: node linkType: hard @@ -4264,11 +4289,11 @@ __metadata: linkType: hard "envinfo@npm:^7.13.0": - version: 7.14.0 - resolution: "envinfo@npm:7.14.0" + version: 7.21.0 + resolution: "envinfo@npm:7.21.0" bin: envinfo: dist/cli.js - checksum: 137c1dd9a4d5781c4a6cdc6b695454ba3c4ba1829f73927198aa4122f11b35b59d7b2cb7e1ceea1364925a30278897548511d22f860c14253a33797d0bebd551 + checksum: c9526266810a328396c387c0580d6fc10f6ce8464074ae6eaef6798e2a05b5800b480b2eaf739cf523e3bfb407baba2ef23ff8edebb76c2b8fa7fbac995b3b9b languageName: node linkType: hard @@ -4280,11 +4305,11 @@ __metadata: linkType: hard "error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" dependencies: is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + checksum: 25136c0984569c8d68417036a9a1624804314296f24675199a391e5d20b2e26fe6d9304d40901293fa86900603a229983c9a8921ea7f1d16f814c2db946ff4ef languageName: node linkType: hard @@ -4298,18 +4323,18 @@ __metadata: linkType: hard "errorhandler@npm:^1.5.1": - version: 1.5.1 - resolution: "errorhandler@npm:1.5.1" + version: 1.5.2 + resolution: "errorhandler@npm:1.5.2" dependencies: - accepts: ~1.3.7 + accepts: ~1.3.8 escape-html: ~1.0.3 - checksum: 73b7abb08fb751107e9bebecc33c40c0641a54be8bda8e4a045f3f5cb7b805041927fef5629ea39b1737799eb52fe2499ca531f11ac51b0294ccc4667d72cb91 + checksum: 7ce0a598cc2c52840e32b46d2da8c7b0a4594aa67e93db46112cf791d4c8a4a1299af7f7aa65253d2e9d42af4d275c96387c0d186427df5ee93d33670bdac541 languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": - version: 1.24.0 - resolution: "es-abstract@npm:1.24.0" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.1": + version: 1.24.1 + resolution: "es-abstract@npm:1.24.1" dependencies: array-buffer-byte-length: ^1.0.2 arraybuffer.prototype.slice: ^1.0.4 @@ -4365,7 +4390,7 @@ __metadata: typed-array-length: ^1.0.7 unbox-primitive: ^1.1.0 which-typed-array: ^1.1.19 - checksum: 06b3d605e56e3da9d16d4db2629a42dac1ca31f2961a41d15c860422a266115e865b43e82d6b9da81a0fabbbb65ebc12fb68b0b755bc9dbddacb6bf7450e96df + checksum: 84896f97ac812bd9d884f1e5372ae71dbdbef364d2e178defdb712a0aae8c9df66f447b472ad54e3e1fa5aa9a84f3c11b5f35007d629cf975699c5f885aeb0c5 languageName: node linkType: hard @@ -4384,26 +4409,26 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.2.1": - version: 1.2.1 - resolution: "es-iterator-helpers@npm:1.2.1" + version: 1.2.2 + resolution: "es-iterator-helpers@npm:1.2.2" dependencies: call-bind: ^1.0.8 - call-bound: ^1.0.3 + call-bound: ^1.0.4 define-properties: ^1.2.1 - es-abstract: ^1.23.6 + es-abstract: ^1.24.1 es-errors: ^1.3.0 - es-set-tostringtag: ^2.0.3 + es-set-tostringtag: ^2.1.0 function-bind: ^1.1.2 - get-intrinsic: ^1.2.6 + get-intrinsic: ^1.3.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 internal-slot: ^1.1.0 - iterator.prototype: ^1.1.4 + iterator.prototype: ^1.1.5 safe-array-concat: ^1.1.3 - checksum: 952808dd1df3643d67ec7adf20c30b36e5eecadfbf36354e6f39ed3266c8e0acf3446ce9bc465e38723d613cb1d915c1c07c140df65bdce85da012a6e7bda62b + checksum: 33e148b592d41630ea53b20ec8d6f2ca7516871c43bdf1619fdb4c770361c625f134ff4276332d6e08e9f59d1cd75532a74723f56176c4599e0387f51750e286 languageName: node linkType: hard @@ -4416,7 +4441,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -4696,11 +4721,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: ^5.1.0 - checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27 languageName: node linkType: hard @@ -4786,9 +4811,9 @@ __metadata: linkType: hard "exponential-backoff@npm:^3.1.1": - version: 3.1.2 - resolution: "exponential-backoff@npm:3.1.2" - checksum: 7e191e3dd6edd8c56c88f2c8037c98fbb8034fe48778be53ed8cb30ccef371a061a4e999a469aab939b92f8f12698f3b426d52f4f76b7a20da5f9f98c3cbc862 + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 471fdb70fd3d2c08a74a026973bdd4105b7832911f610ca67bbb74e39279411c1eed2f2a110c9d41c2edd89459ba58fdaba1c174beed73e7a42d773882dcff82 languageName: node linkType: hard @@ -4838,11 +4863,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.19.1 - resolution: "fastq@npm:1.19.1" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: ^1.0.4 - checksum: 7691d1794fb84ad0ec2a185f10e00f0e1713b894e2c9c4d42f0bc0ba5f8c00e6e655a202074ca0b91b9c3d977aab7c30c41a8dc069fb5368576ac0054870a0e6 + checksum: 49128edbf05e682bee3c1db3d2dfc7da195469065ef014d8368c555d829932313ae2ddf584bb03146409b0d5d9fdb387c471075483a7319b52f777ad91128ed8 languageName: node linkType: hard @@ -4855,7 +4880,7 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.4": +"fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" peerDependencies: @@ -4989,7 +5014,7 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": +"fresh@npm:~0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 @@ -5070,6 +5095,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 3bf87f7b0230de5d74529677e6c3ceb3b7b5d9618b5a22d92b45ce3876defbaf5a77791b25a61b0fa7d13f95675b5ff67a7769f3b9af33f096e34653519e873d + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -5085,20 +5117,23 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: + async-function: ^1.0.0 + async-generator-function: ^1.0.0 call-bind-apply-helpers: ^1.0.2 es-define-property: ^1.0.1 es-errors: ^1.3.0 es-object-atoms: ^1.1.1 function-bind: ^1.1.2 + generator-function: ^2.0.0 get-proto: ^1.0.1 gopd: ^1.2.0 has-symbols: ^1.1.0 hasown: ^2.0.2 math-intrinsics: ^1.1.0 - checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d + checksum: c02b3b6a445f9cd53e14896303794ac60f9751f58a69099127248abdb0251957174c6524245fc68579dc8e6a35161d3d94c93e665f808274716f4248b269436a languageName: node linkType: hard @@ -5162,9 +5197,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.4.2": - version: 10.4.5 - resolution: "glob@npm:10.4.5" +"glob@npm:^10.4.2": + version: 10.5.0 + resolution: "glob@npm:10.5.0" dependencies: foreground-child: ^3.1.0 jackspeak: ^3.1.2 @@ -5174,7 +5209,18 @@ __metadata: path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + checksum: cda96c074878abca9657bd984d2396945cf0d64283f6feeb40d738fe2da642be0010ad5210a1646244a5fc3511b0cab5a374569b3de5a12b8a63d392f18c6043 + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.0 + resolution: "glob@npm:13.0.0" + dependencies: + minimatch: ^10.1.1 + minipass: ^7.1.2 + path-scurry: ^2.0.0 + checksum: 963730222b0acc85a0d2616c08ba3a5d5b5f33fbf69182791967b8a02245db505577a6fc19836d5d58e1cbbfb414ad4f62f605a0372ab05cd9e6998efe944369 languageName: node linkType: hard @@ -5368,16 +5414,16 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" +"http-errors@npm:~2.0.1": + version: 2.0.1 + resolution: "http-errors@npm:2.0.1" dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + depd: ~2.0.0 + inherits: ~2.0.4 + setprototypeof: ~1.2.0 + statuses: ~2.0.2 + toidentifier: ~1.0.1 + checksum: 155d1a100a06e4964597013109590b97540a177b69c3600bbc93efc746465a99a2b718f43cdf76b3791af994bbe3a5711002046bf668cdc007ea44cea6df7ccd languageName: node linkType: hard @@ -5408,15 +5454,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -5426,6 +5463,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:~0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + "ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -5500,7 +5546,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -5528,9 +5574,9 @@ __metadata: linkType: hard "ip-address@npm:^10.0.1": - version: 10.0.1 - resolution: "ip-address@npm:10.0.1" - checksum: 525d5391cfd31a91f80f5857e98487aeaa8474e860a6725a0b6461ac8e436c7f8c869774dece391c8f8e7486306a34a4d1c094778c4c583a3f1f2cd905e5ed50 + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 76b1abcdf52a32e2e05ca1f202f3a8ab8547e5651a9233781b330271bd7f1a741067748d71c4cbb9d9906d9f1fa69e7ddc8b4a11130db4534fdab0e908c84e0d languageName: node linkType: hard @@ -5591,7 +5637,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.0": +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -5675,14 +5721,15 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10": - version: 1.1.0 - resolution: "is-generator-function@npm:1.1.0" + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" dependencies: - call-bound: ^1.0.3 - get-proto: ^1.0.0 + 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 - checksum: f7f7276131bdf7e28169b86ac55a5b080012a597f9d85a0cbef6fe202a7133fa450a3b453e394870e3cb3685c5a764c64a9f12f614684b46969b1e6f297bed6b + checksum: 0b81c613752a5e534939e5b3835ff722446837a5b94c3a3934af5ded36a651d9aa31c3f11f8a3453884b9658bf26dbfb7eb855e744d920b07f084bd890a43414 languageName: node linkType: hard @@ -5931,16 +5978,16 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 + checksum: 72b4c8525276147908d28b0917bc675b1019836b638e50875521ca3b8ec63672681aa98dbab88a6f49ef798c08fe041d428abdcf84f4f3fcff5844eee54af65a languageName: node linkType: hard -"iterator.prototype@npm:^1.1.4": +"iterator.prototype@npm:^1.1.5": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" dependencies: @@ -6427,25 +6474,25 @@ __metadata: linkType: hard "js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" + version: 3.14.2 + resolution: "js-yaml@npm:3.14.2" dependencies: argparse: ^1.0.7 esprima: ^4.0.0 bin: js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + checksum: 626fc207734a3452d6ba84e1c8c226240e6d431426ed94d0ab043c50926d97c509629c08b1d636f5d27815833b7cfd225865631da9fb33cb957374490bf3e90b languageName: node linkType: hard "js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" dependencies: argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + checksum: ea2339c6930fe048ec31b007b3c90be2714ab3e7defcc2c27ebf30c74fd940358f29070b4345af0019ef151875bf3bc3f8644bea1bab0372652b5044813ac02d languageName: node linkType: hard @@ -6456,7 +6503,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": +"jsesc@npm:^3.0.2, jsesc@npm:~3.1.0": version: 3.1.0 resolution: "jsesc@npm:3.1.0" bin: @@ -6465,15 +6512,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c - languageName: node - linkType: hard - "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -6559,12 +6597,12 @@ __metadata: linkType: hard "launch-editor@npm:^2.9.1": - version: 2.11.1 - resolution: "launch-editor@npm:2.11.1" + version: 2.12.0 + resolution: "launch-editor@npm:2.12.0" dependencies: picocolors: ^1.1.1 shell-quote: ^1.8.3 - checksum: 95a2e0a50ce15425a87fd035bdef2de37e13c2aee9cd62756783efb286a6e36a341cfcbaecb0d578131a5411c6a1c74c422f9c5b6cb6f4c8284d6078967e08b4 + checksum: b1aa1b92ef4e720d1edd7f80affb90b2fa1cc2c41641cf80158940698c18a4b6a67e2a7cb060547712e858f0ec1a7c8c39f605e0eb299f516a6184f4e680ffc8 languageName: node linkType: hard @@ -6692,13 +6730,20 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.4 + resolution: "lru-cache@npm:11.2.4" + checksum: cb8cf72b80a506593f51880bd5a765380d6d8eb82e99b2fbb2f22fe39e5f2f641d47a2509e74cc294617f32a4e90ae8f6214740fe00bc79a6178854f00419b24 + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -6717,22 +6762,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.3": - version: 14.0.3 - resolution: "make-fetch-happen@npm:14.0.3" +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" dependencies: - "@npmcli/agent": ^3.0.0 - cacache: ^19.0.1 + "@npmcli/agent": ^4.0.0 + cacache: ^20.0.1 http-cache-semantics: ^4.1.1 minipass: ^7.0.2 - minipass-fetch: ^4.0.0 + minipass-fetch: ^5.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^1.0.0 - proc-log: ^5.0.0 + proc-log: ^6.0.0 promise-retry: ^2.0.1 - ssri: ^12.0.0 - checksum: 6fb2fee6da3d98f1953b03d315826b5c5a4ea1f908481afc113782d8027e19f080c85ae998454de4e5f27a681d3ec58d57278f0868d4e0b736f51d396b661691 + ssri: ^13.0.0 + checksum: 4fb9dbb739b33565c85dacdcff7eb9388d8f36f326a59dc13375f01af809c42c48aa5d1f4840ee36623b2461a15476e1e79e4548ca1af30b42e1e324705ac8b3 languageName: node linkType: hard @@ -7070,6 +7115,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": ^5.0.0 + checksum: 8820c0be92994f57281f0a7a2cc4268dcc4b610f9a1ab666685716b4efe4b5898b43c835a8f22298875b31c7a278a5e3b7e253eee7c886546bb0b61fb94bca6b + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -7106,9 +7160,9 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^4.0.0": - version: 4.0.1 - resolution: "minipass-fetch@npm:4.0.1" +"minipass-fetch@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" dependencies: encoding: ^0.1.13 minipass: ^7.0.3 @@ -7117,7 +7171,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 3dfca705ce887ca9ff14d73e8d8593996dea1a1ecd8101fdbb9c10549d1f9670bc8fb66ad0192769ead4c2dc01b4f9ca1cf567ded365adff17827a303b948140 + checksum: 416645d1e54c09fdfe64ec1676541ac2f6f2af3abc7ad25f2f22c4518535997c1ecd2c0c586ea8a5c6499ad7d8f97671f50ff38488ada54bf61fde309f731379 languageName: node linkType: hard @@ -7171,12 +7225,12 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: minipass: ^7.1.2 - checksum: 493bed14dcb6118da7f8af356a8947cf1473289c09658e5aabd69a737800a8c3b1736fb7d7931b722268a9c9bc038a6d53c049b6a6af24b34a121823bb709996 + checksum: a15e6f0128f514b7d41a1c68ce531155447f4669e32d279bba1c1c071ef6c2abd7e4d4579bb59ccc2ed1531346749665968fdd7be8d83eb6b6ae2fe1f3d370a7 languageName: node linkType: hard @@ -7189,15 +7243,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d - languageName: node - linkType: hard - "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -7257,22 +7302,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.3.0 - resolution: "node-gyp@npm:11.3.0" + version: 12.1.0 + resolution: "node-gyp@npm:12.1.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 graceful-fs: ^4.2.6 - make-fetch-happen: ^14.0.3 - nopt: ^8.0.0 - proc-log: ^5.0.0 + make-fetch-happen: ^15.0.0 + nopt: ^9.0.0 + proc-log: ^6.0.0 semver: ^7.3.5 - tar: ^7.4.3 + tar: ^7.5.2 tinyglobby: ^0.2.12 - which: ^5.0.0 + which: ^6.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 64255952af18222e930a0bb8239e8fc86ec25eddfbf61523ab30b45f19670c1e66384ceda0472f5d59e63a7779b2134eab8ec5322b9f092f60202b0e312a66c8 + checksum: 198d91c535fe9940bcdc0db4e578f94cf9872e0d068e88ef2f4656924248bb67245b270b48eded6634c7513841c0cd42f3da3ac9d77c8e16437fcd90703b9ef3 languageName: node linkType: hard @@ -7283,10 +7328,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 917dbced519f48c6289a44830a0ca6dc944c3ee9243c468ebd8515a41c97c8b2c256edb7f3f750416bc37952cc9608684e6483c7b6c6f39f6bd8d86c52cfe658 +"node-releases@npm:^2.0.27": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: a9a54079d894704c2ec728a690b41fbc779a710f5d47b46fa3e460acff08a3e7dfa7108e5599b2db390aa31dac062c47c5118317201f12784188dc5b415f692d languageName: node linkType: hard @@ -7297,14 +7342,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^8.0.0": - version: 8.1.0 - resolution: "nopt@npm:8.1.0" +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" dependencies: - abbrev: ^3.0.0 + abbrev: ^4.0.0 bin: nopt: bin/nopt.js - checksum: 49cfd3eb6f565e292bf61f2ff1373a457238804d5a5a63a8d786c923007498cba89f3648e3b952bc10203e3e7285752abf5b14eaf012edb821e84f24e881a92a + checksum: 7a5d9ab0629eaec1944a95438cc4efa6418ed2834aa8eb21a1bea579a7d8ac3e30120131855376a96ef59ab0e23ad8e0bc94d3349770a95e5cb7119339f7c7fb languageName: node linkType: hard @@ -7411,21 +7456,21 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" +"on-finished@npm:~2.3.0": + version: 2.3.0 + resolution: "on-finished@npm:2.3.0" dependencies: ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b languageName: node linkType: hard -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" +"on-finished@npm:~2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" dependencies: ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 languageName: node linkType: hard @@ -7561,9 +7606,9 @@ __metadata: linkType: hard "p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 4be2097e942f2fd3a4f4b0c6585c721f23851de8ad6484d20c472b3ea4937d5cd9a59914c832b1bceac7bf9d149001938036b82a52de0bc381f61ff2d35d26a5 languageName: node linkType: hard @@ -7664,6 +7709,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" + dependencies: + lru-cache: ^11.0.0 + minipass: ^7.1.2 + checksum: a022c6c38fed836079d03f96540eafd4cd989acf287b99613c82300107f366e889513ad8b671a2039a9d251122621f9c6fa649f0bd4d50acf95a6943a6692dbf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -7685,7 +7740,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2": +"picomatch@npm:^4.0.3": version: 4.0.3 resolution: "picomatch@npm:4.0.3" checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 @@ -7774,10 +7829,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^5.0.0": - version: 5.0.0 - resolution: "proc-log@npm:5.0.0" - checksum: c78b26ecef6d5cce4a7489a1e9923d7b4b1679028c8654aef0463b27f4a90b0946cd598f55799da602895c52feb085ec76381d007ab8dcceebd40b89c2f9dfe0 +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: ac450ff8244e95b0c9935b52d629fef92ae69b7e39aea19972a8234259614d644402dd62ce9cb094f4a637d8a4514cba90c1456ad785a40ad5b64d502875a817 languageName: node linkType: hard @@ -7835,12 +7890,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" +"qs@npm:~6.14.0": + version: 6.14.1 + resolution: "qs@npm:6.14.1" dependencies: - side-channel: ^1.0.6 - checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 + side-channel: ^1.1.0 + checksum: 7fffab0344fd75bfb6b8c94b8ba17f3d3e823d25b615900f68b473c3a078e497de8eaa08f709eaaa170eedfcee50638a7159b98abef7d8c89c2ede79291522f2 languageName: node linkType: hard @@ -7879,15 +7934,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" +"raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + bytes: ~3.1.2 + http-errors: ~2.0.1 + iconv-lite: ~0.4.24 + unpipe: ~1.0.0 + checksum: 16aa51e504318ebeef7f84a4d884c0f273cb0b7f3f14ea88788f92f5f488870617c97d4f886e84f119f21a2d6cdda3c4554821f8b18ed6be0d731ecb5a063d2a languageName: node linkType: hard @@ -7932,9 +7987,9 @@ __metadata: linkType: hard "react-is@npm:^19.0.0": - version: 19.1.1 - resolution: "react-is@npm:19.1.1" - checksum: e60ed01c27fe4d22b08f8a31f18831d144a801d08a909ca31fb1d02721b4f4cde0759148d6341f660a4d6ce54a78e22b8b39520b67e2e76254e583885868ab43 + version: 19.2.3 + resolution: "react-is@npm:19.2.3" + checksum: 3bb317292dc574632ec33093d38b8ff97abb6dc400e7b0375baef9429f148cf5ae0307e37de97358f3fad07edd159cda8fcb9d28aaaf0dcd8d408ee320638b83 languageName: node linkType: hard @@ -7964,56 +8019,45 @@ __metadata: languageName: node linkType: hard -"react-native-is-edge-to-edge@npm:^1.2.1": - version: 1.2.1 - resolution: "react-native-is-edge-to-edge@npm:1.2.1" - peerDependencies: - react: "*" - react-native: "*" - checksum: 8fb6d8ab7b953c7d7cec8c987cef24f1c5348a293a85cb49c7c53b54ef110c0ca746736ae730e297603c8c76020df912e93915fb17518c4f2f91143757177aba - languageName: node - linkType: hard - "react-native-safe-area-context@npm:^5.4.0": - version: 5.6.0 - resolution: "react-native-safe-area-context@npm:5.6.0" + version: 5.6.2 + resolution: "react-native-safe-area-context@npm:5.6.2" peerDependencies: react: "*" react-native: "*" - checksum: 23f382a6504dc6ff1064fe45af53207014a27d3312eeaa5e0fd92281c425cb518d7e5e7bc79cf29b0f8e685a30931df93800dfe98e5d81bd768499aa5e737ab0 + checksum: 7b15cdd07df4f3650cf443fb322ee2d51b3ab45c652789cbea4cb48a8e6fd2b66e2be01e9f63e614ceaf28d9d228af681ca8857b2ed8dabe48f23964076d40c3 languageName: node linkType: hard -"react-native-scanbot-sdk@npm:7.1.1": - version: 7.1.1 - resolution: "react-native-scanbot-sdk@npm:7.1.1" +"react-native-scanbot-sdk@npm:8.0.0-beta.1": + version: 8.0.0-beta.1 + resolution: "react-native-scanbot-sdk@npm:8.0.0-beta.1" dependencies: "@expo/config-plugins": 9.0.14 peerDependencies: react: "*" react-native: ">=0.73" - checksum: 96cf120acc8356f1c89d5da8044fc50b4440f7175fce07c4950509b24c97cb0582c404a82db5c46f386588214da424888393a8eaaf12f87f7b5cf3d62f06887d + checksum: 381efb2c3205300d40ffa9848d83428c24dba368e26a69bc33c8bd4ec556b3076a5e23989b14b14c92b72c81db5cbc2b8db5cdf553357927abe341f17625ed44 languageName: node linkType: hard -"react-native-screens@npm:^4.10.0": - version: 4.14.1 - resolution: "react-native-screens@npm:4.14.1" +"react-native-screens@npm:~4.10.0": + version: 4.10.0 + resolution: "react-native-screens@npm:4.10.0" dependencies: react-freeze: ^1.0.0 - react-native-is-edge-to-edge: ^1.2.1 warn-once: ^0.1.0 peerDependencies: react: "*" react-native: "*" - checksum: 80679a2204e29c87b60161e8048ac696cdbfcf5a1814d7f6029be3a67223eda9ad32228a9c1b603de99ce4681fdade950f9e8970f0ac19b8a17dea5ca81c1b3c + checksum: 291f3024eabbb02b3299d4afafba6812f7a1dcd95f762b9be80fa9a69b20650d66a72e64f339776eb4b72e759a1b2201bb80a8501d90f9b4f4d42f19d6c09d5a languageName: node linkType: hard "react-native-share@npm:^12.0.3": - version: 12.2.0 - resolution: "react-native-share@npm:12.2.0" - checksum: 634e4d40f3a66fe20fe31e56027e34e2cc09225dc8a59464ad18984ee785a30a9dfb3fb895ebd6e60ecbd3f48d13b4c92970869c5bdb427f0e29c2e1699c2dff + version: 12.2.2 + resolution: "react-native-share@npm:12.2.2" + checksum: 44f0276110fdf6f45697ccefb2aa6b0dec90dc29a9b0114d3cbbbd6850cb2a0c0b9375d4a566fca4e605833f2859988bef019e4331ee483b4c7e5260935abb40 languageName: node linkType: hard @@ -8122,12 +8166,12 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.2.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" +"regenerate-unicode-properties@npm:^10.2.2": + version: 10.2.2 + resolution: "regenerate-unicode-properties@npm:10.2.2" dependencies: regenerate: ^1.4.2 - checksum: d5c5fc13f8b8d7e16e791637a4bfef741f8d70e267d51845ee7d5404a32fa14c75b181c4efba33e4bff8b0000a2f13e9773593713dfe5b66597df4259275ce63 + checksum: 7ae4c1c32460c4360e3118c45eec0621424908f430fdd6f162c9172067786bf2b1682fbc885a33b26bc85e76e06f4d3f398b52425e801b0bb0cbae147dafb0b2 languageName: node linkType: hard @@ -8159,17 +8203,17 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^6.2.0": - version: 6.2.0 - resolution: "regexpu-core@npm:6.2.0" +"regexpu-core@npm:^6.3.1": + version: 6.4.0 + resolution: "regexpu-core@npm:6.4.0" dependencies: regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.2.0 + regenerate-unicode-properties: ^10.2.2 regjsgen: ^0.8.0 - regjsparser: ^0.12.0 + regjsparser: ^0.13.0 unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.1.0 - checksum: 67d3c4a3f6c99bc80b5d690074a27e6f675be1c1739f8a9acf028fbc36f1a468472574ea65e331e217995198ba4404d7878f3cb3739a73552dd3c70d3fb7f8e6 + unicode-match-property-value-ecmascript: ^2.2.1 + checksum: a316eb988599b7fb9d77f4adb937c41c022504dc91ddd18175c11771addc7f1d9dce550f34e36038395e459a2cf9ffc0d663bfe8d3c6c186317ca000ba79a8cf languageName: node linkType: hard @@ -8180,14 +8224,14 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.12.0": - version: 0.12.0 - resolution: "regjsparser@npm:0.12.0" +"regjsparser@npm:^0.13.0": + version: 0.13.0 + resolution: "regjsparser@npm:0.13.0" dependencies: - jsesc: ~3.0.2 + jsesc: ~3.1.0 bin: regjsparser: bin/parser - checksum: 094b55b0ab3e1fd58f8ce5132a1d44dab08d91f7b0eea4132b0157b303ebb8ded20a9cbd893d25402d2aeddb23fac1f428ab4947b295d6fa51dd1c334a9e76f0 + checksum: 1cf09f6afde2b2d1c1e89e1ce3034e3ee8d9433912728dbaa48e123f5f43ce34e263b2a8ab228817dce85d676ee0c801a512101b015ac9ab80ed449cf7329d3a languageName: node linkType: hard @@ -8250,15 +8294,15 @@ __metadata: linkType: hard "resolve@npm:^1.20.0, resolve@npm:^1.22.10, resolve@npm:^1.22.8": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" + version: 1.22.11 + resolution: "resolve@npm:1.22.11" dependencies: - is-core-module: ^2.16.0 + is-core-module: ^2.16.1 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf + checksum: 6d5baa2156b95a65ac431e7642e21106584e9f4194da50871cae8bc1bbd2b53bb7cee573c92543d83bb999620b224a087f62379d800ed1ccb189da6df5d78d50 languageName: node linkType: hard @@ -8276,15 +8320,15 @@ __metadata: linkType: hard "resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.10#~builtin, resolve@patch:resolve@^1.22.8#~builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#~builtin::version=1.22.11&hash=c3c19d" dependencies: - is-core-module: ^2.16.0 + is-core-module: ^2.16.1 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d + checksum: 1462da84ac3410d7c2e12e4f5f25c1423d8a174c3b4245c43eafea85e7bbe6af3eb7ec10a4850b5e518e8531608604742b8cbd761e1acd7ad1035108b7c98013 languageName: node linkType: hard @@ -8394,9 +8438,9 @@ __metadata: linkType: hard "sax@npm:>=0.6.0": - version: 1.4.1 - resolution: "sax@npm:1.4.1" - checksum: 3ad64df16b743f0f2eb7c38ced9692a6d924f1cd07bbe45c39576c2cf50de8290d9d04e7b2228f924c7d05fecc4ec5cf651423278e0c7b63d260c387ef3af84a + version: 1.4.4 + resolution: "sax@npm:1.4.4" + checksum: a6082a153b4ab00968894b3751f6fdc431b0b7edc2d086da67ee162a06716f4bc7d0546e875993e950c757039c9e3838747ab77f50578a6ce579f970a6feadaf languageName: node linkType: hard @@ -8429,8 +8473,8 @@ __metadata: react-native-fs: 2.20.0 react-native-image-picker: ^8.2.0 react-native-safe-area-context: ^5.4.0 - react-native-scanbot-sdk: 7.1.1 - react-native-screens: ^4.10.0 + react-native-scanbot-sdk: 8.0.0-beta.1 + react-native-screens: ~4.10.0 react-native-share: ^12.0.3 react-test-renderer: 19.0.0 typescript: 5.0.4 @@ -8454,32 +8498,32 @@ __metadata: linkType: hard "semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.7.2 - resolution: "semver@npm:7.7.2" + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: dd94ba8f1cbc903d8eeb4dd8bf19f46b3deb14262b6717d0de3c804b594058ae785ef2e4b46c5c3b58733c99c83339068203002f9e37cfe44f7e2cc5e3d2f621 + checksum: f013a3ee4607857bcd3503b6ac1d80165f7f8ea94f5d55e2d3e33df82fce487aa3313b987abf9b39e0793c83c9fc67b76c36c067625141a9f6f704ae0ea18db2 languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" +"send@npm:~0.19.1": + version: 0.19.2 + resolution: "send@npm:0.19.2" dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: ~1.0.2 + encodeurl: ~2.0.0 escape-html: ~1.0.3 etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 + fresh: ~0.5.2 + http-errors: ~2.0.1 mime: 1.6.0 ms: 2.1.3 - on-finished: 2.4.1 + on-finished: ~2.4.1 range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 5ae11bd900c1c2575525e2aa622e856804e2f96a09281ec1e39610d089f53aa69e13fd8db84b52f001d0318cf4bb0b3b904ad532fc4c0014eb90d32db0cff55f + statuses: ~2.0.2 + checksum: f9e11b718b48dbea72daa6a80e36e5a00fb6d01b1a6cfda8b3135c9ca9db84257738283da23371f437148ccd8f400e6171cd2a3642fb43fda462da407d9d30c0 languageName: node linkType: hard @@ -8491,14 +8535,14 @@ __metadata: linkType: hard "serve-static@npm:^1.13.1, serve-static@npm:^1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" + version: 1.16.3 + resolution: "serve-static@npm:1.16.3" dependencies: encodeurl: ~2.0.0 escape-html: ~1.0.3 parseurl: ~1.3.3 - send: 0.19.0 - checksum: dffc52feb4cc5c68e66d0c7f3c1824d4e989f71050aefc9bd5f822a42c54c9b814f595fc5f2b717f4c7cc05396145f3e90422af31186a93f76cf15f707019759 + send: ~0.19.1 + checksum: ec7599540215e6676b223ea768bf7c256819180bf14f89d0b5d249a61bbb8f10b05b2a53048a153cb2cc7f3b367f1227d2fb715fe4b09d07299a9233eda1a453 languageName: node linkType: hard @@ -8546,7 +8590,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0": +"setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 @@ -8611,7 +8655,7 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": +"side-channel@npm:^1.1.0": version: 1.1.0 resolution: "side-channel@npm:1.1.0" dependencies: @@ -8757,12 +8801,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^12.0.0": - version: 12.0.0 - resolution: "ssri@npm:12.0.0" +"ssri@npm:^13.0.0": + version: 13.0.0 + resolution: "ssri@npm:13.0.0" dependencies: minipass: ^7.0.3 - checksum: ef4b6b0ae47b4a69896f5f1c4375f953b9435388c053c36d27998bc3d73e046969ccde61ab659e679142971a0b08e50478a1228f62edb994105b280f17900c98 + checksum: 9705dff9e686b11f3035fb4c3d44ce690359a15a54adcd6a18951f2763f670877321178dc72c37a2b804dba3287ecaa48726dbd0cff79b2715b1cc24521b3af3 languageName: node linkType: hard @@ -8791,13 +8835,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - "statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" @@ -8805,6 +8842,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:~2.0.2": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 6927feb50c2a75b2a4caab2c565491f7a93ad3d8dbad7b1398d52359e9243a20e2ebe35e33726dee945125ef7a515e9097d8a1b910ba2bbd818265a2f6c39879 + languageName: node + linkType: hard + "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 resolution: "stop-iteration-iterator@npm:1.1.0" @@ -8965,11 +9009,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: ^6.0.1 - checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + checksum: db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b languageName: node linkType: hard @@ -9035,31 +9079,30 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" +"tar@npm:^7.5.2": + version: 7.5.3 + resolution: "tar@npm:7.5.3" dependencies: "@isaacs/fs-minipass": ^4.0.0 chownr: ^3.0.0 minipass: ^7.1.2 - minizlib: ^3.0.1 - mkdirp: ^3.0.1 + minizlib: ^3.1.0 yallist: ^5.0.0 - checksum: 8485350c0688331c94493031f417df069b778aadb25598abdad51862e007c39d1dd5310702c7be4a6784731a174799d8885d2fde0484269aea205b724d7b2ffa + checksum: 146cd30727cd886c6cbed9e8f67c280f98bcab57c69d7acdb44d8a743987aac9b27cb10a98c2ea3cd416ded44ee93cad84c4acd6abad900f6aaa4845ceaf1b46 languageName: node linkType: hard "terser@npm:^5.15.0": - version: 5.43.1 - resolution: "terser@npm:5.43.1" + version: 5.46.0 + resolution: "terser@npm:5.46.0" dependencies: "@jridgewell/source-map": ^0.3.3 - acorn: ^8.14.0 + acorn: ^8.15.0 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 1d51747f4540a0842139c2f2617e88d68a26da42d7571cda8955e1bd8febac6e60bc514c258781334e1724aeeccfbd511473eb9d8d831435e4e5fad1ce7f6e8b + checksum: 39d28f3723e84e80ddb4576a441adb12a6d365258fb9262e25f8b6d1e4514954e81f711008ee2ad9927f00b860a5bcbd4c1db7a6873d0f712bdcc667fb7b7557 languageName: node linkType: hard @@ -9089,12 +9132,12 @@ __metadata: linkType: hard "tinyglobby@npm:^0.2.12": - version: 0.2.14 - resolution: "tinyglobby@npm:0.2.14" + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: - fdir: ^6.4.4 - picomatch: ^4.0.2 - checksum: 261e986e3f2062dec3a582303bad2ce31b4634b9348648b46828c000d464b012cf474e38f503312367d4117c3f2f18611992738fca684040758bba44c24de522 + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 languageName: node linkType: hard @@ -9114,7 +9157,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1": +"toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 @@ -9280,10 +9323,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.10.0": - version: 7.10.0 - resolution: "undici-types@npm:7.10.0" - checksum: 6917fcd8c80963919fe918952f9243a6749af0e3f759a39f8d2c2486144a66c86ae4125aebbce700b636cb1dcd45e85eb8c49c60d60738a97b63f0e89ef9b053 +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 1ef68fc6c5bad200c8b6f17de8e5bc5cfdcadc164ba8d7208cd087cfa8583d922d8316a7fd76c9a658c22b4123d3ff847429185094484fbc65377d695c905857 languageName: node linkType: hard @@ -9304,35 +9347,35 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" - checksum: 9e3151e1d0bc6be35c4cef105e317c04090364173e8462005b5cde08a1e7c858b6586486cfebac39dc2c6c8c9ee24afb245de6d527604866edfa454fe2a35fae +"unicode-match-property-value-ecmascript@npm:^2.2.1": + version: 2.2.1 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.1" + checksum: e6c73e07bb4dc4aa399797a14b170e84a30ed290bcf97cc4305cf67dde8744119721ce17cef03f4f9d4ff48654bfa26eadc7fe1e8dd4b71b8f3b2e9a9742f013 languageName: node linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + version: 2.2.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.2.0" + checksum: 0dd0f6e70130c59b4a841bac206758f70227b113145e4afe238161e3e8540e8eb79963e7a228cd90ad13d499e96f7ef4ee8940835404b2181ad9bf9c174818e3 languageName: node linkType: hard -"unique-filename@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-filename@npm:4.0.0" +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" dependencies: - unique-slug: ^5.0.0 - checksum: 6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df + unique-slug: ^6.0.0 + checksum: a5f67085caef74bdd2a6869a200ed5d68d171f5cc38435a836b5fd12cce4e4eb55e6a190298035c325053a5687ed7a3c96f0a91e82215fd14729769d9ac57d9b languageName: node linkType: hard -"unique-slug@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-slug@npm:5.0.0" +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 222d0322bc7bbf6e45c08967863212398313ef73423f4125e075f893a02405a5ffdbaaf150f7dd1e99f8861348a486dd079186d27c5f2c60e465b7dcbb1d3e5b + checksum: ad6cf238b10292d944521714d31bc9f3ca79fa80cb7a154aad183056493f98e85de669412c6bbfe527ffa9bdeff36d3dd4d5bccaf562c794f2580ab11932b691 languageName: node linkType: hard @@ -9343,16 +9386,16 @@ __metadata: languageName: node linkType: hard -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": +"unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.3": - version: 1.1.3 - resolution: "update-browserslist-db@npm:1.1.3" +"update-browserslist-db@npm:^1.2.0": + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" dependencies: escalade: ^3.2.0 picocolors: ^1.1.1 @@ -9360,7 +9403,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 7b6d8d08c34af25ee435bccac542bedcb9e57c710f3c42421615631a80aa6dd28b0a81c9d2afbef53799d482fb41453f714b8a7a0a8003e3b4ec8fb1abb819af + checksum: 6f209a97ae8eacdd3a1ef2eb365adf49d1e2a757e5b2dd4ac87dc8c99236cbe3e572d3e605a87dd7b538a11751b71d9f93edc47c7405262a293a493d155316cd languageName: node linkType: hard @@ -9374,11 +9417,11 @@ __metadata: linkType: hard "use-latest-callback@npm:^0.2.1": - version: 0.2.4 - resolution: "use-latest-callback@npm:0.2.4" + version: 0.2.6 + resolution: "use-latest-callback@npm:0.2.6" peerDependencies: react: ">=16.8" - checksum: 60c3a6b1b6567e1794f9e48cd86b8cde8a149485cc2fed60570f69ec3b157f6812e0ff0a877f0b971592fb9254b1363cc21c120fd1fc993b1dad1406c69211df + checksum: 67a245bf91b23ef0d2d2c8a52845da62e006867bd9d93a99ca4d2f859101fcd54c7afd4f5a3b8bb5d24283f516e7e41bd8226250ee39affc33bd1cfd622a5cfb languageName: node linkType: hard @@ -9523,8 +9566,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: ^1.0.7 call-bind: ^1.0.8 @@ -9533,7 +9576,7 @@ __metadata: get-proto: ^1.0.1 gopd: ^1.2.0 has-tostringtag: ^1.0.2 - checksum: 162d2a07f68ea323f88ed9419861487ce5d02cb876f2cf9dd1e428d04a63133f93a54f89308f337b27cabd312ee3d027cae4a79002b2f0a85b79b9ef4c190670 + checksum: 82527027127c3a6f7b278b5c0059605b968bec780d1ddd7c0ce3c2172ae4b9d2217486123107e31d229ff57ed8cc2bc76d751f290f392ee6d3aa27b26d2ffc12 languageName: node linkType: hard @@ -9548,14 +9591,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^5.0.0": - version: 5.0.0 - resolution: "which@npm:5.0.0" +"which@npm:^6.0.0": + version: 6.0.0 + resolution: "which@npm:6.0.0" dependencies: isexe: ^3.1.1 bin: node-which: bin/which.js - checksum: 6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90 + checksum: df19b2cd8aac94b333fa29b42e8e371a21e634a742a3b156716f7752a5afe1d73fb5d8bce9b89326f453d96879e8fe626eb421e0117eb1a3ce9fd8c97f6b7db9 languageName: node linkType: hard @@ -9728,11 +9771,11 @@ __metadata: linkType: hard "yaml@npm:^2.2.1": - version: 2.8.1 - resolution: "yaml@npm:2.8.1" + version: 2.8.2 + resolution: "yaml@npm:2.8.2" bin: yaml: bin.mjs - checksum: 35b46150d48bc1da2fd5b1521a48a4fa36d68deaabe496f3c3fa9646d5796b6b974f3930a02c4b5aee6c85c860d7d7f79009416724465e835f40b87898c36de4 + checksum: 5ffd9f23bc7a450129cbd49dcf91418988f154ede10c83fd28ab293661ac2783c05da19a28d76a22cbd77828eae25d4bd7453f9a9fe2d287d085d72db46fd105 languageName: node linkType: hard From 272c43eed6abf691040129b56cc599477e3d4c7d Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Wed, 11 Feb 2026 11:16:46 +0100 Subject: [PATCH 16/24] Changed documentID to documentUuid --- src/hooks/operations/document/useAddDocumentPage.ts | 2 +- src/hooks/operations/document/useCreateDocumentPDF.ts | 2 +- src/hooks/operations/document/useCreateDocumentTIFF.ts | 4 ++-- src/hooks/operations/document/useModifyPage.ts | 4 ++-- src/hooks/operations/document/useRemovePage.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/hooks/operations/document/useAddDocumentPage.ts b/src/hooks/operations/document/useAddDocumentPage.ts index cd3f47c..d96ee30 100644 --- a/src/hooks/operations/document/useAddDocumentPage.ts +++ b/src/hooks/operations/document/useAddDocumentPage.ts @@ -38,7 +38,7 @@ export function useAddDocumentPage() { /** Add a page to the document */ const documentResult = await ScanbotDocument.addPages({ - documentID, + documentUuid: documentID, images: [selectedImageResult], options: new AddPageOptions({ documentDetection: true, diff --git a/src/hooks/operations/document/useCreateDocumentPDF.ts b/src/hooks/operations/document/useCreateDocumentPDF.ts index 1cc3f9c..6cc005a 100644 --- a/src/hooks/operations/document/useCreateDocumentPDF.ts +++ b/src/hooks/operations/document/useCreateDocumentPDF.ts @@ -33,7 +33,7 @@ export function useCreateDocumentPDF() { : undefined; const pdfFileUri = await ScanbotPdfGenerator.generateFromDocument({ - documentID: documentID, + documentUuid: documentID, pdfConfiguration: new PdfConfiguration(), ocrConfiguration: ocrConfiguration, }); diff --git a/src/hooks/operations/document/useCreateDocumentTIFF.ts b/src/hooks/operations/document/useCreateDocumentTIFF.ts index 5c5bb8e..521a034 100644 --- a/src/hooks/operations/document/useCreateDocumentTIFF.ts +++ b/src/hooks/operations/document/useCreateDocumentTIFF.ts @@ -27,8 +27,8 @@ export function useCreateDocumentTIFF() { * Create a tiff file from the document */ const tiffFileUri = await ScanbotTiffGenerator.generateFromDocument({ - documentID, - configuration: new TiffGeneratorParameters({ + documentUuid: documentID, + tiffGeneratorParameters: new TiffGeneratorParameters({ binarizationFilter: binarized ? new ScanbotBinarizationFilter() : undefined, diff --git a/src/hooks/operations/document/useModifyPage.ts b/src/hooks/operations/document/useModifyPage.ts index dd01688..262814f 100644 --- a/src/hooks/operations/document/useModifyPage.ts +++ b/src/hooks/operations/document/useModifyPage.ts @@ -33,8 +33,8 @@ export function useModifyPage() { } /** Modify the document page */ const documentResult = await ScanbotDocument.modifyPage({ - documentID: documentID, - pageID: pageID, + documentUuid: documentID, + pageUuid: pageID, options: new ModifyPageOptions({ filters: [parametricFilter], }), diff --git a/src/hooks/operations/document/useRemovePage.ts b/src/hooks/operations/document/useRemovePage.ts index b734ac7..70ee361 100644 --- a/src/hooks/operations/document/useRemovePage.ts +++ b/src/hooks/operations/document/useRemovePage.ts @@ -26,8 +26,8 @@ export function useRemovePage() { } /** Remove the document page */ const documentResult = await ScanbotDocument.removePages({ - pageIDs: [pageID], - documentID: documentID, + pageUuids: [pageID], + documentUuid: documentID, }); /** * Handle the result From e2052f214bc5c2ab8ea7e6b5d0fe85091704b28d Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Wed, 11 Feb 2026 11:22:21 +0100 Subject: [PATCH 17/24] Added onError callbacks to Classic UI Components --- src/screens/CroppingScreen.tsx | 7 +++-- src/screens/DocumentScannerViewScreen.tsx | 38 ++++++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/screens/CroppingScreen.tsx b/src/screens/CroppingScreen.tsx index 0bdfdc0..8750a69 100644 --- a/src/screens/CroppingScreen.tsx +++ b/src/screens/CroppingScreen.tsx @@ -2,11 +2,12 @@ import {Image, LayoutChangeEvent, StyleSheet, View} from 'react-native'; import {ActionButton} from '@components'; import React, {useCallback, useRef, useState} from 'react'; import {useRoute} from '@react-navigation/native'; -import {CroppingViewScreenRouteProp, infoMessageAlert} from '@utils'; +import {CroppingViewScreenRouteProp} from '@utils'; import { CroppingViewResult, EncodeImageOptions, + SBError, ScanbotCroppingView, ScanbotCroppingViewHandle, } from 'react-native-scanbot-sdk'; @@ -48,8 +49,8 @@ export function CroppingScreen() { [], ); - const onError = useCallback((message: string) => { - infoMessageAlert(message); + const onError = useCallback((error: SBError) => { + console.warn('Cropping view error', error.type); }, []); const onLayoutChange = useCallback( diff --git a/src/screens/DocumentScannerViewScreen.tsx b/src/screens/DocumentScannerViewScreen.tsx index a4eb8f6..75638d1 100644 --- a/src/screens/DocumentScannerViewScreen.tsx +++ b/src/screens/DocumentScannerViewScreen.tsx @@ -3,7 +3,10 @@ import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native'; import {ActionButton} from '@components'; import { + DocumentDetectionResult, DocumentDetectionStatus, + ImageRef, + SBError, ScanbotDocumentScannerView, ScanbotDocumentScannerViewHandle, } from 'react-native-scanbot-sdk'; @@ -29,19 +32,37 @@ export function DocumentScannerViewScreen() { ref.current?.snapDocument(); }, []); - const onDocumentResult = useCallback((base64Image: string) => { - setResult(base64Image); - }, []); + const onDocumentResult = useCallback( + async ( + original: ImageRef, + documentImage?: ImageRef, + _documentDetectionResult?: DocumentDetectionResult, + ) => { + try { + const image = await (documentImage ?? original).encodeImage(); + if (image) { + setResult(image); + } + } catch (error) { + console.warn('Failed to encode image', error); + } + }, + [], + ); const onDetectionResult = useCallback( - (status: DocumentDetectionStatus) => { - if (status !== detectionState) { - setDetectionState(status); + (detectionResult: DocumentDetectionResult) => { + if (detectionResult.status !== detectionState) { + setDetectionState(detectionResult.status); } }, [detectionState], ); + const onError = useCallback((error: SBError) => { + console.warn('Document scanner error', error.type); + }, []); + if (result) { return ( @@ -62,8 +83,9 @@ export function DocumentScannerViewScreen() { Date: Wed, 11 Feb 2026 13:01:05 +0100 Subject: [PATCH 18/24] Update code snippets --- src/codeSnippets/check/action-bar.ts | 6 +-- src/codeSnippets/check/finder-overlay.ts | 8 ++-- src/codeSnippets/check/introduction-screen.ts | 6 +-- src/codeSnippets/check/launching-scanner.ts | 6 +-- src/codeSnippets/check/localization.ts | 6 +-- src/codeSnippets/check/palette.ts | 6 +-- src/codeSnippets/check/top-bar.ts | 6 +-- src/codeSnippets/check/user-guidance.ts | 6 +-- src/codeSnippets/credit-card/action-bar.ts | 8 ++-- .../credit-card/finder-overlay.ts | 8 ++-- .../credit-card/introduction-screen.ts | 8 ++-- .../credit-card/launching-scanner.ts | 8 ++-- src/codeSnippets/credit-card/localization.ts | 8 ++-- src/codeSnippets/credit-card/palette.ts | 8 ++-- src/codeSnippets/credit-card/top-bar.ts | 8 ++-- src/codeSnippets/credit-card/user-guidance.ts | 8 ++-- src/codeSnippets/dde/action-bar.ts | 7 ++-- src/codeSnippets/dde/finder-overlay.ts | 9 +++-- src/codeSnippets/dde/introduction-screen.ts | 7 ++-- src/codeSnippets/dde/launching-scanner.ts | 7 ++-- src/codeSnippets/dde/localization.ts | 7 ++-- src/codeSnippets/dde/palette.ts | 7 ++-- src/codeSnippets/dde/top-bar.ts | 7 ++-- src/codeSnippets/dde/user-guidance.ts | 7 ++-- .../document/document-quality-analyzer.ts | 7 ++-- .../apply-filters-on-document.ts | 20 ++++++---- .../apply-filters-on-image.ts | 26 +++++++----- .../create-document-from-legacy-pages.ts | 4 +- .../document/migration/cropping-screen/v1.ts | 14 ------- .../document/migration/cropping-screen/v2.ts | 7 +--- .../document/migration/document-scanner/v1.ts | 17 -------- .../document/migration/document-scanner/v2.ts | 6 +-- .../migration/finder-document-scanner/v1.ts | 19 --------- .../migration/finder-document-scanner/v2.ts | 8 ++-- .../result-handling/create-document-pdf.ts | 12 ++++-- .../result-handling/create-document-tiff.ts | 12 +++--- .../result-handling/create-pdf-from-images.ts | 6 +-- .../create-sandwich-pdf-from-images.ts | 6 +-- .../result-handling/create-sandwich-pdf.ts | 12 ++++-- .../create-tiff-from-images.ts | 9 +++-- .../result-handling/document-storage.ts | 26 ++++++------ .../document/rtuui/launching-scanner.ts | 7 +--- .../rtuui/scanning-flow/acknowledge-screen.ts | 7 +--- .../rtuui/scanning-flow/cropping-screen.ts | 7 +--- .../scanning-flow/introduction-screen.ts | 6 +-- .../rtuui/scanning-flow/localization.ts | 7 +--- .../document/rtuui/scanning-flow/palete.ts | 7 +--- .../rtuui/scanning-flow/reorder-screen.ts | 7 +--- .../rtuui/scanning-flow/review-screen.ts | 7 +--- .../rtuui/scanning-flow/scanning-screen.ts | 6 +-- .../scanning-flow/single-page-scanning.ts | 7 +--- .../rtuui/useCases/automatic-filtering.ts | 8 ++-- .../multi-page-scanning-with-review.ts | 7 +--- .../single-page-scanning-with-finder.ts | 8 ++-- .../single-page-scanning-without-review.ts | 7 +--- .../create-document-from-pdf.ts | 9 ++++- .../document-detection-cropping-ui.ts | 14 +++---- .../scan-from-image/document-detection.ts | 12 ++++-- .../extract-images-from-pdf.ts | 6 +-- src/codeSnippets/getImageData.ts | 4 +- src/codeSnippets/init/custom-storage.ts | 9 +++-- src/codeSnippets/init/encryption.ts | 9 +++-- src/codeSnippets/init/image-quality.ts | 9 +++-- .../init/initialize-scanbotSDK.ts | 40 +++++++++---------- src/codeSnippets/init/license-key.ts | 35 ++++++++-------- src/codeSnippets/init/logging.ts | 11 ++--- src/codeSnippets/init/storage-encryption.ts | 11 ++--- src/codeSnippets/license-handling.ts | 4 +- src/codeSnippets/mockCamera.ts | 10 ++--- src/codeSnippets/mrz/action-bar.ts | 6 +-- src/codeSnippets/mrz/finder-overlay.ts | 6 +-- src/codeSnippets/mrz/introduction-screen.ts | 6 +-- src/codeSnippets/mrz/launching-scanner.ts | 6 +-- src/codeSnippets/mrz/localization.ts | 6 +-- src/codeSnippets/mrz/palette.ts | 6 +-- src/codeSnippets/mrz/top-bar.ts | 6 +-- src/codeSnippets/mrz/user-guidance.ts | 6 +-- src/codeSnippets/text-pattern/action-bar.ts | 8 ++-- .../text-pattern/finder-overlay.ts | 8 ++-- .../text-pattern/introduction-screen.ts | 8 ++-- .../text-pattern/launching-scanner.ts | 8 ++-- src/codeSnippets/text-pattern/localization.ts | 8 ++-- src/codeSnippets/text-pattern/palette.ts | 8 ++-- src/codeSnippets/text-pattern/top-bar.ts | 8 ++-- .../text-pattern/user-guidance.ts | 8 ++-- src/codeSnippets/vin/action-bar.ts | 6 +-- src/codeSnippets/vin/finder-overlay.ts | 8 ++-- src/codeSnippets/vin/introduction-screen.ts | 6 +-- src/codeSnippets/vin/launching-scanner.ts | 6 +-- src/codeSnippets/vin/localization.ts | 6 +-- src/codeSnippets/vin/palette.ts | 6 +-- src/codeSnippets/vin/topBar.ts | 6 +-- src/codeSnippets/vin/user-guidance.ts | 6 +-- 93 files changed, 404 insertions(+), 422 deletions(-) delete mode 100644 src/codeSnippets/document/migration/cropping-screen/v1.ts delete mode 100644 src/codeSnippets/document/migration/document-scanner/v1.ts delete mode 100644 src/codeSnippets/document/migration/finder-document-scanner/v1.ts diff --git a/src/codeSnippets/check/action-bar.ts b/src/codeSnippets/check/action-bar.ts index bda5446..78b9f62 100644 --- a/src/codeSnippets/check/action-bar.ts +++ b/src/codeSnippets/check/action-bar.ts @@ -1,7 +1,7 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,7 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/finder-overlay.ts b/src/codeSnippets/check/finder-overlay.ts index 1032132..3ca324b 100644 --- a/src/codeSnippets/check/finder-overlay.ts +++ b/src/codeSnippets/check/finder-overlay.ts @@ -1,9 +1,9 @@ import { + AspectRatio, CheckScannerScreenConfiguration, FinderCorneredStyle, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -22,7 +22,7 @@ async function startScanning() { strokeWidth: 2, }); /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/introduction-screen.ts b/src/codeSnippets/check/introduction-screen.ts index 86c756f..3ac0d8f 100644 --- a/src/codeSnippets/check/introduction-screen.ts +++ b/src/codeSnippets/check/introduction-screen.ts @@ -1,9 +1,9 @@ import { CheckIntroCustomImage, CheckScannerScreenConfiguration, - startCheckScanner, + ScanbotCheck, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -32,7 +32,7 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/launching-scanner.ts b/src/codeSnippets/check/launching-scanner.ts index fefb572..123fd12 100644 --- a/src/codeSnippets/check/launching-scanner.ts +++ b/src/codeSnippets/check/launching-scanner.ts @@ -1,14 +1,14 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new CheckScannerScreenConfiguration(); /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/localization.ts b/src/codeSnippets/check/localization.ts index b3f5d27..327e590 100644 --- a/src/codeSnippets/check/localization.ts +++ b/src/codeSnippets/check/localization.ts @@ -1,7 +1,7 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +17,7 @@ async function startScanning() { 'Localized completionOverlaySuccessMessage'; localization.introScreenText = 'Localized introScreenText'; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/palette.ts b/src/codeSnippets/check/palette.ts index 11e4729..b79de40 100644 --- a/src/codeSnippets/check/palette.ts +++ b/src/codeSnippets/check/palette.ts @@ -1,7 +1,7 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,7 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/top-bar.ts b/src/codeSnippets/check/top-bar.ts index 33bb103..0f5bd12 100644 --- a/src/codeSnippets/check/top-bar.ts +++ b/src/codeSnippets/check/top-bar.ts @@ -1,7 +1,7 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,7 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/check/user-guidance.ts b/src/codeSnippets/check/user-guidance.ts index 8ae2636..bed49e2 100644 --- a/src/codeSnippets/check/user-guidance.ts +++ b/src/codeSnippets/check/user-guidance.ts @@ -1,7 +1,7 @@ import { CheckScannerScreenConfiguration, - startCheckScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCheck, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -24,7 +24,7 @@ async function startScanning() { /** Customize the scan status guidance background */ scanStatusUserGuidance.background.fillColor = '#C8193C'; /** Start the Check Scanner UI */ - const checkScannerResult = await startCheckScanner(configuration); + const checkScannerResult = await ScanbotCheck.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (checkScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/action-bar.ts b/src/codeSnippets/credit-card/action-bar.ts index a97fc4d..24d3de3 100644 --- a/src/codeSnippets/credit-card/action-bar.ts +++ b/src/codeSnippets/credit-card/action-bar.ts @@ -1,7 +1,7 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,9 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/finder-overlay.ts b/src/codeSnippets/credit-card/finder-overlay.ts index d1293a6..0ecc332 100644 --- a/src/codeSnippets/credit-card/finder-overlay.ts +++ b/src/codeSnippets/credit-card/finder-overlay.ts @@ -1,8 +1,8 @@ import { CreditCardScannerScreenConfiguration, FinderCorneredStyle, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -16,7 +16,9 @@ async function startScanning() { strokeWidth: 2, }); /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/introduction-screen.ts b/src/codeSnippets/credit-card/introduction-screen.ts index 73595bc..400a9d9 100644 --- a/src/codeSnippets/credit-card/introduction-screen.ts +++ b/src/codeSnippets/credit-card/introduction-screen.ts @@ -1,9 +1,9 @@ import { CreditCardIntroCustomImage, CreditCardScannerScreenConfiguration, - startCreditCardScanner, + ScanbotCreditCard, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -30,7 +30,9 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/launching-scanner.ts b/src/codeSnippets/credit-card/launching-scanner.ts index 8a5de89..975f88b 100644 --- a/src/codeSnippets/credit-card/launching-scanner.ts +++ b/src/codeSnippets/credit-card/launching-scanner.ts @@ -1,14 +1,16 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new CreditCardScannerScreenConfiguration(); /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/localization.ts b/src/codeSnippets/credit-card/localization.ts index 97e8a83..5b00bfd 100644 --- a/src/codeSnippets/credit-card/localization.ts +++ b/src/codeSnippets/credit-card/localization.ts @@ -1,7 +1,7 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -18,7 +18,9 @@ async function startScanning() { localization.creditCardUserGuidanceNoCardFound = 'Localized creditCardUserGuidanceNoCardFound'; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/palette.ts b/src/codeSnippets/credit-card/palette.ts index 9ef5e6e..a940840 100644 --- a/src/codeSnippets/credit-card/palette.ts +++ b/src/codeSnippets/credit-card/palette.ts @@ -1,7 +1,7 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,9 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/top-bar.ts b/src/codeSnippets/credit-card/top-bar.ts index 0f1a01b..b10a135 100644 --- a/src/codeSnippets/credit-card/top-bar.ts +++ b/src/codeSnippets/credit-card/top-bar.ts @@ -1,7 +1,7 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,9 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/credit-card/user-guidance.ts b/src/codeSnippets/credit-card/user-guidance.ts index a5de09d..0386171 100644 --- a/src/codeSnippets/credit-card/user-guidance.ts +++ b/src/codeSnippets/credit-card/user-guidance.ts @@ -1,7 +1,7 @@ import { CreditCardScannerScreenConfiguration, - startCreditCardScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotCreditCard, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,9 @@ async function startScanning() { /** Customize the status user guidance background */ scanStatusUserGuidance.background.fillColor = '#C8193C'; /** Start the Credit Card Scanner **/ - const creditCardResult = await startCreditCardScanner(configuration); + const creditCardResult = await ScanbotCreditCard.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (creditCardResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/action-bar.ts b/src/codeSnippets/dde/action-bar.ts index 2289ccd..e28c038 100644 --- a/src/codeSnippets/dde/action-bar.ts +++ b/src/codeSnippets/dde/action-bar.ts @@ -1,7 +1,7 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,8 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/finder-overlay.ts b/src/codeSnippets/dde/finder-overlay.ts index 86f2aef..72d7392 100644 --- a/src/codeSnippets/dde/finder-overlay.ts +++ b/src/codeSnippets/dde/finder-overlay.ts @@ -1,9 +1,9 @@ import { + AspectRatio, DocumentDataExtractorScreenConfiguration, FinderCorneredStyle, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -22,7 +22,8 @@ async function startScanning() { strokeWidth: 2, }); /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/introduction-screen.ts b/src/codeSnippets/dde/introduction-screen.ts index 306f866..ba19966 100644 --- a/src/codeSnippets/dde/introduction-screen.ts +++ b/src/codeSnippets/dde/introduction-screen.ts @@ -1,9 +1,9 @@ import { DocumentDataExtractorScreenConfiguration, DocumentDataIntroCustomImage, - startDocumentDataExtractor, + ScanbotDocumentDataExtractor, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -33,7 +33,8 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/launching-scanner.ts b/src/codeSnippets/dde/launching-scanner.ts index 4bd5111..308b045 100644 --- a/src/codeSnippets/dde/launching-scanner.ts +++ b/src/codeSnippets/dde/launching-scanner.ts @@ -1,14 +1,15 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new DocumentDataExtractorScreenConfiguration(); /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { // ddeScannerResult.data.document diff --git a/src/codeSnippets/dde/localization.ts b/src/codeSnippets/dde/localization.ts index 9b497f5..3a9fb77 100644 --- a/src/codeSnippets/dde/localization.ts +++ b/src/codeSnippets/dde/localization.ts @@ -1,7 +1,7 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +17,8 @@ async function startScanning() { 'Localized completionOverlaySuccessMessage'; localization.introScreenText = 'Localized introScreenText'; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/palette.ts b/src/codeSnippets/dde/palette.ts index a7d5a37..50dc187 100644 --- a/src/codeSnippets/dde/palette.ts +++ b/src/codeSnippets/dde/palette.ts @@ -1,7 +1,7 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,8 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/top-bar.ts b/src/codeSnippets/dde/top-bar.ts index 64275ef..1606aaa 100644 --- a/src/codeSnippets/dde/top-bar.ts +++ b/src/codeSnippets/dde/top-bar.ts @@ -1,7 +1,7 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,8 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/dde/user-guidance.ts b/src/codeSnippets/dde/user-guidance.ts index f0a4fea..14f450f 100644 --- a/src/codeSnippets/dde/user-guidance.ts +++ b/src/codeSnippets/dde/user-guidance.ts @@ -1,7 +1,7 @@ import { DocumentDataExtractorScreenConfiguration, - startDocumentDataExtractor, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocumentDataExtractor, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -24,7 +24,8 @@ async function startScanning() { /** Customize the scan status guidance background */ scanStatusUserGuidance.background.fillColor = '#C8193C'; /** Start the DDE Scanner UI */ - const ddeScannerResult = await startDocumentDataExtractor(configuration); + const ddeScannerResult = + await ScanbotDocumentDataExtractor.startExtractorScreen(configuration); /** Handle the result if the status is 'OK' */ if (ddeScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/document/document-quality-analyzer.ts b/src/codeSnippets/document/document-quality-analyzer.ts index 889ee66..43a5a97 100644 --- a/src/codeSnippets/document/document-quality-analyzer.ts +++ b/src/codeSnippets/document/document-quality-analyzer.ts @@ -1,6 +1,7 @@ import {selectImageFromLibrary} from '@utils'; -import ScanbotSDK, { +import { DocumentQualityAnalyzerConfiguration, + ScanbotDocument, } from 'react-native-scanbot-sdk'; async function documentQualityAnalyzer() { @@ -15,8 +16,8 @@ async function documentQualityAnalyzer() { } /** Detect the quality of the document on image **/ - const quality = await ScanbotSDK.documentQualityAnalyzer({ - imageFileUri: selectedImageResult, + const quality = await ScanbotDocument.analyzeQualityOnImage({ + image: selectedImageResult, configuration: new DocumentQualityAnalyzerConfiguration(), }); } catch (e: any) { diff --git a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts index 80c1154..f66324d 100644 --- a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts +++ b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts @@ -1,9 +1,13 @@ -import ScanbotSDK, {ScanbotBinarizationFilter} from 'react-native-scanbot-sdk'; +import { + ModifyPageOptions, + ScanbotBinarizationFilter, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function applyFiltersAndRotateScannedPage() { try { /** Load a document from storage or create a new one */ - const document = await ScanbotSDK.Document.loadDocument( + const document = await ScanbotDocument.loadDocument( 'SOME_STORED_DOCUMENT_ID', ); /** Get the first page of the document */ @@ -12,14 +16,14 @@ async function applyFiltersAndRotateScannedPage() { * Apply ScanbotBinarizationFilter to the page * Rotate the page clockwise by 90 degrees */ - const documentResultWithModifiedPage = await ScanbotSDK.Document.modifyPage( - { - documentID: document.uuid, - pageID: page.uuid, + const documentResultWithModifiedPage = await ScanbotDocument.modifyPage({ + documentUuid: document.uuid, + pageUuid: page.uuid, + options: new ModifyPageOptions({ filters: [new ScanbotBinarizationFilter()], rotation: 'CLOCKWISE_90', - }, - ); + }), + }); /** Handle the document */ } catch (e: any) { console.error(e.message); diff --git a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts index 84f3802..0c6d700 100644 --- a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts +++ b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-image.ts @@ -1,5 +1,8 @@ import {selectImageFromLibrary} from '@utils'; -import ScanbotSDK, {ScanbotBinarizationFilter} from 'react-native-scanbot-sdk'; +import { + ScanbotBinarizationFilter, + ScanbotImageProcessor, +} from 'react-native-scanbot-sdk'; export async function applyFiltersOnImage() { try { @@ -11,18 +14,21 @@ export async function applyFiltersOnImage() { if (!selectedImageResult) { return; } + /** Apply ScanbotBinarizationFilter to the image */ - const imageWithFilters = await ScanbotSDK.applyImageFilters( - selectedImageResult, - [new ScanbotBinarizationFilter()], - ); + const imageWithFilters = + await ScanbotImageProcessor.applyFiltersOnImageFile({ + imageFileUri: selectedImageResult, + filters: [new ScanbotBinarizationFilter()], + }); + /** Rotate the page counterclockwise by 90 degrees */ - const rotatedImage = await ScanbotSDK.rotateImage( - imageWithFilters.imageFileUri, - 90, - ); + const rotatedImage = await ScanbotImageProcessor.rotateImageFile({ + imageFileUri: imageWithFilters, + rotation: 'CLOCKWISE_90', + }); - return rotatedImage.imageFileUri; + return rotatedImage; } catch (e: any) { console.error(e.message); } diff --git a/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts b/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts index a307996..6c839b1 100644 --- a/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts +++ b/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts @@ -1,11 +1,11 @@ -import ScanbotSDK, {Page} from 'react-native-scanbot-sdk'; +import {Page, ScanbotDocument} from 'react-native-scanbot-sdk'; async function createDocumentWithLegacyPages(pages: Page[]) { /** * Create a document with a UUID * Add pages to the document from 'legacy' pages */ - const documentData = ScanbotSDK.Document.createDocumentFromLegacyPages({ + const documentData = ScanbotDocument.createDocumentFromLegacyPages({ pages: pages, }); diff --git a/src/codeSnippets/document/migration/cropping-screen/v1.ts b/src/codeSnippets/document/migration/cropping-screen/v1.ts deleted file mode 100644 index 861ffb6..0000000 --- a/src/codeSnippets/document/migration/cropping-screen/v1.ts +++ /dev/null @@ -1,14 +0,0 @@ -import ScanbotSDK, {Page, CroppingConfiguration} from 'react-native-scanbot-sdk'; - -async function croppingScreen(page: Page) { - const configuration: CroppingConfiguration = { - doneButtonTitle: 'Apply', - topBarBackgroundColor: '#ffffff', - bottomBarBackgroundColor: '#ffffff', - }; - - const pageResult = await ScanbotSDK.UI.startCroppingScreen( - page, - configuration, - ); -} diff --git a/src/codeSnippets/document/migration/cropping-screen/v2.ts b/src/codeSnippets/document/migration/cropping-screen/v2.ts index a1bc959..c54dbab 100644 --- a/src/codeSnippets/document/migration/cropping-screen/v2.ts +++ b/src/codeSnippets/document/migration/cropping-screen/v2.ts @@ -1,7 +1,4 @@ -import { - CroppingConfiguration, - startCroppingScreen, -} from 'react-native-scanbot-sdk/ui_v2'; +import {CroppingConfiguration, ScanbotDocument} from 'react-native-scanbot-sdk'; async function croppingScreen(documentID: string, pageID: string) { const configuration = new CroppingConfiguration({ @@ -13,5 +10,5 @@ async function croppingScreen(documentID: string, pageID: string) { // Equivalent to doneButtonTitle: 'Apply', configuration.localization.croppingTopBarConfirmButtonTitle = 'Apply'; - const documentData = await startCroppingScreen(configuration); + const documentData = await ScanbotDocument.startCroppingScreen(configuration); } diff --git a/src/codeSnippets/document/migration/document-scanner/v1.ts b/src/codeSnippets/document/migration/document-scanner/v1.ts deleted file mode 100644 index c49f234..0000000 --- a/src/codeSnippets/document/migration/document-scanner/v1.ts +++ /dev/null @@ -1,17 +0,0 @@ -import ScanbotSDK, { - DocumentScannerScreenConfiguration, -} from 'react-native-scanbot-sdk'; - -async function documentScanner() { - const configuration: DocumentScannerScreenConfiguration = { - ignoreOrientationMismatch: true, - autoSnappingSensitivity: 0.67, - topBarBackgroundColor: '#ffffff', - bottomBarBackgroundColor: '#ffffff', - textHintOK: "Don't move.\nCapturing document...", - multiPageButtonHidden: true, - multiPageEnabled: false, - }; - - const pageResult = ScanbotSDK.UI.startDocumentScanner(configuration); -} diff --git a/src/codeSnippets/document/migration/document-scanner/v2.ts b/src/codeSnippets/document/migration/document-scanner/v2.ts index 307ce42..d478256 100644 --- a/src/codeSnippets/document/migration/document-scanner/v2.ts +++ b/src/codeSnippets/document/migration/document-scanner/v2.ts @@ -1,8 +1,8 @@ import { DocumentScanningFlow, - startDocumentScanner, PageSnapFunnelAnimation, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function documentScanner() { const configuration = new DocumentScanningFlow(); @@ -49,5 +49,5 @@ async function documentScanner() { // Equivalent to multiPageEnabled: false configuration.outputSettings.pagesScanLimit = 1; - const documentData = await startDocumentScanner(configuration); + const documentData = await ScanbotDocument.startScanner(configuration); } diff --git a/src/codeSnippets/document/migration/finder-document-scanner/v1.ts b/src/codeSnippets/document/migration/finder-document-scanner/v1.ts deleted file mode 100644 index ed5fea8..0000000 --- a/src/codeSnippets/document/migration/finder-document-scanner/v1.ts +++ /dev/null @@ -1,19 +0,0 @@ -import ScanbotSDK, { - AspectRatio, - FinderDocumentScannerConfiguration, -} from 'react-native-scanbot-sdk'; - -async function finderDocumentScanner() { - const configuration: FinderDocumentScannerConfiguration = { - topBarBackgroundColor: '#ffffff', - finderAspectRatio: new AspectRatio({ - width: 3, - height: 4, - }), - shutterButtonHidden: true, - }; - - const pageResult = await ScanbotSDK.UI.startFinderDocumentScanner( - configuration, - ); -} diff --git a/src/codeSnippets/document/migration/finder-document-scanner/v2.ts b/src/codeSnippets/document/migration/finder-document-scanner/v2.ts index c5b76fc..26cae5a 100644 --- a/src/codeSnippets/document/migration/finder-document-scanner/v2.ts +++ b/src/codeSnippets/document/migration/finder-document-scanner/v2.ts @@ -1,10 +1,10 @@ import { + AspectRatio, DocumentScanningFlow, NoButtonMode, PageSnapFunnelAnimation, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function finderDocumentScanner() { const configuration = new DocumentScanningFlow(); @@ -33,5 +33,5 @@ async function finderDocumentScanner() { configuration.screens.review.enabled = false; configuration.outputSettings.pagesScanLimit = 1; - const documentData = await startDocumentScanner(configuration); + const documentData = await ScanbotDocument.startScanner(configuration); } diff --git a/src/codeSnippets/document/result-handling/create-document-pdf.ts b/src/codeSnippets/document/result-handling/create-document-pdf.ts index 4c59f0e..9be9f78 100644 --- a/src/codeSnippets/document/result-handling/create-document-pdf.ts +++ b/src/codeSnippets/document/result-handling/create-document-pdf.ts @@ -1,14 +1,18 @@ -import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; +import { + PdfConfiguration, + ScanbotDocument, + ScanbotPdfGenerator, +} from 'react-native-scanbot-sdk'; async function createDocumentPdf() { try { /** Load a document from storage or create a new one */ - const document = await ScanbotSDK.Document.loadDocument( + const document = await ScanbotDocument.loadDocument( 'SOME_STORED_DOCUMENT_ID', ); /** Create a PDF file with the provided options */ - const pdfUriResult = await ScanbotSDK.Document.createPDF({ - documentID: document.uuid, + const pdfUriResult = await ScanbotPdfGenerator.generateFromDocument({ + documentUuid: document.uuid, pdfConfiguration: new PdfConfiguration(), }); /** Handle the result */ diff --git a/src/codeSnippets/document/result-handling/create-document-tiff.ts b/src/codeSnippets/document/result-handling/create-document-tiff.ts index 0d23c7b..c17ae6b 100644 --- a/src/codeSnippets/document/result-handling/create-document-tiff.ts +++ b/src/codeSnippets/document/result-handling/create-document-tiff.ts @@ -1,18 +1,20 @@ -import ScanbotSDK, { +import { ScanbotBinarizationFilter, + ScanbotDocument, + ScanbotTiffGenerator, TiffGeneratorParameters, } from 'react-native-scanbot-sdk'; async function createDocumentTiff() { try { /** Load a document from storage or create a new one */ - const document = await ScanbotSDK.Document.loadDocument( + const document = await ScanbotDocument.loadDocument( 'SOME_STORED_DOCUMENT_ID', ); /** Create a TIFF file with the provided options */ - const tiffUriResult = await ScanbotSDK.Document.createTIFF({ - documentID: document.uuid, - configuration: new TiffGeneratorParameters({ + const tiffUriResult = await ScanbotTiffGenerator.generateFromDocument({ + documentUuid: document.uuid, + tiffGeneratorParameters: new TiffGeneratorParameters({ binarizationFilter: new ScanbotBinarizationFilter(), dpi: 300, }), diff --git a/src/codeSnippets/document/result-handling/create-pdf-from-images.ts b/src/codeSnippets/document/result-handling/create-pdf-from-images.ts index 98d2d9c..b39a208 100644 --- a/src/codeSnippets/document/result-handling/create-pdf-from-images.ts +++ b/src/codeSnippets/document/result-handling/create-pdf-from-images.ts @@ -1,5 +1,5 @@ import {selectImagesFromLibrary} from '@utils'; -import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; +import {PdfConfiguration, ScanbotPdfGenerator} from 'react-native-scanbot-sdk'; async function createPDFFromImages() { try { @@ -12,8 +12,8 @@ async function createPDFFromImages() { return; } /** Create a PDF file with the provided options */ - const pdfCreationResult = await ScanbotSDK.createPDF({ - imageFileUris: selectedImagesResult, + const pdfCreationResult = await ScanbotPdfGenerator.generateFromImages({ + images: selectedImagesResult, pdfConfiguration: new PdfConfiguration({ pageSize: 'A4', pageDirection: 'PORTRAIT', diff --git a/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts b/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts index 3f0a812..10ae1cc 100644 --- a/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts +++ b/src/codeSnippets/document/result-handling/create-sandwich-pdf-from-images.ts @@ -1,5 +1,5 @@ import {selectImagesFromLibrary} from '@utils'; -import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; +import {PdfConfiguration, ScanbotPdfGenerator} from 'react-native-scanbot-sdk'; async function createSearchablePDFFromImages() { try { @@ -12,8 +12,8 @@ async function createSearchablePDFFromImages() { return; } /** Create a PDF file with the provided options */ - const pdfCreationResult = await ScanbotSDK.createPDF({ - imageFileUris: selectedImagesResult, + const pdfCreationResult = await ScanbotPdfGenerator.generateFromImages({ + images: selectedImagesResult, pdfConfiguration: new PdfConfiguration({ pageSize: 'A4', pageDirection: 'PORTRAIT', diff --git a/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts b/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts index 2251906..0b8059e 100644 --- a/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts +++ b/src/codeSnippets/document/result-handling/create-sandwich-pdf.ts @@ -1,14 +1,18 @@ -import ScanbotSDK, {PdfConfiguration} from 'react-native-scanbot-sdk'; +import { + PdfConfiguration, + ScanbotDocument, + ScanbotPdfGenerator, +} from 'react-native-scanbot-sdk'; async function createSearchableDocumentPdf() { try { /** Load a document from storage or create a new one */ - const document = await ScanbotSDK.Document.loadDocument( + const document = await ScanbotDocument.loadDocument( 'SOME_STORED_DOCUMENT_ID', ); /** Create a PDF file with the provided options */ - const pdfUriResult = await ScanbotSDK.Document.createPDF({ - documentID: document.uuid, + const pdfUriResult = await ScanbotPdfGenerator.generateFromDocument({ + documentUuid: document.uuid, pdfConfiguration: new PdfConfiguration({}), ocrConfiguration: { engineMode: 'SCANBOT_OCR', diff --git a/src/codeSnippets/document/result-handling/create-tiff-from-images.ts b/src/codeSnippets/document/result-handling/create-tiff-from-images.ts index 6e84c55..98e49af 100644 --- a/src/codeSnippets/document/result-handling/create-tiff-from-images.ts +++ b/src/codeSnippets/document/result-handling/create-tiff-from-images.ts @@ -1,6 +1,7 @@ import {selectImagesFromLibrary} from '@utils'; -import ScanbotSDK, { +import { ScanbotBinarizationFilter, + ScanbotTiffGenerator, TiffGeneratorParameters, } from 'react-native-scanbot-sdk'; @@ -15,9 +16,9 @@ async function createTiffFromImages() { return; } /** Create a TIFF file with the provided options */ - const tiffCreationResult = await ScanbotSDK.writeTIFF({ - imageFileUris: selectedImagesResult, - configuration: new TiffGeneratorParameters({ + const tiffCreationResult = await ScanbotTiffGenerator.generateFromImages({ + images: selectedImagesResult, + tiffGeneratorParameters: new TiffGeneratorParameters({ binarizationFilter: new ScanbotBinarizationFilter(), dpi: 300, }), diff --git a/src/codeSnippets/document/result-handling/document-storage.ts b/src/codeSnippets/document/result-handling/document-storage.ts index bf7eea6..074a88a 100644 --- a/src/codeSnippets/document/result-handling/document-storage.ts +++ b/src/codeSnippets/document/result-handling/document-storage.ts @@ -1,8 +1,8 @@ -import ScanbotSDK, {Page} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {ScanbotDocument} from 'react-native-scanbot-sdk'; async function createDocument() { /** Create a document with a UUID */ - const document = await ScanbotSDK.Document.createDocument({}); + const document = await ScanbotDocument.createDocumentFromImages({}); } async function createDocumentWithPages(imageFileUris: string[]) { @@ -10,27 +10,27 @@ async function createDocumentWithPages(imageFileUris: string[]) { * Create a document with a UUID * Add images from `imageFileUris` as document pages */ - const document = await ScanbotSDK.Document.createDocument({ - imageFileUris: imageFileUris, + const document = await ScanbotDocument.createDocumentFromImages({ + images: imageFileUris, }); } async function loadDocument(documentID: string) { /** Load a document from storage by ID */ - const document = await ScanbotSDK.Document.loadDocument(documentID); + const document = await ScanbotDocument.loadDocument(documentID); } async function storedDocumentUUIDs() { /** Retrieve all the document IDs from the storage */ - const {documentIDs} = await ScanbotSDK.Document.storedDocumentIDs(); + const documentIDs = await ScanbotDocument.getStoredDocumentUuids(); } async function reorderDocumentPages(documentID: string) { /** Load a document from storage by ID */ - const document = await ScanbotSDK.Document.loadDocument(documentID); + const document = await ScanbotDocument.loadDocument(documentID); /** Swap the first and last page of the document */ - const documentWithReorderedPages = await ScanbotSDK.Document.movePage({ - documentID: document.uuid, + const documentWithReorderedPages = await ScanbotDocument.movePage({ + documentUuid: document.uuid, fromIndex: 0, toIndex: document.pages.length - 1, }); @@ -38,22 +38,22 @@ async function reorderDocumentPages(documentID: string) { async function removeAllPagesFromDocument(documentID: string) { /** Remove all the pages from a document */ - const documentWithRemovedPages = await ScanbotSDK.Document.removeAllPages( + const documentWithRemovedPages = await ScanbotDocument.removeAllPages( documentID, ); } async function deleteDocument(documentID: string) { /** Delete a document from storage along with the document's PDF and TIFF files */ - await ScanbotSDK.Document.deleteDocument(documentID); + await ScanbotDocument.deleteDocument(documentID); } async function deleteAllDocuments() { /** Delete all documents from storage along with the document's PDF and TIFF files */ - await ScanbotSDK.Document.deleteAllDocuments(); + await ScanbotDocument.deleteAllDocuments(); } async function cleanup() { /** Removes all the files generated by ScanbotSDK including the documents */ - await ScanbotSDK.cleanup(); + await ScanbotSDK.cleanupStorage(); } diff --git a/src/codeSnippets/document/rtuui/launching-scanner.ts b/src/codeSnippets/document/rtuui/launching-scanner.ts index 6d02d06..2c1fe8f 100644 --- a/src/codeSnippets/document/rtuui/launching-scanner.ts +++ b/src/codeSnippets/document/rtuui/launching-scanner.ts @@ -1,14 +1,11 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create the default configuration instance */ const configuration = new DocumentScanningFlow(); /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts index 193259a..f9a3ab0 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/acknowledge-screen.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -29,7 +26,7 @@ async function startScanning() { /** Configure the acknowledgment screen's hint message which is shown if the least acceptable quality is not met. */ configuration.screens.camera.acknowledgement.badImageHint.visible = true; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts index 331c051..71b9575 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/cropping-screen.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +14,7 @@ async function startScanning() { /** Customize a UI element's text */ configuration.localization.croppingTopBarCancelButtonTitle = 'Cancel'; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts index 285c72f..bd9276e 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/introduction-screen.ts @@ -3,9 +3,9 @@ import { DocumentScanningFlow, IntroListEntry, ReceiptsIntroImage, - startDocumentScanner, + ScanbotDocument, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -41,7 +41,7 @@ async function startScanning() { color: '#000000', }); /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/localization.ts b/src/codeSnippets/document/rtuui/scanning-flow/localization.ts index be60f46..8ef1648 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/localization.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/localization.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -18,7 +15,7 @@ async function startScanning() { localization.cameraUserGuidanceTooDark = 'Localized cameraUserGuidanceTooDark'; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/palete.ts b/src/codeSnippets/document/rtuui/scanning-flow/palete.ts index be6defb..f3a25d0 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/palete.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/palete.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +24,7 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts index 50f9789..2d62139 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/reorder-screen.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -18,7 +15,7 @@ async function startScanning() { /** Set the color for the page number text. */ reorderScreenConfiguration.pageTextStyle.color = '#000000'; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts index 41b7bdd..a52c0e9 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/review-screen.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -40,7 +37,7 @@ async function startScanning() { configuration.screens.reorderPages = reorderScreenConfiguration; configuration.screens.cropping = croppingScreenConfiguration; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts b/src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts index 13bd474..f728ef5 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/scanning-screen.ts @@ -1,9 +1,9 @@ import { DocumentScanningFlow, - startDocumentScanner, PageSnapCheckMarkAnimation, PageSnapFunnelAnimation, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -82,7 +82,7 @@ async function startScanning() { cameraScreenConfig.captureFeedback.snapFeedbackMode = new PageSnapFunnelAnimation(); /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts b/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts index 8aebe68..1471d13 100644 --- a/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts +++ b/src/codeSnippets/document/rtuui/scanning-flow/single-page-scanning.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function singlePageScanning() { try { @@ -11,7 +8,7 @@ async function singlePageScanning() { /** See further customization configs... */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { diff --git a/src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts b/src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts index 04058a2..21b5976 100644 --- a/src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts +++ b/src/codeSnippets/document/rtuui/useCases/automatic-filtering.ts @@ -1,8 +1,8 @@ import { DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; -import {ScanbotBinarizationFilter} from 'react-native-scanbot-sdk'; + ScanbotBinarizationFilter, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -12,7 +12,7 @@ async function startScanning() { configuration.outputSettings.defaultFilter = new ScanbotBinarizationFilter(); /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts b/src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts index cad8ecd..0bb7516 100644 --- a/src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts +++ b/src/codeSnippets/document/rtuui/useCases/multi-page-scanning-with-review.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -12,7 +9,7 @@ async function startScanning() { /** Disable the acknowledgment screen. */ configuration.screens.camera.acknowledgement.acknowledgementMode = 'NONE'; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts index 4a7a142..2d3c86b 100644 --- a/src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts +++ b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-with-finder.ts @@ -1,9 +1,9 @@ import { + AspectRatio, DocumentScanningFlow, FinderCorneredStyle, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; + ScanbotDocument, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -33,7 +33,7 @@ async function startScanning() { /** Disable the review screen. */ configuration.screens.review.enabled = false; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts index b63a9e3..c2d7acd 100644 --- a/src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts +++ b/src/codeSnippets/document/rtuui/useCases/single-page-scanning-without-review.ts @@ -1,7 +1,4 @@ -import { - DocumentScanningFlow, - startDocumentScanner, -} from 'react-native-scanbot-sdk/ui_v2'; +import {DocumentScanningFlow, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -16,7 +13,7 @@ async function startScanning() { /** Disable the review screen. **/ configuration.screens.review.enabled = false; /** Start the Document Scanner UI */ - const documentResult = await startDocumentScanner(configuration); + const documentResult = await ScanbotDocument.startScanner(configuration); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts b/src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts index bc9d961..8015e3c 100644 --- a/src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts +++ b/src/codeSnippets/document/scan-from-image/create-document-from-pdf.ts @@ -1,9 +1,14 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; +import {CreateDocumentOptions, ScanbotDocument} from 'react-native-scanbot-sdk'; async function createDocumentFromPDF(pdfUri: string) { /** * Create a document with an uuid * Extract images from the PDF file and add them as document pages */ - const document = await ScanbotSDK.Document.createDocumentFromPDF(pdfUri); + const document = await ScanbotDocument.createDocumentFromPdf({ + pdfFileUri: pdfUri, + options: new CreateDocumentOptions({ + documentDetection: true, + }), + }); } diff --git a/src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts b/src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts index 0205364..804f256 100644 --- a/src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts +++ b/src/codeSnippets/document/scan-from-image/document-detection-cropping-ui.ts @@ -1,9 +1,5 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; -import { - CroppingConfiguration, - startCroppingScreen, -} from 'react-native-scanbot-sdk/ui_v2'; import {selectImagesFromLibrary} from '@utils'; +import {CroppingConfiguration, ScanbotDocument} from 'react-native-scanbot-sdk'; async function startDocumentDetectionWithCroppingScreen() { try { @@ -16,8 +12,8 @@ async function startDocumentDetectionWithCroppingScreen() { return; } /** Create a new document with the provided imageFileUri. */ - const document = await ScanbotSDK.Document.createDocument({ - imageFileUris: selectedImagesResult, + const document = await ScanbotDocument.createDocumentFromImages({ + images: selectedImagesResult, }); /** Create a new configuration with the document and the document's first page. */ const configuration = new CroppingConfiguration({ @@ -30,7 +26,9 @@ async function startDocumentDetectionWithCroppingScreen() { configuration.cropping.topBarConfirmButton.foreground.color = '#ffffff'; configuration.localization.croppingTopBarCancelButtonTitle = 'Cancel'; /** Start the cropping UI Screen */ - const documentResult = await startCroppingScreen(configuration); + const documentResult = await ScanbotDocument.startCroppingScreen( + configuration, + ); /** Handle the document if the status is 'OK' */ if (documentResult.status === 'OK') { } diff --git a/src/codeSnippets/document/scan-from-image/document-detection.ts b/src/codeSnippets/document/scan-from-image/document-detection.ts index 373cc53..c541a16 100644 --- a/src/codeSnippets/document/scan-from-image/document-detection.ts +++ b/src/codeSnippets/document/scan-from-image/document-detection.ts @@ -1,4 +1,7 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; +import ScanbotSDK, { + DocumentScannerConfiguration, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; import {selectImageFromLibrary} from '@utils'; async function detectDocumentDetection() { @@ -12,9 +15,10 @@ async function detectDocumentDetection() { return; } /** Detect the document */ - const documentDetectionResult = await ScanbotSDK.detectDocument( - selectedImageResult, - ); + const documentDetectionResult = await ScanbotDocument.scanFromImage({ + image: selectedImageResult, + configuration: new DocumentScannerConfiguration(), + }); /** Handle the result */ } catch (e: any) { console.error(e.message); diff --git a/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts b/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts index 7047774..3b05591 100644 --- a/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts +++ b/src/codeSnippets/document/scan-from-image/extract-images-from-pdf.ts @@ -1,11 +1,11 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; +import {ScanbotPdfImageExtractor} from 'react-native-scanbot-sdk'; async function extractImagesFromPDF(pdfUri: string) { /** * Extract the images from the PDF with the desired configuration options * Check if the resulting Page Array is returned */ - const imagesResult = await ScanbotSDK.extractImagesFromPdf({ - pdfFilePath: pdfUri, + const imagesResult = await ScanbotPdfImageExtractor.extractImageFiles({ + pdfFileUri: pdfUri, }); } diff --git a/src/codeSnippets/getImageData.ts b/src/codeSnippets/getImageData.ts index ffaa481..74c190b 100644 --- a/src/codeSnippets/getImageData.ts +++ b/src/codeSnippets/getImageData.ts @@ -1,7 +1,7 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; +import ScanbotSDK, {ScanbotImageProcessor} from 'react-native-scanbot-sdk'; async function decryptImage(encryptedImageURI: string) { - const decryptedBase64ImageResult = await ScanbotSDK.getImageData( + const decryptedBase64ImageResult = await ScanbotImageProcessor.readImageData( encryptedImageURI, ); } diff --git a/src/codeSnippets/init/custom-storage.ts b/src/codeSnippets/init/custom-storage.ts index 079fa2f..422aca5 100644 --- a/src/codeSnippets/init/custom-storage.ts +++ b/src/codeSnippets/init/custom-storage.ts @@ -1,7 +1,8 @@ -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -const config: ScanbotSdkConfiguration = { +const configuration = new SdkConfiguration({ + licenseKey: '', storageBaseDirectory: 'file:///some/custom/storage-dir/', -}; +}); -const result = await ScanbotSDK.initializeSDK(config); +const result = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/init/encryption.ts b/src/codeSnippets/init/encryption.ts index 6c160fc..25e71b4 100644 --- a/src/codeSnippets/init/encryption.ts +++ b/src/codeSnippets/init/encryption.ts @@ -1,8 +1,9 @@ -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -const config: ScanbotSdkConfiguration = { +const configuration = new SdkConfiguration({ + licenseKey: '', fileEncryptionPassword: 'SomeSecretPa$$w0rdForFileEncryption', fileEncryptionMode: 'AES256', -}; +}); -const result = await ScanbotSDK.initializeSDK(config); +const result = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/init/image-quality.ts b/src/codeSnippets/init/image-quality.ts index 91ae109..a86a5ae 100644 --- a/src/codeSnippets/init/image-quality.ts +++ b/src/codeSnippets/init/image-quality.ts @@ -1,8 +1,9 @@ -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -const config: ScanbotSdkConfiguration = { +const configuration = new SdkConfiguration({ + licenseKey: '', storageImageFormat: 'JPG', storageImageQuality: 80, -}; +}); -const result = await ScanbotSDK.initializeSDK(config); +const result = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/init/initialize-scanbotSDK.ts b/src/codeSnippets/init/initialize-scanbotSDK.ts index bcf7c1a..b0f7aec 100644 --- a/src/codeSnippets/init/initialize-scanbotSDK.ts +++ b/src/codeSnippets/init/initialize-scanbotSDK.ts @@ -1,42 +1,38 @@ import {FILE_ENCRYPTION_ENABLED, IMAGE_FILE_FORMAT} from '@utils'; -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; async function initializeScanbotSDK() { try { - // Please note: this is just an example license key string (it is not a valid license) - const myLicenseKey = - 'fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ' + - '3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z' + - '+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR' + - 'RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q' + - '1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y' + - '3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv' + - 'O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse' + - 'HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY' + - '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + - 'KMw==\n'; - - const initializationOptions: ScanbotSdkConfiguration = { - //The Scanbot SDK License Key - licenseKey: myLicenseKey, + const configuration = new SdkConfiguration({ + // Please note: this is just an example license key string (it is not a valid license) + licenseKey: + 'fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ' + + '3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z' + + '+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR' + + 'RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q' + + '1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y' + + '3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv' + + 'O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse' + + 'HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY' + + '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + + 'KMw==\n', loggingEnabled: true, enableNativeLogging: false, storageImageFormat: IMAGE_FILE_FORMAT, storageImageQuality: 80, - documentScannerEngineMode: 'ML', allowGpuAcceleration: true, allowXnnpackAcceleration: true, - } as const; + }); // Set the following properties to enable encryption. if (FILE_ENCRYPTION_ENABLED) { - initializationOptions.fileEncryptionMode = 'AES256'; - initializationOptions.fileEncryptionPassword = + configuration.fileEncryptionMode = 'AES256'; + configuration.fileEncryptionPassword = 'SomeSecretPa$$w0rdForFileEncryption'; } - const sdkInit = await ScanbotSDK.initializeSDK(initializationOptions); + const sdkInitializationResult = await ScanbotSDK.initialize(configuration); } catch (error: any) { console.error(error); } diff --git a/src/codeSnippets/init/license-key.ts b/src/codeSnippets/init/license-key.ts index 498fa96..48aa491 100644 --- a/src/codeSnippets/init/license-key.ts +++ b/src/codeSnippets/init/license-key.ts @@ -1,21 +1,18 @@ -import ScanbotSDK from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -// Please note: this is just an example license key string (it is not a valid license) -const myLicenseKey = - 'fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ' + - '3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z' + - '+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR' + - 'RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q' + - '1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y' + - '3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv' + - 'O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse' + - 'HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY' + - '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + - 'KMw==\n'; +const configuration = new SdkConfiguration({ + // Please note: this is just an example license key string (it is not a valid license) + licenseKey: + 'fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ' + + '3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z' + + '+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR' + + 'RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q' + + '1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y' + + '3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv' + + 'O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse' + + 'HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY' + + '2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc' + + 'KMw==\n', +}); -const config = { - licenseKey: myLicenseKey, - loggingEnabled: true, -}; - -const result = await ScanbotSDK.initializeSDK(config); +const initResult = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/init/logging.ts b/src/codeSnippets/init/logging.ts index dfbd4da..0d0098d 100644 --- a/src/codeSnippets/init/logging.ts +++ b/src/codeSnippets/init/logging.ts @@ -1,8 +1,9 @@ -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -const config: ScanbotSdkConfiguration = { - licenseKey: '', +const configuration = new SdkConfiguration({ + licenseKey: '', loggingEnabled: true, -}; + enableNativeLogging: true, +}); -const result = await ScanbotSDK.initializeSDK(config); +const initResult = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/init/storage-encryption.ts b/src/codeSnippets/init/storage-encryption.ts index 78d1f02..25e71b4 100644 --- a/src/codeSnippets/init/storage-encryption.ts +++ b/src/codeSnippets/init/storage-encryption.ts @@ -1,8 +1,9 @@ -import ScanbotSDK, {ScanbotSdkConfiguration} from 'react-native-scanbot-sdk'; +import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -const config: ScanbotSdkConfiguration = { - fileEncryptionMode: 'AES256', +const configuration = new SdkConfiguration({ + licenseKey: '', fileEncryptionPassword: 'SomeSecretPa$$w0rdForFileEncryption', -}; + fileEncryptionMode: 'AES256', +}); -const result = await ScanbotSDK.initializeSDK(config); +const result = await ScanbotSDK.initialize(configuration); diff --git a/src/codeSnippets/license-handling.ts b/src/codeSnippets/license-handling.ts index 5098bd8..8e408a5 100644 --- a/src/codeSnippets/license-handling.ts +++ b/src/codeSnippets/license-handling.ts @@ -1,6 +1,6 @@ import ScanbotSDK from 'react-native-scanbot-sdk'; -if ((await ScanbotSDK.getLicenseInfo()).isLicenseValid) { - // Making your call to ScanbotSDK API is safe now. +if ((await ScanbotSDK.getLicenseInfo()).isValid) { + // Calling ScanbotSDK API is safe now. // ... } diff --git a/src/codeSnippets/mockCamera.ts b/src/codeSnippets/mockCamera.ts index f4e9737..b0f01c6 100644 --- a/src/codeSnippets/mockCamera.ts +++ b/src/codeSnippets/mockCamera.ts @@ -1,10 +1,6 @@ -import ScanbotSDK, {MockCameraParams} from 'react-native-scanbot-sdk'; +import ScanbotSDK from 'react-native-scanbot-sdk'; async function mockCamera() { - const config: MockCameraParams = { - imageFileUri: '{path to your image file}', - }; - try { /** * For Android: @@ -12,7 +8,9 @@ async function mockCamera() { * API < 33, READ_EXTERNAL_STORAGE permission is required. * The image must have even values for both width and height. */ - await ScanbotSDK.mockCamera(config); + await ScanbotSDK.mockCamera({ + imageFileUri: '{path to your image file}', + }); } catch (error: any) { console.error(error); } diff --git a/src/codeSnippets/mrz/action-bar.ts b/src/codeSnippets/mrz/action-bar.ts index f6c05f7..ed89917 100644 --- a/src/codeSnippets/mrz/action-bar.ts +++ b/src/codeSnippets/mrz/action-bar.ts @@ -1,7 +1,7 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,7 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/finder-overlay.ts b/src/codeSnippets/mrz/finder-overlay.ts index 3c702b1..7b743cb 100644 --- a/src/codeSnippets/mrz/finder-overlay.ts +++ b/src/codeSnippets/mrz/finder-overlay.ts @@ -2,9 +2,9 @@ import { FinderCorneredStyle, MrzScannerScreenConfiguration, NoLayoutPreset, - startMRZScanner, + ScanbotMrz, ThreeLineMrzFinderLayoutPreset, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,7 @@ async function startScanning() { strokeWidth: 2, }); /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/introduction-screen.ts b/src/codeSnippets/mrz/introduction-screen.ts index ab52785..b16b11d 100644 --- a/src/codeSnippets/mrz/introduction-screen.ts +++ b/src/codeSnippets/mrz/introduction-screen.ts @@ -1,9 +1,9 @@ import { MrzIntroCustomImage, MrzScannerScreenConfiguration, - startMRZScanner, + ScanbotMrz, StyledText, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -30,7 +30,7 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/launching-scanner.ts b/src/codeSnippets/mrz/launching-scanner.ts index 2e37f4b..1dbdee3 100644 --- a/src/codeSnippets/mrz/launching-scanner.ts +++ b/src/codeSnippets/mrz/launching-scanner.ts @@ -1,14 +1,14 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new MrzScannerScreenConfiguration(); /** Start the MRZ Scanner **/ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { // mrzScannerResult.data.rawMRZ diff --git a/src/codeSnippets/mrz/localization.ts b/src/codeSnippets/mrz/localization.ts index d307925..85830f0 100644 --- a/src/codeSnippets/mrz/localization.ts +++ b/src/codeSnippets/mrz/localization.ts @@ -1,7 +1,7 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +17,7 @@ async function startScanning() { 'Localized completionOverlaySuccessMessage'; localization.finderViewUserGuidance = 'Localized finderViewUserGuidance'; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/palette.ts b/src/codeSnippets/mrz/palette.ts index 0b83349..2419707 100644 --- a/src/codeSnippets/mrz/palette.ts +++ b/src/codeSnippets/mrz/palette.ts @@ -1,7 +1,7 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,7 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/top-bar.ts b/src/codeSnippets/mrz/top-bar.ts index edd5038..4d8b8be 100644 --- a/src/codeSnippets/mrz/top-bar.ts +++ b/src/codeSnippets/mrz/top-bar.ts @@ -1,7 +1,7 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,7 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/mrz/user-guidance.ts b/src/codeSnippets/mrz/user-guidance.ts index ac0e3d7..890ca99 100644 --- a/src/codeSnippets/mrz/user-guidance.ts +++ b/src/codeSnippets/mrz/user-guidance.ts @@ -1,7 +1,7 @@ import { MrzScannerScreenConfiguration, - startMRZScanner, -} from 'react-native-scanbot-sdk/ui_v2'; + ScanbotMrz, +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -26,7 +26,7 @@ async function startScanning() { /** Customize the finder user guidance background */ finderUserGuidance.background.fillColor = '#C8193C'; /** Start the MRZ Scanner UI */ - const mrzScannerResult = await startMRZScanner(configuration); + const mrzScannerResult = await ScanbotMrz.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (mrzScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/action-bar.ts b/src/codeSnippets/text-pattern/action-bar.ts index 5652dd1..eae9ac0 100644 --- a/src/codeSnippets/text-pattern/action-bar.ts +++ b/src/codeSnippets/text-pattern/action-bar.ts @@ -1,7 +1,7 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,9 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/finder-overlay.ts b/src/codeSnippets/text-pattern/finder-overlay.ts index 3e3e59e..97a0d2c 100644 --- a/src/codeSnippets/text-pattern/finder-overlay.ts +++ b/src/codeSnippets/text-pattern/finder-overlay.ts @@ -1,9 +1,9 @@ import { FinderCorneredStyle, FinderStrokedStyle, - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -24,7 +24,9 @@ async function startScanning() { strokeColor: '#ff0000', }); /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/introduction-screen.ts b/src/codeSnippets/text-pattern/introduction-screen.ts index 9c3cb27..1c8633a 100644 --- a/src/codeSnippets/text-pattern/introduction-screen.ts +++ b/src/codeSnippets/text-pattern/introduction-screen.ts @@ -1,9 +1,9 @@ import { - startTextPatternScanner, + ScanbotTextPattern, StyledText, TextPatternIntroCustomImage, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -30,7 +30,9 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/launching-scanner.ts b/src/codeSnippets/text-pattern/launching-scanner.ts index 4004617..68303c6 100644 --- a/src/codeSnippets/text-pattern/launching-scanner.ts +++ b/src/codeSnippets/text-pattern/launching-scanner.ts @@ -1,14 +1,16 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new TextPatternScannerScreenConfiguration(); /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { // textPatternResult.data.rawText; diff --git a/src/codeSnippets/text-pattern/localization.ts b/src/codeSnippets/text-pattern/localization.ts index 1983101..e2f22bc 100644 --- a/src/codeSnippets/text-pattern/localization.ts +++ b/src/codeSnippets/text-pattern/localization.ts @@ -1,7 +1,7 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +17,9 @@ async function startScanning() { localization.finderViewUserGuidance = 'Localized finderViewUserGuidance'; localization.introScreenTitle = 'Localized introScreenTitle'; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/palette.ts b/src/codeSnippets/text-pattern/palette.ts index 48358ac..9f274af 100644 --- a/src/codeSnippets/text-pattern/palette.ts +++ b/src/codeSnippets/text-pattern/palette.ts @@ -1,7 +1,7 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,9 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/top-bar.ts b/src/codeSnippets/text-pattern/top-bar.ts index 45dc8c3..802c039 100644 --- a/src/codeSnippets/text-pattern/top-bar.ts +++ b/src/codeSnippets/text-pattern/top-bar.ts @@ -1,7 +1,7 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,9 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/text-pattern/user-guidance.ts b/src/codeSnippets/text-pattern/user-guidance.ts index 2bc8d87..f8cf9cf 100644 --- a/src/codeSnippets/text-pattern/user-guidance.ts +++ b/src/codeSnippets/text-pattern/user-guidance.ts @@ -1,7 +1,7 @@ import { - startTextPatternScanner, + ScanbotTextPattern, TextPatternScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -26,7 +26,9 @@ async function startScanning() { /** Customize the finder user guidance background */ finderUserGuidance.background.fillColor = '#C8193C'; /** Start the Text Pattern Scanner **/ - const textPatternResult = await startTextPatternScanner(configuration); + const textPatternResult = await ScanbotTextPattern.startScanner( + configuration, + ); /** Handle the result if the status is 'OK' */ if (textPatternResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/action-bar.ts b/src/codeSnippets/vin/action-bar.ts index fa2f822..8c47572 100644 --- a/src/codeSnippets/vin/action-bar.ts +++ b/src/codeSnippets/vin/action-bar.ts @@ -1,7 +1,7 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -20,7 +20,7 @@ async function startScanning() { /** Hide the flip camera button */ actionBar.flipCameraButton.visible = false; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/finder-overlay.ts b/src/codeSnippets/vin/finder-overlay.ts index a009262..3efd7a9 100644 --- a/src/codeSnippets/vin/finder-overlay.ts +++ b/src/codeSnippets/vin/finder-overlay.ts @@ -1,9 +1,9 @@ import { + AspectRatio, FinderCorneredStyle, - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; -import {AspectRatio} from 'react-native-scanbot-sdk'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -22,7 +22,7 @@ async function startScanning() { strokeWidth: 2, }); /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/introduction-screen.ts b/src/codeSnippets/vin/introduction-screen.ts index 39a31c0..a14f5b5 100644 --- a/src/codeSnippets/vin/introduction-screen.ts +++ b/src/codeSnippets/vin/introduction-screen.ts @@ -1,9 +1,9 @@ import { - startVINScanner, + ScanbotVin, StyledText, VinIntroCustomImage, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -32,7 +32,7 @@ async function startScanning() { configuration.introScreen.doneButton.text = 'Start Scanning'; configuration.introScreen.doneButton.background.fillColor = '#C8193C'; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/launching-scanner.ts b/src/codeSnippets/vin/launching-scanner.ts index c3fea8e..85ed181 100644 --- a/src/codeSnippets/vin/launching-scanner.ts +++ b/src/codeSnippets/vin/launching-scanner.ts @@ -1,14 +1,14 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { /** Create an instance of the default configuration */ const configuration = new VinScannerScreenConfiguration(); /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/localization.ts b/src/codeSnippets/vin/localization.ts index 9ae84a1..cb1ec37 100644 --- a/src/codeSnippets/vin/localization.ts +++ b/src/codeSnippets/vin/localization.ts @@ -1,7 +1,7 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -17,7 +17,7 @@ async function startScanning() { 'Localized completionOverlaySuccessMessage'; localization.introScreenText = 'Localized introScreenText'; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/palette.ts b/src/codeSnippets/vin/palette.ts index 5583d27..910cca2 100644 --- a/src/codeSnippets/vin/palette.ts +++ b/src/codeSnippets/vin/palette.ts @@ -1,7 +1,7 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -27,7 +27,7 @@ async function startScanning() { palette.sbColorSurfaceHigh = '#7A000000'; palette.sbColorModalOverlay = '#A3000000'; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/topBar.ts b/src/codeSnippets/vin/topBar.ts index 3b25884..9f4be0d 100644 --- a/src/codeSnippets/vin/topBar.ts +++ b/src/codeSnippets/vin/topBar.ts @@ -1,7 +1,7 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -15,7 +15,7 @@ async function startScanning() { configuration.topBar.cancelButton.text = 'Cancel'; configuration.topBar.cancelButton.foreground.color = '#C8193C'; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } diff --git a/src/codeSnippets/vin/user-guidance.ts b/src/codeSnippets/vin/user-guidance.ts index fdde9bd..c12caba 100644 --- a/src/codeSnippets/vin/user-guidance.ts +++ b/src/codeSnippets/vin/user-guidance.ts @@ -1,7 +1,7 @@ import { - startVINScanner, + ScanbotVin, VinScannerScreenConfiguration, -} from 'react-native-scanbot-sdk/ui_v2'; +} from 'react-native-scanbot-sdk'; async function startScanning() { try { @@ -24,7 +24,7 @@ async function startScanning() { /** Customize the finder guidance background */ finderViewUserGuidance.background.fillColor = '#C8193C'; /** Start the VIN Scanner UI */ - const vinScannerResult = await startVINScanner(configuration); + const vinScannerResult = await ScanbotVin.startScanner(configuration); /** Handle the result if the status is 'OK' */ if (vinScannerResult.status === 'OK') { } From 794d2a750f0c3e54e97d28011b49d52da5489959 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Wed, 11 Feb 2026 13:10:57 +0100 Subject: [PATCH 19/24] Added handling-errors snippets --- .../handling-classicUI-errors.tsx | 47 ++++++++++ .../result-handling/handling-errors.ts | 94 +++++++++++++++++++ .../result-handling/handling-rtuui-errors.ts | 37 ++++++++ 3 files changed, 178 insertions(+) create mode 100644 src/codeSnippets/result-handling/handling-classicUI-errors.tsx create mode 100644 src/codeSnippets/result-handling/handling-errors.ts create mode 100644 src/codeSnippets/result-handling/handling-rtuui-errors.ts diff --git a/src/codeSnippets/result-handling/handling-classicUI-errors.tsx b/src/codeSnippets/result-handling/handling-classicUI-errors.tsx new file mode 100644 index 0000000..0401df1 --- /dev/null +++ b/src/codeSnippets/result-handling/handling-classicUI-errors.tsx @@ -0,0 +1,47 @@ +import {useCallback} from 'react'; +import {View} from 'react-native'; +import { + ComponentUnavailableError, + DocumentDetectionResult, + ImageRef, + InvalidLicenseError, + ProcessError, + SBError, + ScanbotDocumentScannerView, + UnknownError, +} from 'react-native-scanbot-sdk'; + +function ScanbotDocumentScanner() { + const onDocumentResult = useCallback( + ( + _original: ImageRef, + _documentImage?: ImageRef, + _documentDetectionResult?: DocumentDetectionResult, + ) => { + // Handle the snapped document result here + }, + [], + ); + + const onError = useCallback((error: SBError) => { + // Handling errors using instanceof checks + if (error instanceof UnknownError) { + // An unknown or unexpected error occurred. + } else if (error instanceof InvalidLicenseError) { + // The SDK license is invalid or license requirements are not satisfied. + } else if (error instanceof ComponentUnavailableError) { + // A required SDK component is unavailable or not properly initialized. + } else if (error instanceof ProcessError) { + // A processing error occurred with additional context in error.code. + } + }, []); + + return ( + + + + ); +} diff --git a/src/codeSnippets/result-handling/handling-errors.ts b/src/codeSnippets/result-handling/handling-errors.ts new file mode 100644 index 0000000..7915319 --- /dev/null +++ b/src/codeSnippets/result-handling/handling-errors.ts @@ -0,0 +1,94 @@ +import { + ComponentUnavailableError, + IllegalStateError, + InvalidArgumentError, + InvalidDataError, + InvalidImageRefError, + InvalidLicenseError, + IOError, + NullPointerError, + OutOfMemoryError, + ProcessError, + SBError, + SBErrorType, + TimeoutError, + UnknownError, +} from 'react-native-scanbot-sdk'; + +function handlingErrors(error: any) { + // Handling errors using instanceof checks + if (error instanceof SBError) { + if (error instanceof UnknownError) { + // An unknown or unexpected error occurred. + } else if (error instanceof InvalidLicenseError) { + // The SDK license is invalid or license requirements are not satisfied. + } else if (error instanceof NullPointerError) { + // A null pointer was encountered where a valid reference was expected. + } else if (error instanceof InvalidArgumentError) { + // An invalid argument was passed to an SDK function or method. + } else if (error instanceof InvalidImageRefError) { + // An invalid image reference was provided or the image data is corrupted. + } else if (error instanceof ComponentUnavailableError) { + // A required SDK component is unavailable or not properly initialized. + } else if (error instanceof IllegalStateError) { + // The SDK is in an illegal or inconsistent state for the requested operation. + } else if (error instanceof IOError) { + // An input/output error occurred during file or data operations. + } else if (error instanceof InvalidDataError) { + // The provided data is invalid, corrupted, or in an unexpected format. + } else if (error instanceof OutOfMemoryError) { + // The system ran out of memory during the operation. + } else if (error instanceof TimeoutError) { + // The operation timed out before completion. + } else if (error instanceof ProcessError) { + // A processing error occurred with additional context in error.code. + } else { + // Handle other error types if necessary. + } + } + + // OR, Handling errors using error type checks + if (error instanceof SBError) { + switch (error.type as SBErrorType) { + case 'Unknown': + // An unknown or unexpected error occurred. + break; + case 'InvalidLicense': + // The SDK license is invalid or license requirements are not satisfied. + break; + case 'NullPointer': + // A null pointer was encountered where a valid reference was expected. + break; + case 'InvalidArgument': + // An invalid argument was passed to an SDK function or method. + break; + case 'InvalidImageRef': + // An invalid image reference was provided or the image data is corrupted. + break; + case 'ComponentUnavailable': + // A required SDK component is unavailable or not properly initialized. + break; + case 'IllegalState': + // The SDK is in an illegal or inconsistent state for the requested operation. + break; + case 'IOError': + // An input/output error occurred during file or data operations. + break; + case 'InvalidData': + // The provided data is invalid, corrupted, or in an unexpected format. + break; + case 'OutOfMemory': + // The system ran out of memory during the operation. + break; + case 'Timeout': + // The operation timed out before completion. + break; + case 'ProcessError': + // A processing error occurred with additional context in error.code. + break; + default: { + // Handle other error types if necessary. + } + } + } +} diff --git a/src/codeSnippets/result-handling/handling-rtuui-errors.ts b/src/codeSnippets/result-handling/handling-rtuui-errors.ts new file mode 100644 index 0000000..78d59cc --- /dev/null +++ b/src/codeSnippets/result-handling/handling-rtuui-errors.ts @@ -0,0 +1,37 @@ +import { + DocumentScanningFlow, + SBError, + ScanbotDocument, +} from 'react-native-scanbot-sdk'; + +async function handlingRtuuiErrors() { + try { + const result = await ScanbotDocument.startScanner( + new DocumentScanningFlow(), + ); + + if (result.status === 'CANCELED') { + // The user canceled the scanning operation. + // Handle cancellation logic here. + } + + if (result.status === 'OK') { + // Scanning completed successfully. + const document = result.data; + } + } catch (error: any) { + // Handle unexpected errors here. + + if (error instanceof SBError) { + switch (error.type) { + case 'Timeout': + // The scanning operation timed out. + break; + case 'InvalidData': + // The provided data is invalid, corrupted, or in an unexpected format. + break; + //.... + } + } + } +} From 218510e8fae37ce35ce523d33d9f37c9ee31c194 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Wed, 11 Feb 2026 13:54:29 +0100 Subject: [PATCH 20/24] Added image ref snippets --- .../result-handling/image-ref-from-buffer.ts | 31 ++++++++++++ .../result-handling/image-ref-from-file.ts | 24 +++++++++ .../result-handling/image-ref-usage.ts | 49 +++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 src/codeSnippets/result-handling/image-ref-from-buffer.ts create mode 100644 src/codeSnippets/result-handling/image-ref-from-file.ts create mode 100644 src/codeSnippets/result-handling/image-ref-usage.ts diff --git a/src/codeSnippets/result-handling/image-ref-from-buffer.ts b/src/codeSnippets/result-handling/image-ref-from-buffer.ts new file mode 100644 index 0000000..5aa1ef8 --- /dev/null +++ b/src/codeSnippets/result-handling/image-ref-from-buffer.ts @@ -0,0 +1,31 @@ +import { + autorelease, + BufferImageLoadOptions, + ImageRef, +} from 'react-native-scanbot-sdk'; + +async function createImageRefFromBuffer(buffer: string) { + /* + * Creates an image reference from the provided buffer. + * + * - The image reference can be used in various Scanbot SDK operations that require an image input. + * - The buffer should contain valid image data in a supported format (e.g., JPEG, PNG). + * - An auto-release pool is used to manage memory efficiently when working with image references. + * - The image reference will be automatically released after the block of code is executed, preventing memory leaks. + */ + await autorelease(async () => { + const ref = await ImageRef.fromEncodedBuffer( + buffer, + new BufferImageLoadOptions(), + ); + if (ref !== null) { + /* + * Use the image reference for further processing: + * + * - Pass it to Scanbot SDK functions that require an image input. + * - Save the image reference to a file. + * - Perform additional operations as needed. + */ + } + }); +} diff --git a/src/codeSnippets/result-handling/image-ref-from-file.ts b/src/codeSnippets/result-handling/image-ref-from-file.ts new file mode 100644 index 0000000..06b883f --- /dev/null +++ b/src/codeSnippets/result-handling/image-ref-from-file.ts @@ -0,0 +1,24 @@ +import {autorelease, ImageRef} from 'react-native-scanbot-sdk'; + +async function createImageRefFromFile(imageFileUri: string) { + /* + * Creates an image reference from the image file URI. + * + * - The image reference can be used in various Scanbot SDK operations that require an image input. + * - The image file URI should point to a valid image file in a supported format (e.g., JPEG, PNG). + * - An auto-release pool is used to manage memory efficiently when working with image references. + * - The image reference will be automatically released after the block of code is executed, preventing memory leaks. + */ + await autorelease(async () => { + const ref = await ImageRef.fromImageFileUri(imageFileUri); + if (ref !== null) { + /* + * Use the image reference for further processing: + * + * - Pass it to Scanbot SDK functions that require an image input. + * - Retrieve a base64 string from the image reference. + * - Perform additional operations as needed. + */ + } + }); +} diff --git a/src/codeSnippets/result-handling/image-ref-usage.ts b/src/codeSnippets/result-handling/image-ref-usage.ts new file mode 100644 index 0000000..edd6846 --- /dev/null +++ b/src/codeSnippets/result-handling/image-ref-usage.ts @@ -0,0 +1,49 @@ +import {DocumentDirectoryPath} from 'react-native-fs'; + +import { + autorelease, + EncodeImageOptions, + ImageRef, + SaveImageOptions, +} from 'react-native-scanbot-sdk'; + +export async function imageRefUsage(imageFileUri: string) { + await autorelease(async () => { + const ref = await ImageRef.fromImageFileUri(imageFileUri); + if (ref !== null) { + /* + * The `info()` method retrieves information about the image reference. + * - Returns details such as dimensions, format, and file size. + * - Useful for validating the image or for further processing steps. + */ + const imageInfo = await ref.info(); + console.log('Image size', imageInfo?.maxByteSize); + + /* + * The `saveImage()` method allows you to save the image reference to a specified file path. + * - Useful for storing the processed image or for sharing it with other applications. + */ + const saveImageRefAtPath = await ref.saveImage( + DocumentDirectoryPath + '/saved_image.jpg', + new SaveImageOptions({ + quality: 80, + }), + ); + console.log('Is image saved successfully?', saveImageRefAtPath); + + /* + * The `encodeImage()` method encodes the image reference into a base64 format. + * - Useful for transmitting the image data over a network. + */ + const encodedBuffer = await ref.encodeImage(new EncodeImageOptions()); + console.log('Encoded buffer', encodedBuffer); + + /* + * The `serialize()` method allows you to serialize the image reference. + * - Useful for storing the image reference in a format that can be easily transmitted or saved. + * - The serialized reference can be deserialized later to retrieve the original image reference. + */ + const serializedRef = await ref.serialize('BUFFER'); + } + }); +} From fe293a173156eec39cf50ca4ce53790d38717280 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Thu, 19 Feb 2026 09:17:31 +0100 Subject: [PATCH 21/24] Review notes changes --- App.tsx | 7 +-- Libraries.txt | 2 +- README.md | 6 --- .../apply-filters-on-document.ts | 9 ++-- .../create-document-from-legacy-pages.ts | 2 +- .../document/migration/cropping-screen/v2.ts | 7 +-- .../result-handling/create-document-tiff.ts | 11 +++-- .../result-handling/document-storage.ts | 22 ++++----- src/codeSnippets/getImageData.ts | 2 +- src/components/ExportDocumentModal.tsx | 12 ++--- src/components/PageImagePreview.tsx | 8 ++-- src/context/useDocument.ts | 8 ++-- .../operations/document/useAddDocumentPage.ts | 4 +- .../document/useCreateDocumentPDF.ts | 4 +- .../document/useCreateDocumentTIFF.ts | 18 +++---- .../document/useCreateDocumentWithPage.ts | 5 +- .../operations/document/useModifyPage.ts | 19 ++++---- .../operations/document/useRemovePage.ts | 6 +-- src/hooks/operations/useCleanup.ts | 4 +- .../operations/useDocumentQualityAnalyzer.ts | 9 ++-- src/hooks/operations/usePerformOCR.ts | 48 ++++++++++++------- src/hooks/operations/useScanMRZFromImage.ts | 41 ++++++++++------ .../document/useContinueDocumentScanning.ts | 6 +-- .../rtuui/document/useCropDocumentPage.ts | 6 +-- src/hooks/rtuui/useCreditCardScanner.ts | 39 +++++++++++---- src/screens/CheckScannerResultScreen.tsx | 30 ++++++------ src/screens/CreditCardScannerResultScreen.tsx | 24 +++++++++- src/screens/DocumentPageResultScreen.tsx | 24 +++++----- src/screens/DocumentResultScreen.tsx | 8 ++-- src/screens/HomeScreen.tsx | 8 ++-- src/utils/Alerts.ts | 9 ++-- src/utils/Navigation.ts | 3 +- src/utils/SDKUtils.ts | 2 +- 33 files changed, 239 insertions(+), 174 deletions(-) diff --git a/App.tsx b/App.tsx index 5995e80..7f07fc5 100644 --- a/App.tsx +++ b/App.tsx @@ -3,7 +3,7 @@ import {Platform, StyleSheet} from 'react-native'; import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context'; import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; -import {DocumentDirectoryPath, ExternalDirectoryPath} from 'react-native-fs'; +import {DocumentDirectoryPath} from 'react-native-fs'; import {NavigationContainer} from '@react-navigation/native'; import {createNativeStackNavigator} from '@react-navigation/native-stack'; import { @@ -56,7 +56,7 @@ const Stack = createNativeStackNavigator(); // - https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html const storageBaseDirectory = Platform.select({ ios: DocumentDirectoryPath + '/my-custom-storage', - android: ExternalDirectoryPath + '/my-custom-storage', + android: DocumentDirectoryPath + '/my-custom-storage', default: undefined, }); @@ -74,7 +74,8 @@ export const initializationConfiguration = new SdkConfiguration({ loggingEnabled: true, // Logging enabled. Consider switching logging OFF in production builds for security and performance reasons! storageImageFormat: IMAGE_FILE_FORMAT, // Format of stored images storageImageQuality: 80, // Quality of stored images - //storageBaseDirectory: storageBaseDirectory, // Uncomment this line to use a custom storage path + // Optional custom storage directory + // storageBaseDirectory: storageBaseDirectory, }); // Set the following properties to enable encryption. diff --git a/Libraries.txt b/Libraries.txt index 99b61e8..0182aee 100644 --- a/Libraries.txt +++ b/Libraries.txt @@ -3487,7 +3487,7 @@ Version 1.1.0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -Open Source libraries used in ScanbotSDK for iOS version 8.0.1: +Open Source libraries used in ScanbotSDK for iOS version 8.0.2: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ diff --git a/README.md b/README.md index aaa8471..5a78717 100644 --- a/README.md +++ b/README.md @@ -140,12 +140,6 @@ Through this feature, our SDK offers document detection and data capture capabil ## Additional information -### Free integration support - -Need help integrating or testing our React Native Document Scanner SDK? We offer [free developer support](https://docs.scanbot.io/support/?utm_source=github.com&utm_medium=referral&utm_campaign=dev_sites) via Slack, MS Teams, or email. - -As a customer, you also get access to a dedicated support Slack or Microsoft Teams channel to talk directly to your Customer Success Manager and our engineers. - ### Trial license and pricing The Scanbot SDK examples will run for one minute per session without a license. After that, all functionalities and UI components will stop working. diff --git a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts index f66324d..2356e79 100644 --- a/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts +++ b/src/codeSnippets/document/filters-and-image-processing/apply-filters-on-document.ts @@ -16,13 +16,14 @@ async function applyFiltersAndRotateScannedPage() { * Apply ScanbotBinarizationFilter to the page * Rotate the page clockwise by 90 degrees */ + const options = new ModifyPageOptions(); + options.filters = [new ScanbotBinarizationFilter()]; + options.rotation = 'CLOCKWISE_90'; + const documentResultWithModifiedPage = await ScanbotDocument.modifyPage({ documentUuid: document.uuid, pageUuid: page.uuid, - options: new ModifyPageOptions({ - filters: [new ScanbotBinarizationFilter()], - rotation: 'CLOCKWISE_90', - }), + options: options, }); /** Handle the document */ } catch (e: any) { diff --git a/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts b/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts index 6c839b1..eed50a3 100644 --- a/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts +++ b/src/codeSnippets/document/migration/create-document-from-legacy-pages.ts @@ -11,6 +11,6 @@ async function createDocumentWithLegacyPages(pages: Page[]) { /** * Now you may delete the files corresponding to the Page to free up storage. - * Use ScanbotSDK.removePage(page) to remove the old pages + * Use ScanbotSDK.LegacyPage.removePage(page) to remove the old pages */ } diff --git a/src/codeSnippets/document/migration/cropping-screen/v2.ts b/src/codeSnippets/document/migration/cropping-screen/v2.ts index c54dbab..21cf8ba 100644 --- a/src/codeSnippets/document/migration/cropping-screen/v2.ts +++ b/src/codeSnippets/document/migration/cropping-screen/v2.ts @@ -1,10 +1,7 @@ import {CroppingConfiguration, ScanbotDocument} from 'react-native-scanbot-sdk'; -async function croppingScreen(documentID: string, pageID: string) { - const configuration = new CroppingConfiguration({ - documentUuid: documentID, - pageUuid: pageID, - }); +async function croppingScreen(documentUuid: string, pageUuid: string) { + const configuration = new CroppingConfiguration({documentUuid, pageUuid}); // Equivalent to topBarBackgroundColor & bottomBarBackgroundColor: '#ffffff' configuration.palette.sbColorPrimary = '#ffffff'; // Equivalent to doneButtonTitle: 'Apply', diff --git a/src/codeSnippets/document/result-handling/create-document-tiff.ts b/src/codeSnippets/document/result-handling/create-document-tiff.ts index c17ae6b..d6203cb 100644 --- a/src/codeSnippets/document/result-handling/create-document-tiff.ts +++ b/src/codeSnippets/document/result-handling/create-document-tiff.ts @@ -11,13 +11,16 @@ async function createDocumentTiff() { const document = await ScanbotDocument.loadDocument( 'SOME_STORED_DOCUMENT_ID', ); + + const tiffGeneratorParameters = new TiffGeneratorParameters(); + tiffGeneratorParameters.binarizationFilter = new ScanbotBinarizationFilter(); + tiffGeneratorParameters.dpi = 300; + /** Configure params as needed **/ + /** Create a TIFF file with the provided options */ const tiffUriResult = await ScanbotTiffGenerator.generateFromDocument({ documentUuid: document.uuid, - tiffGeneratorParameters: new TiffGeneratorParameters({ - binarizationFilter: new ScanbotBinarizationFilter(), - dpi: 300, - }), + tiffGeneratorParameters: tiffGeneratorParameters, }); /** Handle the result */ } catch (e: any) { diff --git a/src/codeSnippets/document/result-handling/document-storage.ts b/src/codeSnippets/document/result-handling/document-storage.ts index 074a88a..171a4bd 100644 --- a/src/codeSnippets/document/result-handling/document-storage.ts +++ b/src/codeSnippets/document/result-handling/document-storage.ts @@ -15,19 +15,19 @@ async function createDocumentWithPages(imageFileUris: string[]) { }); } -async function loadDocument(documentID: string) { +async function loadDocument(documentUuid: string) { /** Load a document from storage by ID */ - const document = await ScanbotDocument.loadDocument(documentID); + const document = await ScanbotDocument.loadDocument(documentUuid); } async function storedDocumentUUIDs() { - /** Retrieve all the document IDs from the storage */ - const documentIDs = await ScanbotDocument.getStoredDocumentUuids(); + /** Retrieve all the document UUIDs from the storage */ + const documentUuids = await ScanbotDocument.getStoredDocumentUuids(); } -async function reorderDocumentPages(documentID: string) { - /** Load a document from storage by ID */ - const document = await ScanbotDocument.loadDocument(documentID); +async function reorderDocumentPages(documentUuid: string) { + /** Load a document from storage by UUID */ + const document = await ScanbotDocument.loadDocument(documentUuid); /** Swap the first and last page of the document */ const documentWithReorderedPages = await ScanbotDocument.movePage({ documentUuid: document.uuid, @@ -36,16 +36,16 @@ async function reorderDocumentPages(documentID: string) { }); } -async function removeAllPagesFromDocument(documentID: string) { +async function removeAllPagesFromDocument(documentUuid: string) { /** Remove all the pages from a document */ const documentWithRemovedPages = await ScanbotDocument.removeAllPages( - documentID, + documentUuid, ); } -async function deleteDocument(documentID: string) { +async function deleteDocument(documentUuid: string) { /** Delete a document from storage along with the document's PDF and TIFF files */ - await ScanbotDocument.deleteDocument(documentID); + await ScanbotDocument.deleteDocument(documentUuid); } async function deleteAllDocuments() { diff --git a/src/codeSnippets/getImageData.ts b/src/codeSnippets/getImageData.ts index 74c190b..9cdb455 100644 --- a/src/codeSnippets/getImageData.ts +++ b/src/codeSnippets/getImageData.ts @@ -1,4 +1,4 @@ -import ScanbotSDK, {ScanbotImageProcessor} from 'react-native-scanbot-sdk'; +import {ScanbotImageProcessor} from 'react-native-scanbot-sdk'; async function decryptImage(encryptedImageURI: string) { const decryptedBase64ImageResult = await ScanbotImageProcessor.readImageData( diff --git a/src/components/ExportDocumentModal.tsx b/src/components/ExportDocumentModal.tsx index 8cce5ee..dd9561c 100644 --- a/src/components/ExportDocumentModal.tsx +++ b/src/components/ExportDocumentModal.tsx @@ -6,11 +6,11 @@ import {useCreateDocumentPDF, useCreateDocumentTIFF} from '@hooks'; export function ExportDocumentModal({ isVisible, onDismiss, - documentID, + documentUuid, }: { isVisible: boolean; onDismiss: () => void; - documentID: string; + documentUuid: string; }) { const savePDF = useCreateDocumentPDF(); const writeTiff = useCreateDocumentTIFF(); @@ -19,20 +19,20 @@ export function ExportDocumentModal({ (sandwichedPDF: boolean) => { return async () => { onDismiss(); - await savePDF(documentID, sandwichedPDF); + await savePDF(documentUuid, sandwichedPDF); }; }, - [documentID, onDismiss, savePDF], + [documentUuid, onDismiss, savePDF], ); const saveTiff = useCallback( (binarized: boolean) => { return async () => { onDismiss(); - await writeTiff(documentID, binarized); + await writeTiff(documentUuid, binarized); }; }, - [documentID, onDismiss, writeTiff], + [documentUuid, onDismiss, writeTiff], ); return ( diff --git a/src/components/PageImagePreview.tsx b/src/components/PageImagePreview.tsx index 0c24fb2..86c769c 100644 --- a/src/components/PageImagePreview.tsx +++ b/src/components/PageImagePreview.tsx @@ -6,10 +6,10 @@ import {FILE_ENCRYPTION_ENABLED, IMAGE_FILE_FORMAT} from '@utils'; import {DocumentContext} from '@context'; export function PageImagePreview({ - pageID, + pageUuid, style, }: { - pageID: string; + pageUuid: string; style: StyleProp; }) { const {document} = useContext(DocumentContext); @@ -17,8 +17,8 @@ export function PageImagePreview({ const [loading, setLoading] = useState(false); const page = useMemo( - () => document?.pages.find(p => p.uuid === pageID), - [document?.pages, pageID], + () => document?.pages.find(p => p.uuid === pageUuid), + [document?.pages, pageUuid], ); useEffect(() => { diff --git a/src/context/useDocument.ts b/src/context/useDocument.ts index d5178d4..8f20822 100644 --- a/src/context/useDocument.ts +++ b/src/context/useDocument.ts @@ -4,13 +4,13 @@ import ScanbotSDK, {DocumentData} from 'react-native-scanbot-sdk'; interface DocumentContext { document?: DocumentData; setDocument: (document: DocumentData) => void; - loadDocument: (documentID: string) => void; + loadDocument: (documentUuid: string) => void; } export const DocumentContext = createContext({ document: undefined, setDocument: (_document: DocumentData) => {}, - loadDocument: (_documentID: string) => {}, + loadDocument: (_documentUuid: string) => {}, }); export function useDocument() { @@ -22,9 +22,9 @@ export function useDocument() { setDocumentData(_document); }, []); - const loadDocument = useCallback(async (documentID: string) => { + const loadDocument = useCallback(async (documentUuid: string) => { try { - let documentResult = await ScanbotSDK.Document.loadDocument(documentID); + let documentResult = await ScanbotSDK.Document.loadDocument(documentUuid); setDocumentData(documentResult); } catch (e: any) { console.log(e.message); diff --git a/src/hooks/operations/document/useAddDocumentPage.ts b/src/hooks/operations/document/useAddDocumentPage.ts index d96ee30..1abab16 100644 --- a/src/hooks/operations/document/useAddDocumentPage.ts +++ b/src/hooks/operations/document/useAddDocumentPage.ts @@ -17,7 +17,7 @@ export function useAddDocumentPage() { const {setLoading} = useContext(ActivityIndicatorContext); return useCallback( - async (documentID: string) => { + async (documentUuid: string) => { try { /** * Check the license status and return early @@ -38,7 +38,7 @@ export function useAddDocumentPage() { /** Add a page to the document */ const documentResult = await ScanbotDocument.addPages({ - documentUuid: documentID, + documentUuid: documentUuid, images: [selectedImageResult], options: new AddPageOptions({ documentDetection: true, diff --git a/src/hooks/operations/document/useCreateDocumentPDF.ts b/src/hooks/operations/document/useCreateDocumentPDF.ts index 6cc005a..76af32d 100644 --- a/src/hooks/operations/document/useCreateDocumentPDF.ts +++ b/src/hooks/operations/document/useCreateDocumentPDF.ts @@ -13,7 +13,7 @@ export function useCreateDocumentPDF() { const {setLoading} = useContext(ActivityIndicatorContext); return useCallback( - async (documentID: string, sandwichedPDF: boolean = false) => { + async (documentUuid: string, sandwichedPDF: boolean = false) => { try { setLoading(true); /** @@ -33,7 +33,7 @@ export function useCreateDocumentPDF() { : undefined; const pdfFileUri = await ScanbotPdfGenerator.generateFromDocument({ - documentUuid: documentID, + documentUuid: documentUuid, pdfConfiguration: new PdfConfiguration(), ocrConfiguration: ocrConfiguration, }); diff --git a/src/hooks/operations/document/useCreateDocumentTIFF.ts b/src/hooks/operations/document/useCreateDocumentTIFF.ts index 521a034..9249f49 100644 --- a/src/hooks/operations/document/useCreateDocumentTIFF.ts +++ b/src/hooks/operations/document/useCreateDocumentTIFF.ts @@ -13,7 +13,7 @@ export function useCreateDocumentTIFF() { const {setLoading} = useContext(ActivityIndicatorContext); return useCallback( - async (documentID: string, binarized: boolean) => { + async (documentUuid: string, binarized: boolean) => { try { setLoading(true); /** @@ -23,17 +23,19 @@ export function useCreateDocumentTIFF() { if (!(await checkLicense())) { return; } + + const tiffGeneratorParameters = new TiffGeneratorParameters(); + tiffGeneratorParameters.binarizationFilter = binarized + ? new ScanbotBinarizationFilter() + : null; + tiffGeneratorParameters.compression = binarized ? 'CCITT_T6' : 'ADOBE_DEFLATE'; // optional compression + /** * Create a tiff file from the document */ const tiffFileUri = await ScanbotTiffGenerator.generateFromDocument({ - documentUuid: documentID, - tiffGeneratorParameters: new TiffGeneratorParameters({ - binarizationFilter: binarized - ? new ScanbotBinarizationFilter() - : undefined, - compression: binarized ? 'CCITT_T6' : 'ADOBE_DEFLATE', - }), + documentUuid: documentUuid, + tiffGeneratorParameters: tiffGeneratorParameters, }); /** * Handle the result by displaying an action sheet diff --git a/src/hooks/operations/document/useCreateDocumentWithPage.ts b/src/hooks/operations/document/useCreateDocumentWithPage.ts index a9e1948..1521266 100644 --- a/src/hooks/operations/document/useCreateDocumentWithPage.ts +++ b/src/hooks/operations/document/useCreateDocumentWithPage.ts @@ -9,10 +9,7 @@ import { import {ActivityIndicatorContext, DocumentContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import ScanbotSDK, { - CreateDocumentOptions, - ScanbotDocument, -} from 'react-native-scanbot-sdk'; +import {CreateDocumentOptions, ScanbotDocument} from 'react-native-scanbot-sdk'; export function useCreateDocumentWithPage() { const navigation = useNavigation(); diff --git a/src/hooks/operations/document/useModifyPage.ts b/src/hooks/operations/document/useModifyPage.ts index 262814f..84ae046 100644 --- a/src/hooks/operations/document/useModifyPage.ts +++ b/src/hooks/operations/document/useModifyPage.ts @@ -15,12 +15,12 @@ export function useModifyPage() { return useCallback( async ({ parametricFilter, - pageID, - documentID, + pageUuid, + documentUuid, }: { parametricFilter: ParametricFilter; - pageID: string; - documentID: string; + pageUuid: string; + documentUuid: string; }) => { try { setLoading(true); @@ -32,12 +32,13 @@ export function useModifyPage() { return; } /** Modify the document page */ + const options = new ModifyPageOptions(); + options.filters = [parametricFilter]; + const documentResult = await ScanbotDocument.modifyPage({ - documentUuid: documentID, - pageUuid: pageID, - options: new ModifyPageOptions({ - filters: [parametricFilter], - }), + documentUuid, + pageUuid, + options, }); /** * Handle the result diff --git a/src/hooks/operations/document/useRemovePage.ts b/src/hooks/operations/document/useRemovePage.ts index 70ee361..5318e97 100644 --- a/src/hooks/operations/document/useRemovePage.ts +++ b/src/hooks/operations/document/useRemovePage.ts @@ -15,7 +15,7 @@ export function useRemovePage() { const {setDocument} = useContext(DocumentContext); return useCallback( - async ({pageID, documentID}: {pageID: string; documentID: string}) => { + async ({pageUuid, documentUuid}: {pageUuid: string; documentUuid: string}) => { try { /** * Check the license status and return early @@ -26,8 +26,8 @@ export function useRemovePage() { } /** Remove the document page */ const documentResult = await ScanbotDocument.removePages({ - pageUuids: [pageID], - documentUuid: documentID, + pageUuids: [pageUuid], + documentUuid: documentUuid, }); /** * Handle the result diff --git a/src/hooks/operations/useCleanup.ts b/src/hooks/operations/useCleanup.ts index b4738ab..8c3a915 100644 --- a/src/hooks/operations/useCleanup.ts +++ b/src/hooks/operations/useCleanup.ts @@ -10,8 +10,8 @@ import ScanbotSDK from 'react-native-scanbot-sdk'; export const useCleanup = () => { return useCallback(() => { deleteConfirmationAlert( - 'Clearing storage', - 'Are you sure you want to proceed?', + 'Cleanup SDK storage ?', + 'Cleanup', async () => { try { /** diff --git a/src/hooks/operations/useDocumentQualityAnalyzer.ts b/src/hooks/operations/useDocumentQualityAnalyzer.ts index 05380c0..d0fa440 100644 --- a/src/hooks/operations/useDocumentQualityAnalyzer.ts +++ b/src/hooks/operations/useDocumentQualityAnalyzer.ts @@ -34,12 +34,15 @@ export function useDocumentQualityAnalyzer() { return; } + const configuration = new DocumentQualityAnalyzerConfiguration(); + configuration.maxImageSize = 2100; + + // Configure other parameters as needed. + // Detect document quality on a selected image const result = await ScanbotDocument.analyzeQualityOnImage({ image: selectedImage, - configuration: new DocumentQualityAnalyzerConfiguration({ - maxImageSize: 2100, - }), + configuration: configuration, }); /** * Handle the result by displaying an alert diff --git a/src/hooks/operations/usePerformOCR.ts b/src/hooks/operations/usePerformOCR.ts index f265d60..c0fd09e 100644 --- a/src/hooks/operations/usePerformOCR.ts +++ b/src/hooks/operations/usePerformOCR.ts @@ -4,12 +4,16 @@ import { errorMessageAlert, PrimaryRouteNavigationProp, Screens, - selectImagesFromLibrary, + selectImageFromLibrary, } from '@utils'; import {ActivityIndicatorContext} from '@context'; import {useNavigation} from '@react-navigation/native'; -import {ScanbotOcrEngine} from 'react-native-scanbot-sdk'; +import { + autorelease, + ImageRef, + ScanbotOcrEngine, +} from 'react-native-scanbot-sdk'; export function usePerformOCR() { const {setLoading} = useContext(ActivityIndicatorContext); @@ -29,25 +33,35 @@ export function usePerformOCR() { * Select an image from the Image Library * Return early if no image is selected, or there is an issue selecting an image **/ - const selectedImages = await selectImagesFromLibrary(); - if (!selectedImages) { + const selectedImage = await selectImageFromLibrary(); + if (!selectedImage) { return; } + /** - * Perform optical character recognition with the provided configuration and - * Display the result - */ - const result = await ScanbotOcrEngine.recognizeOnImages({ - images: selectedImages, - configuration: { - engineMode: 'SCANBOT_OCR', - }, - }); - /** - * Handle the result by navigating to the result screen + * Note: ImageRef is used as an input here just to showcase its usage. + * Passing the image file URI directly to ScanbotOcrEngine.recognizeOnImages will work the same way. + * The autorelease pool is only necessary when working with ImageRef to manage native resources. */ - navigation.navigate(Screens.PLAIN_DATA_RESULT, { - data: result.recognizedText, + await autorelease(async () => { + const imageRef = await ImageRef.fromImageFileUri(selectedImage); + if (!imageRef) { + return; + } + + const result = await ScanbotOcrEngine.recognizeOnImages({ + images: [imageRef], + configuration: { + engineMode: 'SCANBOT_OCR', + }, + }); + + /** + * Handle the result by navigating to the result screen + */ + navigation.navigate(Screens.PLAIN_DATA_RESULT, { + data: result.recognizedText, + }); }); } catch (e: any) { errorMessageAlert(e.message); diff --git a/src/hooks/operations/useScanMRZFromImage.ts b/src/hooks/operations/useScanMRZFromImage.ts index 6994347..f0b85bb 100644 --- a/src/hooks/operations/useScanMRZFromImage.ts +++ b/src/hooks/operations/useScanMRZFromImage.ts @@ -10,7 +10,12 @@ import { } from '@utils'; import {ActivityIndicatorContext} from '@context'; -import {MrzScannerConfiguration, ScanbotMrz} from 'react-native-scanbot-sdk'; +import { + autorelease, + ImageRef, + MrzScannerConfiguration, + ScanbotMrz, +} from 'react-native-scanbot-sdk'; export function useScanMRZFromImage() { const navigation = useNavigation(); @@ -40,22 +45,30 @@ export function useScanMRZFromImage() { // Configure other parameters as needed. /** - * Recognize MRZ on the selected image and - * Handle the result by navigating to Screens.MRZ_RESULT + * Note: ImageRef is used as an input here just to showcase its usage. + * Passing the image file URI directly to ScanbotMrz.scanFromImage() will work the same way. + * The autorelease pool is only necessary when working with ImageRef to manage native resources. */ - const result = await ScanbotMrz.scanFromImage({ - image: selectedImage, - configuration: configuration, - }); + await autorelease(async () => { + const imageRef = await ImageRef.fromImageFileUri(selectedImage); + if (!imageRef) { + return; + } - if (result.document) { - navigation.navigate(Screens.MRZ_RESULT, { - mrzDocument: result.document, - rawMRZ: result.rawMRZ, + const result = await ScanbotMrz.scanFromImage({ + image: imageRef, + configuration, }); - } else { - infoMessageAlert('No MRZ found.'); - } + + if (result.document) { + navigation.navigate(Screens.MRZ_RESULT, { + mrzDocument: result.document, + rawMRZ: result.rawMRZ, + }); + } else { + infoMessageAlert('No MRZ found.'); + } + }); } catch (e: any) { errorMessageAlert(e.message); } finally { diff --git a/src/hooks/rtuui/document/useContinueDocumentScanning.ts b/src/hooks/rtuui/document/useContinueDocumentScanning.ts index a173f7d..339bd3f 100644 --- a/src/hooks/rtuui/document/useContinueDocumentScanning.ts +++ b/src/hooks/rtuui/document/useContinueDocumentScanning.ts @@ -15,7 +15,7 @@ export function useContinueDocumentScanning() { const {loadDocument} = useContext(DocumentContext); return useCallback( - async (documentID: string) => { + async (documentUuid: string) => { try { /** * Check the license status and return early @@ -29,11 +29,11 @@ export function useContinueDocumentScanning() { * start the document scanner with the configuration and documentUUID */ const configuration = new DocumentScanningFlow(); - configuration.documentUuid = documentID; + configuration.documentUuid = documentUuid; configuration.cleanScanningSession = false; await ScanbotDocument.startScanner(configuration); - loadDocument(documentID); + loadDocument(documentUuid); navigation.navigate(Screens.DOCUMENT_RESULT); } catch (e: any) { errorMessageAlert(e.message); diff --git a/src/hooks/rtuui/document/useCropDocumentPage.ts b/src/hooks/rtuui/document/useCropDocumentPage.ts index 2a6a350..dc0bb11 100644 --- a/src/hooks/rtuui/document/useCropDocumentPage.ts +++ b/src/hooks/rtuui/document/useCropDocumentPage.ts @@ -8,7 +8,7 @@ export function useCropDocumentPage() { const {setDocument} = useContext(DocumentContext); return useCallback( - async ({pageID, documentID}: {pageID: string; documentID: string}) => { + async ({pageUuid, documentUuid}: {pageUuid: string; documentUuid: string}) => { try { /** * Check the license status and return early @@ -22,8 +22,8 @@ export function useCropDocumentPage() { * start the Cropping Screen with the configuration, documentUUID and pageUUID */ const configuration = new CroppingConfiguration({ - documentUuid: documentID, - pageUuid: pageID, + documentUuid: documentUuid, + pageUuid: pageUuid, }); const documentResult = await ScanbotDocument.startCroppingScreen( diff --git a/src/hooks/rtuui/useCreditCardScanner.ts b/src/hooks/rtuui/useCreditCardScanner.ts index 259648d..18eae4e 100644 --- a/src/hooks/rtuui/useCreditCardScanner.ts +++ b/src/hooks/rtuui/useCreditCardScanner.ts @@ -9,6 +9,7 @@ import {useCallback} from 'react'; import {COLORS} from '@theme'; import { + autorelease, CreditCardScannerScreenConfiguration, ScanbotCreditCard, StyledText, @@ -48,16 +49,34 @@ export function useCreditCardScanner() { configuration.actionBar.flashButton.activeForegroundColor = COLORS.SCANBOT_RED; - const result = await ScanbotCreditCard.startScanner(configuration); - /** - * Handle the result if the result status is OK - */ - if (result.status === 'OK') { - navigation.navigate(Screens.CREDIT_CARD_RESULT, { - creditCardDocument: result.data.creditCard, - recognitionStatus: result.data.recognitionStatus, - }); - } + configuration.scannerConfiguration.returnCreditCardImage = true; + + /** An autorelease pool is required because the result object contains image references. */ + await autorelease(async () => { + const result = await ScanbotCreditCard.startScanner(configuration); + /** + * Handle the result if the result status is OK + */ + if (result.status === 'OK') { + /** + * The credit card result is serialized for use in navigation parameters. + * + * By default, images are serialized as references. + * When using image references, it's important to manage memory correctly. + * Ensure image references are released appropriately by using an autorelease pool. + * Set the `imageSerializationMode` to `"BUFFER"` to serialize the image data as a base64-encoded string instead of a reference. + */ + const creditCardScannerNavigationObject = + await result.data.serialize(); + + navigation.navigate(Screens.CREDIT_CARD_RESULT, { + creditCardDocument: result.data.creditCard, + recognitionStatus: result.data.recognitionStatus, + imageRefId: + creditCardScannerNavigationObject.creditCard?.crop?.uniqueId, + }); + } + }); } catch (e: any) { errorMessageAlert(e.message); } diff --git a/src/screens/CheckScannerResultScreen.tsx b/src/screens/CheckScannerResultScreen.tsx index e4251b2..999b177 100644 --- a/src/screens/CheckScannerResultScreen.tsx +++ b/src/screens/CheckScannerResultScreen.tsx @@ -26,20 +26,18 @@ const CheckDocument = ({ For example: import { - AUSCheckDocumentType, - CANCheckDocumentType, - FRACheckDocumentType, + AUSCheck, + CANCheck, + FRACheck, GenericDocument, INDCheck, - INDCheckDocumentType, - ISRCheckDocumentType, - KWTCheckDocumentType, - UAECheckDocumentType, + ISRCheck, + KWTCheck, + UAECheck, USACheck, - USACheckDocumentType, } from 'react-native-scanbot-sdk'; switch (checkDocument.type.name) { - case USACheckDocumentType: { + case USACheck.DOCUMENT_TYPE: { const check = new USACheck(checkDocument); return ( @@ -59,7 +57,7 @@ const CheckDocument = ({ ); } - case INDCheckDocumentType: { + case INDCheck.DOCUMENT_TYPE: { const check = new INDCheck(checkDocument); return ( @@ -76,12 +74,12 @@ const CheckDocument = ({ ); } - case FRACheckDocumentType: // const check = new FRACheck(checkDocument); - case ISRCheckDocumentType: // const check = new ISRCheck(checkDocument); - case KWTCheckDocumentType: // const check = new KWTCheck(checkDocument); - case AUSCheckDocumentType: // const check = new AUSCheck(checkDocument); - case UAECheckDocumentType: // const check = new UAECheck(checkDocument); - case CANCheckDocumentType: // const check = new CANCheck(checkDocument); + case FRACheck.DOCUMENT_TYPE: // const check = new FRACheck(checkDocument); + case ISRCheck.DOCUMENT_TYPE: // const check = new ISRCheck(checkDocument); + case KWTCheck.DOCUMENT_TYPE: // const check = new KWTCheck(checkDocument); + case AUSCheck.DOCUMENT_TYPE: // const check = new AUSCheck(checkDocument); + case UAECheck.DOCUMENT_TYPE: // const check = new UAECheck(checkDocument); + case CANCheck.DOCUMENT_TYPE: // const check = new CANCheck(checkDocument); } */ diff --git a/src/screens/CreditCardScannerResultScreen.tsx b/src/screens/CreditCardScannerResultScreen.tsx index 2af6cd4..4d330f0 100644 --- a/src/screens/CreditCardScannerResultScreen.tsx +++ b/src/screens/CreditCardScannerResultScreen.tsx @@ -1,12 +1,13 @@ -import React from 'react'; +import React, {useEffect, useState} from 'react'; import { GenericDocumentResult, ResultContainer, ResultFieldRow, + ResultImage, } from '@components'; import {useRoute} from '@react-navigation/native'; import {CreditCardResultScreenRouteProp} from '@utils'; -import {GenericDocument} from 'react-native-scanbot-sdk'; +import {autorelease, GenericDocument, ImageRef} from 'react-native-scanbot-sdk'; const CreditCardDocument = ({ creditCardDocument, @@ -44,9 +45,28 @@ const CreditCardDocument = ({ export function CreditCardScannerResultScreen() { const {params} = useRoute(); + const [image, setImage] = useState(); + + useEffect(() => { + /** + * In this example, the image is serialized as a reference, therefore we need to use an autorelease pool to manage memory correctly. + */ + if (params.imageRefId) { + autorelease(async () => { + const imageData = await ImageRef.from({ + uniqueId: params.imageRefId!, + }).encodeImage(); + + if (imageData) { + setImage(`data:image/jpeg;base64,${imageData}`); + } + }); + } + }, [params.imageRefId]); return ( + ().params; + const {pageUuid} = useRoute().params; const {document} = useContext(DocumentContext); const [filterModalVisible, setFilterModalVisible] = useState(false); const cropDocumentPage = useCropDocumentPage(); @@ -21,11 +21,11 @@ export function DocumentPageResultScreen() { const onCropAndRotate = useCallback(async () => { if (document?.uuid !== undefined) { await cropDocumentPage({ - documentID: document.uuid, - pageID: pageID, + documentUuid: document.uuid, + pageUuid: pageUuid, }); } - }, [cropDocumentPage, document, pageID]); + }, [cropDocumentPage, document, pageUuid]); const toggleFilterModal = useCallback( () => setFilterModalVisible(p => !p), @@ -36,32 +36,32 @@ export function DocumentPageResultScreen() { async (filter: ParametricFilter) => { if (document?.uuid !== undefined) { await modifyPage({ - documentID: document.uuid, - pageID: pageID, + documentUuid: document.uuid, + pageUuid: pageUuid, parametricFilter: filter, }); } }, - [document, modifyPage, pageID], + [document, modifyPage, pageUuid], ); const onRemovePage = useCallback(async () => { if (document?.uuid !== undefined) { - await removePage({documentID: document.uuid, pageID: pageID}); + await removePage({documentUuid: document.uuid, pageUuid: pageUuid}); } - }, [document, pageID, removePage]); + }, [document, pageUuid, removePage]); const onDelete = useCallback(() => { deleteConfirmationAlert( - 'Removing page', - 'Are you sure you want to proceed?', + 'Remove page ?', + 'Remove', onRemovePage, ); }, [onRemovePage]); return ( - + { + (pageUuid: string) => { return function () { if (document !== undefined) { navigation.navigate(Screens.DOCUMENT_PAGE_RESULT, { - pageID: pageID, + pageUuid: pageUuid, }); } }; @@ -74,7 +74,7 @@ export function DocumentResultScreen() { {document.pages.map(page => ( diff --git a/src/screens/HomeScreen.tsx b/src/screens/HomeScreen.tsx index c6bbb97..62ae1a7 100644 --- a/src/screens/HomeScreen.tsx +++ b/src/screens/HomeScreen.tsx @@ -79,7 +79,7 @@ export function HomeScreen() { onPress={onCroppingView} /> - + @@ -94,14 +94,14 @@ export function HomeScreen() { /> - + {}, }, @@ -65,20 +65,21 @@ export function infoMessageAlert(message: string) { export function deleteConfirmationAlert( title: string, - message: string | undefined, + confirmText: string, onDelete: () => void, + message?: string | undefined, ) { Alert.alert( title, message, [ { - text: 'Close', + text: 'Cancel', style: 'cancel', onPress: () => {}, }, { - text: 'OK', + text: confirmText, style: 'default', onPress: onDelete, }, diff --git a/src/utils/Navigation.ts b/src/utils/Navigation.ts index 0819be1..78bf890 100644 --- a/src/utils/Navigation.ts +++ b/src/utils/Navigation.ts @@ -51,10 +51,11 @@ export type PrimaryRoutesParamList = { [Screens.CREDIT_CARD_RESULT]: { creditCardDocument: GenericDocument | null; recognitionStatus: CreditCardScanningStatus; + imageRefId?: string | null; }; [Screens.PLAIN_DATA_RESULT]: PlainDataResultParam; [Screens.DOCUMENT_RESULT]: undefined; - [Screens.DOCUMENT_PAGE_RESULT]: {pageID: string}; + [Screens.DOCUMENT_PAGE_RESULT]: {pageUuid: string}; [Screens.DOCUMENT_SCANNER_VIEW]: undefined; [Screens.CROPPING_VIEW]: {fileURI: string}; }; diff --git a/src/utils/SDKUtils.ts b/src/utils/SDKUtils.ts index 7bfd008..1d9be49 100644 --- a/src/utils/SDKUtils.ts +++ b/src/utils/SDKUtils.ts @@ -10,6 +10,6 @@ export async function checkLicense(): Promise { return true; } - errorMessageAlert(info.licenseStatusMessage ?? 'License is not valid'); + errorMessageAlert(info.licenseStatusMessage); return false; } From 12aab62048ea70e0d7473c09acf69732420428f6 Mon Sep 17 00:00:00 2001 From: StefanKScanbot Date: Thu, 19 Feb 2026 14:59:53 +0100 Subject: [PATCH 22/24] Fixed issue with file sharing --- android/app/src/main/AndroidManifest.xml | 11 +++++ .../sdk/reactnative/MainApplication.kt | 49 ++++++++++--------- android/app/src/main/res/xml/filepaths.xml | 8 +++ package.json | 2 +- 4 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 android/app/src/main/res/xml/filepaths.xml diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ff5b4f1..18ae376 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ + @@ -27,5 +28,15 @@ + + + + diff --git a/android/app/src/main/java/io/scanbot/example/sdk/reactnative/MainApplication.kt b/android/app/src/main/java/io/scanbot/example/sdk/reactnative/MainApplication.kt index 9644582..2979ce7 100644 --- a/android/app/src/main/java/io/scanbot/example/sdk/reactnative/MainApplication.kt +++ b/android/app/src/main/java/io/scanbot/example/sdk/reactnative/MainApplication.kt @@ -11,34 +11,39 @@ import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader +import cl.json.ShareApplication -class MainApplication : Application(), ReactApplication { +class MainApplication : Application(), ReactApplication, ShareApplication { - override val reactNativeHost: ReactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getPackages(): List = - PackageList(this).packages.apply { - // Packages that cannot be autolinked yet can be added manually here, for example: - // add(MyReactNativePackage()) - } + override val reactNativeHost: ReactNativeHost = + object : DefaultReactNativeHost(this) { + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } - override fun getJSMainModuleName(): String = "index" + override fun getJSMainModuleName(): String = "index" - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED - } + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } - override val reactHost: ReactHost - get() = getDefaultReactHost(applicationContext, reactNativeHost) + override val reactHost: ReactHost + get() = getDefaultReactHost(applicationContext, reactNativeHost) - override fun onCreate() { - super.onCreate() - SoLoader.init(this, OpenSourceMergedSoMapping) - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - load() + override fun onCreate() { + super.onCreate() + SoLoader.init(this, OpenSourceMergedSoMapping) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + } + + override fun getFileProviderAuthority(): String { + return "${BuildConfig.APPLICATION_ID}.provider" } - } } diff --git a/android/app/src/main/res/xml/filepaths.xml b/android/app/src/main/res/xml/filepaths.xml new file mode 100644 index 0000000..9db30a1 --- /dev/null +++ b/android/app/src/main/res/xml/filepaths.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index 3cba74a..04f9759 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "react-native-safe-area-context": "^5.4.0", "react-native-scanbot-sdk": "8.0.0-beta.1", "react-native-screens": "~4.10.0", - "react-native-share": "^12.0.3" + "react-native-share": "12.2.5" }, "devDependencies": { "@babel/core": "^7.25.2", From 743d8a7d5bb4aff3af12239dc0bb42a18eb6c4b5 Mon Sep 17 00:00:00 2001 From: Marko Date: Thu, 19 Feb 2026 17:19:30 +0100 Subject: [PATCH 23/24] Remove storageBaseDirectory const --- App.tsx | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/App.tsx b/App.tsx index 7f07fc5..b4d1f6f 100644 --- a/App.tsx +++ b/App.tsx @@ -1,5 +1,5 @@ import React, {useEffect} from 'react'; -import {Platform, StyleSheet} from 'react-native'; +import {StyleSheet} from 'react-native'; import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context'; import ScanbotSDK, {SdkConfiguration} from 'react-native-scanbot-sdk'; @@ -36,30 +36,6 @@ import {CreditCardScannerResultScreen} from './src/screens/CreditCardScannerResu const Stack = createNativeStackNavigator(); -// !! Please read the note!! -// It is strongly recommended to use the default (secure) storage location of the Scanbot SDK. -// However, for demo purposes, we overwrite the "storageBaseDirectory" of the Scanbot SDK by a custom storage directory. -// -// On Android we use the "ExternalDirectoryPath" which is a public(!) folder. -// All image files and export files (PDF, TIFF, etc.) created by the Scanbot SDK in this demo app will be stored -// in this public storage directory and will be accessible for every(!) app having external storage permissions! -// Again, this is only for demo purposes, which allows us to easily fetch and check the generated files -// via Android "adb" CLI tools, Android File Transfer app, Android Studio, etc. -// -// On iOS, we use the "DocumentDirectoryPath" which is accessible via iTunes file sharing. -// -// For more details about the storage system of the Scanbot SDK RN Module please see our docs: -// - https://scanbotsdk.github.io/documentation/react-native/ -// -// For more details about the file system on Android and iOS we also recommend to check out: -// - https://developer.android.com/guide/topics/data/data-storage -// - https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html -const storageBaseDirectory = Platform.select({ - ios: DocumentDirectoryPath + '/my-custom-storage', - android: DocumentDirectoryPath + '/my-custom-storage', - default: undefined, -}); - /* * TODO Add the Scanbot SDK license key here. * Please note: The Scanbot SDK will run without a license key for one minute per session! @@ -75,7 +51,7 @@ export const initializationConfiguration = new SdkConfiguration({ storageImageFormat: IMAGE_FILE_FORMAT, // Format of stored images storageImageQuality: 80, // Quality of stored images // Optional custom storage directory - // storageBaseDirectory: storageBaseDirectory, + // storageBaseDirectory: DocumentDirectoryPath + '/my-custom-storage', }); // Set the following properties to enable encryption. From 81b84e50b1a8054a822ac95a33e431ca1046bc8a Mon Sep 17 00:00:00 2001 From: Marko Date: Thu, 19 Feb 2026 17:28:00 +0100 Subject: [PATCH 24/24] Remove unnecessary external storage permission --- android/app/src/main/AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 18ae376..ec2077e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,7 +3,6 @@ -